立體視覺再次整理學習_第1頁
立體視覺再次整理學習_第2頁
立體視覺再次整理學習_第3頁
立體視覺再次整理學習_第4頁
立體視覺再次整理學習_第5頁
已閱讀5頁,還剩15頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、雙目測距的基本原理如上圖所示,雙目測距主要是利用了目標點在左右兩幅視圖上成像的橫坐標直接存在的差異(即視差)與目標點到成像平面的距離Z存在著反比例的關(guān)系: 。其中: 焦距 視差 攝像頭中心距 左像平面的坐標系與立體坐標系中原點的偏移 右像平面的坐標系與立體坐標系中原點的偏移其中 ,和可以通過立體標定獲得初始值,并通過立體校準優(yōu)化,使得兩個攝像頭在數(shù)學上完全平行放置,并且左右攝像頭的,和形同。而立體匹配所做的工作,就是在之前的基礎(chǔ)上,求取視差(這個一般需要達到亞像素精度)。假設目標點在左視圖中的坐標為(x,y),在左右視圖上形成的視差為d,目標點在以左攝像頭為原點的世界坐標系中的坐標為(X,Y,

2、Z),則存在上圖所示的變換矩陣Q,使得。圖像的獲取攝像頭定標攝像頭定標一般都需要一個放在攝像頭前的特制的標定參照物(棋盤紙),攝像頭獲取該物體的圖像,并由此計算攝像頭的內(nèi)外參數(shù)。標定參照物上的每一個特征點相對于世界坐標系的位置在制作時應精確測定,世界坐標系可選為參照物的物體坐標系。在得到這些已知點在圖像上的投影位置后,可計算出攝像頭的內(nèi)外參數(shù)。如上圖所示,攝像頭由于光學透鏡的特性使得成像存在著徑向畸變,可由三個參數(shù) , , 確定;由于裝配方面的誤差,傳感器與光學鏡頭之間并非完全平行,因此成像存在切向畸變,可由兩個參數(shù) , 確定。單個攝像頭的定標主要是計算出攝像頭的內(nèi)參(焦距和成像原點,、五個畸

3、變參數(shù)(一般只需要計算出,對于魚眼鏡頭等徑向畸變特別大的才需要計算)以及外參(標定物的世界坐標)。 OpenCV 中使用的求解焦距和成像原點的算法是基于張正友的方法,而求解畸變參數(shù)是基于 Brown 的方法。1.圖像坐標系、攝像頭坐標系和世界坐標系的關(guān)系攝像頭成像幾何關(guān)系,其中點稱為攝像頭(透鏡)的光心,軸和軸與圖像的X軸和Y軸平行,軸為攝像頭的光軸,它與圖像平面垂直。光軸與圖像平面的交點 ,即為圖像坐標系的原點。由點與、 軸組成的坐標系稱為攝像頭坐標系,的距離為攝像頭焦距,用表示。圖像坐標系是一個二維平面,又稱為像平面,實際上就是攝像頭的CC

4、D傳感器的表面。每個CCD傳感器都有一定的尺寸,也有一定的分辨率,這個就確定了毫米與像素點之間的轉(zhuǎn)換關(guān)系。舉個例子,CCD的尺寸是 ,幀畫面的分辨率設置為 ,那么毫米與像素點之間的轉(zhuǎn)換關(guān)系就是 。設CCD傳感器每個像素點的物理大小為,相應地,就有 。 其中,像素點的大小為,單位為毫米。 其中,為攝像機焦距,為攝像機坐標系的偏斜度(即兩坐標軸不完全垂直,鏡頭坐標和CCD是否垂直)。需要說明的是,一般情況下,很接近,所以在要求不是很嚴格的情況下就直接將設為。可能引起誤差的情況是:當對一幅照片進行拍攝的時候,由于攝影變換使得照片的圖像坐標系在重新成像后不是了。此時,若忽略這個參數(shù),將產(chǎn)生很大的定標誤

5、差。 由于矩陣A包含了攝像機全部的6個內(nèi)參數(shù) ,所以稱A為攝像機內(nèi)參數(shù)矩陣。這些參數(shù)可能會隨著溫度、濕度、氣壓等環(huán)境因素的變化而改變,所以為了保證定標的精度,有必要對各內(nèi)參數(shù)進行標定。 其中, 為旋轉(zhuǎn)矩陣, 為平移向量, 攝像頭矩陣(內(nèi)參)的目的是把圖像的點從圖像坐標轉(zhuǎn)換成實際物理的三維坐標。 其中 , , 2.進行攝像頭定標時,棋盤方格的實際大小 square_size (默認為 1.0f )的設置對定標參數(shù)的影響。在標定時,需要指定一個棋盤方格的長度,這個長度(一般以毫米為單位,如果需要更精確可以設為0.1毫米量級)與實際長度相同,標 定得出的結(jié)果才能用于實際距離測量。一般如果尺

6、寸設定準確的話,通過立體標定得出的Translation向量的第一個分量的絕對值就是左右攝像頭的中心距。3.OpenCV中用cvCalibrateCamera2 進行相機標定的精度差,標定結(jié)果不穩(wěn)定原因。原因一:可能是在標定的時候標定板所在平面與成像平面(image plane)之間的夾角太小,張正友論文里的仿真數(shù)據(jù)(有噪聲的數(shù)據(jù))說明當兩者夾角太小誤差會很大,從張正友的論文里給出的5幅圖中,其中標定平面與成像平面的夾角分別為: 8.8947、 11.2325 、24.4875、 10.8535、 9.5829(單位:度)。而且張正友的論文中也提到兩幅標定板之間的位置平行放置的話,相

7、當于一幅。因此在實際標定中平行放置的情況最好避免。原因二:標定時拍攝的圖片太少,雖然張正友的論文里只用了5幅圖片,但是建議10來幅左右還是必要的,因為實際中可能標定板用A4的紙打印出來貼在一塊板上的,標定板上的世界坐標精度就不是特別高,多拍攝幾幅圖像能減少這方面帶來的誤差,而且多個角度拍攝也可能解決了問題一(標定板和成像平面夾角小的問題)。原因三:圖像上角點提取的不準確,用cvFindChessboardCorners函數(shù)找角點不是很好,假如拍到的圖像不是完整的棋盤格的時候肯定會有問題的,而且也可能用這個函數(shù)提取不出角點,建議可以用其他工具 :OpenCV and MatLab Ca

8、mera Calibration Toolboxes EnhancementCamera Calibration Toolbox for MatlabOpenCV2.1以后對圖像角點的提取準確度比較高,cvFindChessboardCorners和cvFindCornerSubPix結(jié)合可以獲得很好的角點檢測效果。因此,影響定標結(jié)果較大的就是標定板與鏡頭的夾角和棋盤圖像數(shù)目,在實際定標過程中,棋盤圖像數(shù)目應該大于20張,每成功檢測一次完整的棋盤角點就要變換一下標定板的姿態(tài)(包括角度、距離) 。4.單目定標函數(shù)cvCalibrateCamera2采用怎樣的 flags 比較

9、合適?由于一般鏡頭只需要計算, 四個參數(shù),所以我們首先要設置 CV_CALIB_FIX_K3;其次,如果所用的攝像頭不是高端的、切向畸變系數(shù)非常少的,則不要設置 CV_CALIB_ZERO_TANGENT_DIST,否則單目校正誤差會很大;如果事先知道攝像頭內(nèi)參的大概數(shù)值,并且cvCalibrateCamera2函數(shù)的第五個參數(shù)intrinsic_matrix非空,則也可設置CV_CALIB_USE_INTRINSIC_GUESS ,以輸入的intrinsic_matrix為初始估計值來加快內(nèi)參的計算;其它的 flag 一般都不需要設置,對單目定標的影響不大。雙目定標和雙目校正雙目攝像頭定標不

10、僅要得出每個攝像頭的內(nèi)部參數(shù),還需要通過標定來測量兩個攝像頭之間的相對位置(即右攝像頭相對于左攝像頭的三維平移 t 和旋轉(zhuǎn) R 參數(shù))。要計算目標點在左右兩個視圖上形成的視差,首先要把該點在左右視圖上兩個對應的像點匹配起來。然而,在二維空間上匹配對應點是非常耗時的,為了減少匹配搜索范圍,我們可以利用極線約束使得對應點的匹配由二維搜索降為一維搜索。而雙目校正的作用就是要把消除畸變后的兩幅圖像嚴格地行對應,使得兩幅圖像的對極線恰好在同一水平線上,這樣一幅圖像上任意一點與其在另一幅圖像上的對應點就必然具有相同的行號,只需在該行進行一維搜索即可匹配到對應點。1. 關(guān)于cvStereoCalibrate

11、的使用如果按照 Learning OpenCV 的例程,直接通過cvStereoCalibrate來實現(xiàn)雙目定標,很容易產(chǎn)生比較大的圖像畸變,邊角處的變形較厲害。最好先通過cvCalibrateCamera2對每個攝像頭單獨進行定標,再利用cvStereoCalibrate進行雙目定標。這樣定標所得參數(shù)才比較準確,隨后的校正也不會有明顯的畸變。2. cvStereoCalibrate 計算 Essential Matrix 和 Fundamental Matrix (1) Essential Matrix 本征矩陣如上圖所示,給定一個目標點,以左攝像頭光心為原點。點相對于光心的觀察位置為,相對

12、于光心的觀察位置為。點在左攝像頭成像平面上的位置為,在右攝像頭成像平面上的位置為。注意、都處于攝像機坐標系,其量綱是與平移向量T相同的(、在圖像坐標系中對應的像素坐標為、)。假設右攝像頭相對于左攝像頭的相對位置關(guān)系由旋轉(zhuǎn)矩陣R和平移向量T表示,則可得: ?,F(xiàn)在我們要尋找由點、和確定的對極平面的表達式。注意到平面上任意一點x與點a的連線垂直于平面法向量n,即向量 (x-a) 與向量 n 的點積為0:。在坐標系中,光心的位置為T,則、和確定的對極平面可由下式表示: 。由 和 可得: 。另一方面,向量的叉積又可表示為矩陣與向量的乘積,記向量T的矩陣表示為S,得:。那么就得到:。這樣,我們就得到Ess

13、ential Matrix:E = RS。通過矩陣E我們知道和的關(guān)系滿足: 。進一步地,由 和。我們可以得到點P在左右兩個攝像機坐標系中的觀察點 和應滿足的極線約束關(guān)系為: 。注意到 E 是不滿秩的,它的秩為2,那么表示的實際上是一條直線,也就是對極線。(2) Fundamental Matrix 基礎(chǔ)矩陣由于矩陣E并不包含攝像頭內(nèi)參信息,且E是面向攝像頭坐標系的。實際上我們更感興趣的是在圖像像素坐標系上去研究一個像素點在另一視圖上的對極線,這就需要用到攝像機的內(nèi)參信息將攝像頭坐標系和圖像像素坐標系聯(lián)系起來。在(1)中,和是物理坐標值,對應的像素坐標值為和,攝像頭內(nèi)參矩陣為M,則有:。從而:,

14、 。這里,我們就得到Fundamental Matrix: 。并有。3. cvStereoCalibrate 計算 Essential Matrix 和 Fundamental Matrix4雙目校正原理及cvStereoRectify 的應用如圖所示,雙目校正是根據(jù)攝像頭定標后獲得的單目內(nèi)參數(shù)據(jù)(焦距、成像原點、畸變系數(shù))和雙目相對位置關(guān)系(旋轉(zhuǎn)矩陣和平移向量),分別對左右視圖進行消除畸變和行對準,使得左右視圖的成像原點坐標一致(CV_CALIB_ZERO_DISPARITY 標志位設置時發(fā)生作用)、兩攝像頭光軸平行、左右成像平面共面、對極線行對齊。在OpenCV2.1版之前,cvStere

15、oRectify 的主要工作就是完成上述操作,校正后的顯示效果如圖 (c) 所示??梢钥吹叫U笞笥乙晥D的邊角區(qū)域是不規(guī)則的,而且對后續(xù)的雙目匹配求取視差會產(chǎn)生影響,因為這些邊角區(qū)域也參與到匹配操作中,其對應的視差值是無用的、而且一般數(shù)值比較大,在三維重建和機器人避障導航等應用中會產(chǎn)生不利影響。圖15圖16圖17因此,OpenCV2.1 版中cvStereoRectify新增了4個參數(shù)用于調(diào)整雙目校正后圖像的顯示效果,分別是 double alpha, CvSize newImgSize, CvRect* roi1, CvRect* roi2。下面結(jié)合圖15-17簡要介紹這4個參數(shù)的作用:(1

16、)newImgSize:校正后remap圖像的分辨率。如果輸入為(0,0),則是與原圖像大小一致。對于圖像畸變系數(shù)比較大的,可以把newImgSize 設得大一些,以保留圖像細節(jié)。(2)alpha:圖像剪裁系數(shù),取值范圍是-1、01。當取值為0時,OpenCV會對校正后的圖像進行縮放和平移,使得remap圖像只顯示有效像素(即去除不規(guī)則的邊角區(qū)域),如圖17所示,適用于機器人避障導航等應用;當alpha取值為1時,remap圖像將顯示所有原圖像中包含的像素,該取值適用于畸變系數(shù)極少的高端攝像頭;alpha取值在0-1之間時,OpenCV按對應比例保留原圖像的邊角區(qū)域像素。Alpha取值為-1時

17、,OpenCV自動進行縮放和平移,其顯示效果如圖16所示。(3)roi1, roi2:用于標記remap圖像中包含有效像素的矩形區(qū)域。對應代碼如下:在cvStereoRectify之后,一般緊接著使用 cvInitUndistortRectifyMap來產(chǎn)生校正圖像所需的變換參數(shù)(mapx, mapy)。 5.為什么cvStereoRectify求出的Q矩陣cx, cy, f都與原來的不同?在實際測量中,由于攝像頭擺放的關(guān)系,左右攝像頭的f, cx, cy都是不相同的。而為了使左右視圖達到完全平行對準的理想形式從而達到數(shù)學上運算的方便,立體校準所做的工作事實上就是在左右像重合區(qū)域最大

18、的情況下,讓兩個攝像頭光軸的前向平行,并且讓左右攝像頭的f, cx, cy相同。因此,Q矩陣中的值與兩個instrinsic矩陣的值不一樣就可以理解了。”注:校正后得到的變換矩陣Q,Q03、Q13存儲的是校正后左攝像頭的原點坐標(principal point)cx和cy,Q23是焦距f。雙目匹配與視差計算立體匹配主要是通過找出每對圖像間的對應關(guān)系,根據(jù)三角測量原理,得到視差圖;在獲得了視差信息后,根據(jù)投影模型很容易地可以得到原始圖像的深度信息和三維信息。立體匹配技術(shù)被普遍認為是立體視覺中最困難也是最關(guān)鍵的問題,主要是以下因素的影響:(1) 光學失真和噪聲(亮度、色調(diào)、飽和度等失衡)(2) 平滑表面的鏡面反射(3) 投影縮減(Foreshortening)(4) 透視失真(Perspective distortions)(5) 低紋理(Low texture)(6) 重復紋理(Repetitive/ambiguous patterns)(7) 透明物體(8) 重疊和非連續(xù)目前立體匹配算法是計算機視覺中

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論