王賀迎 張明志 郭 京 周 靜 李 鵬 張 于 王 順
(1.北京東方計量測試研究所,北京 100094;2.中國空間技術(shù)研究院,北京 100094; 3.北京空間機電研究所,北京 100094;4.和海建設(shè)科技集團有限公司,上海 200080)
基于雙目立體視覺原理的三維掃描系統(tǒng)在航空航天、汽車、醫(yī)學(xué)等領(lǐng)域得到了廣泛應(yīng)用。在工作過程中,掃描系統(tǒng)需從不同角度對物體進行三維測量,最終通過拼接得到被測件完整的三維數(shù)據(jù)[1]。為了獲得穩(wěn)定的可供拼接使用的特征點,實際應(yīng)用中常采用在被測件上粘貼圓形非編碼點實現(xiàn),因此就涉及到非編碼點的雙目立體匹配問題[2]。
單應(yīng)性約束在圖像的匹配中應(yīng)用較為廣泛,王曉紅[3],范軍[4]等將基于單應(yīng)性約束的匹配算法應(yīng)用于遙感、遠景攝影測量等工作距離較大的情況下得到了較好的結(jié)果。在近景工業(yè)攝影測量和三維掃描領(lǐng)域,基于單應(yīng)性約束的立體匹配算法也有所應(yīng)用。梁棟[5]等提出基于極幾何與單應(yīng)性約束的匹配,實驗表明能夠獲得較多的匹配點和較高的匹配精度;Li[6]等應(yīng)用極線與單應(yīng)性約束結(jié)合的方法對場景深度幾乎無變化的電路板圖像進行匹配,獲得了具有旋轉(zhuǎn)和平移魯棒性的匹配結(jié)果;張晨博[7]基于梁方法在手持激光掃描系統(tǒng)中也實現(xiàn)了非編碼點的正確匹配。但在三維掃描系統(tǒng)的實際開發(fā)與測試過程中發(fā)現(xiàn),該匹配算法并不十分穩(wěn)定,在工作距離較小,即掃描系統(tǒng)距離被測件較近的情況下,會出現(xiàn)誤匹配。進一步實驗發(fā)現(xiàn)掃描系統(tǒng)距離被測物體越近,被測物體表面高度差越大,誤匹配率越高。
國內(nèi)外也不乏對基于單應(yīng)性約束算法改進的研究。Wu[8]等通過計算鄰域灰度值的相似性去掉基于單應(yīng)性約束的匹配方法在被測場景深度變化時產(chǎn)生的誤匹配,但對于灰度值變化不大的被測物體效果不佳;姜濤[9]等利用基于單應(yīng)性約束的匹配算法在變焦雙目立體視覺系統(tǒng)下對臺階面進行了三維重建實驗,采用了將臺階面手動劃分為三個平面的方法,未能實現(xiàn)自動化的匹配;薛振華[10]等對求取單應(yīng)性矩陣的策略進行了改進,能夠獲得更為優(yōu)化的單應(yīng)性矩陣,但是仍然沒有解決單應(yīng)性約束在場景深度變化時的適用局限性。
本文對大場景深度范圍下誤匹配出現(xiàn)的原因進行了理論分析,建立了匹配誤差計算模型,得出計算誤差、場景深度、工作距離三者的關(guān)系,并提出一種不受場景深度與工作距離比值限制的雙目匹配方法,達到了較高的匹配正確率,將其應(yīng)用于近場景的三維掃描系統(tǒng),可以達到良好的匹配效果。
在計算機視覺中,平面的單應(yīng)性被定義為一個平面到另外一個平面的投影映射,可以通過一個3×3的矩陣表示這種映射關(guān)系,該矩陣即為單應(yīng)性矩陣(Homography Matrix)。單應(yīng)性矩陣表示的是兩幅圖像間點對點的一一對應(yīng)關(guān)系[11]。根據(jù)定義可以判定應(yīng)用單應(yīng)性矩陣H時,計算對象應(yīng)為相機在不同位置拍攝同一個三維平面得到的圖像,而對于非平面被測對象,匹配中使用的矩陣H是對于當(dāng)前三維場景下的最優(yōu)化單應(yīng)性矩陣。在場景深度相對較小的情況下,該方法能夠達到較好的匹配效果。隨著場景深度的增加,最優(yōu)單應(yīng)性矩陣對兩幅圖像間對應(yīng)關(guān)系的描述能力越來越差,進而導(dǎo)致匹配錯誤。
下面從理論上對匹配誤差與場景深度的關(guān)系進行推導(dǎo)。如圖1所示,右坐標(biāo)系O1X1Y1Z1和左坐標(biāo)系O2X2Y2Z2為空間中兩個坐標(biāo)系。方向向量N為平面1的法向量,設(shè)平面上一點P在右、左坐標(biāo)系中的坐標(biāo)分別為Pr(X1Y1Z1),Pl(X2Y2Z2)。
圖1 單應(yīng)性矩陣推導(dǎo)示意圖 Fig.1 Schematic diagram for homography matrix derivation
PO1沿平面法向量N的投影為d,即
NTPr=n1X1+n2Y1+n3Z1=d
(1)
式中:n1,n2,n3——平面法向量N在右坐標(biāo)系下的三個分量;d——雙目視覺系統(tǒng)的工作距離。
根據(jù)右、左坐標(biāo)系間的坐標(biāo)轉(zhuǎn)換關(guān)系,可得單應(yīng)性矩陣表達式
(2)
式中:R——右坐標(biāo)系相對于左坐標(biāo)系的旋轉(zhuǎn)矩陣;T——右坐標(biāo)系相對于左坐標(biāo)系的平移矢量。
在場景深度變化的被測對象中存在非共面點,通過隨機抽樣一致性算法(RANSAC)可以計算得到一個最佳H矩陣[12],能夠產(chǎn)生盡可能多的對應(yīng)點對。對于實際上并不在同一個三維平面上的點P′用矩陣H進行轉(zhuǎn)換,將其投影到另一個圖像歸一化平面上會產(chǎn)生誤差,如圖2所示。
圖2 匹配誤差推導(dǎo)示意圖Fig.2 Schematic diagram for matching error derivation
P′實際的對應(yīng)匹配點P′l坐標(biāo)應(yīng)為
(3)
式中:x1,y1——P′在圖像坐標(biāo)系下的坐標(biāo);x′2,y′2——P′l在圖像坐標(biāo)系下的坐標(biāo);d1——P′實際工作距離。
由于使用了錯誤的模型H,計算得到的偽匹配點Pl坐標(biāo)為
(4)
式中:x2,y2——Pl在圖像坐標(biāo)系下的坐標(biāo);d2——P′擬合工作距離。
故單應(yīng)性約束雙目匹配算法的坐標(biāo)計算誤差模型為
(5)
式中:Δd——場景深度變化量。
其中M值在雙目立體視覺系統(tǒng)標(biāo)定完成后為常量[13]。
由上述誤差模型可知,對于外參確定的雙目立體視覺系統(tǒng),場景深度與工作距離之間的比值,決定了單應(yīng)性矩陣變換計算結(jié)果的誤差。場景深度與拍攝距離比值小時,P′l與Pl誤差在可以允許的范圍內(nèi),不會引起誤匹配;當(dāng)場景深度與拍攝距離比值較大時,誤差不可忽略,會引起匹配錯誤。
三維掃描系統(tǒng)更常面臨的是場景深度與工作距離比值較大的測量情況,為實現(xiàn)該類情況下左右相機標(biāo)志點的正確匹配,提高三維掃描系統(tǒng)的適用廣泛性,本文提出一種基于角度校驗的雙目立體匹配算法。該算法分為兩個匹配階段,分別為基于極線約束的初匹配階段和基于角差異度計算的匹配校驗階段。下面分別給出角差異度的計算方法和基于角度校驗的雙目立體匹配算法流程。
角差異度計算需已知圖像中一部分正確匹配的點對,如圖3所示,設(shè)已知的正確匹配點對為(A1,A2),(B1,B2),(C1,C2),……,需計算角差異度的匹配點對為(P,P1,P2,P3,…),其計算流程如下:
圖3 角差異度計算示意圖Fig.3 Diagram for calculating angle difference
(1)在左圖中計算點P與正確匹配點A1,B1,C1,……,連線形成的夾角∠A1PB1,∠B1PC1,∠C1PA1,……,計算出所有夾角后,按夾角大小進行排序,得到角度序列α[3,…];
(2)在右圖遍歷候選點P1,P2,P3,……,分別計算Pi(i=1,2,3,…,n)與正確匹配點A2,B2,C2,……,連線形成的夾角∠A2PiB2,∠B2PiC2,∠C2PiA2,……,計算出所有夾角后,按夾角大小進行排序,得到角度序列βi[βi1,βi2,βi3,…];
(3)將得到的角度序列α和角度序列βi,角差異度ηi。按公式(6)計算
(6)
式中:i——候選點序號;j——正確匹配點數(shù);αj——角度序列α的第j個分量;βij——角度序列βi的第j個分量。
基于角度校驗的雙目立體匹配算法流程如圖4所示。
圖4 角度校驗匹配算法流程圖Fig.4 Flow chart of angle checking calibration algorithm
3.2.1 基于極線約束的初匹配
對左圖中的每一個標(biāo)志點,通過極線約束[14]在右圖中尋找對應(yīng)的匹配點。由于圖像中某些標(biāo)志點對所在的極平面在空間中十分靠近,故匹配結(jié)果分為一對一的直接匹配點對(A1,A2),(B1,B2),(C1,C2),……,和一對多的待校驗點對(P,P1,P2,P3,…),(Q,Q1,Q2,Q3,…)……。
3.2.2 直接匹配點對自校驗
在無遮擋測量情況下,根據(jù)極線約束原理分析可得直接匹配點對中絕大部分為正確匹配點對。為保證匹配校驗中計算角差異度參考的點對均匹配無誤,對直接匹配點對進行自校驗。以除自身外的其它直接匹配點對作為參考,計算每對點的角差異度,根據(jù)拉依達準(zhǔn)則,剔除偏差過大的點對。
3.2.3 自適應(yīng)閾值計算
統(tǒng)計剔除偏離點后正確匹配點對的角差異度平均值D與標(biāo)準(zhǔn)差σ,計算自適應(yīng)閾值按公式(7)計算。
δ=D+3σ
(7)
3.2.4 基于角差異度的匹配校驗
取待校驗點對(P,P1,P2,P3,…),以正確匹配點對為計算參考,計算所有候選點的角差異度ηi,小于自適應(yīng)角度校驗閾值δ且最小的η對應(yīng)的候選點,與當(dāng)前點P成為匹配點對,若所有ηi均大于δ則匹配失敗。
3.2.5 獲得所有最終匹配點對
對待校驗點對逐一進行步驟4的匹配校驗,并將通過匹配校驗的新點對增加到正確匹配點對中,直到完成所有待校驗點對的角度校驗,得到全部最終匹配點對。
實驗采用兩臺大恒MER 131-75GM型號工業(yè)相機獲得立體匹配圖像對,預(yù)先通過雙目立體視覺標(biāo)定方法獲得雙目立體視覺系統(tǒng)的基礎(chǔ)矩陣F[15]。獲取左右相機的圖像后,通過質(zhì)心法計算非編碼標(biāo)志點的圓心坐標(biāo),作為待匹配圖像點。被測條件共三種,第一種為場景深度無變化的平面被測對象,第二種為具有一定場景深度變化的傾斜面被測對象,第三種為大場景深度變化量的臺階面被測對象。三種被測條件下,工作距離基本相同,但是場景深度逐漸增大。
實驗在不同場景深度的被測條件下,對四種匹配方法進行對比,分別為基于單應(yīng)性約束的匹配算法、基于角度校驗的雙目立體匹配算法、基于長度校驗的雙目立體匹配算法和基于面積校驗的雙目立體匹配算法。
除第2章分析的單應(yīng)性約束匹配算法,本文將提出的基于角度校驗的雙目立體匹配算法與以下兩種校驗匹配算法也進行了實驗對比,將不同匹配算法的實驗結(jié)果列于表1中。
4.2.1 基于長度校驗的雙目立體匹配算法
基于長度校驗的雙目立體匹配算法將點間距離差異度作為校驗參數(shù)。設(shè)初匹配結(jié)果如圖3所示,點間距離差異度的計算方法如下:
(1)左圖中點P與正確匹配點A1,B1,C1,……,連線形成的線段LPA1,LPB1,LPC1,……,計算出所有線段兩端點之間的歐式距離,得到線段長度集合L[L1,L2,L3…];
(2)在右圖遍歷候選點P1,P2,P3,……,Pi(i=1,2,3,…,n)與正確匹配點A2,B2,C2,……,連線形成線段lPA2,lPB2,lPC2,……,計算出所有線段兩端點之間的歐式距離,得到線段長度集合li[li1,li2,li3,…];
(3)將得到的集合L和li按公式(8)計算得出點間距離差異度γi
(8)
4.2.2 基于面積校驗的雙目立體匹配算法
(1)左圖中點P與正確匹配點A1,B1,C1,……,連線形成三角形ΔA1PB1,ΔB1PC1,ΔC1PA1,……,計算所有三角形面積,得到三點面積集合S[S1,S2,S3,…];
(2)在右圖遍歷候選點P1,P2,P3,……,Pi(i=1,2,3…n)與正確匹配點A2,B2,C2,……,連線形成三角形ΔA2PiB2,ΔB2PiC2,ΔC2PiA2,……,計算出所有三角形面積,得到集合si[si1,si2,si3,…];
(3)將得到的集合S和si,按公式(9)計算得出三點面積差異度εi。
(9)
基于單應(yīng)性約束的匹配結(jié)果如圖5所示,對于平面被測對象,基于單應(yīng)性約束的雙目匹配算法得到了很好的匹配結(jié)果,識別的52組待匹配點均實現(xiàn)了正確匹配。對于斜面被測對象,共得到41對匹配點,其中38對匹配正確,匹配正確率為92.68%。而對于臺階面被測對象,共得到35對匹配點,其中僅有29對實現(xiàn)了正確匹配,匹配正確率為82.86%。
圖5 單應(yīng)性約束匹配結(jié)果Fig.5 Homography constraint matching results
圖6 角度校驗匹配結(jié)果Fig.6 Angle check matching results
圖7 長度校驗匹配結(jié)果Fig.7 Length check matching results
圖8 面積校驗匹配結(jié)果Fig.8 Area check matching results
實驗結(jié)果表明隨著場景深度的增加,單應(yīng)性約束算法不僅匹配成功點數(shù)有所減少,匹配正確率也開始下降。在三維掃描系統(tǒng)的開發(fā)與測試過程中,當(dāng)被測場景深度變化范圍較大時,也復(fù)現(xiàn)出類似結(jié)果。
對同樣三組圖像進行匹配實驗,基于角度校驗的雙目立體匹配算法實驗結(jié)果如圖6所示。對于平面被測對象,該算法匹配結(jié)果與單應(yīng)性約束算法表現(xiàn)同樣優(yōu)秀,識別的52組點均實現(xiàn)了正確匹配,匹配正確率100%,對于斜面被測對象,共得到40對匹配點,僅有一對匹配錯誤,匹配正確率為97.5%,對于臺階面被測對象,得到的50對匹配點全部匹配正確,匹配正確率為100%。實驗結(jié)果表明,基于角度校驗的雙目立體匹配算法在場景深度與工作距離比值較大時,仍然能達到較高的匹配正確率,且能夠得到更多的匹配點對,較基于單應(yīng)性約束的雙目立體匹配方法更具有優(yōu)勢。
在與前述實驗相同的被測條件下,對基于長度校驗和面積校驗的雙目立體匹配算法分別進行了實驗,實驗結(jié)果如圖7、圖8所示。兩種算法在三種被測條件下均達到了較高的匹配正確率,但匹配總點數(shù)較基于角度校驗的雙目立體匹配算法有明顯下降。尤其在大場景深度范圍的測量條件下,匹配點對分別從50對下降到了44對和36對。綜合來看,角度校驗算法匹配效果優(yōu)于長度校驗與面積校驗算法。
在基于角度校驗的立體匹配算法中,采用了δ=D+3σ作為自適應(yīng)閾值,本實驗通過改變閾值大小研究其對于匹配點數(shù)和匹配正確率的影響,實驗結(jié)果如圖9所示。實驗結(jié)果表明,閾值的改變對匹配點數(shù)影響較大,對匹配正確率影響較小。當(dāng)閾值取值過小時,會錯誤的將匹配點篩除,導(dǎo)致匹配點數(shù)減少。閾值取值過小也會導(dǎo)致匹配正確率下降,但匹配正確與否主要由候選點角差異度是否最小保證,因此干擾程度較小。算法中自適應(yīng)閾值的計算方法更為謹(jǐn)慎,根據(jù)實驗結(jié)果分析,閾值選擇的下限可以擴展到δ=D+2σ。
圖9 閾值驗證實驗結(jié)果Fig.9 Experimental results of threshold verification
表1 不同匹配算法實驗結(jié)果對比
本文對基于單應(yīng)性約束的雙目立體匹配方法進行了研究,通過實驗發(fā)現(xiàn)其在一定的使用條件下才具備較高的匹配正確率。為明確其適用條件,通過公式推導(dǎo)得出匹配計算誤差與場景深度和工作距離比值的數(shù)學(xué)關(guān)系。進一步提出了不受場景深度與工作距離比值限制的基于角度校驗的雙目立體匹配算法,通過極線約束和角差異度校驗實現(xiàn)大場景深度范圍下非編碼點的正確匹配,并通過實驗驗證了該方法的有效性。本文得出以下結(jié)論:
(1)基于單應(yīng)性約束的雙目立體匹配方法匹配效果與場景深度和工作距離之間的比值有關(guān),場景深度和工作距離之間的比值較大時,匹配計算誤差會超過可容忍的范圍;
(2)基于角度校驗的雙目立體匹配方法不受場景深度與工作距離之間的比值的限制,在不降低匹配總點數(shù)的同時,可以達到更高的匹配正確率。
本文所建立的匹配計算誤差模型,可以作為判斷雙目視覺系統(tǒng)的工作條件是否適合采用基于單應(yīng)性約束匹配方法的參考依據(jù),提出的基于角度校驗的雙目立體匹配算法在單應(yīng)性約束誤差較大時,可以得到較好的匹配效果,為三維掃描系統(tǒng)提供了良好的匹配解決方案。