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