孫 麗 孫彥瑋 李 浩
(1.生態(tài)環(huán)境部南京環(huán)境科學(xué)研究所 南京 210042)(2.河海大學(xué)地球科學(xué)與工程學(xué)院 南京 211100)
在計(jì)算機(jī)視覺(jué)和攝影測(cè)量等領(lǐng)域,利用雙像立體匹配計(jì)算場(chǎng)景的深度信息是目前的一個(gè)重要研究方向,在許多立體視覺(jué)應(yīng)用中發(fā)揮著重要的作用,比如三維重建、運(yùn)動(dòng)檢測(cè)、駕駛輔助系統(tǒng)等。通常,立體匹配算法可以主要?jiǎng)澐譃閮深?lèi):局部算法和全局算法。在局部算法中,一般采用勝者為王(Winner Takes All,WTA)模式匹配候選點(diǎn),即認(rèn)為匹配代價(jià)最小者為正確匹配,此類(lèi)方法計(jì)算速度快,但是精度較差;全局算法對(duì)整幅圖像構(gòu)建一個(gè)全局能量函數(shù),并附加平滑約束,以此來(lái)優(yōu)化視差圖[1~2],此類(lèi)方法視差精度高,但是計(jì)算復(fù)雜,無(wú)法滿足實(shí)時(shí)性要求。2005 年,Hirschmuller[3~4]提出了一種介于局部算法和全局算法之間的半全局密集匹配算法,該方法在滿足實(shí)時(shí)性要求的同時(shí),實(shí)現(xiàn)了精確的密集深度估計(jì),得到了眾多研究人員的關(guān)注與改進(jìn)。
鑒于在二維空間進(jìn)行全局能量最小化被證明是NP 困難(Nondeterministic Polynominal-hard)問(wèn)題,SGM算法將二維能量最小化轉(zhuǎn)換為多個(gè)一維路徑的能量最小化。為了優(yōu)化因噪聲和遮擋等因素造成的匹配錯(cuò)誤,SGM 的能量函數(shù)包含三個(gè)部分:數(shù)據(jù)項(xiàng)、懲罰項(xiàng)P1和懲罰項(xiàng)P2,當(dāng)一維路徑中前后兩個(gè)像素的視差變化較小時(shí),附加一個(gè)較小的懲罰項(xiàng)P1,當(dāng)視差變化較大時(shí)附加較大的懲罰項(xiàng)P2。然而在視差邊緣區(qū)域具有較大的視差變化是合理的,如果附加較大的懲罰項(xiàng)會(huì)造成視差圖在視差邊緣處過(guò)度平滑,降低深度估計(jì)的精度,因此視差邊緣(即深度不連續(xù))區(qū)域的精確視差估計(jì)仍然具有重要的研究意義。
為了改進(jìn)深度不連續(xù)區(qū)域的視差估計(jì)精度,研究人員在SGM 算法的基礎(chǔ)上提出了許多改進(jìn)算法。其中,自適應(yīng)懲罰項(xiàng)算法認(rèn)為在代價(jià)聚合路徑上像素灰度值差異越大,該區(qū)域是視差邊緣的概率越大,因此需要減小懲罰項(xiàng)P2,Banz[5]和Stentoumis[6]對(duì)現(xiàn)有的自適應(yīng)懲罰項(xiàng)優(yōu)化算法進(jìn)行了總結(jié)與評(píng)價(jià),盡管此類(lèi)算法取得了一定的提高,但是自適應(yīng)函數(shù)中的參數(shù)對(duì)于不同圖像或代價(jià)函數(shù)的適應(yīng)性較差,難以推廣。另一方面,有研究者將圖像的幾何特征引入到密集匹配的過(guò)程中,例如圖像邊緣特征和分割結(jié)果等。Ko 等[7]利用K 均值聚類(lèi)方法對(duì)圖像進(jìn)行分割,并在每一個(gè)分割塊中利用視差種子點(diǎn)分別進(jìn)行代價(jià)聚合和視差估計(jì)。Liu[8]等根據(jù)圖像分割結(jié)果和初始視差圖構(gòu)建了一個(gè)新的能量函數(shù),并通過(guò)合并較小的分割塊優(yōu)化能量函數(shù)。圖像分割算法雖然能一定程度上避免視差邊緣的過(guò)度平滑,但是分割結(jié)果的好壞直接影響了視差估計(jì)的結(jié)果,如果分割過(guò)于密集則深度估計(jì)結(jié)果不夠平滑,如果分割過(guò)于粗糙則會(huì)忽略掉深度變化的細(xì)節(jié)特征。因此,利用圖像的邊緣特征優(yōu)化視差邊緣處的深度估計(jì)精度被認(rèn)為是一種更為有效的方法,因?yàn)樵谝暡钸吘壧幰话阋矔?huì)形成明顯的圖像邊緣。Xie[9]等在利用SGM 算法得到視差圖的基礎(chǔ)上,利用邊緣檢測(cè)和水平、垂直方向的視差線性擬合優(yōu)化初始視差圖,對(duì)弱紋理和遮擋區(qū)域取得了較好的結(jié)果。Zhu[10]將自適應(yīng)邊緣保留導(dǎo)向?yàn)V波算法引入到代價(jià)計(jì)算的過(guò)程中,也取得了一定的提高。Chuang[11~12]提出了一種分步的SGM 優(yōu)化算法,首先利用基于十字的局部密集匹配算法得到初始視差圖,然后結(jié)合邊緣特征自適應(yīng)計(jì)算懲罰項(xiàng),隨后再用SGM算法計(jì)算最終的視差圖。
為了提高在深度不連續(xù)區(qū)域的視差估計(jì)精度,本文在SGM 算法的基礎(chǔ)上,引入圖像的邊緣特征,提出一種基于邊緣視差圖優(yōu)化的密集深度估計(jì)算法。與自適應(yīng)懲罰項(xiàng)和視差平面擬合等后處理算法相比,本文創(chuàng)新性地改進(jìn)了算法的代價(jià)聚合步驟,首先檢測(cè)立體像對(duì)中的邊緣特征,然后利用DAISY描述符[13]匹配邊緣像素得到邊緣視差圖,為了避免錯(cuò)誤代價(jià)在邊緣處傳播,本文算法利用提取的邊緣將每一個(gè)代價(jià)聚合路徑分割為多個(gè)子路徑,并獨(dú)立進(jìn)行代價(jià)聚合的計(jì)算,同時(shí)適當(dāng)提高非邊緣處的懲罰項(xiàng)P2。本文算法既提高了在視差邊緣處的深度估計(jì)精度,也保持了非邊緣區(qū)域視差的平滑性。
本節(jié)將詳細(xì)描述本文算法的實(shí)現(xiàn)過(guò)程,圖1 展示了本文算法的計(jì)算流程,算法主要由五個(gè)步驟組成:結(jié)合AD(absolute difference)和Census的代價(jià)計(jì)算、邊緣視差圖計(jì)算、代價(jià)聚合、視差估計(jì)和視差優(yōu)化,其中視差優(yōu)化采用左右一致性檢查方法。
圖1 本文算法流程圖
在匹配代價(jià)計(jì)算步驟中,對(duì)于立體像對(duì)中左圖的每一個(gè)像素,計(jì)算其和視差范圍內(nèi)右圖中的每個(gè)像素的相似性度量作為匹配代價(jià)。本文采用兩個(gè)應(yīng)用最為廣泛的代價(jià)計(jì)算方式:像素灰度的絕對(duì)差(absolute difference,AD)和Census 變換的漢明距離。灰度差計(jì)算簡(jiǎn)單,但是對(duì)光照變化適應(yīng)性差,Census 變化[14]通過(guò)比較中心像素和鄰域像素的灰度關(guān)系得到一個(gè)二值字符串,再計(jì)算漢明距離得到相似性度量值,Census變換對(duì)于光照變化魯棒性較好,因此常被用于匹配代價(jià)計(jì)算[15]。
在圖像中,深度不連續(xù)區(qū)域通常反映為圖像的邊緣特征,因此本文首先利用Canny 算法[16]檢測(cè)圖像邊緣。在視差范圍內(nèi),對(duì)于左圖中的每一個(gè)邊緣像素,在右圖中通常具有數(shù)個(gè)邊緣像素,如圖2 所示,圖中灰色正方形代表立體像對(duì)中的邊緣像素,具有灰色輪廓的正方形代表視差范圍內(nèi)右圖中的匹配候選點(diǎn)。本文采用DAISY 描述符度量不同邊緣像素間的相似性,當(dāng)左圖中該像素與右圖中的某一個(gè)候選點(diǎn)具有最小的歐氏距離時(shí),則認(rèn)為該對(duì)像素點(diǎn)是正確匹配的邊緣點(diǎn),計(jì)算兩點(diǎn)間的水平距離即為左圖中邊緣點(diǎn)的視差值。對(duì)左圖中每個(gè)邊緣點(diǎn)重復(fù)上述過(guò)程即可得到初始的邊緣視差圖。
圖2 邊緣像素匹配示意圖
由于左圖中邊緣像素在右圖中的正確匹配邊緣點(diǎn)并不一定能夠被Canny 算法檢測(cè)出來(lái),或者錯(cuò)誤的匹配點(diǎn)有一定的概率具有最佳的相似性度量,因此本文算法使用RANSAC(RANdom SAmple Consensus)算法移除錯(cuò)誤匹配點(diǎn)。首先,從初始的邊緣視差圖中隨機(jī)選擇四對(duì)匹配點(diǎn)計(jì)算投影變換矩陣;然后,根據(jù)投影變換矩陣計(jì)算左圖中邊緣像素點(diǎn)在右圖中形成的投影點(diǎn),如果投影點(diǎn)與真實(shí)點(diǎn)之間的距離小于某個(gè)特定的閾值(取10 個(gè)像素),則認(rèn)為兩點(diǎn)為正確匹配點(diǎn),視差計(jì)算正確,否則放棄該點(diǎn)視差值,將初始視差圖中該點(diǎn)灰度值置零。圖3 展示了邊緣視差圖的生成過(guò)程,圖像中的黑色為背景,輪廓線的灰度值代表每個(gè)邊緣像素的視差值,為便于觀看,將灰度范圍標(biāo)準(zhǔn)化到0~255。
圖3 邊緣視差圖生成
代價(jià)聚合是立體匹配的一個(gè)至關(guān)重要的步驟,決定了算法的效率和精度。局部匹配算法采用逐像素的方式評(píng)估最小匹配代價(jià),缺少平滑約束和代價(jià)聚合過(guò)程,所以很容易受到噪聲和遮擋的影響產(chǎn)生錯(cuò)誤的視差值。因此全局算法將平滑約束加入到代價(jià)函數(shù)中,通過(guò)對(duì)不同的視差變化施加不同的懲罰項(xiàng),構(gòu)建一個(gè)更加精確的能量函數(shù),提高視差估計(jì)的精度。對(duì)于視差圖像D,能量函數(shù)E(D)可表示如式(1):
其中,第一項(xiàng)C(p,Dp)是視差為D 時(shí)所有像素匹配代價(jià)的和,第二項(xiàng)表示在視差變化等于1 的時(shí)候施加一個(gè)較小的懲罰項(xiàng)P1,第三項(xiàng)表示在視差變化大于1的時(shí)候施加一個(gè)較大的懲罰項(xiàng)P2。
全局算法通過(guò)最小化能量函數(shù)E(D)來(lái)獲得最優(yōu)的視差圖,但是在二維空間中最小化能量函數(shù)是非常困難的,因此SGM 算法將全局的二維能量最小化近似為多個(gè)一維路徑下的能量函數(shù)最小化。通常,一維路徑下的代價(jià)計(jì)算函數(shù)Lr(p,d) 可表示為式(2):
但是,對(duì)于視差邊緣區(qū)域,對(duì)較大的視差變化施加一個(gè)大的懲罰項(xiàng),會(huì)造成視差邊緣的過(guò)度平滑,這顯然是不合適的,因此本文針對(duì)視差邊緣區(qū)域的精確深度估計(jì)問(wèn)題,結(jié)合邊緣視差圖,提出了一種分段代價(jià)聚合算法。
本文算法中,為了避免視差邊緣的過(guò)度平滑,利用2.2節(jié)計(jì)算得到的邊緣視差圖對(duì)代價(jià)聚合路徑L 進(jìn)行分段,同時(shí)將邊緣處的視差值作為每一分段的初始視差值分別進(jìn)行代價(jià)聚合的計(jì)算,有效避免了錯(cuò)誤代價(jià)的累計(jì)效應(yīng)。分段的一維代價(jià)計(jì)算函數(shù)可表示如式(3)。
圖4 分段約束代價(jià)聚合
如圖4 所示,圖中矩形代表視差空間,不同視差d 處具有不同的視差代價(jià),矩形最左側(cè)是該路徑的起點(diǎn)。在原始的SGM 算法中,每一個(gè)路徑的初始視差值都是取該路徑起點(diǎn)處代價(jià)最小者的視差,Lr(b,d )=c(b,d ),然后連續(xù)代價(jià)聚合直至像素點(diǎn)p。本文算法利用邊緣視差圖分割代價(jià)聚合過(guò)程,如果像素p1是邊緣像素,則令Lr(p,d )= c(p,dedge),其中dedge是2.2 節(jié)中計(jì)算出的邊緣視差值。本文方法可以有效避免錯(cuò)誤代價(jià)的傳播和視差邊緣的過(guò)度平滑。
為了驗(yàn)證本文算法的有效性,我們采用立體基準(zhǔn)數(shù)據(jù)集和真實(shí)場(chǎng)景影像對(duì)算法進(jìn)行評(píng)估,其中基準(zhǔn)數(shù)據(jù)集采用明德學(xué)院Middlebury Stereo Evaluation-Version 3中四分之一分辨率大小圖像,并與原始SGM 算法做比較。表1 顯示了兩種算法的錯(cuò)誤像素百分比以及運(yùn)行時(shí)間,錯(cuò)誤像素百分比被分為全部像素和非遮擋像素兩部分分別進(jìn)行比較,其中當(dāng)視差估計(jì)值與真值的差大于1 個(gè)像素時(shí),該像素被認(rèn)為是錯(cuò)誤像素。實(shí)驗(yàn)程序采用C++語(yǔ)言編寫(xiě),實(shí)驗(yàn)平臺(tái)是Windows 10,Intel Core i7-6700HQ 處理器,8 GB內(nèi)存,Visual Studio 2015。
由表1 可以看出,本文算法在保持計(jì)算時(shí)間基本不變的基礎(chǔ)上,有效降低了視差圖的錯(cuò)誤像素百分比,在全部像素和非遮擋像素兩類(lèi)中分別平均下降了1.25 和1.24 個(gè)百分點(diǎn)。圖5 展示了原始SGM算法與本文算法的實(shí)驗(yàn)結(jié)果圖,從左到右依次為左圖像、邊緣視差圖、原始SGM 視差圖以及本文算法視差圖,圖中用灰色矩形標(biāo)示出了視差圖中改進(jìn)較為明顯區(qū)域,從圖中可以看出,本文算法在視差不連續(xù)區(qū)域的表現(xiàn)明顯優(yōu)于原始SGM,視差跳躍邊緣更加平滑,與原始圖像的邊緣更加貼合。
表1 原始SGM算法與本文算法的錯(cuò)誤像素百分比與運(yùn)行時(shí)間比較
為了驗(yàn)證本文算法在真實(shí)場(chǎng)景中的有效性,我們采用低空無(wú)人機(jī)影像對(duì)算法進(jìn)行了進(jìn)一步的評(píng)估,實(shí)驗(yàn)中選擇建筑物較為密集區(qū)域的影像,有利于邊緣檢測(cè),突出本文算法的優(yōu)勢(shì)。原始影像及密集深度估計(jì)結(jié)果如圖6 所示,第一列是左圖像,第二列是原始SGM 視差圖,第三列是本文算法視差圖。對(duì)比第一行視差圖可以發(fā)現(xiàn),本文算法能較好地表現(xiàn)出行道樹(shù)的視差值,而不會(huì)被過(guò)度平滑。由第二行可得,本文算法能正確地反映出人字形屋頂?shù)囊暡钭兓?,減少了屋頂周?chē)腻e(cuò)誤視差。對(duì)比第三行視差圖可知,由于本文算法在非邊緣區(qū)域增大了視差跳躍的懲罰項(xiàng)P2,因此有效消除了馬路等弱紋理區(qū)域的錯(cuò)誤視差。
本文中,我們提出了一種利用邊緣視差圖優(yōu)化視差邊緣的半全局匹配方法,該方法創(chuàng)新性地利用邊緣視差圖分割代價(jià)聚合路徑,避免了大懲罰項(xiàng)對(duì)視差邊緣的過(guò)度平滑。算法利用Canny 算法檢測(cè)圖像邊緣,并對(duì)邊緣點(diǎn)進(jìn)行DAISY 特征描述與匹配,得到具有視差信息的邊緣圖像;其次,依據(jù)邊緣對(duì)每個(gè)方向的代價(jià)聚合路徑進(jìn)行分段,并將邊緣視差值作為每一段代價(jià)聚合路徑的初值,如此反復(fù)直至聚合完成。文中利用立體基準(zhǔn)數(shù)據(jù)集和真實(shí)場(chǎng)景影像對(duì)算法的有效性進(jìn)行了驗(yàn)證,證明了本文方法在視差不連續(xù)區(qū)域能取得比原始SGM 算法更好的視差圖,對(duì)非邊緣區(qū)域增加懲罰項(xiàng)P2也提高了算法在平滑區(qū)域的穩(wěn)定性。另外,本文采用DAISY描述符對(duì)邊緣點(diǎn)進(jìn)行描述,增加了算法的運(yùn)行時(shí)間,描述符的選取與邊緣視差圖的優(yōu)化將是下一步的研究?jī)?nèi)容。