王 丹,楊家琪,楊謝柳
(沈陽(yáng)建筑大學(xué)機(jī)械工程學(xué)院,遼寧 沈陽(yáng) 110168)
立體匹配作為計(jì)算機(jī)視覺(jué)研究的基礎(chǔ)和熱點(diǎn)之一,其主要任務(wù)是找到實(shí)際環(huán)境物體在雙目或多目視圖上的對(duì)應(yīng)點(diǎn),進(jìn)而獲得較為準(zhǔn)確的三維位置信息,其在機(jī)器人導(dǎo)航、地圖重構(gòu)及人工智能等領(lǐng)域得到廣泛應(yīng)用?,F(xiàn)有的立體匹配算法有很多種,大致可以分為局部立體匹配算法和全局立體匹配算法。全局立體匹配算法在全局范圍內(nèi)建立一個(gè)能量函數(shù),利用優(yōu)化函數(shù)求取最小值。目前,主要的算法有動(dòng)態(tài)規(guī)劃[1]、圖割法[2]和基于遺傳算法[3]等。全局立體匹配算法計(jì)算結(jié)果精度高,但是算法結(jié)構(gòu)復(fù)雜,運(yùn)算時(shí)間久,在實(shí)時(shí)匹配場(chǎng)景下有局限性。局部立體匹配算法以單像素為中心在其周圍建立窗口,利用周圍窗口信息計(jì)算單像素的視差。由于周圍窗口信息的局限性,相較全局匹配算法匹配精度低,但是算法結(jié)構(gòu)簡(jiǎn)單,計(jì)算復(fù)雜度低,運(yùn)算時(shí)間短,易于實(shí)現(xiàn)。近年來(lái),有大量的基于局部的算法被提出,使得局部匹配算法的精度大大提升,有利于獲得精度較高的稠密視差圖。
閆利等[4]將立體匹配分為匹配代價(jià)計(jì)算、匹配代價(jià)聚合、視差計(jì)算和視差精化4個(gè)部分。常用局部立體匹配代價(jià)計(jì)算[5-6]主要有以下幾種:基于距離的代價(jià)計(jì)算函數(shù)有像素灰度差絕對(duì)值之和函數(shù)(SAD)、像素灰度差平方和函數(shù)(SSD)等;基于相關(guān)性的代價(jià)計(jì)算函數(shù)有歸一化相關(guān)函數(shù)(NCC)、零均值歸一化函數(shù)(ZNCC)等;基于非參數(shù)變換的代價(jià)計(jì)算函數(shù)有Rank和Census[7]等。近年來(lái),研究者又提出了許多新的局部匹配代價(jià)計(jì)算方法。De-Maeztu等[8]對(duì)基于梯度的匹配代價(jià)進(jìn)行了改進(jìn),Lee等[9]提出了三狀態(tài)Census變換。Hirschmuller等[10]通過(guò)對(duì)比不同匹配代價(jià)算法,發(fā)現(xiàn)Census算法對(duì)角度、色彩、光照的敏感度較弱,魯棒性較好。許金鑫等[11]發(fā)現(xiàn)Census變換減小了匹配結(jié)果中相機(jī)對(duì)圖片引起的外部干擾,但是Census變換過(guò)分依賴窗口中心的單像素,導(dǎo)致該算法在噪聲過(guò)多或者重復(fù)紋理區(qū)有較高的誤匹配率。SAD變換對(duì)圖像的灰度有很好的體現(xiàn),在重復(fù)紋理區(qū)的邊緣區(qū)域有較好的匹配效果,但SAD算法本身對(duì)噪聲極其敏感,魯棒性較差。Mei等[12]將SAD算法與Census算法結(jié)合,在重復(fù)紋理區(qū)域取得了較好的效果,很好地平衡了SAD和Census變換的優(yōu)缺點(diǎn)。在之后的研究當(dāng)中,Yoon等[13]、He等[14]在代價(jià)聚合階段分別采用雙邊濾波和引導(dǎo)圖濾波,保證了圖像邊緣效果的同時(shí),也保證了計(jì)算效率。以上算法在進(jìn)行代價(jià)聚合階段之前,都完成了匹配代價(jià)的計(jì)算,而且匹配代價(jià)的計(jì)算準(zhǔn)確性對(duì)代價(jià)聚合階段有很大的影響。
針對(duì)以上問(wèn)題,本文對(duì)于Census變換過(guò)分依賴窗口中心單像素信息的問(wèn)題,添加了局部像素反差值對(duì)中心像素進(jìn)行選擇的策略,改進(jìn)了Census變換算法,豐富了變換信息的計(jì)算方法,更充分地利用了待匹配點(diǎn)周圍的像素信息,改善了算法對(duì)噪聲的敏感。
本文算法按照匹配代價(jià)計(jì)算、匹配代價(jià)聚合、視差計(jì)算和視差精化4個(gè)部分完成圖像匹配。其中,匹配代價(jià)計(jì)算階段采用改進(jìn)Census和改進(jìn)SSD結(jié)合的代價(jià);在匹配代價(jià)聚合階段采用多尺度空間下的引導(dǎo)圖濾波算法,并通過(guò)正則化將多尺度空間下的信息進(jìn)行統(tǒng)一;最后通過(guò)視差計(jì)算和視差精化得到最終的視差圖。算法流程如圖1所示。
圖1 算法流程
傳統(tǒng)的Census變換的本質(zhì)是選取圖像中某一像素點(diǎn)為中心像素,在該中心像素周圍建立一個(gè)矩形窗口W(p),然后遍歷圖像,以中心像素p的灰度值作為參考值與窗口中每個(gè)像素q的灰度值進(jìn)行比較,當(dāng)灰度值大于中心像素灰度值時(shí),記為0;否則,記為1。這樣就可以將窗口能的灰度信息變換成關(guān)于0/1的比特串。變換過(guò)程的表達(dá)式為
(1)
其中,I(p)為中心像素的灰度值;I(q)為窗口鄰域內(nèi)其他像素的灰度值;?為按位連接2個(gè)比較的結(jié)果;ξ[I(p),I(q)]為
(2)
由于傳統(tǒng)的Census變換過(guò)分依賴中心像素點(diǎn)的灰度值,未能考慮到噪聲對(duì)整個(gè)窗口的影響,而相機(jī)在實(shí)際獲取圖像時(shí),噪聲是不可避免的,這些噪聲的引入必將影響最終匹配結(jié)果的精確程度。傳統(tǒng)的Census變換并沒(méi)有充分利用窗口內(nèi)周圍像素的灰度信息,存在較大的缺陷。
在文獻(xiàn)[15]中提出一種描述局部像素反差的值δ,該值在一定程度上對(duì)局部紋理像素變化進(jìn)行了描述,是區(qū)別于像素均值等傳統(tǒng)像素信息描述的數(shù)值,更好地利用了局部區(qū)域內(nèi)的像素信息。針對(duì)以上傳統(tǒng)Census變換的問(wèn)題,本文將δ引入到傳統(tǒng)的Census變換中,提出一種改進(jìn)的Census算法,將δ替換傳統(tǒng)評(píng)判標(biāo)準(zhǔn)中的像素I。首先計(jì)算中心像素點(diǎn)(x,y) 建立的局部窗口內(nèi)像素均值IAVE(x,y),以IAVE(x,y)為標(biāo)準(zhǔn)挑選出較大和較小的像素值,對(duì)2個(gè)部分的像素值進(jìn)行比較,得到1個(gè)數(shù)值,利用該數(shù)值結(jié)合傳統(tǒng)Census變換對(duì)窗口內(nèi)像素進(jìn)行二進(jìn)制數(shù)值編碼。通過(guò)對(duì)δ的引入,不但增加了對(duì)窗口鄰域內(nèi)像素信息的利用率,而且更好地對(duì)不同窗口之間進(jìn)行了有利的區(qū)分,使得變換結(jié)果不再依賴單一的中心像素值,減小了窗口內(nèi)單個(gè)像素波動(dòng)對(duì)匹配結(jié)果的影響,有更好的魯棒性。δ定義為
(3)
將δ作為衡量標(biāo)準(zhǔn)引入Census變換中,則有
(4)
α為設(shè)定的閾值,用來(lái)衡量窗口區(qū)域內(nèi)像素信息的復(fù)雜程度,α值選擇過(guò)大會(huì)影響匹配精度,選擇過(guò)小則起不到比較的作用,通過(guò)實(shí)驗(yàn)得出的α區(qū)間為[10,15],文中采取的閾值為13。形成二進(jìn)制編碼的定義式為
(5)
Iz(p)為閾值選擇后的窗口中心像素值。
利用式(6)計(jì)算匹配點(diǎn)和待匹配點(diǎn)集的Hamming距,即對(duì)2個(gè)像素點(diǎn)進(jìn)行變換后的二進(jìn)制編碼進(jìn)行異或運(yùn)算,得到最終的變換代價(jià)值。相同數(shù)值越多,Hamming距越小,匹配代價(jià)值越大。改進(jìn)后的Census算法為Cncen(p,d),代價(jià)表達(dá)式為
Cncen(p,d)=Ham(T(p),T(pd))
(6)
本文將傳統(tǒng)SSD函數(shù)與ρ(n)函數(shù)[16]結(jié)合,得到一種新的改進(jìn)SSD算法。傳統(tǒng)SSD函數(shù)為
CSSD(p,d)=
(7)
d為視差值;(x,y)為中心像素點(diǎn)p的坐標(biāo);CSSD(p,d)為左圖像上點(diǎn)IL(x,y)和對(duì)應(yīng)右圖像上點(diǎn)IR(x+d,y)之間的SSD計(jì)算值;I為像素灰度值;W為左圖像中某中心點(diǎn)(u,v)的鄰域窗口。
ρ(n)函數(shù)表達(dá)式為
(8)
n的含義為n(x,y)=IL(x+i,y+j)-IR(x+i+d,y+j);d為視差值;σ為可變參數(shù)。
將ρ(n)函數(shù)與傳統(tǒng)的SSD函數(shù)進(jìn)行結(jié)合,改進(jìn)成新的SSD函數(shù),稱為NSSD函數(shù),改進(jìn)后的函數(shù)形式為
(9)
改進(jìn)的Census算法與改進(jìn)的SSD算法歸一化后的代價(jià)值Cag(p,d)為
Cag(p,d)=ρ(Cncen(p,d),μncen)+
ρ(CNSSD(p,d),μN(yùn)SSD)
(10)
μN(yùn)SSD和μncen分別為控制改進(jìn)NSSD算法和改進(jìn)Census算法權(quán)重的可變參數(shù);ρ(c,μ)為基于可變參數(shù)c和μ的函數(shù)。其中,μncen和μN(yùn)SSD為經(jīng)驗(yàn)值,對(duì)于不同的圖像需要多次實(shí)驗(yàn)計(jì)算求取。μncen一般取15,μN(yùn)SSD取6。
在完成匹配代價(jià)計(jì)算后,考慮到單個(gè)像素間聯(lián)系性差,易受干擾,為了加強(qiáng)像素間的聯(lián)系,需要對(duì)周圍像素進(jìn)行代價(jià)聚合。故采用符合人類視覺(jué)系統(tǒng)的多尺度代價(jià)聚合模型,即高斯金字塔結(jié)構(gòu)[17]和引導(dǎo)圖濾波算法[18]完成代價(jià)聚合。
先將待匹配圖像高斯下采樣,將圖像分層,每層圖像采用引導(dǎo)圖濾波算法進(jìn)行聚合,為增強(qiáng)各層之間的聯(lián)系,再對(duì)每層圖像進(jìn)行代價(jià)聚合,將多尺度空間下得到的代價(jià)聚合值作為最終的匹配代價(jià)。具體過(guò)程見(jiàn)文獻(xiàn)[17],這里只給出多尺度代價(jià)聚合公式和引導(dǎo)圖濾波公式。
引導(dǎo)圖濾波核函數(shù)為
Wi,j(I)=
(11)
(12)
在完成代價(jià)聚合后,采用傳統(tǒng)的win-take-all算法進(jìn)行視差選擇,獲得的初始視差值為
(13)
由于采集的圖像存在遮擋區(qū)域和視察不連續(xù)區(qū)域,所以在完成代價(jià)聚合后,還需通過(guò)一系列優(yōu)化處理方法對(duì)初始視差值進(jìn)行視差優(yōu)化。本文首先采用區(qū)域投票方法[4],選取區(qū)域內(nèi)出現(xiàn)頻率最高的視差點(diǎn)作為該區(qū)域中心點(diǎn)的視差值;采用左右一致性檢測(cè)[12]檢測(cè)遮擋點(diǎn)。設(shè)dL(p)和dR(p)為左、右視差圖對(duì)應(yīng)點(diǎn)p的左、右視差值,如果dL(p)與dR(p)不相等,則認(rèn)為p點(diǎn)為遮擋點(diǎn),需要掃描與p點(diǎn)一條水平線上的視差值,找出p點(diǎn)左右離p點(diǎn)最近的非遮擋點(diǎn)作為視差值;最后進(jìn)行1次中值濾波作為最終的視差圖像。
為驗(yàn)證本文算法的有效性,使用C++語(yǔ)言在Visual Studio 2019平臺(tái)下對(duì)Middlebury的素材進(jìn)行處理,實(shí)驗(yàn)硬件配置為:Intel Core i7-4720HQ CPU@2.60 GHz和8 GB內(nèi)存。處理素材為Middlebury平臺(tái)下的Tsukuda、Venus、Teddy、Cones標(biāo)準(zhǔn)數(shù)據(jù)集,對(duì)誤差等評(píng)價(jià)標(biāo)準(zhǔn)進(jìn)行實(shí)驗(yàn)分析,并 和其他算法的實(shí)驗(yàn)結(jié)果進(jìn)行對(duì)比,對(duì)本文改進(jìn)算法的實(shí)驗(yàn)效果進(jìn)行驗(yàn)證。實(shí)驗(yàn)過(guò)程中相關(guān)參數(shù)設(shè)置為{s,δ,ε,λ,Rd,W}={5,0.1,0.000 1,0.3,35,3×3}。
為驗(yàn)證本文改進(jìn)Census算法在代價(jià)匹配階段的可行性與優(yōu)越性,選用Middlebury平臺(tái)下的Tsukuda、Venus、Teddy、Cones等4組圖像,在只使用改進(jìn)Census算法的情況下與傳統(tǒng)的Census算法進(jìn)行實(shí)驗(yàn)對(duì)比,得到如圖2所示的實(shí)驗(yàn)結(jié)果,從左到右依次為Tsukuda、Venus、Teddy、Cones。匹配代價(jià)誤匹配率對(duì)比數(shù)據(jù)如表1所示。
圖2 匹配代價(jià)算法對(duì)比
表1 匹配代價(jià)誤匹配率對(duì)比
由圖2可以看出,傳統(tǒng)Census算法可以還原場(chǎng)景中物體的基本輪廓,但整體的視差圖中有較多的噪點(diǎn),改進(jìn)Census算法明顯減少了噪點(diǎn)的存在;再結(jié)合表1可以看出,傳統(tǒng)Census算法由于窗口像素信息單一,導(dǎo)致在圖像平坦區(qū)域有較高的誤匹配率;相比于傳統(tǒng)Census算法,改進(jìn)Census算法減小了平坦區(qū)域的孔洞現(xiàn)象,提高了算法的匹配精度,有較高的魯棒性。但同時(shí)因?yàn)楦倪M(jìn)算法中加入了對(duì)中心像素選擇的一步計(jì)算,導(dǎo)致計(jì)算時(shí)間要比傳統(tǒng)算法長(zhǎng)。
為了進(jìn)一步驗(yàn)證本文算法抗噪性,對(duì)Middlebury平臺(tái)下的Tsukuda圖像分別添加5%、10%、15%、20%、25%的椒鹽噪聲進(jìn)行實(shí)驗(yàn)。圖3為Tsukuda圖像在噪聲為5%時(shí)的匹配效果對(duì)比圖。5%椒鹽噪聲下誤匹配率如表2所示。
圖3 5%椒鹽噪聲下匹配代價(jià)對(duì)比
表2 5%椒鹽噪聲下的誤匹配率 %
通過(guò)圖3可以看出,對(duì)相同噪聲干擾下的圖像進(jìn)行處理,傳統(tǒng)Census算法的匹配代價(jià)圖中雖然可以基本還原物體輪廓,但存在大量的黑白椒鹽噪聲;改進(jìn)的Census算法在還原物體輪廓的基礎(chǔ)上,并沒(méi)有受到太大的噪聲干擾,匹配代價(jià)圖中只有少量的噪聲。結(jié)合表2,改進(jìn)Census算法在存在噪聲干擾的情況下,整體的誤匹配率均低于傳統(tǒng)Census算法??梢钥闯?,改進(jìn)Census算法有良好的抗噪性能。
為了進(jìn)一步全面客觀地驗(yàn)證本文算法的可行性以及總體性能,選用幾種改進(jìn)Census算法進(jìn)行比較,這些算法包括ADCensus[12]、AdaptWeight[13]、RTCCensus[19]、RINCensus[20]和SAD-IGMCT[21]。不同算法誤匹配率數(shù)據(jù)如表3所示。從表3中可以看出,本文算法平均誤匹配率高于ADCensus算法平均誤匹配率,低于大部分改進(jìn)Census算法誤匹配率,表現(xiàn)出較好的整體性能。
為了更直觀展示本文算法的效果,圖4為本文改進(jìn)算法對(duì)Tsukuda、Venus、Teddy、Cones圖片處理得到的視差圖和誤匹配像素圖(白色區(qū)域?yàn)槠ヅ湔_區(qū)域,黑色為匹配錯(cuò)誤區(qū)域),從左到右依次為Tsukuda、Venus、Teddy、Cones。
圖4 本文算法測(cè)試效果示意
表3 不同算法誤匹配率 %
通過(guò)圖4c中Venus(存在大塊平坦區(qū)域)可以看出本文算法對(duì)于平坦區(qū)域有較好的匹配效果,沒(méi)有較大的孔洞現(xiàn)象,這說(shuō)明改進(jìn)的Census算法更加充分地利用了窗口鄰域信息,使得圖像平坦區(qū)域也有很好的區(qū)分,同時(shí)多尺度代價(jià)聚合模型更近一步的加強(qiáng)不同層圖像之間的聯(lián)系,使相鄰區(qū)域有更好的區(qū)分度;從圖4c可以看出邊界區(qū)域貼合實(shí)際場(chǎng)景,能很好地顯示場(chǎng)景中物體輪廓,這說(shuō)明采用的引導(dǎo)圖濾波算法加強(qiáng)了圖像邊緣的區(qū)分度。
本文通過(guò)添加中心像素判斷策略,改進(jìn)了傳統(tǒng)Census算法,提出了一種基于改進(jìn)Census變換的圖像立體匹配算法。在傳統(tǒng)Census變換單一地選取中心像素作為參考的基礎(chǔ)上,引入局部像素反差值作為中心像素選取的評(píng)判標(biāo)準(zhǔn),更好地利用了窗口內(nèi)的像素信息,改善了傳統(tǒng)Census變換抗噪性差的特點(diǎn)。在視差聚合階段,引入多尺度代價(jià)聚合模型——高斯金字塔結(jié)構(gòu),并將引導(dǎo)圖濾波算法融入模型中,加強(qiáng)了鄰域像素的區(qū)分度,進(jìn)一步提高了匹配精度。