周 喆,沈建新,韓 鵬,江俊佳
(南京航空航天大學(xué) 機(jī)電學(xué)院,江蘇 南京 210001)
雙目立體視覺(jué)作為計(jì)算機(jī)視覺(jué)領(lǐng)域的重要分支之一,近年來(lái)得到了長(zhǎng)足的發(fā)展,大量的研究成果也應(yīng)用在了三維測(cè)量、車(chē)輛檢測(cè)[1]、機(jī)器人定位[2]等領(lǐng)域。所謂雙目立體視覺(jué)匹配技術(shù),即通過(guò)兩臺(tái)攝像機(jī)分別獲取同時(shí)刻的兩幅圖像,并通過(guò)攝像機(jī)的內(nèi)外參數(shù)、圖像中相同景物的像素點(diǎn)的對(duì)應(yīng)關(guān)系,得到對(duì)應(yīng)像素點(diǎn)的視差值,從而獲取整張圖片的視差圖的技術(shù)。雙目立體視覺(jué)系統(tǒng)包括以下幾個(gè)組成部分:攝像機(jī)標(biāo)定[3-4]、圖像獲取、立體校正、立體匹配[5]、三維重建[6]等。立體匹配獲得的視差圖的準(zhǔn)確性,是三維重建獲得優(yōu)良立體場(chǎng)景的前提。
立體匹配算法包括局部匹配算法和全局匹配算法,全局匹配算法本質(zhì)上將立體匹配問(wèn)題轉(zhuǎn)化為尋找全局能量函數(shù)的最優(yōu)化問(wèn)題,可獲得相對(duì)較低的誤匹配率,匹配效果較好,但由于算法復(fù)雜度高,運(yùn)行時(shí)間較長(zhǎng),不利于大部分實(shí)際工程運(yùn)用。代表算法有動(dòng)態(tài)規(guī)劃算法[7]、圖割法[8]、置信傳播法[9]等。而局部匹配算法包括基于區(qū)域的立體匹配算法、基于特征的立體匹配算法和基于相位的立體匹配算法,代表算法有SAD算法[10]、SIFT算法[11]等?;趨^(qū)域的匹配算法的相似度測(cè)量一般依賴于像素點(diǎn)的灰度值。Zabin 等[12]提出的Census變換立體匹配算法由于包含了窗口內(nèi)的像素點(diǎn)的信息,所以一定程度上增加了算法的魯棒性,但邊緣的像素點(diǎn)的匹配結(jié)果也受到了一定的影響。Yoon 等[13]提出了自適應(yīng)權(quán)重(ASW)的立體匹配算法,邊緣像素點(diǎn)的匹配情況大大改善,但提高了算法的整體復(fù)雜度,不利于硬件實(shí)現(xiàn)。為了改善上述情況,本文在Census 算法的基礎(chǔ)上進(jìn)行了優(yōu)化,同時(shí)引入引導(dǎo)濾波器[14]作為自適應(yīng)權(quán)重,與中心像素之間的空間距離越近則權(quán)重越大,與中心像素相似程度越接近,其權(quán)重越大。
1.1.1 代價(jià)匹配步驟
Census 立體匹配算法是一種局部匹配算法,Census 變換是算法的代價(jià)匹配步驟,它是將像素p和以它為中心的窗口映射為一個(gè)比特流,用該比特流作為中心像素點(diǎn)的Census 變換碼。傳統(tǒng)的Census 變換的映射關(guān)系如(1)式所示:
式中:Ι(p)、I(q)表示像素點(diǎn)p、q的值。Census 變換中對(duì)應(yīng)像素點(diǎn)的比特流均由(1)式的映射關(guān)系得到,其定義如下:
式中:Ccen代表圖像某窗口中心像素點(diǎn)(x,y)的Census 變換碼;I(x,y)表示中心像素點(diǎn)的灰度值的大小;I(x+i,y+j)表示的是中心像素點(diǎn)周?chē)狞c(diǎn)的灰度值大?。籰、r分別表示窗口寬度的一半和高度的一半; ?表示按位連接。由此可得到左右兩幅圖的Census 變換碼。在此基礎(chǔ)上計(jì)算漢明距離,通過(guò)漢明距離的相似性得出最后的匹配代價(jià),定義如(3)式所示:
式中:Ccenl(x,y)表示左圖中點(diǎn)(x,y)的Census 變換碼;Ccenr(x-d,y)表示右圖中對(duì)應(yīng)于左圖(x,y)點(diǎn)視差為d的Census 變換碼;C(x,y,d)代表Hamming距離之和,即兩個(gè)比特串對(duì)應(yīng)位相異的個(gè)數(shù)和。
1.1.2 代價(jià)聚合步驟
得到左右兩幅圖各個(gè)像素點(diǎn)的代價(jià)值之后,就需要將其匹配窗口中的代價(jià)值代價(jià)聚合起來(lái),將窗口聚合得到總匹配代價(jià),其定義如(4)式所示:
式中:l、r分別表示聚合窗口寬度的一半和高度的一半,在選定的視差范圍d∈(dmin,dmax)內(nèi),得出最小的總匹配代價(jià)值,即圖中坐標(biāo)為 (x,y)的視差。由此得到所有點(diǎn)的初始視差就得到了初始視差圖。
1)由于像素p的比特流全部依賴于窗口中心像素的灰度值,因此一旦中心像素點(diǎn)受到外界諸如光照等[15]干擾,其比特流就會(huì)發(fā)生顯著變化,從而導(dǎo)致視差圖中對(duì)應(yīng)像素點(diǎn)誤匹配,大大降低了圖片的匹配精度。
2)由于Census 變換匹配窗口的權(quán)值相同,即距離中心像素點(diǎn)的距離、像素值大小等因素不會(huì)影響其在代價(jià)匹配中的影響因子[16],因此對(duì)于邊緣點(diǎn)等像素梯度變化較大的區(qū)域,匹配誤差會(huì)很大,造成誤匹配點(diǎn)的形成。
基于上述原Census 算法存在的問(wèn)題,本文在不顯著提高算法復(fù)雜度和運(yùn)算時(shí)間的前提下,將算法進(jìn)行了部分改進(jìn)。算法流程圖如圖1 所示。
圖1 算法流程圖Fig.1 Algorithm flow chart
2.1.1 代價(jià)匹配步驟
本文擬對(duì)Census 變換進(jìn)行改進(jìn),首先在窗口中心像素的選擇上,將中心像素的臨近4 個(gè)像素灰度值的平均值與中心像素相比較,并設(shè)定閾值,若差值小于閾值,則說(shuō)明該窗口中心點(diǎn)受外界因素影響較小或并不是邊緣點(diǎn),中心像素滿足精度要求,反之則以鄰近像素灰度值的平均值代替中心像素,減少因?yàn)楣庹盏韧饨缫蛩囟鴮?dǎo)致的精度缺失。像素平均值定義如(5)式:
式中:Iaverage(x,y)表示以窗口中心像素為中心的臨近4 個(gè)像素的平均值;I(x-1,y)表示離中心像素左邊最近的像素點(diǎn),其余3 個(gè)像素點(diǎn)同理。得到平均值后,將其與原窗口中心像素點(diǎn)灰度值比較并求出絕對(duì)值,最后將此絕對(duì)值與預(yù)設(shè)閾值進(jìn)行比較,確定中心像素灰度值的選擇,窗口中心像素的灰度值選擇如(6)式定義:
式中:T1表示本文中設(shè)定的閾值,當(dāng)T1設(shè)定比較大時(shí),對(duì)因外界因素而產(chǎn)生的突變點(diǎn)影響較小,Census 變換碼變化不大,即可能會(huì)影響匹配精度;當(dāng)T1設(shè)定比較小時(shí),若中心點(diǎn)本就發(fā)生了突變,平均值計(jì)算可能會(huì)使變換碼判斷出現(xiàn)錯(cuò)誤,即會(huì)影響到深度不連續(xù)區(qū)域的視差判斷,因此本文在通過(guò)多幅圖像不同閾值下的Census 變換碼的變化情況的比對(duì)分析后,選擇閾值T1取12 較為合適。
2.1.2 匹配代價(jià)聚合步驟
分別將左右圖像進(jìn)行改進(jìn)的Census 變換,計(jì)算Hamming 距離之后,要想獲得高精度的視差圖,就需要進(jìn)行匹配代價(jià)聚合。但由于原Census 匹配算法是對(duì)固定窗口進(jìn)行聚合,且窗口內(nèi)代價(jià)權(quán)值相同,所以在邊緣點(diǎn)等像素梯度變化大的點(diǎn)匹配精度較低,本文選用具有邊緣保持特性的引導(dǎo)濾波[17-18]來(lái)進(jìn)行代價(jià)聚合,拋棄了原有的Census 算法中的固定權(quán)值聚合方法,每個(gè)點(diǎn)的匹配代價(jià)P(x,y)=C(x,y,d)都需要進(jìn)行濾波,根據(jù)距離中心像素點(diǎn)的距離進(jìn)行權(quán)值分配。相比于Census 的計(jì)算復(fù)雜度O(NW),引導(dǎo)濾波的計(jì)算復(fù)雜度僅為O(N),其中W為濾波窗口的大小,N為圖像的大小,即引導(dǎo)濾波復(fù)雜度僅與圖像大小有關(guān),和窗口大小無(wú)關(guān)。
引導(dǎo)濾波是一種線性濾波器,其局部線性濾波模型公式為
其中:q是濾波后的輸出圖像;I是引導(dǎo)圖像,引導(dǎo)圖像與輸出圖像可以相同,也可以不同;a和b是當(dāng)窗口中心位于k時(shí)該線性函數(shù)的不變系數(shù)。該方法的假定條件是:q與I在以像素k為中心的窗口中是存在局部的線性關(guān)系的,對(duì)(7)式兩邊求導(dǎo),可知輸出圖像的梯度信息完全由引導(dǎo)圖像的梯度信息確定,只有當(dāng)引導(dǎo)圖像出現(xiàn)邊緣時(shí),輸出結(jié)果才會(huì)出現(xiàn)邊緣,而a和b的值即會(huì)決定梯度信息和平滑信息的權(quán)重大小。
為了求解(7)式中的a、b的值,即假設(shè)p和q是濾波前的結(jié)果,并滿足使q和p的差別最小,根據(jù)無(wú)約束圖像還原的方法可以轉(zhuǎn)化為求最優(yōu)化的問(wèn)題,求解可得(8)式和(9)式。其中: μk表示I在局部窗口W中的平均值;表示I在局部窗口中的方差;表 示窗口中所有數(shù)的平均值; ε表示截?cái)嘀怠?/p>
由等式可知,上述參數(shù)均是在窗口 ωk中求得的,然而,任意的一個(gè)像素是被好幾個(gè)窗口所共用的,即每個(gè)窗口都會(huì)產(chǎn)生參數(shù)ak和bk,所以該像素的代價(jià)聚合就可由(10)式求得:
將所有求得的代價(jià)聚合數(shù)據(jù)進(jìn)行比較,在視差搜索范圍內(nèi),代價(jià)聚合值最小的視差索引號(hào)即為該點(diǎn)的視差。由此得到所有點(diǎn)的視差就得到了最終視差圖。
由于雙目攝像機(jī)的位置不同,拍攝角度也不同,這可能會(huì)導(dǎo)致左圖像中的某點(diǎn)在右圖像中是無(wú)法找到對(duì)應(yīng)點(diǎn)的,但在立體匹配的過(guò)程中,匹配算法必定會(huì)計(jì)算出一個(gè)值來(lái)與圖像對(duì)應(yīng),這就造成了匹配精度的下降,為了減少這種情況的發(fā)生,在視差精化[17]階段,我們一般都會(huì)采用左右一致性檢測(cè)再檢測(cè)異常的匹配點(diǎn),并對(duì)其進(jìn)行視察點(diǎn)的填充。具體就是根據(jù)之前得到的左右兩幅視差圖,假設(shè)左圖中p點(diǎn)的最佳視差值是d1,即在右圖中,此點(diǎn)的對(duì)應(yīng)點(diǎn)應(yīng)為p-d1,記此點(diǎn)視差值為d2,若滿足下式:
式中T2表示閾值,一般取1 或2,則說(shuō)明P點(diǎn)為有效匹配點(diǎn),反之則為無(wú)效匹配點(diǎn),需要將其修正,修正方法一般為以此點(diǎn)水平左右的最近的一個(gè)有效匹配點(diǎn)代替。
本文所提算法將在Middlebury 立體測(cè)試平臺(tái)上進(jìn)行立體匹配評(píng)估,實(shí)驗(yàn)圖像采用Tsukuba、Venus、Teddy 和Cones 圖像對(duì),實(shí)驗(yàn)?zāi)M環(huán)境為Visual Studio 2015 下的C/C++環(huán)境和opencv 3.2。計(jì)算機(jī)配置為Windows 7 64 位系統(tǒng),CPU 為Intel Core i7 處理器,主頻為3.6 GHz,內(nèi)存為8 GB。
為了驗(yàn)證算法的實(shí)際精度,本文中實(shí)驗(yàn)誤差閾值設(shè)為1,即對(duì)比實(shí)驗(yàn)中誤差最大不超過(guò)1 個(gè)像素點(diǎn),超過(guò)則該點(diǎn)被定義為誤匹配點(diǎn),實(shí)驗(yàn)中涉及的參數(shù)由表1 所示。
表1 本文立體匹配算法中涉及到的參數(shù)數(shù)據(jù)Table 1 Parameter data involved in stereo matching algorithm
在進(jìn)行精度比較之前,需要通過(guò)比較計(jì)算出本文算法的最合適的匹配窗口大小。首先,定義本算法的窗口匹配大小從1×到21×21 不等,用這些不同大小的支持窗口分別對(duì)Tsukuba、Venus、Teddy和Cones4 幅圖像對(duì)進(jìn)行不連續(xù)區(qū)域(Disc)、非遮擋區(qū)域(Nocc)和所有區(qū)域(All)的誤匹配率對(duì)比,從而根據(jù)不同誤匹配率的大小來(lái)確定本算法最合適的窗口匹配大小。
圖2 給出了本文算法在Tsukuba 圖像對(duì)中不同半徑下的誤匹配率的情況,圖中標(biāo)紅(彩圖見(jiàn)電子版)的地方便是誤匹配點(diǎn),可以看出,在此圖像對(duì)中,當(dāng)窗口大于9×9 時(shí),誤匹配率的下降已經(jīng)很緩慢了,甚至?xí)猩仙那闆r發(fā)生,而窗口的增大則會(huì)使算法的計(jì)算復(fù)雜度大大增加。
圖2 不同窗口半徑下算法誤匹配率的情況Fig.2 Mistake matching rate of algorithm under different window radii
將所有區(qū)域(All)誤匹配率測(cè)試數(shù)據(jù)整合如圖3 所示,圖中高亮點(diǎn)為不同圖像對(duì)在所有區(qū)域(All)誤匹配率最小時(shí)的窗口半徑,由試驗(yàn)數(shù)據(jù)可知,4 組圖像對(duì)的理想最小誤匹配率均不相同,但趨勢(shì)均由陡變緩,考慮到其他兩種誤匹配率的數(shù)據(jù)和窗口增大計(jì)算復(fù)雜度增加的問(wèn)題,后續(xù)實(shí)驗(yàn)本文將取rGF=8。
圖3 不同半徑下4 組圖像對(duì)所有區(qū)域(All)誤匹配率Fig.3 Mistake matching rate of four groups of images atdifferent radii for all regions
在本文選出合適的參數(shù)后,為了驗(yàn)證此立體匹配算法的有效性和精確度,選出了基于自適應(yīng)支持權(quán)重(ASW)算法、傳統(tǒng)Census 算法、ADCensus算法、聯(lián)合近似雙邊濾波方法(Fast Bilateral Stereo,FBS)等不同的匹配代價(jià)算法,對(duì)上文提到的4 組標(biāo)準(zhǔn)立體圖像對(duì)進(jìn)行實(shí)驗(yàn)測(cè)試,通過(guò)與上述幾種不同立體匹配算法在非遮擋區(qū)域(Nocc)誤匹配率、所有區(qū)域(All)誤匹配率和不連續(xù)區(qū)域(Disc)誤匹配率的比較來(lái)比較測(cè)試本算法的性能。
表2 是在閾值為1 的情況下本文算法和其他幾種局部匹配算法的誤匹配像素比,可以看到,相比于改進(jìn)前的傳統(tǒng)Census 算法,本文算法在各個(gè)圖像對(duì)的誤匹配像素比均遠(yuǎn)低于傳統(tǒng)的Census 立體匹配算法,在與其他優(yōu)秀的匹配算法的比較中,也能保持整體上的精度相當(dāng),尤其是在不連續(xù)區(qū)域的誤匹配率上,有了引導(dǎo)濾波的保留邊緣的能力,其誤匹配率大大降低,但與ADCensus 算法比較時(shí),整體還是有一定的差距,例如在Teddy 圖像對(duì)中的誤匹配率比較,本文算法誤匹配率幾乎是ADCensus 算法的一倍,說(shuō)明本文算法還有較大的提升空間。
圖4 是本算法在用不同圖像對(duì)進(jìn)行實(shí)驗(yàn)的部分測(cè)試圖,圖中前兩列分別是標(biāo)準(zhǔn)圖Tsukuba、Teddy 和Cones 的左右視圖,第3 列為標(biāo)準(zhǔn)圖像的標(biāo)準(zhǔn)視差圖,第4 列為本文算法的初始視差圖,最后一列是經(jīng)過(guò)視差精化的最終視差圖,將最終視差圖與第3 列的標(biāo)準(zhǔn)視差圖相比較,可以看出,本文的改進(jìn)算法在大部分區(qū)域匹配效果準(zhǔn)確,圖像邊緣點(diǎn)、深度不連續(xù)區(qū)域的匹配精度很高。
表2 本文匹配算法與常見(jiàn)局部匹配算法對(duì)比Table 2 Comparison of proposed matching algorithm and common local matching algorithm
由于本文是基于Census 立體匹配算法的改進(jìn)算法,將本文算法得到的視差圖與Census 算法對(duì)比,得到結(jié)果如圖5 所示。
圖5 第1 行分別為傳統(tǒng)Census 算法在標(biāo)準(zhǔn)圖庫(kù) Cones、Venus、Teddy 和Tsukuba 中的視差圖,而第2 行為本文經(jīng)過(guò)視差精化后的視差圖,可以明顯看出,本文的Census 改進(jìn)算法在所有區(qū)域都表現(xiàn)出比原始Census 算法更高的精確度,尤其在深度不連續(xù)區(qū)域,如物體邊緣區(qū)域、前景背景的交界處,效果更為明顯。
雖然考慮到窗口大小對(duì)算法復(fù)雜度的影響,但近年來(lái)由于硬件的快速提升,計(jì)算機(jī)的運(yùn)算速度不斷提高,本文并沒(méi)有在減少算法計(jì)算量上進(jìn)行深入的研究,所以在匹配時(shí)間上對(duì)比其他優(yōu)秀算法可能還是會(huì)有所欠缺,后續(xù)會(huì)加入CUDA(Compute Unified Device Architecture)并行的計(jì)算方法來(lái)進(jìn)行優(yōu)化。
圖4 本文匹配算法結(jié)果圖Fig.4 Result diagram of matching algorithm
圖5 本文Census 改進(jìn)算法與傳統(tǒng)Census 立體匹配算法視差對(duì)比結(jié)果示意圖Fig.5 Schematic diagram of parallax comparison between Census improved algorithm and traditional Census stereo matching algorithm
本文提出了一種基于Census 變換和引導(dǎo)濾波的局部立體匹配算法,用窗口四周4 個(gè)像素的平均值和中心像素點(diǎn)的像素值作比較,增強(qiáng)了變換窗口的穩(wěn)定性,提高了算法對(duì)外部環(huán)境變化的適應(yīng)能力;在代價(jià)聚合時(shí)引用引導(dǎo)濾波器,進(jìn)一步提高了算法的匹配精度,最后通過(guò)視差精化步驟得到了稠密的精確視差圖,通過(guò)與其他算法的對(duì)比試驗(yàn)表明,本文算法比傳統(tǒng)Census 立體匹配算法在匹配效果上有大幅度的提升,尤其是深度不連續(xù)區(qū)域的精度大有改善,但本文算法在實(shí)時(shí)性上并沒(méi)有很大突破,加入CUDA 并行策略加速獲取視差圖是后續(xù)的主要工作。