敖小樂,賀繼林,鄧 宇,2, 李成雷
(1.中南大學(xué) 機電工程學(xué)院,湖南 長沙 410083;2.湖南山河科技股份有限公司, 湖南 株洲 412002)
立體匹配是機器視覺領(lǐng)域中的一個基礎(chǔ)問題,其核心是通過查找雙目或多目圖像的對應(yīng)像素點來計算視差,進而獲得所拍攝場景的深度信息。目前在自動駕駛、虛擬現(xiàn)實、機器人導(dǎo)航等領(lǐng)域均有廣泛應(yīng)用[1]。Scharstein D等人[2]對典型的立體匹配算法進行了深入研究,將立體匹配分為代價計算、代價聚合、視差選擇/優(yōu)化、視差修正四個過程。根據(jù)視差優(yōu)化方法的不同,立體匹配可分為全局算法和局部算法兩類。全局算法通過構(gòu)造能量最小化函數(shù)求取視差,算法精度高,但計算量大、實時性差。局部算法利用窗口內(nèi)鄰域信息來計算單像素視差,相比全局算法,具有計算復(fù)雜度低、效率高等優(yōu)點,但存在窗口選擇難題,且其計算復(fù)雜度與所選窗口相關(guān)。
代價計算用來度量左右圖像對應(yīng)像素的相似性,常見的有絕對亮度差(absolute brightness difference,AD)、梯度、Census變換等代價,Hirschmuller H等人[3,4]對這些匹配代價進行了詳細(xì)的評述。目前,多數(shù)立體匹配算法選擇融合多種匹配代價,Mei X等人[5]對AD和Census代價進行線性融合;Fan H R等人[6]對Census和梯度代價進行融合。結(jié)果表明對多種代價進行融合能夠兼顧不同匹配代價的優(yōu)點,可以取得更高的精度以及更強的魯棒性。
為提高信噪比,局部算法假定同一窗口內(nèi)像素具有相似的視差,用窗口內(nèi)像素代替單個像素代價,也即代價聚合。常用方法有引導(dǎo)圖濾波[7]、十字交叉窗口聚合[8]等,但這些方法仍然受到支持窗口的限制,使得精度難以提升。Yang Q[9]提出非局部算法,通過構(gòu)造圖像的最小生成樹(minimum spanning tree,MST),在圖像全局范圍內(nèi)進行像素代價聚合,在時效性以及精確性上都取得了較好的結(jié)果?;诖?Mei等人[10]提出分割樹(segment tree,ST)算法,Yao P等人[11]提出MST-CD算法均表明,基于最小生成樹的代價聚合方法要優(yōu)于其他局部算法。
本文提出一種融合多種代價的改進非局部立體匹配算法;增強了算法在低紋理區(qū)域表現(xiàn),提高了視差精度。
傳統(tǒng)的非局部算法對RGB顏色代價和水平方向梯度代價進行線性融合
(1)
由于該匹配代價只利用了水平方向梯度,忽略了垂直方向梯度包含的豐富信息;此外由于兩截斷閾值τAD,τGRDX不一致,該融合代價無法直觀體現(xiàn)兩代價實際所占比重。針對這些問題,本文先融入垂直方向梯度,并對各代價做歸一化處理,再進行線性融合
C′(p,p′)=α·ρ[CAD(p,p′),τAD]+β·ρ[CGRDX(p,p′),τGRDX]+(1-α-β)·ρ[CGRDY(p,p′),τGRDY]
(2)
式中α,β∈(0,1)用來平衡各代價比重;CGRDY(p,p′)為垂直方向梯度代價;各匹配代價歸一化計算公式為
ρ(C,τ)=1-e(-C/τ)
(3)
經(jīng)過以上歸一化處理并線性融合后,匹配代價被映射到(0,1)區(qū)間。為進一步增強算法在低紋理區(qū)域表現(xiàn),對融合后代價進行對數(shù)變換
C(p,p′)=ln(1+eC′(p,p′))
(4)
C(p,p′)即為最終匹配代價。上式中,當(dāng)代價趨于0時,該變換函數(shù)能夠?qū)⒅禐榱愕拇鷥r轉(zhuǎn)換為非零代價ln 2,從而提高低紋理區(qū)域像素對代價聚合的貢獻;而當(dāng)代價逐漸增大時,該函數(shù)則愈趨近于C′(p,p′),這樣便能保持高紋理區(qū)域代價的區(qū)分性。
文獻[9]中,圖像被看作是一幅四連通或八連通的無向圖G=(V,E),V為無向圖頂點,為圖像像素點集合;E為無向圖的邊,連接四鄰域或八鄰域像素對。根據(jù)該無向圖便可構(gòu)建一顆最小生成樹,其中邊權(quán)為相鄰像素顏色(R,G,B)的最大絕對差
(5)
式中Ij(p)為像素p在j通道的值。然后采用kruskal算法構(gòu)建最小生成樹。
對于該最小生成樹中任意兩點p,q,其路徑是唯一的,因此,該路徑長度也必然唯一,記為D(p,q),其值為路徑上各邊權(quán)重之和?;诖?可定義圖像中任意兩像素p和q的相似性
S(p,q)=S(q,p)=e-D(p,q)/σ
(6)
式中σ為參數(shù)用來調(diào)節(jié)該相似性。最終聚合代價為
(7)
根據(jù)1.2節(jié)描述,非局部算法采用式(6)描述相鄰兩像素相似度,通過調(diào)節(jié)參數(shù)σ來權(quán)衡鄰近像素對聚合代價的貢獻大?。害以酱?S(p,q)則越小,聚合代價主要由最小生成樹上鄰近像素貢獻,即聚合代價由少部分像素主導(dǎo),導(dǎo)致算法在低紋理區(qū)域易出現(xiàn)錯誤匹配;反之,σ越小,將有更多的像素貢獻代價,導(dǎo)致在高紋理區(qū)域誤匹配率較高。
可以看出,σ的選擇對最終視差精度會產(chǎn)生較大影響,目前的非局部立體匹配算法[10~12]多著重于最小生成樹的構(gòu)造,以期得到最符合圖像結(jié)構(gòu)的最小生成樹,而對于σ多采用經(jīng)驗值。本文算法對參考圖進行分析,自適應(yīng)的選擇合適的σ值。
首先將圖像轉(zhuǎn)至HSV顏色空間。在HSV空間中,像素的色度和亮度被分開,計算相鄰像素的色度差為
(8)
式中h(p),s(p)分別為像素p的色相值及飽和度值,其中,色相和飽和度都經(jīng)過了歸一化處理。統(tǒng)計所有相鄰像素色度差,便可求得圖像平均色度差η
(9)
式中E為連接任意兩相鄰像素的邊集。
根據(jù)平均色度差定義可知:η越大,圖像顏色紋理則越豐富,為了降低誤匹配率,在代價聚合時,鄰近像素應(yīng)做主要貢獻,即σ越大;反之,圖像紋理越單一,則需要更多像素參與主要貢獻??山ⅵ桥cσ關(guān)系
σ=kη
(10)
式中k為比例系數(shù)。依據(jù)原圖平均色度差η為不同紋理圖像自適應(yīng)地選擇合適的σ。
視差選擇采用WTA(Winner-Takes-ALL)策略
(11)
(12)
重新計算匹配代價
(13)
本文算法使用Middlebury2.0立體匹配評測平臺提供的31組圖像對進行實驗。實驗環(huán)境為:Visual Studio 2013下C/C++編譯環(huán)境,Win10 x64系統(tǒng),Intel Core i7—6700 CPU—3.4G Hz,16 G內(nèi)存。
為驗證算法實際性能,除非特別說明,否則本文中涉及到的視差圖都未經(jīng)過任何視差修正或后處理操作;實驗中誤差限為1像素。
為驗證改進后代價的有效性,對代價改進前后非局部算法得到的視差圖進行對比。圖1(a)和(e)為原圖;(b)和(f)改進前;(c)和(g)經(jīng)過代價融合后;(d)和(h)經(jīng)過對數(shù)變換后,改進后視差圖中誤匹配標(biāo)記點明顯少于改進前,尤其是低紋理區(qū)域。對比圖(b),(c)以及圖(f),(g)可看出,融入垂直方向梯度代價后,算法在低紋理區(qū)域表現(xiàn)得到很大提升;對比(c),(d)以及(g),(h)發(fā)現(xiàn),通過對融合代價作對數(shù)變換,能夠進一步增強算法在低紋理區(qū)域表現(xiàn)。
圖1 代價改進前后非局部算法對Wood1和對Rocks1圖像處理獲得的視差
如圖2,通過比較代價改進前后非局部算法在Middlebury平臺上31組圖像對的平均誤匹配率可知,融入垂直方向梯度代價后,算法的誤匹配率大幅降低,再對融合代價作對數(shù)變換,可進一步降低算法誤匹配率。
圖2 代價改進前后非局部算法在非遮擋區(qū)域誤匹配率
為驗證平均色度差η與參數(shù)σ之間比例關(guān)系,分別計算不同紋理圖像平均色度差,并運行改進代價后的非局部算法,得到各圖像最佳σ值。
如圖3所示,不同參考圖具有不同的最佳σ值,且其變化趨勢與平均色度差的變化基本一致;對比圖3(a)和圖3(b)可知,低紋理圖像具有更小的η以及σ,這是因為在以式(5)為邊權(quán)建立的最小生成樹上,相鄰像素點此時具有相似的視差值,較小的σ能夠促使更多的像素參與聚合,提高匹配精度。可以看出,平均色度差確實能夠反映圖像紋理信息。
圖3 不同參考圖的平均色度差η及最佳σ值
通過改變k,可以改變η和σ的比例關(guān)系:
如圖4所示,隨著k值的增加,所提算法在非遮擋區(qū)域?qū)iddlebury測試平臺31組圖像對的誤匹配率有一先減再增的過程,并在k為1.0時取得最小值。
圖4 不同k取值下的誤匹配率
為測試所提算法的總體性能,本文選取MST[9],ST[10],CS-GF[13]作為對照算法。實驗中,涉及到的參數(shù)設(shè)置:α為0.15,β為0.48,τAD為9,τGRDX為0.5,τGRDY為0.5,k為1.0。
所提算法在Middlebury上31組立體圖像對性能評估(無視差修正,誤差限為1像素)的平均誤匹配率最低,僅為7.86 %,精度最高;平均排名為1.61,其中在18組圖像對中取得最好結(jié)果,在10組圖像對中取得第二好結(jié)果,表明所提算法具有更好的泛化能力;本文算法運行時間為1.2 s,這是因為引入了垂直方向梯度以及對數(shù)變換,增加了計算量,導(dǎo)致處理時間增加。然而所提算法在小幅增加運行時間基礎(chǔ)上,在精度及泛化性上有很大的提升。
表1為經(jīng)過視差修正后,4種算法在本文實驗環(huán)境中對Middlebury 2.0上31組立體圖像對的評測結(jié)果??梢钥闯?經(jīng)視差修正處理,所有算法精度均有不同幅度提升,同時運行時間也相應(yīng)增加;而本文所提算法無論在非遮擋區(qū)域誤差還是全像素誤差方面仍舊取得最好的結(jié)果。
表1 不同立體匹配算法在Middlebury上31組立體圖像對性能評估(經(jīng)視差修正,誤差限為1像素)
圖5為各算法對Tsukuba,Teddy,Flowerpots,Monopoly圖像對處理后得到視差。
圖5 不同立體匹配算法在Tsukuba、Teddy、Flowerpots和Monopoly圖像對上的測試結(jié)果
實驗結(jié)果表明,所提算法在Middlebury測試平臺上平均誤匹配率為7.86 %,經(jīng)視差修正后平均誤匹配率為6.62%,匹配精度優(yōu)于當(dāng)前優(yōu)秀的局部和非局部算法。