莫 維,唐清善,黃 濤
(1.長沙理工大學(xué)物理與電子科學(xué)學(xué)院,湖南 長沙 410114; 2.中國人民解放軍第3303工廠,湖北 武漢 430200)
單個相機(jī)拍攝的圖像分辨率和拍攝視角具有上限,被拍攝物體實際分辨率的大小受自身所在位置約束,物體越靠近相機(jī),物體本身分辨率越高,但相機(jī)視場角越小,反之同理。同一場景下分辨率和視場角的對立關(guān)系使得兩者不能兼顧,無法滿足人眼視覺的最佳要求。全景視頻通過全景相機(jī)或者數(shù)個相機(jī)拼接合成能夠得到分辨率高、視場角大的影像[1],在視頻監(jiān)控[2]、無人駕駛[3]、視頻會議[4]、虛擬現(xiàn)實[5]等眾多領(lǐng)域應(yīng)用廣泛。
圖像拼接是視頻拼接的基礎(chǔ),本質(zhì)都是將多個具有重疊區(qū)域的不同視角的圖像融合成一個大視場圖像[6]。目前來說,圖像拼接方面的研究日漸成熟,而視頻拼接需要花費更多且難度更大,仍然有很多問題需要解決[7]。比如,視頻中前景運動對象周圍存在的偽影、視差、幻影等會大大增加拼接的難度[8],即使是固定好相機(jī)模組的光學(xué)中心,在實際拍攝過程中,也難以避免滾動和俯仰。略微滾動或傾斜就會給圖像直接造成偽影與失真[9],理想條件經(jīng)常無法滿足,各視頻光心不在同一點。視頻每幀若各自獨立拼接,則將嚴(yán)重影響視頻的時空一致性,且計算復(fù)雜、實時性差[10]。
當(dāng)前,視頻拼接方面有研究者做了大量的研究。文獻(xiàn)[11]采用具有固定視差的雙魚眼鏡頭,將大視角魚眼畫面通過網(wǎng)格變形投影到球面模型上來,能經(jīng)濟(jì)高效地實現(xiàn)360°全景視頻拼接,但魚眼鏡頭本身存在大的畫面畸變,拼接的視頻不能很好地滿足人眼視覺要求且分辨率不高。文獻(xiàn)[12]基于模板幀圖像的圓柱全景視頻拼接方法,實現(xiàn)了360°全景拼接,并基于AR設(shè)備實現(xiàn)拼接視頻的透視觀察,利用GPU加速平臺能夠?qū)崟r拼接。文獻(xiàn)[13]在縫合線尋找階段引入前景約束項,在隔離移動前景之外的區(qū)域找到最佳縫合線,該方法能夠解決前景不斷移動帶來的視差、偽影問題。文獻(xiàn)[14]用一種邊緣引導(dǎo)方法來縫合重疊區(qū)域較小的視頻,在邊緣的指導(dǎo)下計算網(wǎng)格中的局部扭曲矩陣,能夠提升圖像對齊精度,減輕了前景移動所產(chǎn)生的偽影。文獻(xiàn)[15]著手于相機(jī)抖動問題,以攝像機(jī)與攝像機(jī)的相對運動和視頻幀與視頻幀的相對運動為參照,擬合出一條最優(yōu)的攝像機(jī)路徑,能完美解決相機(jī)之間的抖動問題,但是由于計算復(fù)雜度過高,無法達(dá)到實時效果。
本文輸入恒定攝像機(jī)位置的多個同步視頻流,利用SIFT(Scale Invariant Feature Transform)和基于單應(yīng)性矩陣算法建立背景模型,并改進(jìn)一種全方向感知融合方法,在處理不同曝光等場景中的影像時實時性很好。
本文提出的多方向感知加權(quán)融合方法流程如圖1所示:首先,選取尺度不變特征變換SIFT算法提取初始圖像的特征和描述子,得到特征描述子集;然后,采用2NN(2 Nearest Neighbor)方法將描述子集進(jìn)行第1次匹配;接著,基于RANSAC(RANdom SAmple Consensus)誤匹配刪除算法進(jìn)行第2次匹配,計算出全局單應(yīng)性矩陣,結(jié)合投影變換將輸入圖像投影到同一視角;最后,在公共區(qū)域融合計算出的縫合線,得到最終影像。
圖1 視頻拼接系統(tǒng)方案流程
SIFT[16]全稱尺度不變特征變換,它將圖像信息主要表現(xiàn)的特征點抽象成周圍像素點的相互信息形成的高維向量,故圖像提取的SIFT信息為一個高維向量的集合,圖像的仿射變換、投影變換、亮度變換不會影響這個集合,是一種綜合能力很強的特征描述算法,得到的高維向量集合具有非常好的魯棒性。本文采用SIFT算法提取待拼接圖像的特征點集合。
在計算機(jī)視覺范疇內(nèi),單應(yīng)性[17]可應(yīng)用于圖像拼接中視角轉(zhuǎn)換,通過計算各個角度影像的視角位置,將視角不同的影像轉(zhuǎn)變到統(tǒng)一視角下,即可完成初步圖像拼接。
當(dāng)待配準(zhǔn)影像視角上有變化或者出現(xiàn)源圖像中沒有出現(xiàn)的區(qū)域,特征匹配點對集合會出現(xiàn)錯誤配對,但在錯誤匹配點對占總配對數(shù)的小部分時不會影響單應(yīng)性矩陣估計的正確性,這是因為除去第1次匹配點對集合,還采取了RANSAC[18]誤匹配去除算法。這是一種根據(jù)迭代更新的方法,通過從包含異常數(shù)據(jù)的數(shù)據(jù)集中每次取少部分?jǐn)?shù)據(jù)多次擬合得出最佳系統(tǒng)參數(shù)的算法。RANSAC最多可處理50%的外點情況。
通過RANSAC算法確保匹配正確的特征點對,然后待配準(zhǔn)影像通過單應(yīng)性矩陣變換到源影像上就完成了原始的拼接。
得到相機(jī)的相對位置后,如果直接進(jìn)行拼接會破壞視場的一致性,使得拼接得到的全景圖看起來不夠連貫,因此需要通過投影變換將所有圖像都投影在球面、柱面等,投影平面的選擇與相機(jī)拍攝的方式有關(guān)系。本文采用柱面投影來獲取拼接圖。其主要流程如下:
首先,利用相機(jī)內(nèi)外參數(shù)對圖像建立前向映射變換矩陣,取源圖像的4個頂點與正向投影矩陣相乘進(jìn)行前向映射,得到變換后的目標(biāo)圖像區(qū)域。源圖像I(x,y)與變換后的圖像I′(x′,y′)關(guān)系式為:
(1)
然后,取目標(biāo)區(qū)域內(nèi)整數(shù)坐標(biāo)點位置的點乘以前向映射變換矩陣的逆,變換前后的圖像之間有下列關(guān)系:
(2)
如圖2所示,前向映射源位置(x,y)為整數(shù)點,映射位置(x′,y′)為非整數(shù)點,后向映射源位置(x,y)為非整數(shù)點,映射位置(x′,y′)為整數(shù)點。在前向映射中,目標(biāo)圖像可能會出現(xiàn)空白點等噪點,這是由于圖像放縮形成的,而后向映射不會出現(xiàn)這種現(xiàn)象。故映射填充選用后向映射。
圖2 前、后向映射對比
投影矩陣的模型參數(shù)計算出為浮點型數(shù)值,整數(shù)位置經(jīng)過浮點型參數(shù)整合計算得到浮點型位置,即整數(shù)位置無法映射到整數(shù)位置。插值技術(shù)在此處發(fā)揮作用,對于源影像上點的位置(x,y)和待配準(zhǔn)影像上點的位置(x′,y′),非整數(shù)坐標(biāo)位置上的點可以通過所在網(wǎng)格的左上角、左下角、右上角、右下角等整數(shù)坐標(biāo)位置上的點插值,這樣就可以計算出像素值是多少。插值算法采用雙線性插值。
圖3為雙線性插值圖示,計算公式如下:
圖3 雙線性插值算法
(3)
不同姿態(tài)的相機(jī)即使在曝光要素都一致的條件下拍攝的影像整體亮度也會存在差異,那么直接進(jìn)行拼接就會出現(xiàn)明顯的明暗上的變化,因此需要設(shè)置曝光補償,使得不同圖像的整體亮度大概一致。常用增益補償與分塊增益補償2種方法。
拼縫是指圖像之間重疊區(qū)域中最為相似的那條線。在得到相鄰2幅圖像的拼縫位置后,在拼縫附近的若干個像素使用融合算法[19-21]。公共區(qū)域內(nèi),拼縫各側(cè)只保留整體占比較大的影像。通過這樣的方法,可以有效地去除圖像之間的錯位、偽像,得到更好的拼接結(jié)果。常用的合縫線尋找有以下幾種方法。1)逐點法:最簡單效果也相對較差;2)圖割法:計算復(fù)雜度高,效果非常好;3)動態(tài)規(guī)劃法:相當(dāng)于前二者的折中,計算復(fù)雜度和效果都居中。根據(jù)實際的需要,選擇動態(tài)規(guī)劃法作為本文拼縫尋找的方法。
形態(tài)學(xué)方法對圖像邊緣非常敏感,常用于描述和提取圖像邊界形狀、抽取圖像骨骼,本文采用膨脹和腐蝕來確定拼接縫周圍的融合過渡區(qū)域與融合權(quán)重值。主要步驟如下:
首先,獲得重疊區(qū)域內(nèi)拼縫線后,通過數(shù)次膨脹兩側(cè)拼縫線掩碼獲取寬度為N個像素的過渡區(qū)域,如圖4所示,用B對A膨脹,表達(dá)式為:
圖4 投影矩陣掩碼與拼縫掩碼
A⊕B={y:B(y)∩A∩P≠?}
(4)
式中,A為源圖像拼接縫掩碼,B為3×3大小的單位結(jié)構(gòu)元素,P為源圖像投影矩陣掩碼。
然后,利用數(shù)次膨脹拼接縫掩碼確定過渡區(qū)域的同時,計算過渡區(qū)域內(nèi)各點位置與拼縫線的距離和與過渡邊界的距離,并以此為根據(jù)對照權(quán)值查找表分配權(quán)重。公式如下:
(5)
式中,x1為融合區(qū)域左邊界位置,x2為融合區(qū)域右邊界位置,xm為拼縫所在位置,xi-x1為融合區(qū)域內(nèi)像素位置處離左邊界的距離大小,x2-xi為融合區(qū)域內(nèi)像素位置處離右邊界的距離大小,xm-x1與x2-xm分別為拼縫左側(cè)與右側(cè)過渡距離大小,L[·]為過渡函數(shù)查找表,n為查找表元素個數(shù)。
當(dāng)拼接縫與投影邊界的距離小于過渡像素N時,基于形態(tài)學(xué)的距離查找法也能夠自動調(diào)節(jié)過渡幅度,使拼接縫位置完成融合過渡,最后,利用數(shù)次腐蝕依次分配權(quán)重值。此方法能夠從融合區(qū)域邊界開始,在垂直、水平、斜向各個方向上自適應(yīng)過渡,保證過渡效果良好。
由于動態(tài)規(guī)劃法尋找拼縫線是基于圖像的色彩和結(jié)構(gòu)2個約束維度來計算,最優(yōu)拼縫線處在色彩差異較小或梯度變化較大的位置。換而言之,在達(dá)到相同的權(quán)值過渡幅度的前提下,縫合線中心的過渡寬度較窄,縫合線外圍邊界的過渡寬度較寬,可以使過渡更加平滑自然,同時解決亮度差異較大的問題。本文使用指數(shù)曲線y=axb的[0,0.5]區(qū)間段作為分配權(quán)重的過渡函數(shù)。該函數(shù)的導(dǎo)數(shù)在[0,0.5]區(qū)間段從初值0單調(diào)遞增,很好地貼合了融合區(qū)域的過渡需求,由此建立權(quán)值分配查找表。圖5為融合過渡曲線。
圖5 本文權(quán)值過渡曲線
圖像與圖像由于存在細(xì)節(jié)處曝光不一致的情況,在重疊區(qū)域內(nèi)拼接縫周圍顏色、亮度有些微不同。依據(jù)拼縫直接拼接圖像會造成可見的界線,會使畫面產(chǎn)生撕裂感,所以需要融合最優(yōu)拼接縫來消除畫面撕裂[22]。本文采用加權(quán)漸進(jìn)漸出融合算法消除拼縫。
在重疊區(qū)域,根據(jù)過渡區(qū)域內(nèi)像素點與拼縫線距離的比例大小分配融合權(quán)重。如圖5所示,拼縫過渡正中心處權(quán)重分配為0.5∶0.5,權(quán)重比q1∶q2從1∶0平滑過渡到0 ∶1。假設(shè)I(x,y)為融合后的圖像,則加權(quán)漸進(jìn)漸出融合算法公式為:
(6)
式中,I1(x,y)為圖4中待融合區(qū)域R1,I2(x,y)為待融合區(qū)域R2,R12為拼接縫融合過渡區(qū)域R12,q1和q2分別為R1和R2的加權(quán)權(quán)重值,且有q1+q2=1,q1∈[0,1],q2∈[0,1]。
CUDA(Compute Unified Device Architecture)是一種能運用圖形處理器GPU大大提升通用計算性能的并行平臺和編程模型[23-26]。CPU的時鐘頻率是GPU的數(shù)倍,但是GPU的計算核心數(shù)量比CPU多數(shù)個數(shù)量級,通用算術(shù)能力CPU遠(yuǎn)不如GPU。故GPU非常適合用于矩陣投影變換和加權(quán)融合算法等矩陣運算的加速。雖然CPU與GPU能同時并行計算,但由于CPU與GPU計算能力的差距,視頻每幀圖像拼接融合的時間主要受制于CPU計算的時間,所以本文將計算相機(jī)參數(shù)、映射參數(shù)、融合參數(shù)整合,視頻幀經(jīng)過GPU的拼接融合,極大地縮短了計算時間,能滿足高清視頻拼接融合的實時性要求。
本文采用Windows 10 64 bit操作系統(tǒng),Intel Core i5-8265U 1.60 GHz CPU,8 GB內(nèi)存,Nvidia GeForce MX150 GPU,2 GB顯存,Visual Studio 2017開發(fā)平臺,OpenCV 3.4.2圖像庫,攝像頭統(tǒng)一都是視角為110°的300萬像素廣角鏡頭,使用C++語言編程實現(xiàn)。最大過渡區(qū)域N不是固定值,而是根據(jù)輸入圖像重疊區(qū)域大小自適應(yīng)選擇,一般設(shè)為重疊區(qū)域的1/4,過渡函數(shù)中a=10,b=4。
圖6為拼縫融合過渡模擬仿真圖,上半部分采用漸進(jìn)漸出融合方法,下半部分采用本文過渡函數(shù)指導(dǎo)的融合方法。從圖中放大部分可以看出,不同過渡函數(shù)對權(quán)值的過渡幅度調(diào)整是不一樣的。本文方法相較于漸進(jìn)漸出融合方法色彩變化更緩慢,也就是說拼縫周圍過渡更加平滑,且初始過渡區(qū)域變化更小,過渡部分更加集中。
圖6 局部放大的融合權(quán)值仿真圖
圖7是不同時間段下各視頻幀的拼接結(jié)果圖。房屋建筑與結(jié)構(gòu)曝光均正常,前景人物結(jié)構(gòu)與色彩自然,沒有出現(xiàn)視覺可見的模糊與偽影,具有良好的視覺效果。
(a) t=0.33 s
(b) t=5 s
(c) t=6.66 s
(d) t=8.33 s
(e) t=10 s
(f) t=15 s
本文為了評估方法的有效性和正確性,采用4個客觀評價指標(biāo)來對視頻拼接的結(jié)果進(jìn)行評估。信息熵用圖像直方圖各灰度級分布的區(qū)域與峰值灰度級區(qū)域的偏離程度來評估圖像所包含的信息量;平均梯度用影像細(xì)節(jié)部分的梯度差來評估融合后影像的清晰度;標(biāo)準(zhǔn)差用影像灰度值在直方圖上分布的均勻性來評估影像信息的豐富程度;互信息用源影像在融合后影像中信息量的占比來評估融合前后影像的相似度。綜合來看,信息量越多、清晰度越高、標(biāo)準(zhǔn)差越大、互信息越高,融合后的影像質(zhì)量就越好。
從表1中可以看出,相較于多頻帶融合方法,其他方法整體上平均梯度更高,圖像清晰度更好,而且多頻帶計算復(fù)雜度高、內(nèi)存需求大、速度慢。但是,從圖8可以看出,直接法與漸進(jìn)漸出法存在局限,不能很好處理曝光差異的問題,拼接結(jié)果圖中間部分正上方和正下方存在不同程度的過渡斷層,本文方法與多頻帶法的融合結(jié)果效果良好。綜合圖9的各場景拼接結(jié)果來看,本文方法能夠在不同場景下保持良好拼接融合質(zhì)量。
圖9 不同場景下拼接結(jié)果
表1 圖像質(zhì)量的對比度、相關(guān)性和能量、信息熵的對比
(a) 拼接原圖
(b) 直接法
(c) 漸進(jìn)漸出法
(d) 多頻帶法
(e) 本文方法
視頻由多個圖像幀組合而成,視頻拼接在實時性上的要求遠(yuǎn)高于圖像拼接,視頻幀率只有在高于24 fps播放時才不會出現(xiàn)人眼能觀察到的卡頓現(xiàn)象。為了測試提出的拼接系統(tǒng)能否滿足實時性要求,本文抽取幾種分辨率下的輸入視頻數(shù)據(jù)進(jìn)行實驗仿真,初始幀計算的時間不計入實際總耗時,計算視頻流的所有幀拼接平均時間。實驗結(jié)果如表2所示??梢钥闯觯?路1920×1080的視頻拼接平均幀率為72.5 fps,視頻在高分辨率下也能夠?qū)崟r拼接。為了證明本文方法在拼接實時性上具有優(yōu)勢,將本文方法與現(xiàn)有文獻(xiàn)中的方法進(jìn)行速度對比。從表3可以看出,在同樣2路視頻輸入,相同分辨率下的視頻拼接,本文方法速度提升大約2~3倍。
表2 不同分辨率下的拼接速度對比
表3 2路視頻不同方法下的拼接速度對比
本文提出了一種多方向感知視頻融合方法,首先利用圖像配準(zhǔn)得到投影重疊區(qū)域,采取動態(tài)規(guī)劃法尋找重疊區(qū)域內(nèi)最佳拼接縫;接著使用查找表增強拼縫兩側(cè)權(quán)值過渡,使融合區(qū)域更加集中;然后,將拼接縫掩碼進(jìn)行膨脹與腐蝕等形態(tài)學(xué)操作,得到緊密貼合拼縫的融合效果圖像;最后,將本文方法與直接法、漸進(jìn)漸出法、多頻帶融合法進(jìn)行對比實驗,并計算了信息熵、平均梯度、標(biāo)準(zhǔn)差和互信息客觀評價值。實驗結(jié)果表明,本文提出的算法在清晰度和標(biāo)準(zhǔn)差等客觀評估上有優(yōu)勢,主觀視覺上無偽影;且在應(yīng)對曝光差異較大、圖像結(jié)構(gòu)復(fù)雜的場景時,拼接效果與多頻帶融合算法相當(dāng)?shù)那闆r下實時性好,為高分辨率大視場影像的實際應(yīng)用提供了一條途徑。