引言
光電測距技術從光源的角度可以分為兩種:主動測距和被動測距。主動測距需要人造光源照射目標物體,通過反射回來的光的紋理等特征,或直接計算光的傳播時間來確定目標的距離。相對于主動測距的是無人造光源照射的被動測距,它利用自然光輻射分析得到目標的距離。因此,被動測距具有防信息泄露,隱蔽性好,測距快速靈活,自動化程度高,小巧輕便,容易使用等優(yōu)點,在機器人視覺、航空測距、智能交通、軍事等領域有較大的應用價值。
利用三角視差原理,人類能通過雙眼獲取環(huán)境三維信息中的深度信息。運用幾個相機對同一景物從不同位置拍照獲取圖像,進行圖像處理得到視差,進而從視差中恢復距離。在這個過程中,圖像配準是關鍵步驟之一。對視差測距的約束也主要體現(xiàn)在所采用的配準策略上。圖像配準就是通過確定兩幅圖像的幾何變換參數(shù),建立兩幅圖像之間的對應關系,對其中一幅圖像進行幾何變換的過程。在影像分析、機器視覺、三維重建等方面,圖像配準技術是圖像分析和處理的基本問題。本文就雙目視差測距中的圖像配準問題進行了探討,設計實驗系統(tǒng)并用BlockMatching方法對圖像進行匹配,測得目標距離。
1雙目視差測距模型
圖1所示為雙目立體視覺測距系統(tǒng)原理圖。
圖1 雙目立體視覺測距系統(tǒng)原理圖
左右兩個相機平行放置,光軸距離為師即基線距離)。Q為被測物體上的一點,到像平面的垂直距離為L,f為組合物鏡焦距。Q在左右相機上的成像點分別為Q1、Q2,由相似三角形可知:
由上兩式可得出目標點到相機的距離為:
其中,x1-x2為目標點Q在左右圖像上成像的位置差即視差,可由圖像配準得到;b為基線距離,由相機標定確定;f為相機給定參數(shù)。
2幾種圖像配準方法比較
立體匹配算法大致可分為兩類:一類為基于區(qū)域的算法,這種算法的優(yōu)點是很容易恢復出高紋理區(qū)域的視差圖,速度快,占用內存少,但在低紋理區(qū)域效果不好,會產生大量誤匹配,導致邊界模糊。另一類為基于全局的算法,此算法一般用平滑性約束和相容性約束來構成一個評價函數(shù),再通過各種最優(yōu)算法求得評價函數(shù)的最小值。這種算法由于是全局尋優(yōu),因而它的匹配準確性較高,但匹配速度很慢。
2.1BlockMatching塊匹配法
BlockMatching(BM)模塊匹配法是一種基于區(qū)域的局部匹配算法。該算法使用SAD(SumofAbsoluteDifference)"絕對誤差累計”的小窗口來查找立體校正后左右兩幅圖像之間的匹配點,圖2所示為SAD算法的示意圖。
構造小窗口后,用該窗口覆蓋左攝像頭的圖像,選擇出窗口覆蓋區(qū)域內的所有像素點;同樣用該窗口覆蓋右攝像頭的圖像并選擇出覆蓋區(qū)域的像素點。左邊覆蓋區(qū)域減去右邊覆蓋區(qū)域,求出所有像素點差的絕對值的和即SAD值。然后移動右邊圖像的窗口,再次計算SAD值。找到一定范圍內的最小的SAD值對應的右圖像素塊就是左圖最佳匹配像素塊。由匹配塊與當前塊的相對位置計算出運動位移,所得運動位移即為當前塊的運動矢量,通過運動矢量得到視差值。BM模塊匹配法就是通過在整幅圖上使用SAD滑動窗口完成對其中一幅圖像中特征點的匹配。
2.2GraphCut圖切割匹配法
GraphCut圖切割法是OpenCV中另一種基于全局的匹配算法,它首先對參考圖像進行Canny檢測,再用初始窗口對每個像素用自適應窗口算法進行計算?;谌值钠ヅ渌惴ㄓ捎谑侨謱?yōu),因而可以獲得較高的匹配準確性,特別是采用GraphCut圖切割思想的算法精度很高。但是,由于圖切割方法所建立的網(wǎng)格圖包含了大量的節(jié)點和邊緣,每個像素都需要遍歷該像素所有可能的像素差來計算視差,這占用了大量的時間,降低了效率。因此,GraphCut圖切割算法不適用于要求快速處理的實時性場合。
3雙目立體視覺BlockMatching塊匹配法的實現(xiàn)
3.1實驗環(huán)境
該實驗主要通過搭建硬軟件環(huán)境,結合計算機編程實現(xiàn)基于區(qū)域的局部匹配算法凱根據(jù)系統(tǒng)要求,本實驗選定SunTime130萬像素CCD彩色數(shù)碼工業(yè)相機與1/2"C口8~50mm手動光圈鏡頭。在雙相機系統(tǒng)上利用拍攝的標定板進行標定和匹配得出數(shù)據(jù)。以VS2008+OpenCV2.3.1為編程環(huán)境,進行匹配測距實驗。
實驗硬件系統(tǒng)如圖3所示,兩組相機平行放置于長度為30cm的標尺條上,下方用滑輪固定,可以根據(jù)需要調整兩相機的間距。標尺條固定在三角架上,三腳架上自帶兩個水平儀,以將系統(tǒng)調至水平。兩相機通過USB數(shù)據(jù)線連接到兩臺計算機進行圖像處理和計算。
3.2相機標定
標定板為7X7的黑白棋盤格,每格尺寸為25.4mmX25.4mm。左右相機同時對標定板拍照,得到14對共28張圖像。用OpenCV中的cvStereoCalibrate函數(shù)對相機鏡頭進行標定,可以得到相機系統(tǒng)的內外參數(shù).Af和Aright為左右相機鏡頭內部參數(shù)矩陣(焦距、成像原點),燦和給岫為畸變系數(shù),外部參數(shù)由旋轉矩陣R和平移向量T表示,它們共同確定了左右相機的相對位置關系,圖4所示是左右相機的位置關系圖。之后的雙目校正cvStereoRectify函數(shù)利用標定得到的內外參數(shù)分別對左右視圖進行消除畸變和行對準,以使左右視圖的成像原點坐標一致、兩攝像頭光軸平行、左右成像平面共面、對極線行對齊。
標定得到的相機系統(tǒng)內外參數(shù)如下:
內部參數(shù):
標定得到T向量在X方向上的坐標為28.8cm。旋轉矩陣R接近單位矩陣,說明兩相機之間基本保持平行,符合雙目視差模型要求。
3.3立體匹配
得到相機內外參數(shù)之后,就可以用BlockMatching法對目標圖像進行匹配計算視差。對圖像中距離測距系統(tǒng)5m(實測)處的黃色便利貼進行測距,過程如圖5所示。其中,圖5(a)為目標圖像的左右相機匹配過程中的視圖,圖5(b)為計算參數(shù)界面。通過BlockMatching方法得到視差值d,再利用函數(shù)cvReprojectImageTo3D標定得到的內外參數(shù)結合視差d可以恢復出目標的三維信息。由圖5可見計算出的距離為494cm,與實際距離有1.2%的相對誤差。
用該實驗系統(tǒng)分別對3m,5m,10m,15m,25m的景物進行拍照,并對每組圖像上的兩個點進行測距,所得到的10組數(shù)據(jù)如表1所列。
4結語
相比主動測距,基于三角視差的雙CCD被動測距具有儀器簡單,適用場合廣泛,保密性好的優(yōu)勢。本文研究的基于區(qū)域的局部匹配算法BlockMatching,使用SAD“絕對誤差累計”小窗口,查找經(jīng)過校正后的左右兩幅圖像之間的匹配點,它匹配速度快,幀處理速度在5幀/s以上,并且精度較高,在10m的距離內,誤差都是小于2.0%。整個測距系統(tǒng)有較強的實用性。但同時,隨著距離的增大,由于標定誤差、光線和人為因素等的影響,精度也有所下降。另外,立體匹配只查找兩幅圖像之間的強匹配點,也是誤差隨距離增大的重要原因。
20211020_616ff8bf18640__雙目視差測距中的圖像配準技術研究1