彭 妍, 郭君斌,*, 于傳強, 李靜波
(1. 火箭軍工程大學(xué)導(dǎo)彈工程學(xué)院,陜西 西安 710025; 2. 中國人民解放軍96873部隊,陜西 寶雞 721000)
立體匹配通過尋找左右圖像中的同名點,計算視差,從而獲取物體的深度信息。近年來,隨著立體匹配技術(shù)的發(fā)展,立體匹配已被廣泛應(yīng)用在三維重建、目標(biāo)檢測、自動駕駛、虛擬現(xiàn)實等領(lǐng)域。Scharstein等人在總結(jié)之前的立體匹配方法后提出了立體匹配的常規(guī)基本框架。在該框架中,立體匹配被劃分為匹配代價計算、代價聚合、視差計算和視差優(yōu)化4個步驟。根據(jù)計算策略的不同,傳統(tǒng)立體匹配方法又可被分為局部、全局和半全局3類算法。其中,半全局匹配算法(semi-global matching, SGM)綜合考慮了速度和精度對匹配的影響,應(yīng)用最為廣泛。
視差范圍作為立體匹配中的一個重要概念,用來確定匹配點的候選范圍,卻沒有得到傳統(tǒng)SGM算法的重視。在實際場景中,立體圖像對的視差范圍通常不能預(yù)知,一般解決方法是人為地設(shè)定一個視差范圍,但是這種方法比較主觀,沒有理論依據(jù),得到的視差范圍往往并不準(zhǔn)確。若視差范圍過大,導(dǎo)致計算資源浪費;若視差范圍過小,容易導(dǎo)致視差計算錯誤。因此有效的視差范圍估計在立體匹配中就顯得尤為重要。
匹配代價計算作為立體匹配的第一步,為后續(xù)優(yōu)化得到準(zhǔn)確的視差值提供了基礎(chǔ)。傳統(tǒng)SGM算法通常采用Census變換進行代價計算,而傳統(tǒng)Census變換僅考慮圖像的亮度信息做Hamming距離計算匹配代價,在圖像的重復(fù)紋理區(qū)域,計算結(jié)果具有模糊性,容易導(dǎo)致誤匹配,進而影響視差計算精度。
針對視差范圍通常不能預(yù)知的問題,毛苗等人提出了一種基于圖像細分的快速視差范圍估計算法;董本志等人在毛苗的基礎(chǔ)上,提出了一種基于前向搜索的圖像迭代細分方法來估計視差范圍,得到更精確的視差范圍;李海超等人利用特征點擬合空間平面,根據(jù)平面估計視差范圍,有效提高了匹配的速度和精度;Yang等人使用金字塔匹配策略計算不同金字塔圖像上每個像素的視差范圍。
針對傳統(tǒng)Census變換的問題,Mei等人提出了將灰度差絕對值和Census變換結(jié)合,提高了弱紋理和重復(fù)紋理區(qū)域的匹配精度;閆利等人提出了將梯度與Census變換結(jié)合,提高了弱紋理區(qū)域的匹配結(jié)果;Zhu等人提出了將Census變換、顏色和梯度作為混合匹配代價;Liu等人提出了將增強的圖像梯度和改進的Census變換結(jié)合,對無紋理區(qū)域具有較好的魯棒性。
針對傳統(tǒng)SGM算法存在的不足,提出了一種基于視差范圍估計和改進代價的半全局匹配算法。首先,采用二元穩(wěn)健恒定可擴展關(guān)鍵點(binary robust invariant scalable keypoints,BRISK)、加速穩(wěn)健特征(speeded up robust feature,SURF)和方向描述符(oriented brief,ORB)算子同時提取圖像對的特征點,對所有特征點統(tǒng)一采用SURF描述子計算特征向量,通過快速最近鄰搜索方法(fast library for approximate nearest neighbors,FLANN)進行特征點匹配,利用立體匹配的約束條件篩選匹配點,對篩選后的匹配點對計算視差值,估計圖像的視差范圍;然后,在估計好的視差范圍內(nèi),分別對圖像的亮度、梯度和邊緣信息進行Census變換和Hamming距離計算,將三者的計算結(jié)果融合,構(gòu)建新的代價計算函數(shù)。與傳統(tǒng)SGM算法相比,所提算法不僅提高了視差計算效率,而且改善了重復(fù)紋理、弱紋理及邊緣區(qū)域的視差結(jié)果,提高了視差計算精度。
針對傳統(tǒng)SGM算法對視差范圍未知場景,通常人為確定一個視差范圍,造成計算資源浪費的不足,提出了一種基于特征點的視差范圍估計方法。該方法的核心在于統(tǒng)計左右圖像中特征點對的有效視差來估計整個圖像的視差范圍,進而達到快速、可靠估計視差范圍的目的。
目前,常見的特征點算法有:尺度不變特征變換(scale-invariant feature transform,SIFT)、SURF、加速分割測試獲得特征(features from accelerated segment test,FAST)、BRISK以及ORB等。其中,SIFT是一種非常穩(wěn)定的局部特征,但本身計算過程過于復(fù)雜,實時性不高;SURF是SIFT的加速版,核心在于采用了Hessian矩陣和盒子濾波器等概念,比SIFT更快更具有魯棒性;FAST檢測速度快,可應(yīng)用在實時場景中,但容易受到噪聲的影響,魯棒性較差;BRISK檢測速度快,具有較好的魯棒性;ORB運行時間遠低于SIFT和SURF,可用于實時的特征檢測。
為了使特征點對的視差值能更全面地表征圖像的視差范圍,提高視差范圍估計的可靠性,需要盡可能多地提取圖像的特征點。因此,首先聯(lián)合幾種運行速度較快且魯棒性較好的SURF、BRISK、ORB算子同時檢測圖像對的特征點;然后對所有特征點統(tǒng)一采用魯棒性最好的SURF描述子計算特征向量;最后通過FLANN方法進行特征點匹配,獲得初始的特征匹配結(jié)果。待匹配圖像對錐面如圖1所示,初始匹配結(jié)果如圖2所示,一共生成了4 995對匹配點對,但存在大量明顯錯誤的匹配點對。
圖1 立體圖像對錐面Fig.1 Stereoscopic image pair cones
圖2 初始匹配結(jié)果Fig.2 Initial match result
為了減小錯誤的匹配點對對視差范圍估計的影響,提高視差范圍估計的可靠性,利用立體匹配的約束條件對匹配點進行篩選。常見的立體匹配約束準(zhǔn)則有以下幾點。
(1) 極線約束:將左右圖像的極線對齊,使得匹配點對在同一水平線上,匹配點對應(yīng)該具有相同的縱坐標(biāo)。
(2) 相似性約束:匹配點對應(yīng)該具有相似的灰度值和梯度值。
(3) 視差范圍約束:沿著極線方向搜索匹配點時,搜索的范圍受到最大視差值的約束。
綜合上述約束條件對匹配點進行篩選,滿足條件保留,不滿足條件剔除。假設(shè)、分別是左右圖像中對應(yīng)的特征點,總的約束條件為
(1)
式中:(·)、(·)分別表示特征點對應(yīng)的灰度值和梯度值;、分別表示特征點的橫縱坐標(biāo);、、分別表示匹配點對對于灰度值、梯度值和縱坐標(biāo)設(shè)定的允許波動的截斷值;表示人為設(shè)定的視差最大值。
篩選后的匹配結(jié)果如圖3所示,此時還有1 053對匹配點對,剔除了大量錯誤的匹配點對,匹配點對都保持在同一極線上。
圖3 篩選后的匹配結(jié)果Fig.3 Filtered matching results
根據(jù)篩選后的特征匹配結(jié)果計算視差,估計圖像的視差范圍。雖然通過約束條件剔除了大量的誤匹配點,但匹配結(jié)果中仍存在異常值。多次實驗結(jié)果表明,為了增強視差范圍估計的魯棒性,對匹配點對計算視差后,舍去其中的最大和最小視差值,選擇次最大和次最小視差值分別作為視差范圍的上下邊界。為了進一步增強魯棒性,還應(yīng)對次最大和次最小視差值進行一定補償,作為最終視差范圍的上下邊界。表1為錐面的視差估計范圍和真實范圍對比。
表1 視差范圍對比
傳統(tǒng)SGM算法通常采用Census變換進行匹配代價計算。傳統(tǒng)Census變換將中心像素及其鄰域內(nèi)像素亮度的相對大小關(guān)系轉(zhuǎn)換為比特串,作為中心像素的Census變換值:
(2)
(3)
式中:?表示按位連接,選取中心像素(,)周圍大小為×的窗口,′=|2|,′=|2|;(·)表示圖像像素的亮度。
計算左右圖像Census變換值Cen和Cen的Hamming距離作為中心像素的初始匹配代價:
(,,)=
Hm[Cen(,),Cen(-,)]
(4)
傳統(tǒng)Census變換進行匹配代價計算時僅考慮了圖像的亮度信息,在重復(fù)紋理區(qū)域易導(dǎo)致誤匹配。弱紋理區(qū)域主要通過邊緣信息進行匹配,匹配時過于依賴邊緣閾值,而且在復(fù)雜的背景環(huán)境下確定有效的邊緣閾值并不容易。為了提高重復(fù)紋理和弱紋理區(qū)域的匹配精度,分別對圖像的亮度、梯度和邊緣信息進行Census變換和Hamming距離計算,將三者計算結(jié)果融合,構(gòu)建新的代價計算函數(shù)。
圖像的梯度是一個用來衡量圖像水平和垂直方向上灰度變化率的二維向量,即:
(5)
數(shù)字圖像本質(zhì)上是一個二維離散函數(shù),一般使用灰度差分近似對圖像求導(dǎo),則圖像在(,)處的水平和垂直方向的梯度值分別通過中值差分表示為
(6)
式中:(,)為圖像在(,)處的灰度值。
結(jié)合水平和垂直方向的梯度值,得到圖像的梯度信息:
(7)
圖像的邊緣是圖像中兩個區(qū)域的交接處,通常是局部亮度或結(jié)構(gòu)發(fā)生急劇變化的地方。Sobel是一種典型的邊緣檢測算子,一般利用水平和垂直方向上的兩個簡單的3×3內(nèi)核,如圖4所示,與圖像進行卷積操作得到圖像梯度的近似值,通過判斷梯度值與邊緣閾值的大小關(guān)系獲取圖像的邊緣信息。
圖4 Sobel算子Fig.4 Sobel operator
得到圖像的亮度、梯度和邊緣信息后,引入估計好的視差范圍,分別對它們進行Census變換、Hamming距離計算,則像素點(,)在視差下,基于圖像邊緣和基于圖像梯度的匹配代價分別表示為
(8)
(9)
式中:(·)、(·)分別表示圖像的邊緣值和梯度值;Cen(·)、Cen(·)分別表示基于邊緣和基于梯度的Census變換值,(·)、(·)分別表示基于邊緣和基于梯度的匹配代價;[,]為事先估計好的視差范圍。
將分別基于圖像邊緣、亮度和梯度的匹配代價融合,構(gòu)建新的代價計算函數(shù):
∈[,]
(10)
對于重復(fù)紋理區(qū)域,改進的代價計算在Census變換的基礎(chǔ)上,綜合考慮了鄰域內(nèi)圖像的亮度、梯度和邊緣信息對匹配的影響;對于弱紋理區(qū)域,改進的代價計算對邊緣信息進行Census變換,匹配時將不再關(guān)注于邊緣的具體取值,而在于鄰域內(nèi)邊緣的相對大小關(guān)系,削弱了邊緣閾值對于匹配的影響,進而有效地改善了重復(fù)紋理以及弱紋理區(qū)域的匹配效果。
將經(jīng)過立體校正的圖像對作為本文算法的輸入,首先利用基于特征點的視差范圍估計方法估計出圖像的視差范圍,然后將估計的視差范圍引入傳統(tǒng)SGM算法中,依次進行改進的代價計算、代價聚合、視差計算及視差優(yōu)化。傳統(tǒng)SGM算法和本文算法的流程圖對比如圖5所示。
本文采用Middlebury立體匹配測評網(wǎng)站提供的4幅標(biāo)準(zhǔn)圖像對筑波、金星、泰迪、錐面進行實驗,涉及實驗參數(shù)的設(shè)置如表2所示。實驗環(huán)境在CPU為Intel core i5 1.80 GHz, 操作系統(tǒng)為Windows 10的個人電腦上的Visual Studio 2019下,配合圖像處理開源庫OpenCV 3.2.0。
圖5 不同算法的流程圖Fig.5 Diagram of different methods
表2 實驗參數(shù)設(shè)置
為了驗證所提算法的性能,選取了傳統(tǒng)SGM算法進行實驗對比,如圖6所示,從左到右依次為圖像對的左圖、真實視差圖以及傳統(tǒng)算法和所提算法生成的視差圖。首先對傳統(tǒng)SGM算法和所提算法進行定性分析。本文用白色方框框出了視差圖的部分區(qū)域,如圖6(c)和圖6(d)所示。相比傳統(tǒng)算法,對于筑波和金星,本文算法在白色方框區(qū)域上的物體邊緣更清晰,輪廓曲線更平滑,更接近真實視差圖,說明所提算法有效改善了深度不連續(xù)區(qū)域的匹配效果;對于具有復(fù)雜場景的泰迪,所提算法在白色方框區(qū)域上視差計算結(jié)果更為精確,說明所提算法有效改善了邊緣遮擋區(qū)域的視差精度;對于同樣具有復(fù)雜背景的錐面,在具有重復(fù)紋理的三角圓錐區(qū)域,所提算法也成功匹配出了各個圓錐,說明所提算法有效改善了弱紋理及重復(fù)紋理區(qū)域的視差精度。然后對傳統(tǒng)SGM算法與本文算法進行了定量分析。從3個區(qū)域非遮擋區(qū)域(non)、所有區(qū)域(all)以及深度不連續(xù)區(qū)域(disc)分別來驗證算法的魯棒性。將算法生成的視差圖與真實視差圖進行比較,相差結(jié)果大于誤差閾值(本文設(shè)定閾值為1)的像素被視為誤匹配。這兩種算法在測試圖像對上的誤匹配率如表3所示,運行時間如表4所列,實驗結(jié)果表明,本文算法在這4幅圖像對上所有區(qū)域的誤匹配率均低于傳統(tǒng)算法,平均誤匹配率為7.65%,相比傳統(tǒng)算法降低了6.38%,在提高整體匹配精度的同時,本文算法還將每幅圖像對的計算時間縮短了95%以上,匹配時間均不超過2 s,實現(xiàn)了快速的立體匹配。
對于所有圖像對,特征點對數(shù)量與處理時間如表5所示,基于特征點估計的視差范圍和真實范圍對比如表6所示,雖然估計的視差范圍與真實范圍還是存在一定的偏差,但正是由于本文通過特征點檢測的方式縮小視差的搜索范圍,提高算法的計算效率,而且特征處理時間僅占據(jù)整個算法運行時間的20%左右,從而將算法的運行時間縮短了95%以上,保證了快速的立體匹配。此外,本文還采用了綜合考慮圖像的亮度、邊緣和梯度信息的Census變換計算匹配代價,從圖6可以看出在重復(fù)紋理、弱紋理及邊緣區(qū)域的視差結(jié)果均得到了顯著改善,在保證計算效率的同時本文又進一步提升了視差精度,實驗數(shù)據(jù)也驗證了本文匹配代價的有效性,由表3可以看出相比傳統(tǒng)算法,本文方法在non、all以及disc區(qū)域的視差精度均有不同程度的提升。
圖6 不同算法生成的視差圖Fig.6 Disparity maps generated by different algorithms
表3 兩種算法的誤匹配率
表4 不同算法的運行時間
為了進一步客觀分析所提算法的性能,還選取了Middlebury網(wǎng)站上一些實時及接近實時的立體匹配算法進行比較,不同算法的誤匹配率如表7所示。對于筑波和金星這樣視差范圍較小的簡單圖像對,所提算法的誤匹配率接近表中的最優(yōu)算法,側(cè)面反映了所提算法在簡單紋理圖像中具有較好的視差估計能力。對于泰迪和錐面這樣視差范圍較大的具有復(fù)雜場景的圖像對,本文算法的平均誤匹配率由小到大分別位于第二和第一,且在泰迪上僅比第一低0.1%,匹配精度較高,這說明視差范圍越大、圖像的場景越復(fù)雜,所提算法的性能也越強。除此之外,所提算法在所有圖像對上的平均誤匹配率為7.65%,在上述算法中最低,說明本文方法具有較強的魯棒性,受場景紋理的影響較小,能較好的適用于各種不同的場景。綜合立體匹配的速度和精度考慮,本文算法具有很高的實際應(yīng)用價值。
表5 不同圖像的特征點對數(shù)量與處理時間
表6 視差范圍
表7 不同算法的誤匹配率
本文改進了傳統(tǒng)SGM算法,提出了一種基于特征點的視差范圍估計方法,提高了視差計算效率;構(gòu)建了新的代價計算函數(shù),改善了重復(fù)紋理、弱紋理及邊緣區(qū)域的匹配效果。實驗結(jié)果表明,與傳統(tǒng)SGM算法相比,本文算法的平均誤匹配率降低了6.37%,計算時間縮短了95%以上,與其他實時性及近實時算法相比,本文算法具有較強的魯棒性,能較好地適用于各種不同場景。