宋 坤,易懷安,舒愛華,宋欣茹,黃杰鋒
(1.桂林理工大學機械與控制工程學院,桂林 541006;阜陽師范大學計算機與信息工程,阜陽 236000)
雙目立體視覺技術是計算機視覺中的一個重要領域,其原理是利用雙目相機模仿人的雙眼獲取一對二維圖像,通過立體匹配算法從一對二維圖像中計算出三維結構信息。該技術具備操作簡單、效率高、成本低的優(yōu)點,因此有廣泛的應用領域,如計算機視覺[1-2]、機器人工業(yè)[3]、自動駕駛技術[4-5]、遙感測繪[6-7]等方面。雙目立體視覺技術的主要工作流程包括5個步驟:圖像采集、相機標定[8]、立體校正、立體匹配和三維重建[9]。其中,最核心的步驟為立體匹配。它是根據(jù)左右相機獲取的一對圖像,建立被拍攝物體在左右圖像之間投影點的對應關系,通過立體幾何原理計算投影點的視差,從而得到視差圖。根據(jù)視差圖可以恢復其深度信息,重構物體的三維空間幾何。因此,立體匹配獲得視差圖的精度直接決定三維重建得到立體場景的精確度,所以,提高立體匹配的精度成為了當前研究的熱點。
為了提高立體匹配的精度,科研人員進行了一系列的研究。根據(jù)優(yōu)化理論方法的不同可分為全局立體匹配、局部立體匹配和半全局立體匹配。全局立體匹配算法使用全局優(yōu)化算法進行視差估計,主要有DP[10]、GC[11]、BP[12]算法。該類算法是在能量函數(shù)框架下,把立體匹配問題轉換為求解能量函數(shù)最小化問題。該算法雖然有較高的精度,但是該算法復雜程度較高,耗時長,難以達到實時性。而局部立體匹配使用的是局部優(yōu)化,主要是利用SSD、SAD、Census等局部代價函數(shù)進行視差估計[13],該類算法靈活多變且運算速度快,但是精度較低。因此,HEIKO[14]提出一種半全局立體匹配(SGM)的方法,該算法通過沿圖像上的多條(通常為4或8條)獨立路徑求解一維最小化問題來近似全局解。雖然較好地中和局部匹配和全局匹配的優(yōu)缺點,但在處理遮擋區(qū)域以及視差不連續(xù)區(qū)域的能力較弱,在遮擋區(qū)域的地方出現(xiàn)較大的偏差。近幾年由于深度學習的快速發(fā)展,CAO、CHEN等[15-17]提出了AMDCNet、PGNet、PSNet等立體匹配方法,雖然該方法能很好的解決以上問題,且匹配精度也很高,但是該類方法泛化能力不足,需要依賴大量的訓練數(shù)據(jù)集,立體匹配數(shù)據(jù)集采集難度大,成本高,且應用的場景也過于局限。因此該類方法不能很好的應用到實際場景。
本文針對SGM算法在圖像匹配中遮擋區(qū)域以及視差不連續(xù)區(qū)域的能力較弱問題,在SGM算法基礎上進行視差優(yōu)化,提出一種基于SGM算法結合泛洪填充算法[18-20]和中值平滑的視差優(yōu)化方法。泛洪填充算法是模擬流體擴散過程用特定的顏色填充聯(lián)通區(qū)域的一種算法,該算法被廣泛應用在二維空間中確定連通區(qū)域的圖像處理中,且該算法填充不僅效率高且有較高的準確性,因此利用該算法對視差圖中的遮擋區(qū)域以及視差不連續(xù)區(qū)域進行空洞填充,接著對視差圖進行中值平滑處理,進一步對視差進行細化的方案,大大增加了視差圖的匹配準確度和適用性。
本文算法流程如圖1所示,輸入左右相機采集的圖像對,經(jīng)過Sobel算子處理、代價計算、代價聚合、視差計算、唯一性檢測、泛洪填充算法、中值平滑及左右一致性檢測等步驟最終生成視差圖。首先,本文在代價計算過程中使用BT代價計算,相較于傳統(tǒng)的互信息像素代價計算降低運行時間的同時也提高匹配的精度。然后通過對多路徑的一維約束進行求解各路徑的能量函數(shù)計算像素點總的匹配代價。采用WTA算法進行視差計算。本文在視差優(yōu)化階段使用唯一性檢測、亞像素插值對錯誤的視差進行剔除,接著通過泛洪填充算法對視差弱紋理、重復紋理以及視差不連續(xù)區(qū)域進行填充,利用中值平滑在剔除噪點的同時保留物體的邊緣特征,最后生成視差圖。
1.1.1 預處理
本文在采用Sobel算子對初始圖像進行水平處理,該算子根據(jù)相鄰點灰度的加權差,在邊緣處達到極值這一現(xiàn)象檢測邊緣。對噪聲具有平滑作用,可以精準的計算出邊緣信息,因此使用SobelX水平算子對輸入圖像的邊緣進行提取,水平方向進行梯度濾波處理。
然后再經(jīng)過一個函數(shù)將SobelX處理后圖像上像素點的像素值P,映射到一個新的圖像,像素值為Pnew,映射函數(shù)為:
(1)
式中:preFilterCap是一個參數(shù),可以根據(jù)不同的需求進行調整,經(jīng)過上述處理,可以得到圖像的梯度信息,用于下一步的代價計算。
1.1.2 匹配代價計算
(2)
(3)
取兩個代價的最小值:
C(xR,y,d)=min(cos1,cos2)
(4)
1.1.3 代價聚合
通過圖像上多個方向上的一維路徑約束,建立一個類似全局的馬爾科夫能量方程,代替全局匹配中的能量函數(shù),每個像素最終的匹配代價是所有路徑的疊加,每個方向方向都按照動態(tài)規(guī)劃的方法進行能量積累,如式(5)所示。
(5)
式中:C(P,d)代表的是基于BT代價計算的初始代價項,P是像素點(xR,y),r代表聚合路徑,P1,P2是懲罰因子,數(shù)學模型如式(6)所示。
P=x*number*SAD*SAD
(6)
式中:x為常數(shù),number為待匹配圖像通道數(shù),SAD是代價計算的窗口大小。
將每個方向的匹配代價進行累加得到該像素點總的匹配代價,公式為:
S(P,d)=∑rLr(P,d)
(7)
1.1.4 視差計算
在本文算法中,采用贏家通吃(WTA)算法進行視差計算,即每個像素都選擇最小的代價聚合值所對應的視差作為初始視差(D(p)),一般會把每個像素計算到的視差以左圖為參考存儲視差值,再結合圖像的內外參數(shù)即可轉換為深度圖,計算公式為:
(8)
1.1.5 后處理
SGM算法中后處理階段主要包括:唯一性檢驗、亞像素插值、左右一致性檢測。本文在后處理階段做了大量的處理,在經(jīng)過左右一致性檢驗后,視差圖會有大量的無效區(qū)域,對此本文加入泛洪填充算法與中值平滑,對泛弱紋理、重復紋理以及視差不連續(xù)區(qū)域進行填充,再用中值平滑對圖像的噪點進行剔除。
左右一致性檢查即把左右圖像的位置進行對調,對右圖像進行視差圖計算,并對照兩個視差圖的同名點對是否能夠相互匹配,一般是把左視差圖的每一個像素點計算出同名點在右視差圖中的像素點的位置。再判斷視差值之差的絕對值是否小于一個閾值,如果超過閾值則視為不一致,即該位置視差為無效值。計算公式為:
(9)
泛洪填充算法[15-16]是模擬流體擴散過程用特定的顏色填充聯(lián)通區(qū)域的一種算法,該算法被廣泛應用在二維空間中確定連通區(qū)域的圖像處理中。從一個選定的像素點F(x,y)出發(fā),根據(jù)該像素點與周圍像素點灰度值的差值對周圍目標像素點判斷是否屬于該聯(lián)通區(qū)域,滿足判斷則對該點進行填充,并將該目標點作為新的種子點進行下一輪填充過程,直到完全填充該聯(lián)通區(qū)域。泛洪填充最常見的有四連通和八連通兩種填充算法,如圖2所示。
(a) 四連通填充方向 (b) 四連通填充區(qū)域
由圖2可以看出,四連通填充算法是指從選定的像素點F(x,y)出發(fā),對上、下、左、右4個填充方向上的相鄰像素點進行判斷,以確定是否對該填充方向進行擴展,見圖2a。八連通填充算法則是在四聯(lián)通填充的基礎上加入了左上、左下、右上、右下4個填充方向,見圖2b;圖2c和圖2d分別為四連通和八連通填充區(qū)域。相比較兩種算法,后者會出現(xiàn)跨區(qū)域填充的情況,對于細節(jié)較多的視差圖來說會增大視差圖的誤差,而且計算量較大、耗時較長。而四聯(lián)通不僅會減少計算量在對視差圖空洞填充中的“魯棒性”較強,因此本文選用四聯(lián)通填充算法對視差圖中的空洞進行填充,在視差圖中圖像中,由于無效點(其灰度值為0)與有效點之間的灰度值是存在突變,可以利用泛洪填充算法找到空洞中的某一非零灰度像素點作為起始像素點,對該聯(lián)通區(qū)域進行填充以獲取匹配度更高的視差圖。
中值平滑是一種基于排序統(tǒng)計理論的圖像處理技術,同時也是一種鄰域運算,是生成一個濾波模板,通過從視差圖中的二維模板取出奇數(shù)個像素點的灰度值進行排序,用排序后的中值取代該滑動窗口中心像素的灰度值,從而達到對視差圖的平滑處理。假設w為輸入的二維模板,能夠在整幅圖像上滑動,通常尺寸為3*3或5*5區(qū)域,也可以是不同的形狀如線狀、圓形、十字形、圓環(huán)形等。一般設{xij(i,j)∈I2}表示視差圖各點的灰度值。窗口大小為A,yij是窗口A在xij像素點的中值,則有:
yij=Med{xij}=Med{xi+r,(i,s),(r,s)∈A,(i,j)∈I2}
(10)
中值平滑是一種經(jīng)典的平滑處理方式,它的目的是保護視差圖邊緣特征的同時可以填補視差圖中噪聲點,能夠克服線性濾波器帶來的視差圖像中細節(jié)模糊等弊端。
為了驗證算法參數(shù)的有效性,我們引入均方根誤差(RMSE)、峰值信噪比(PSNR)對視差圖進行分析[18],同時為了更詳細地量化匹配結果,引入平均結構相似性(MSSIM)評價指標計算本文算法得到的視差圖與真實視差圖像相似性。
均方根誤差反映的是變量間的差異程度,是一種基于像素誤差的圖像質量客觀評價指標,用于衡量生成視差圖像和真實視差圖像之間的差異,MSE越小,表示生成的視差圖像效果越好。表達式如下:
(11)
峰值信噪比,用于衡量圖像有效信息與噪聲之間的比率,是衡量圖像失真或噪聲水平的客觀指標,能夠反映圖像是否失真。PSNR的值越大,表示圖像的匹配質量越好。公式為:
(12)
式中:M*N表示圖像的大小,X(i,j)和Y(i,j)表示兩幅圖像的灰度值。
結構相似性是一種用以衡量兩張圖像相似程度的指標,它分別從亮度、對比度、結構3個方面度量圖像相似性,尤其反映了圖像的輪廓,細節(jié)等的相似度,很適合在本實驗中用來衡量生成視差圖與真實視差圖之間的相似程度的客觀評價指標,MSSIM值越大,說明與真實視差圖像更接近,視差圖效果越好,計算公式為:
MSSIM(X,Y)=
(13)
式中:μXk、μYk分別表示圖像X和Y的均值,σXk、σYk分別表示圖像X和Y的方差,σXkYk表示圖像X和Y的協(xié)方差,C1、C2、C3為常數(shù),為了避免分母為零的情況。
在SGM算法的參數(shù)中,有3個關鍵參數(shù)對視差生成效果有很大影響,即SADNowSize、NumDisparities和UniquenessRatio。
(1)SADNowSize(SWS):計算成本步驟中SAD窗口的大小SW應該是奇數(shù),一般在范圍(3,11)內。
(2)NumDisparities(NDis):視差窗口,即最大和最小視差值之間的差值,必須是16的整數(shù)倍。
(3)UniquenessRatio(UniR):主要是為了防止不匹配,這個參數(shù)對最終的匹配結果有很大的影響。在立體匹配中,如果存在不匹配,遇到障礙物檢測應用程序將非常麻煩。此參數(shù)不能為負,可在范圍(5,15)內獲得。
因此,我們將重點分析SWS、NDis和UniR的參數(shù),以選擇最佳算法參數(shù)。利用MSSIM與RMSE對視差圖進行了評估。首先,在程序中,我們設置參數(shù)的初始值,然后調整其中一個參數(shù)(保持其他參數(shù)不變),使值變化最大。同樣,我們調整其他參數(shù)以使其達到最佳狀態(tài),最后選擇所有最佳參數(shù)。設置參數(shù)的初始值:SWS=5、NDis=64和UniR=10。我們僅以teddy的視差圖為例,圖3是配重參數(shù)SWS=5和UniR=10時。更改NDis值時Teddy視差圖所對應的MSSIM與RMSE的評價指標,NDis的值范圍為:(16~112)。
圖3 相對于Ndis的teddy變化(SWS=5,UniR=10)
從圖3可以看出,當Ndis=16、32、48時,teddy的視差圖中的RMSE值在不斷的下降,MSSIM值在不斷的提高,視差圖在隨著Ndis值的增大精度在不斷地提高,當Ndis=80、96、112時,teddy的視差圖中的RMSE值在不斷的上升,MSSIM值在不斷的下降,視差圖在隨著Ndis值的增大精度在降低,由此看見,當Ndis=64時,teddy的圖像匹配效果與真實視差最接近,此時的匹配效果最好。
圖4是配重參數(shù)Ndis=64和UniR=10時。更改SWS值時Teddy視差圖所對應的MSSIM與RMSE的評價指標。
從圖4可以看出。當SWS=3、5、7、9、11時,teddy的視差圖中的RMSE值在不斷的上升,MSSIM值在不斷的下降,由此可見當SWS增大時視差誤差越大,但是視差圖的相似性越大。為平衡二者的優(yōu)劣,本文取SWS=5。
圖5是配重參數(shù)Ndis=64和SWS=5時。更改UniR值時Teddy視差圖所對應的MSSIM與RMSE的評價指標。
從圖5可以看出,當參數(shù)UniR改變時,teddy的圖像匹配效果沒有顯著變化。為了評估生成的teddy視差圖像的全局精度,平衡二者的優(yōu)劣,本文取UniR=12。結果表明,組合(Ndis=64,SWS=5,UniR=12)產(chǎn)生的結果最準確。
為了驗證本文提出的視差圖像優(yōu)化算法的性能,進行3組實驗。分別選用teddy、Books、Dolls、Cloth進行實驗驗證,該實驗的目的是通過評價指標定量評估算法性能;本文算法的代碼通過PyCharm Community Edition 2021.3.2中OpenCV庫實現(xiàn),在配備Intel(R) Core(TM) i5-10400F 2.90 GHz的CPU以16GB內存的計算機上運行。
在Middlebury立體匹配數(shù)據(jù)集中選取teddy、Books、Dolls、Cloth場景,參考以上實驗中的主要參數(shù)取值,用原始SGM算法與本文改進SGM算法分別進行實驗,得到結果如圖6所示。
圖6 teddy、Books、Dolls、Cloth的立體匹配結果
圖7 改進前后RMSE、PSNR、MSSIM指標平均值變化曲線
通過與傳統(tǒng)SGM算法所生成的視差圖比較,本文所提的泛洪算法對視差圖的遮擋區(qū)域有很好的填充效果,如圖6c所示。中值平滑可以剔除對視差圖中的噪點,從而進一步改善視差圖,如圖6d所示。
為了進一步驗證本文改進的SGM算法的優(yōu)越性,利用均方根誤差(RMSE)、峰值信噪比(PSNR)、結構相似性(MSSIM)評價方法對實驗結果進行量化評價。從而對本文所改進的SGM算法進行量化分析。定量評價結果如表1所示,其中b列是傳統(tǒng)SGM算法得到視差圖的量化評價,c列為在SGM算法的基礎上引入泛洪填充算法所得到視差圖的量化評價,d列為在c列的基礎上再對視差圖進行中值平滑處理所得到視差圖的量化評價。
表1 基于Middlebury數(shù)據(jù)集部分圖像匹配量化指標
通過對表1中的量化指標分析可以看出,所提改進SGM算法增加了泛洪填充算法與中值平滑算法的方法,僅在SGM算法中加入泛洪填充算法,RMSE指標平均值下降1.66,PSNR指標平均值上升4.64;MSSIM指標平均值上升8.25%,由于改進后的視差圖是根據(jù)空洞邊緣的視差值來決定空洞的視差值填充,對于丟失的部分可以得到有效的補充,使得改進后的算法所生成的視差圖準確度得到提升。在后處理階段加入中值平滑后,RMSE指標平均值下降0.17;PSNR指標平均值上升0.42;MSSIM指標平均值上升0.75%,中值平滑可以很好的去除視差中的噪點,從而提高視差的精確度。通過對3項指標的量化分析可以看出,改進后的SGM算法,RMSE指標平均值下降1.83;PSNR指標平均值上升5.06;MSSIM指標平均值上升9.00%。與傳統(tǒng)SGM算法相比較之下,本文改進的SGM算法在立體匹配中性能有較高的提升。
本文提出一種在SGM算法基礎上引入泛洪填充算法以及中值平滑。在視差后處理階段采用泛洪填充算法對圖像匹配中遮擋區(qū)域以及視差不連續(xù)區(qū)域中空洞進行填充,先是對空洞邊緣的信息進行選取,然后基于空洞的邊緣信息進行空洞填充,不僅很好的保留圖像的邊緣信息,而且對視差圖的空洞很好的進行填充,接著再對圖像進行中值平滑處理,對視差圖中的噪點進行剔除。與傳統(tǒng)SGM算法相比本文所改進的立體匹配準確度提高了9.00%。