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