侯一民,尚浩天
(東北電力大學自動化工程學院,吉林吉林,132012)
立體匹配是當前雙目視覺領域發(fā)展的重點和研究熱點。各國研究學者都進行著深入的探索和研究,新的算法、模型及應用前景等不斷涌現(xiàn)。例如,C.Tomasi提出了一種基于雙邊濾波的代價聚合方法[1],該方法改進了圖像邊緣的匹配精度。尹傳歷團隊首先將待匹配圖像用均值平移算法實現(xiàn)了顏色信息聚類處理后,計算初始視差,然后用圖割算法得到全局能量最小的視差作為最優(yōu)[2]。
雙目立體視覺系統(tǒng)的應用過程中,雙目相機所在場景、位置不同,采集的圖像會受到很多因素干擾,例如光照、遮擋等,容易造成誤匹配。在實際應用中,只能夠根據(jù)不同場景和約束條件來選擇合適的匹配算法。立體匹配也成為了當前的研究難點。
立體匹配算法原理[3]即以左目圖像為參考,任取一像素點作待匹配像素點為中心取m×n的矩形窗口,再根據(jù)極線約束原理,在右目圖像上肯定存在一個像素點與像素點對應匹配,接著從右目圖像上沿著極線方向每個視差對應的整個窗口內所有像素點的匹配代價相似性最大的點所對應的視差值視為該像素的視差值。如圖1所示。
圖1 立體匹配過程圖
經研究工作者對立體匹配算法進行了全面的總結,具體計算過程可分解為四步[4]:
第一步:代價計算。匹配代價是指對于雙目圖像匹配點對之間相似程度的一種數(shù)學描述。對應點之間的匹配代價越小表示它們間的差異越小,相關性越高,越可能成為對應匹配點,這種相似性的衡量需要利用相似性度量函數(shù)來計算測量。不同的立體匹配算法所選取的相似性度量函數(shù)有所不同。
第二步:代價聚合?;趨^(qū)域的匹配算法是以像素點的灰度值作為匹配基元,但是如果只是利用單個像素點的灰度值計算得到的匹配代價衡量,會有可能在多個匹配點上得到同樣的匹配代價,這樣很容易在后期視差選擇上造成歧義,使匹配出錯。因此,為了提升匹配準確度,一般在匹配算法中加入代價聚合的匹配窗口,將匹配點鄰域內的所有像素點的匹配代價也計算出來,然后對所選窗口內的所有像素點匹配代價進行聚合,再用聚合后的代價衡量待匹配點之間的相關性。
第三步:視差值選擇。在視差值選擇最優(yōu)值的方法,目前最常見的方法是采用WTA(Winner Take All)方法,選取最小代價值所對應的視差值作最優(yōu)的視差。
第四步:視差圖優(yōu)化。經過以上三步處理后得到的視差圖還會存在一些噪聲點,為了使視差圖的效果看起來更好一些,還需要進行一些濾波操作,比如最常用、有效的方法是中值濾波,其采用不同的窗口濾波的效果也有所不同。
立體匹配算法中局部匹配算法原理比較簡單,但在視差圖像的遮擋區(qū)域與視差不連續(xù)區(qū)域的處理效果比較差;全局匹配算法處理的視差圖效果較好,但是圖割匹配算法比較復雜,運行時間過長不利于實時性。通過綜合分析來看,半全局匹配算法在各方面來看應用效果更好,因而本文算法主要是針對半全局匹配算法進行改進與優(yōu)化。
在匹配代價計算上采用CEN算法[5]與SAD算法再加梯度信息相結合的方式。CEN算法首先選取一個3×3窗口,接著將窗口內所有像素與中心像素相比較,選定大于中心像素即為0,小于則為1。然后求取它們的hamming距離進而比較相似度。
SAD算法即先構造一個小窗口循環(huán)覆蓋左邊圖像,直到將所有點遍歷一遍,右邊圖像同樣覆蓋遍歷,同時左、右邊窗口中像素點灰度值相減得到絕對值之和,其中最小的一個值即為顏色信息的匹配代價。
梯度信息可以有效解決視差不連續(xù)區(qū)域的誤匹配問題,提高匹配精確度。
綜上,代價計算算法具體計算方法如式(1)所示:
代價聚合本質上是一個濾波過程,本文采用的是引導濾波算法。代價計算獲得的都是孤立像素區(qū)域的視差值并且?guī)в写罅吭肼暎鷥r聚合便能有效地解決問題,提高精度。本文在算法上將雙目圖像分解到多個尺度上,接著單獨進行代價計算、代價聚合,然后融合代價聚合的結果,最終獲得視差圖。得到的不同尺度下的初級匹配效果如圖2所示。
圖2 金字塔處理效果圖
從圖中可以看出如同人眼中的不同觀測范圍,距離越遠視差圖越小,把握了主體的輪廓信息,距離越近,視差圖的細節(jié)效果越明顯。
為了融合多個尺度的信息,這里引入一致性約束規(guī)則進行約束。經正則化后各尺度下的代價聚合結果如式(2)所示:
其中,λ為正則化因子為尺度參數(shù);Zi為歸一化常數(shù);Ni代表中心點像素為i的局部支持窗口;z為所期望優(yōu)化的目標輸出值;為經正則化后各尺度下的代價聚合結果。
視差優(yōu)化:一般通過以上方法計算后獲取的視差圖會包含一些缺點,如遮擋區(qū)域的視差不準確、噪聲點、誤匹配點仍然存在,因此還需進一步優(yōu)化視差圖。本文采用的是加權中值濾波和左右一致檢測結合的方法。
左右一致檢測方法:在立體匹配過程中由于遮擋區(qū)域和誤匹配兩種干擾因素導致了視差圖中產生了奇異點。因為奇異點區(qū)域的原因是視差圖效果不是很好,因此需要左右一致檢測將奇異點區(qū)域檢測并標記出來,然后針對不同的情況進行合理插值。奇異點判別定義如式(3)所示:
其中w表示圖像像素列數(shù),disparity表示視差圖中的視差值,DL(p)表示左圖像素點p的視差值,DR(p?DL(p))表示右圖像素點p?(DL(p),0)處的視差值,dispTolerance表示可容許范圍內視差誤差閾值。
然后通過公式判斷誤匹配點與遮擋點,如式(4)所示:
其中disp表示有效視差值,DL(p)為左圖中p點視差值,DR(p?DL(p))表示右圖像素點p?(DL(p),0)處視差值。若視差圖中奇異點是遮擋點常用鄰域較小值代替,遮擋區(qū)域的產生大多因為背景的影響,誤匹配區(qū)填充多因匹配代價與像素值的差異的影響,一般找相似區(qū)域的值代替。
中值濾波:一般以上操作完成之后,會再進行一步中值濾波加以消除可能存在的噪聲點。具體過程如下:
首先遍歷得到視差中的點,假設遍歷到一點p,且已知其像素值為d,其左右鄰域像素中點的匹配代價分別為c(p,d?)和c(p,d+),p點對應的匹配代價為c(p,d),然后通過公式(5)所示,計算第三項的值,若在范圍內則將p點像素值用d+代替,否則保持原值。
經以上算法運算后得到最終視差圖如圖3所示。
圖3 本文算法匹配效果圖
對視差圖進行一系列處理之后,若單純只憑感官是不能客觀的對視差圖作出有效的判斷。為此本文引入了一種評估方法,分別計算視差圖的所有區(qū)域、視差不連續(xù)區(qū)域以及非遮擋區(qū)域的誤匹配百分比。通過運算得到的數(shù)據(jù)可以清晰的看出各個方面的不足,以便能夠有針對性的對其進行優(yōu)化改進。本文對算法的評估所用的測試照片來自于Middlebury數(shù)據(jù)平臺,算法運行環(huán)境為VS2013+Opencv2.4.13。圖4是本文算法生成視差圖的錯誤點圖。
圖4 本文算法評估
為了給出更加準確的比較結果,又將本文算法得到的視差圖在all, disc, non三部分分別與SGBM、BM、GC、自適應窗口等算法生成的視差圖進行對比,其中all, disc,non分別代表所有區(qū)域、非連續(xù)區(qū)域和非遮擋區(qū)域。測試結果如表1所示。
從表1中可以看出,本文算法在局部匹配算法的范圍內,匹配精度有了很大的提高,但是相比于GC算法,在匹配精度的比較上還有一些差距,為我們提供了改進的方向。
表1 誤像素匹配百分比
本文首先闡述了立體匹配算法的原理,接著針對半全局匹配算法進行改進和優(yōu)化,詳細介紹了本文算法的原理,并且通過在Middlebury數(shù)據(jù)測試平臺上進行對比分析表明了本文算法的優(yōu)越性。本文所研究的算法在匹配精度方面有了一些提高,但是在執(zhí)行速度上有所下降,因為算法的復雜度有所提高,所以增加了一定的運算時間,而且在算法精度上依然有上升的空間,有些算法步驟還可以進行更加細致的研究,在應用于真實場景中的視差圖效果依然需要改進,下一步便是針對這些問題進行研究。