魯光明,王競雪,2
(1.遼寧工程技術大學 測繪與地理科學學院,遼寧 阜新 123000;(2.西南交通大學 地球科學與環(huán)境工程學院,成都 611756)
雙目立體視覺作為計算機視覺的一個重要應用方向,能夠在深入研究人類的視覺成像系統(tǒng)之后,進一步利用攝像機成像系統(tǒng)和計算機技術對其進行模擬[1-3]。雙目立體視覺的實現(xiàn)需要攝像機標定、圖像獲取、特征提取、立體匹配和三維重建5個步驟。作為立體視覺的關鍵部分,立體匹配的精度直接影響視差圖及深度圖的質(zhì)量,并在三維重建工作中占有舉足輕重的地位[4-5]。Scharstein等[6]提出立體匹配算法可以由匹配代價計算、匹配代價聚合、視差選擇和視差優(yōu)化組成,并在此基礎上將立體匹配算法分為三類[7-10]:局部立體匹配算法、全局立體匹配算法以及半全局立體匹配算法。局部立體匹配算法,即選擇圖像中一定區(qū)域內(nèi)的像素作為計算該像素點匹配代價的約束區(qū)域,然后通常采用勝者為王(winnner take all,WTA)的視差選擇策略確定該點的最優(yōu)視差值,進而獲取視差圖;全局立體匹配算法,即通過在能量函數(shù)中建立數(shù)據(jù)項、平滑項以及遮擋項將匹配算法轉(zhuǎn)化成求解全局能量函數(shù)最優(yōu)值的問題,進而得到致密視差圖;半全局立體匹配作為一種改進的動態(tài)規(guī)劃的方法,在提高了匹配結果精度的同時實時性得到有效提升,其平等地對待多個一維路徑,對各個一維路徑的結果進行合并,以此來表達二維的情況。
立體匹配中實時性與精確度兼容的問題一直是研究的熱點。為提升匹配效率,王云峰等[11]提出一種基于自適應權重AD-Census變換的雙目立體匹配算法,實時性好,但匹配精度一般。其中的AD變換可以準確快速地表達出像素點的灰度值差異,但其魯棒性較差[12]。為提高匹配精度,曹曉倩等[13]針對斜面參數(shù)優(yōu)化全局立體匹配算法做了研究,提出全局能量函數(shù)的概念,同時利用斜面參數(shù)對視差值進行有效的替換,因此,利用該算法實現(xiàn)立體匹配精度較高,但欠缺對實時性的考慮。綜合考慮了算法準確度和時間復雜度,Hirschmuller[14]提出了SGM算法,其主要運用多路徑方式進行代價聚合值的計算,保證實時性的同時具有較好的精確度。SGM算法繼承了傳統(tǒng)動態(tài)規(guī)劃的高效性,此外還具有較強的魯棒性。而SGM算法在解決視差突變情況時,賦予一個恒定的懲罰,導致在弱紋理區(qū)域、遮擋區(qū)域發(fā)生誤匹配以及邊緣表達不準確的現(xiàn)象。葛忠孝等[15]提出了基于樹形結構的SGM算法,有效地解決了弱紋理區(qū)域的誤匹配以及實時性問題,但其算法對于遮擋問題、整體匹配精度和邊緣區(qū)域的匹配效果有待解決和提高。以此為基礎,本文提出結合圖像分割的SGM算法。通過AD變換計算初始匹配代價,為解決其魯棒性較差的問題,采用SGM算法進行代價聚合,增強魯棒性并在原有SGM的基礎上增加了圖像分割,改變在視差突變區(qū)域的恒定懲罰,使其更符合實際情況,有效地降低了在弱紋理區(qū)域和遮擋區(qū)域的誤匹配率,并且增加了邊緣表達的完整性。通過二者結合有效地解決了實時性和精確度難以兼顧的問題。此外,由于遮擋問題的出現(xiàn),減弱了匹配的有效性和完整性,故本文在保證精確度和實時性的前提下利用左右一致性對遮擋點進行檢測,并在此基礎上對無效值進行填充,確保結果視差圖具有清晰、完整性,最后利用中值濾波對視差圖進行優(yōu)化使得本文算法具有較高的可行性及有效性。
雙目立體視覺過程是利用雙目立體相機獲得雙目立體像對,然后對所拍攝的影像進行相片畸變校正與核線校正,選用適合立體像對拍攝場景的匹配算法,建立匹配基元之間的關系,進而恢復深度到三維坐標。在雙目立體視覺中,通過匹配算法尋找參考影像中的待匹配點在目標影像中對應的同名匹配點,進而獲取同名點之間的位置差異,即視差。雙目立體視覺利用匹配代價計算作為匹配像素點相似性的衡量參數(shù)。在進行AD變換時,左圖像上待匹配點為p(x,y),其灰度為IL(x,y);右圖像上x方向視差為d的像素點為q((x-d),y),其灰度為IR((x-d),y),則p,q2點的匹配代價C(p,q)表示如式(1)所示。
C(p,q)=IL(x,y)-IR((x-d),y)
(1)
本文首先使用AD變換計算左、右圖像上對應像素的匹配代價值。由于進行代價計算的像素點是孤立的,并且計算結果是模糊的,易造成誤匹配的情況,而SGM算法中全局能量最優(yōu)化策略,充分利用匹配點及鄰域的像素進行平滑約束,使其更符合真實場景,再通過最小路徑求和得到代價聚合值。但是SGM算法在視差突變情況下給與恒定懲罰會引起誤匹配現(xiàn)象,影響匹配精度,因此,本文通過加入均值漂移圖像分割信息可以有效地較少誤匹配,保證邊緣的完整性,在得到初始視差圖后使用雙曲線擬合獲得亞像素級的視差圖,然后采用左右一致性檢測獲取遮擋點,在此基礎上對無效值進行填充,最后使用中值濾波進行優(yōu)化獲得最優(yōu)視差圖,本文算法整體流程如圖1所示。
圖1 本文算法流程圖
1)SGM算法。以左圖像為基準,利用式(1)進行代價計算,得到左、右圖像上對應像素p,q的匹配代價值C(p,q)。由于采用AD變換得到的匹配代價值往往是模糊的,相應像素點是孤立的,再加上噪聲點以及誤匹配等因素的影響極大限度地降低了匹配精度。因此,通過SGM算法對待匹配像素的鄰域內(nèi)進行平滑約束,從而改變像素點的孤立以及誤匹配情況,在提高精度的同時還對視差變化實施了一定的約束,定義一個基于視差圖D的全局能量函數(shù)E(D),表達如式(2)所示。
(2)
式中:第一項C(p,Dp)是在視差圖D下所有像素點的匹配代價,Dp代表像素點p的視差量;第二項中Np為像素點p的鄰域,Dq為像素點q的視差量。第二項是對像素點p鄰域內(nèi)的所有像素點q進行平滑。此時,平滑分為2種情況:根據(jù)視差變化量大小的情況分別對其進行恒定的較大懲罰P2和較小的懲罰P1。T[]為截斷函數(shù),根據(jù)判斷條件的是否成立,分別對其賦值為1和0。但在客觀真實條件下,引起視差突變的原因有很多種,僅僅給予一種恒定的懲罰會導致匹配精確度的降低,于是本文在原有算法的基礎上加入均值漂移圖像分割信息。
2)均值漂移圖像分割。均值漂移算法是一種基于密度梯度上升的非參數(shù)方法,通過迭代運算找到目標位置,實現(xiàn)目標分割。它顯著的優(yōu)點是算法計算量小,簡單易實現(xiàn),適用于圖像分割。均值漂移是一種有效的迭代算法,對圖像中的像素進行迭代,進而對其進行不同塊的劃分,處于同一分割塊的像素具有相同的標記,標記的不同表明分割區(qū)域的不同,由此作為分割依據(jù),獲得的分割圖具有精確的邊界定位,并且具有有效的區(qū)域分割,根據(jù)視差突變的區(qū)域是否在同一分割塊的情況與SGM算法結合可以降低代價聚合過程中在弱紋理及遮擋區(qū)域的誤匹配率,同時得到更完整的邊緣部分,提高算法的精確度。
3)改進的SGM算法?;趫D像分割信息可以對圖像進行有效準確的劃分定位,本文將其與全局能量函數(shù)進行有機結合,在原有SGM算法對視差突變區(qū)域進行恒定懲罰的基礎上,根據(jù)其是否在同一分割塊分別給予不同的懲罰值λ1、λ2。通過上述準確清晰的判斷后,全局能量函數(shù)有了全新的表達(式(3)、式(4))。
(3)
(4)
但是在實際情況中,最小化的問題不能用一些常規(guī)的數(shù)學方法有效解決。因此,SGM算法對于任一方向上的路徑代價聚合都是由一維進行,并且在每個方向上的處理方式相同。像素點p在深度為d時的聚合代價S(p,q)是由所有一維最小代價路徑上的代價累加得到的,具體說明如圖2所示。
圖2 匹配代價的聚合
在方向r中,像素點p在視差d處的代價L′r(p,d)定義為式(5)。
(5)
式中:左、右圖像上對應像素點間的匹配代價值C由AD變換求得。等式右邊的第二項部分分別表示的是在路徑上的前一個點p-r的最小代價、p-r點的視差差值為1的代價聚合值進行的較小懲罰和p-r點的視差差值大于1的代價聚合值進行較大的懲罰。沿著路徑r,L′的值一直增加,為避免結果較大的問題,將整個公式減去前一個像素點的最小路徑代價,由此將式(5)變換為式(6)。
(6)
式中:k為p-r點的視差差值。如果點p為該方向上的第一個點,則該點在某一方向上的匹配代價為:Lr(p,q)=C(p,q)。聚合所有方向上的匹配代價得到總的代價為S(p,q),表達如式(7)所示。
(7)
4)初始視差圖生成。經(jīng)過上述代價計算和代價聚合后得到初始視差圖(粗視差圖),在對每個像素點的視差進行選擇時,該點處的視差d應保證總的匹配代價S(p,q)最小,表達如式(8)所示。
DL(P)=argmindS(p,d)
(8)
1)雙曲線擬合視差選擇。通過以上公式得到的視差圖的視差值是整數(shù)級的,在后續(xù)立體像對像素點深度恢復完成后,為保證其形成深度圖的連續(xù)性同時還要保證得到的視差圖更加符合真實實物情況,故在此部分使用拋物線擬合的方法,其原理是由當前視差值的相鄰視差值構成一條拋物線,拋物線的最低點即為亞像素級視差(圖3)。
圖3 拋物線擬合示意圖
2)視差圖遮擋檢測。上述部分描述的是粗視差圖的生成。立體視覺領域存在的遮擋問題導致匹配結果正確率有所下降,因此解決遮擋問題是必要的。為此,首先對遮擋區(qū)域進行精確檢測,然后在此基礎上對視差值進行有效重估,進而可以得到完整并且準確的視差圖,再通過左右一致性檢測分別獲取左右影像的視差圖,對于左視圖的點p求得其視差為Dbp,將點p在右圖中的視差點p-Dbp記為點q,點q的視差值為Dmp,若|Dbp-Dmp|>1,則Dbp為無效,點p為遮擋點。得到的視差表達如式(9)所示。
(9)
式中:Dinv插差;ebm為外極線。
3)視差優(yōu)化。通過左右一致性校驗這一步驟,可以得到無效點的視差值,接下來對無效點進行有效的賦值。無效點可以分為2類:遮擋點及誤匹配點,對這2種類型的視差賦值需要使用不同的方法。無效值類型的不同使差值方法也有所區(qū)別,以遮擋區(qū)域的某一遮擋點為例,其方法是采用背景的外插值進行填充,而對于誤匹配點的情況,其方法是利用鄰域內(nèi)的像素值進行內(nèi)插。由左右一致性校驗這一步驟能夠?qū)φ趽觞c和誤匹配點進行區(qū)分,如圖4所示。結合對極幾何原理對無效值的類型進行判斷,即通過某一點的外極線是否穿過視差函數(shù)曲線的判斷條件可以對每一個無效值進行辨別,從而進行不同的賦值。當通過某一點的外極線穿過視差函數(shù)曲線時,像素點p1是遮擋點;否則,像素點p2是誤匹配點。
圖4 辨別遮擋與誤匹配點示意圖
為了對無效點進行合理有效的填充,在進行賦值時如果誤匹配點和遮擋區(qū)域相鄰,則認為是遮擋點。遮擋點的出現(xiàn)很大程度是由于背景與前景接觸時背景發(fā)生相對較小偏移量所致。進行無效值填充時與路徑代價聚合方式相似。最終的視差圖D′p如式(10)所示。
(10)
式中:vpi表示點的8鄰域內(nèi)的點;seclowi表示8鄰域像素視差的第二最小值;medi表示鄰域內(nèi)像素視差的中值。同樣,無效值類型的不同使得填充方法也具有差異性。對遮擋點而言,通過其鄰域視差的第二最小值對該視差值進行填充;對誤匹配點而言,采用相鄰像素的中值進行有效的賦值。在視差優(yōu)化部分中,使用中值濾波對視差圖進行優(yōu)化。
為驗證本文算法的可行性,在Middle-bury立體匹配算法測試平臺提供的標準立體圖像中選取4組影像對(Tsukuba,Venus,Teddy,Conesde)。用本文算法進行測試,原始圖像如圖5所示。圖6為所選擇的標準立體圖像的標準視差圖。
以Tsukuba為例(圖7),分別為該數(shù)據(jù)集的真實視差圖、需檢測的所有視差區(qū)域、視差不連續(xù)區(qū)域、非遮擋區(qū)域檢測圖。
圖5 原始圖像
圖6 標準視差圖
圖7 Tsukuba的檢測圖
在Matlab 2019a的集成環(huán)境中對本文算法進行實現(xiàn)。將本文實驗結果分別與局部立體匹配中的塊匹配算法(DM)、全局立體匹配中的動態(tài)規(guī)劃匹配算法(DP)和基于樹形結構的半全局立體匹配算法(T-SGM)進行比較,具體結果如圖8所示。
為了進一步對立體匹配算法在不同區(qū)域的匹配效果進行評價,Middle-bury測試平臺分別通過非遮擋區(qū)域誤匹配率、所有視差區(qū)域誤匹配率以及視差不連續(xù)區(qū)域誤匹配率3項指標對不同匹配算法進行排名比較。本文算法的具體數(shù)據(jù)如表1所示,本文算法與其他算法比較的相關數(shù)據(jù)如表2所示。
其中,遮擋區(qū)域表示影像中被遮擋的部分,視差不連續(xù)區(qū)域表示影像中相鄰像素之間的視差值不能滿足一定的閾值。
表2中第2~5列的數(shù)值分別表示使用各種算法在4對測試圖像的非遮擋區(qū)域誤匹配點所占的百分比,最后1列數(shù)值代表每個算法在4對測試圖像中非遮擋區(qū)域誤匹配率、視差不連續(xù)區(qū)域誤匹配率以及所有視差區(qū)域誤匹配率計算得到的平均誤匹配率。
圖8 不同立體匹配視差結果圖比較
表1 本文算法在middlebury評價結果 %
表2 4種算法的誤匹配率比較 %
結合圖8和表2可以看出,動態(tài)規(guī)劃的匹配算法存在僅在單條掃描線上進行視差優(yōu)化的問題,導致僅掃描線內(nèi)的約束限制可以被有效利用,而掃描線之間的約束沒有得到充分的使用,從而發(fā)生條紋拖尾現(xiàn)象。與之相比在本文算法中:SGM算法代價聚合方式是多個方向上的聚合,與全局立體匹配中動態(tài)規(guī)劃算法(BP)比較,可以有效避免一維掃描條紋拖尾現(xiàn)象出現(xiàn);塊匹配算法(DM)的視差優(yōu)化部分無法在整幅影像有效地進行,與之相比本文可以避免塊匹配中的視差優(yōu)化問題,提高精確度;文獻[15]在代價計算部分使用BT差值算法,導致代價計算的時間較長;代價聚合部分在原有SGM算法的基礎上,通過路徑聚合對實時性與精確度的影響綜合考慮,在原有的水平、豎直方向上的4個路徑上進行分析實驗,提出基于樹形結構的匹配,首先在豎直方向上引用可遍歷待匹配點鄰域的結構作為輔助計算,然后在此基礎上引入水平向的結構進行代價聚合(著重橫向,弱化縱向)。經(jīng)過上述的方法,SGM代價聚合的路徑降至為4條。該方面的改進有效提高了運算速率,提高了在弱紋理區(qū)域的匹配精度,但利用樹形結構進行路徑聚合時,出現(xiàn)各個路徑難以兼顧現(xiàn)象,導致豎直方向的路徑?jīng)]有得到充分利用最終使整體匹配精確度一般,同時遮擋問題以及邊緣完整性問題沒有得到有效改善。與之進行比較,本文算法處理效率更高,通過AD變換快速的進行代價計算,充分利用紋理信息,為后續(xù)代價聚合部分的路徑聚合的順利進行提供了良好的基礎;精度更高,在原有SGM算法的基礎上結合圖像分割信息減少算法在遮擋和弱紋理區(qū)域的誤匹配;圖像更加清晰、完整,在遮擋區(qū)域進行左右一致性檢測并在此基礎上對無效值進行有效的賦值填充,最后使用中值濾波進行優(yōu)化。根據(jù)上述比較,本文算法不但具有實時性、精確性,而且在遮擋、弱紋理以及邊緣區(qū)域均有較高的普適性,匹配結果有效可靠。
本文通過AD變換和改進的SGM算法相結合得到了初始視差圖,然后通過左右一致性校驗對遮擋點進行檢測,并在此基礎上對無效值進行填充,最后利用中值濾波對視差圖進行優(yōu)化。實驗表明,在代價計算和代價聚合部分,本文利用AD變換和增加圖像分割信息的SGM算法可以解決立體匹配中實時性和精確度難以兼容的問題,使算法具有較強的魯棒性的同時降低了其在弱紋理區(qū)域以及遮擋區(qū)域的誤匹配率,此外,邊緣區(qū)域能夠得到較好的表達;在視差選擇部分,采用拋物線擬合法使視差達到亞像素分辨率;在視差優(yōu)化部分,對得到的初始視差圖進行左右一致性檢驗可以有效地改善遮擋問題,并在此基礎上對無效值進行有效的賦值。其中,誤匹配點和遮擋點分別采用內(nèi)插值、外插值的方法進行賦值,保證物體輪廓的完整和清晰,更加符合客觀真實實物,同時采用中值濾波對其進行優(yōu)化得到最優(yōu)的視差圖。與其他立體匹配算法比較,本文算法在弱紋理、遮擋以及邊緣區(qū)域的立體匹配改善效果較好,但針對視差不連續(xù)區(qū)域有待改善,后續(xù)進行算法相關改進研究。另外,本文算法對生產(chǎn)中航測遙感影像欠缺實驗分析,后續(xù)應對此進行深入研究。