宋培玉,王 森
(華東交通大學(xué)理學(xué)院,江西 南昌 330013)
立體匹配技術(shù)在近年來成為機(jī)器視覺的熱點(diǎn)研究問題。 立體匹配技術(shù)是獲取圖像三維深度信息的重要手段,廣泛應(yīng)用于三維場(chǎng)景重建、無人駕駛、醫(yī)療診斷等領(lǐng)域[1]。 但是,快速得到高精度的圖像深度信息與立體匹配算法緊密相關(guān)[2]。
立體匹配算法根據(jù)約束條件的不同大致可以分為全局匹配算法、 半全局匹配算法和局部匹配算法。 全局匹配算法主要是根據(jù)全局能量函數(shù)最小化來計(jì)算深度值。 在全局匹配算法中常用的匹配算法有動(dòng)態(tài)規(guī)劃法[3]、置信度傳播法[4]和圖割法[5]。全局立體匹配算法雖然效果比較好, 但是硬件設(shè)備要求高,時(shí)間復(fù)雜度偏高不利于實(shí)時(shí)計(jì)算。 半全局算法[6]將二維圖像的優(yōu)化問題轉(zhuǎn)化為多條路徑的一維優(yōu)化來計(jì)算像素點(diǎn)的匹配代價(jià)。 局部算法主要是基于非參數(shù)變換和灰度相關(guān)性進(jìn)行匹配?;诨叶鹊膱D像在噪聲的影響下得到的視差圖很不平滑[7],在實(shí)際應(yīng)用中常使用基于非參數(shù)的變換即Census 算法。
Census 立體匹配算法的基本原理是建立以參考像素點(diǎn)為中心的窗口,以此窗口為濾波器,一一遍歷待匹配的圖像,利用窗口內(nèi)中心像素的灰度值和鄰域像素灰度值的大小關(guān)系得到二進(jìn)制字符串,二進(jìn)制字符串的漢明距離即為匹配代價(jià)值[8]。 雖然Census 算法在一定程度上可以緩解光照變化帶來的誤差[9],但是Census 算法在代價(jià)計(jì)算的過程中僅僅利用中心像素值灰度和鄰域像素值灰度進(jìn)行比較,Census 存在以下局限性。
1) 未充分利用鄰域像素其它信息造成信息大量丟失。 在Census 變換過程中只考慮鄰域像素的灰度信息,忽略了顏色距離等信息,從而產(chǎn)生誤匹配。
2) 參考像素點(diǎn)灰度值是代價(jià)值的唯一決定性因素。 根據(jù)Census 變換原理可知當(dāng)參考像素點(diǎn)的灰度值由于噪聲原因產(chǎn)生突變,會(huì)使得到的二進(jìn)制字符串產(chǎn)生極大的誤差, 從而得不到相應(yīng)的匹配點(diǎn)。
除此之外在匹配代價(jià)計(jì)算時(shí)窗口大小的選擇也會(huì)在一定程度上影響視差圖的精度。 所選擇的窗口過小會(huì)使匹配代價(jià)計(jì)算過程所需要的鄰域信息過少導(dǎo)致精度不足,若窗口過大會(huì)使無用信息過多影響時(shí)間復(fù)雜度。 局部立體匹配算法容易受噪聲的干擾,影響圖像匹配的準(zhǔn)確率。梁海波等[10]提出了改進(jìn)的非參數(shù)Census 立體匹配算法通過增加局部紋理反差加權(quán)項(xiàng)增加匹配精度;張晶等[11]通過聯(lián)合像素點(diǎn)間RGB 顏色絕對(duì)值和Census 變換計(jì)算匹配代價(jià)值,進(jìn)一步提高了匹配的精度;黃彬等[12]通過對(duì)窗口的像素加入權(quán)重和閾值判斷來加強(qiáng)Census 算法的抗干擾性。 宋宇等[13]將鄰域像素和中心值以及平均值比較得到一個(gè)較長的二進(jìn)制字符串增加匹配數(shù)量減少誤匹配。
以上算法雖然提高了視差圖的精度,但是大大增加了計(jì)算的時(shí)間復(fù)雜度。 本文提出一種基于十字交叉域代價(jià)聚合的Census 立體匹配算法的優(yōu)化方法。 該算法充分利用了鄰域像素的顏色信息和距離信息,提高匹配的準(zhǔn)確率。
基于Census 算法存在的局限性,提出一種基于十字交叉域代價(jià)聚合方法[14]來優(yōu)化Census 立體匹配算法局限性造成的誤差。
十字交叉域的構(gòu)造方法是基于相鄰像素相近顏色具有相同的視差原理。 十字交叉域的構(gòu)造是以參考像素點(diǎn)為中心,向左右及上下4 個(gè)方向延伸直到遇到和像素顏色相差較大的像素就停止延伸,從而可以確定一個(gè)不規(guī)則圖形,利用這個(gè)不規(guī)則圖形對(duì)參考像素進(jìn)行優(yōu)化,這樣充分利用參考像素的鄰域信息,一定程度上改善Census 立體匹配算法過度依賴中心像素點(diǎn)造成的誤差。 如圖1 所示即為確定的鄰域像素。
圖1 十字交叉域的構(gòu)造Fig.1 Cross-based construction
Census 立體匹配算法是基于一個(gè)窗口先計(jì)算出一個(gè)初始代價(jià)值。 本文先根據(jù)實(shí)驗(yàn)確定一個(gè)大小合適的窗口計(jì)算初始代價(jià)值,進(jìn)而利用十字交叉域確定的鄰域像素對(duì)參考像素的初始代價(jià)值進(jìn)行優(yōu)化。 十字交叉域是找參考像素周圍和其顏色相近的像素對(duì)參考像素進(jìn)行優(yōu)化,設(shè)定2 個(gè)參數(shù)L1,t1用來限制鄰域像素和匹配像素之間的顏色差異和空間距離長度,如式(1)所示。
式中:Dc代表2 個(gè)像素之間的顏色差異;Ds代表2 個(gè)像素之間的空間長度;t1為2 個(gè)像素的最大顏色差異;L1為2 個(gè)像素之間最大距離差。
為了防止十字臂構(gòu)成過程中臂穿過像素邊緣區(qū)域,要使匹配像素的后一個(gè)像素和前一個(gè)像素的顏色差異也小于t1[15],如式(2)所示。
為了確保構(gòu)建的十字域的準(zhǔn)確性,當(dāng)十字臂長于某一個(gè)數(shù)值時(shí), 就要求長于的部分顏色更加相近。 如式(3)所示。
當(dāng)L2<Ds(p,pl)<L1時(shí),Dc(p,pl)<t2,其中t2<t1(3)式中:L2為兩像素之間的最小距離差;t2為兩像素之間最小顏色差異。
進(jìn)而將左右臂上的代價(jià)值都加到與參考像素垂直的豎直臂上,將豎直臂上的代價(jià)值之和再加到參考像素上,總體再除以十字臂上的像素個(gè)數(shù)就是聚合后的匹配代價(jià)值, 從而達(dá)到優(yōu)化的效果。 如式(4)所示。
式中:Cl為十字域上鄰域像素代價(jià)值;N 為十字域上鄰域像素的個(gè)數(shù);Ca為聚合后的代價(jià)值。
在完成代價(jià)聚合后,視差的選取只需要在特定的范圍內(nèi)匹配代價(jià)最優(yōu)的點(diǎn)即可。 在代價(jià)空間中尋找匹配代價(jià)最小點(diǎn)的視差值即為參考像素點(diǎn)的視差。
一般情況下,最常用的視差求取法是贏家通吃法WTA(winner takes all)。 其思想為在代價(jià)空間中把每一個(gè)深度值下的匹配代價(jià)列出,最小的那個(gè)視差值就為參考像素點(diǎn)的視差值。
對(duì)于Census 算法存在的不足,楊淑云等[16]為了得到更加準(zhǔn)確的匹配視圖,在初始匹配代價(jià)的基礎(chǔ)上加入四路徑代價(jià)累積。 代價(jià)累積之后的代價(jià)值即為初始代價(jià)值加上路徑上相鄰點(diǎn)當(dāng)前視差下的最小代價(jià)值,以及當(dāng)前路徑上上一視差下和下一視差下的最小代價(jià)值。 四路徑代價(jià)累積即將上下左右路徑上符合條件的像素點(diǎn)代價(jià)進(jìn)行加和,從而達(dá)到對(duì)Census 視差圖的優(yōu)化。
利用Census 立體匹配算法分別加入十字交叉域和四路徑代價(jià)聚合對(duì)相同窗口以及相同的圖像對(duì)求取視差圖。 對(duì)比分析得到的視差圖的精度以及時(shí)間復(fù)雜度。
算法的實(shí)現(xiàn)是在Visual Studio 2019 軟件平臺(tái)上使用C++操作, 采用立體匹配數(shù)據(jù)集Middlebury上 的Cones,Piano,Tsukuba 立 體 圖 像 對(duì)[17]對(duì) 算 法 進(jìn)行測(cè)評(píng)。 實(shí)驗(yàn)環(huán)境為Windows10_x64 系統(tǒng),Intel Core i5-7200U,主頻為2.50 GHz。
由于窗口大小的選取也會(huì)對(duì)實(shí)驗(yàn)造成誤匹配,以下采用3×3 窗口、5×5 窗口、15×15 以及9×7 窗口進(jìn)行比較。經(jīng)過實(shí)驗(yàn)驗(yàn)證3×3 窗口、5×5 窗口和15×15 除了匹配代價(jià)所用時(shí)間不同之外,匹配精度均沒有明顯的提高,但是在9×7 的窗口下視差圖有所改善。 如圖2 所示。 因?yàn)樵谝暡畈贿B續(xù)的區(qū)域長方形窗口可以減少窗口內(nèi)無用點(diǎn)對(duì)視差代價(jià)值的影響,從而降低了誤匹配。
圖2 Census 算法實(shí)驗(yàn)結(jié)果對(duì)比Fig.2 Comparison of experimental results of Census algorithm
實(shí)驗(yàn)采用9×7 的窗口作為匹配代價(jià)計(jì)算窗口。 表1 為實(shí)驗(yàn)優(yōu)化過程中各個(gè)參數(shù)的設(shè)置。
表1 實(shí)驗(yàn)參數(shù)設(shè)定Tab.1 Experimental parameter setting
圖3 為加入代價(jià)聚合后的實(shí)驗(yàn)結(jié)果。 圖3(c)~圖3(f)分別為加入不同的代價(jià)聚合。 圖3(c),圖3(e)是本文的算法,加入了十字交叉域的代價(jià)聚合。圖3(d),圖3(f)為加入四路徑代價(jià)聚合。
由實(shí)驗(yàn)結(jié)果可知加入兩種代價(jià)聚合后所達(dá)到的視差圖精度相似,但是,在代價(jià)聚合的過程中十字交叉域代價(jià)聚合的時(shí)間復(fù)雜度很大程度上低于四路徑代價(jià)聚合。 代價(jià)聚合時(shí)間如表2 所示。
除此之外,還對(duì)圖像Tsukuba 運(yùn)用本算法進(jìn)行測(cè)試,實(shí)驗(yàn)結(jié)果發(fā)現(xiàn):對(duì)于Tsukuba 大分辨率的圖像,視差圖效果不是很理想,并且代價(jià)聚合的時(shí)間復(fù)雜度很高。
1) 根據(jù)Census 算法存在的不足, 通過加入十字交叉域代價(jià)聚合來優(yōu)化Cenusu 代價(jià)值的計(jì)算,十字交叉域充分利用了鄰域像素點(diǎn)距離信息以及顏色信息,很大程度上提高了視差圖的精度。
2) 對(duì)窗口大小的選取進(jìn)行了比較,實(shí)驗(yàn)結(jié)果表明在9×7 的窗口下Census 的匹配比5×5 規(guī)則窗口下Census 的匹配精度高。
3) 在保持匹配準(zhǔn)確性的條件下,十字交叉域的代價(jià)聚合方法時(shí)間復(fù)雜度低于四路徑代價(jià)聚合的時(shí)間復(fù)雜度,十字交叉域代價(jià)聚合的Census 算法更有利于實(shí)時(shí)性的場(chǎng)景。
4) 從代價(jià)聚合的實(shí)驗(yàn)結(jié)果發(fā)現(xiàn)兩幅聚合后的視差圖在邊緣不連續(xù)精度都有待提高,對(duì)于大分辨率的圖像視差圖精度還有待提高。