王連兵,葉 兵,馬偉東
(合肥工業(yè)大學 電子科學與應用物理學院,安徽 合肥 230009)
3D顯示技術,因與傳統(tǒng)二維視頻圖像相比能夠給出目標的深度信息更加符合人的視覺特性,而備受關注。當前常見三維圖像源的獲取技術主要有雙目[1]與單目[2]之分,雙目立體圖像獲取技術通過立體標定過的兩架相機即可得到立體觀察圖像,實現簡單;相對單目立體圖像獲取技術就需要添加特殊制定的器材或算法才能得到雙目觀察圖像。但當三維圖像獲取技術在一些特定環(huán)境如水下機器人,小尺寸內窺鏡等中應用時,單目的實現方式在尺寸、重量、便攜等方面較之雙目有很大優(yōu)勢。
在單目立體視覺方面,Deepu等[3]通過建立相機的離焦模型,從單相機圖像中自動生成立體視覺圖像中的第二幅圖像。Logothetis等[4]提出新的半校準近場光度立體技術,在光源位置已知,亮度未知的環(huán)境下重構了目標三維表面。Zhou等[5]通過根據內窺鏡序列圖像間成功匹配的特征點間的視差,對未匹配點進行線性插值的方式獲得稠密視差,并在三維重建后,重投影得到了立體視覺圖像。楊軍等[6]使用單目序列圖像間的最佳匹配點集,通過擴展稀疏點云的方式對目標物體進行三維表面重建。在稠密匹配方面,李彬彬等[7]用圖割法優(yōu)化基于置信度傳播的稠密匹配策略,提高了底紋理區(qū)域和遮擋區(qū)域匹配。程思培[8]等提出一種基于金字塔分層雙向動態(tài)規(guī)劃的立體匹配算法,降低了金典動態(tài)匹配算法中橫向條紋的產生,同時提高了邊緣和弱紋理區(qū)域的匹配性能。Tatsunori Taniai等[9]結合馬爾可夫隨機場對中傾斜平面匹配算法[10]和曲率正則方法[11]提出圖割法[12-13]優(yōu)化的區(qū)域擴展運動(Local Expansion Moves, LocalExp)立體匹配方法,能夠得到精確的平滑分區(qū)視差圖。
本文假設平滑運動中相機獲得的相鄰圖像之間的視場與視角均存在一定的變化,但差別不大,此時可近似將相鄰或相近的具有一定差別的圖像對看作雙目視覺中的立體圖像對,經過相應立體矯正后即為雙目立體視圖,但此時雙目立體圖像對的基線長度會隨相機的運動狀態(tài)的改變而改變,不能直接用以人眼觀察。為此本文結合已知初始環(huán)境下的同步定位與建圖(Simultaneous Localization And Mapping, SLAM)[14-15]技術定位出相機的運動軌跡,同時根據校正后圖像對的稠密匹配結果生成在物理空間中相對目標視圖固定位置的虛擬相機圖像。
基于上述構想,本文的主要內容可分為相機位置求取、稠密匹配和視圖重建三個部分。相機位置求取部分,本文運用尺度不變特征轉換匹配算法 (Scale-invariant feature transform, SIFT)[16]將每幅圖像的最優(yōu)SIFT特征匹配集及其對應物點作為相機運動中的標志。在稠密匹配部分,本文采用三維平面參數約束的視差平面區(qū)域擴展算法,提高匹配算法的不同場景的適應性,本文將SIFT特征匹配點作為視差平面區(qū)域增長的種子點,并以此作為視差優(yōu)化的限制條件。在視圖重建部分,本文應用雙目視覺模型,重投影出假定的虛擬相機圖像。
由于SIFT特征匹配具有旋轉不變、放縮不變、較強的穩(wěn)定性,且生成的匹配對多,對光照變化不敏感,特征點的利用率高等特性,能夠為攝像機位置的求取提供更佳穩(wěn)定數據基礎,更利于視角重建算法得出穩(wěn)定、準確的結果[17]。單目SIFT-SLAM相機定位算法的流程如圖1所示。
單目SIFT-SLAM相機定位算法的具體流程為:
(1)相機內部參數的預求??;通過張正友教授的棋盤標定法對攝像頭的內部參數進行標定,其中相機的畸變參數用以對每一幀圖像進行畸變校正,相機的特征參數則為三維重建及視角重建使用。對圖像進行必要的高斯濾波,減小噪聲影響。
(2)特征點提取與匹配;采用SIFT算法進行特征提取與描述,即從高斯尺度空間中獲得具有尺度和旋轉不變特征點,根據其相應領域梯度信息生成歸一化的128維特征描述向量[18];進行當前幀特征點與特征點庫中的特征點匹配,得到特征匹配對。
圖1 單目SIFT-SLAM相機定位算法
(3)攝像機位置恢復;通過特征匹配對,實現了當前幀圖像特征點與特征點三維坐標庫中三維坐標的對應關系,再依據相機投影模型,恢復攝像機的位置、姿態(tài)。
(4)更新特征點參數;運用三維重建技術對已經得到的信息進行重建工作,即可得到新的特征點三維坐標信息,并更新特征三維坐標庫,同時用匹配對更新特征點庫。
(5)對每一幀重復上述步驟,實現對攝像機三維空間位置的不斷更新。
該相機定位算法實現了攝像機的三維坐標的求取,為視角重建提供物理尺寸上的參照。
E(f)=∑p∈Ωφp(fp)+λ∑(p,q)∈Ωψpq(fp,fq)
(1)
式中,第一項為數據項,用來衡量匹配像素間的圖像一致性,視差平面fp定義了一個從像素p到另一圖像中對應點的非線性映射。第二項為平滑項,用以描述相鄰像素對(p,q)N間視差信息的約束關系。
能量函數中的數據項可定義為:
φp(fp)=∑s∈Wpωpsρ(s|fp)
(2)
其中,Wp像素p為中心的方形窗;ps適應窗口權重,該權重本文采用引導圖像濾波器,用式(3)描述。
(∑K+e)-1(IS-μK))
(3)
式(3)中,IP=IL(p)/255,是一個歸一化的色彩向量;μk和k分別是局部回歸窗口W’k中灰度矩陣Ip的均值和協(xié)方差;e是為避免過度擬合的單位陣。
給定視差平面fp=(ap,bp,cp),式(2)中的(s|fp)是衡量窗口W中支撐像素s=(sμ,sν)與其在右圖中匹配點s′之間的差異,且有:
s′=s-(apsμ+bpsν+cp,0)
(4)
ρ(s|fp)=(1-α)min(‖IL(s)-IR(s′)‖1,τcol)+αmin(|xIL(s)-xIR(s′)|,τgrad)
(5)
能量函數中的平滑項定義為式(6):
(6)
式(6)中,ωpq是對比度敏感度權重,定義為式(7):
ωpq=e-‖IL(p)-IL(q)‖1/γ
(7)
(8)
式(8)中,dp(fq)=aqpμ+bqpν+cq。式中,第一項用fp和fq在p點視差之差衡量它們之間的差異,而第二項表示它們之間的相似性。
本文中的區(qū)域分割采用的固定窗口大小的全圖分割,首先將全圖劃分為若干5×5的單元格,在對每個單元格建立3×3八鄰域單元格區(qū)域的視差共享區(qū)域。對于單元格其視差平面的優(yōu)化過程一共有三個:
過程1:初始化視差平面:根據單元格中已知的的視差數據結合擾動量,隨機產生視差平面,并經行塊內圖割法優(yōu)化賦值;
過程2:單元格內視差優(yōu)化:根據循環(huán)次數和視差范圍產生修正量,確定新的視差平面,使用圖割法優(yōu)化塊內視差平面的更新范圍;
過程3:共享區(qū)域內視差共享:從單元格內隨機選取視差平面,依據圖割法優(yōu)化平面視差更新范圍。
上述三個過程中,只有具有特征匹配對的單元格才會執(zhí)行過程1,即初始化視差平面的過程,并在該過程就結束時,將隨機選取視差平面?zhèn)鬟f給視差共享區(qū)域,對于不具有特征匹配點的單元格,只能根據從其他單元格共享的視差平面進行視差優(yōu)化的后續(xù)過程2、3。本文通過上述三個視差優(yōu)化過程,將全圖能量函數的優(yōu)化求解轉化為每個單元與其視差共享區(qū)域內的能量函數最優(yōu)化問題。
本文基于種子區(qū)域擴展的稠密匹配算法的具體步驟如下:
(1)對做圖像進行單元格分割;
(2)具有特征匹配對的單元格執(zhí)行過程1,初始化視差平面;
(3)循環(huán),每個單元格順序執(zhí)行過程2,3,求解全局能量函數最優(yōu)的視差組合;
(4)根據全圖視差平面,求解稠密視差。
雙目立體視覺模型中兩相機的像平面平行,右相機xr軸位于左相機xl軸延長線上,使得兩幅圖像的對極線恰好在同一水平線上,由圖2看出,空間點在兩相機中投影點xl和xr只在水平x軸方向存在視差d。很容易得到:
(9)
其中B是立體相機基線長度,fl=fr是左右相機的焦距。
圖2 雙目視覺模型
為應用雙目視覺模型,獲得假定中虛擬相機的圖像,本文利用稠密視差數據,使用三角測量法獲得目標相機圖像所有像素對應的空間點坐標P(x,y,z),利用雙目立體視覺的視差公式(9),可計算得到目標相機(本文設為左相機)像素xl在虛擬相機成像平面上的對應點xr,此時xr并未整好落在像素點上,虛擬相機像素點ur的具體灰度值難以確定。為此,本文根據xlxr的一一映射,建立反向urxl的一對多映射,取ur對應多點xl的平均值。
為驗證本文算法,本文使用焦距為6 mm,視場角為60°,分辨率為640×480的攝像拍攝自行搭建的真實實驗環(huán)境,如圖3所示。本文算法的運行環(huán)境為:Windows7 64系統(tǒng),Intel Core i5主頻2.6 GHz;在Visual Studio2017編譯平臺下,基于Opencv3.1.0,使用C++語言實現。
在虛擬相機視圖的投影試驗中,使用三張相機在特定位置時拍攝的圖像模擬相機移動過程中的拍攝圖像,圖3中a,b,c三張圖像分別為相機順序左移移動5 mm時拍攝的圖像。本文的驗證策略為:設圖像a和b間的位移幅值T0= 5 mm,算法通過T0計算圖像b、c間的位移T1,并通過對b、c進行稠密匹配后的視差數據,對圖像c進行虛擬相機投影。試驗中為方便對比,將虛擬相機位置設置為圖像b對應的相機位置,即圖像c右側5 mm處。在本文場景中參數的設置為:數據項中e= 2.5,α= 0.85,col= 7.0,grad= 2.0;平滑項中λ=10,= 15,= 0.01,dis= 0.5。
圖3 實驗場景
通過算法計算得到的T1的模值為4.59 mm,由于實驗并未在工作臺上進行,該誤差在目測誤差范圍之內。為加速匹配與算法的魯棒性,稠密匹配前需先對圖像b、c進行立體校正,圖5中圖像a、c分別對應b、c的校正結果。圖4為稠密匹配算法的稠密匹配結果。
從圖中可以看出,對強紋理部分具有很強魯棒性,表面接觸區(qū)域視差傳遞良好,但是算法仍存在傾斜面匹配中的階梯視差情況,且對于跳躍視差區(qū)域存在明顯的過平滑。圖5中圖像b為最終重建的虛擬相機圖像,與原圖a相比,存在明顯的視場變化,對比相應實際視圖可以看到兩圖中的直線的傾斜角度幾乎一致,表明虛擬視角已經很接近實際校正圖像;另外虛擬視圖像素有實際視圖像素間存在一定的整體偏移,初步分析是由于實驗中位移測量、計算中的誤差及部分投影誤差所致。
圖4 圖像b、c的稠密視差圖
圖5 校正后視圖和重建虛擬視圖
基于相機運動過程中視角與視場小幅度變化假設,本文提出了結合SLAM與圖割法優(yōu)化的種子區(qū)域擴展的稠密匹配技術獲取單目立體視圖的算法。實驗驗證表明運用基于SIFT的SLAM位置求取定位模塊能夠在初始位置已知的情況下給出相機的位移信息,同時基于種子區(qū)域擴張的稠密匹配算法,在高紋理和視差連續(xù)區(qū)域具有較強魯棒性,并成功從單目相機的序列圖像重投影得到了假定位置處具有較小影像畸形和缺失的虛擬相機視圖。