日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

单目相机标定原理

發布時間:2023/12/10 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 单目相机标定原理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一.相機標定主要涉及三個坐標系:圖像坐標系、攝像機坐標系和世界坐標系

【圖像坐標系】

??????? 攝像機采集的圖像變換為數字圖像后,每副數字圖像在計算機內為M x N數組,M行N列的圖像中每一個元素(pixel)數值就是圖像點的亮度(灰度)。如圖,在圖像上定義直角坐標系(U,V),每一個像素為單位的圖像坐標系坐標,由于(u,v)只能表示像素位于數組中的列數與行數,并沒有使用物理單位表示該像素在圖像中位置,所以需要再建立以物理單位(mm)表示的圖像坐標系,該圖像坐標系以圖像內某一點O1為原點,X軸和Y軸分別平行于U軸和V軸。

??????? 如圖中,(u、v)表示以像素為單位的圖像坐標系的坐標,(x、y)表示以mm為單位的圖像坐標系的坐標。在X、Y坐標系中,原點O1定義在攝像機光軸與圖像平面的交點,該點一般位于圖像中心。但是由于制造原因,很多情況下會有偏移。若O1在U、V坐標系中坐標為(u0,v0),每一個像素在X軸與Y軸方向上的物理尺寸為dx、dy,則圖像任一像素在兩個坐標系下有如下關系:


【攝像機坐標系】

??????? 如圖,Oc點為攝像機光心,Xc軸和Yc軸與圖像的X軸與Y軸平行,Zc軸為攝像機光軸,它與圖像平面垂直。光軸與圖像平面的交點,即為圖像坐標系的原點。由點Oc與Xc、Yc、Zc軸組成的直角坐標系稱為攝像機坐標系,OOc為攝像機焦距:

??????? 由于攝像機可以安放在現實環境中任意位置,所以在環境中任選一個基準坐標系來描述攝像機位置,并用它描述環境中任何物體的位置,該坐標系為世界坐標系。它有Xw、Yw和Zw軸組成,攝像機坐標系與世界坐標系之間的關系可以用旋轉矩陣與平移向量t來描述。

?????? 總體來說,世界坐標系到圖像坐標系的關系可總結如下:

??????? 攝像頭成像幾何關系,其中Oc點稱為攝像頭(透鏡)的光心,Xc軸和Yc軸與圖像的x軸和Y軸平行,Zc軸為攝像頭的光軸,它與圖像平面垂直。光軸與圖像平面的交點O1,即為圖像坐標系的原點。由點Oc與Xc、Yc、Zc軸組成的坐標系稱為攝像頭坐標系,Oc O1 的距離為攝像頭焦距,用f表示。

??????? 圖像坐標系是一個二維平面,又稱為像平面,實際上就是攝像頭的CCD傳感器的表面。每個CCD傳感器都有一定的尺寸,也有一定的分辨率,這個就確定了毫米與像素點之間的轉換關系。舉個例子,CCD的尺寸是8mm X 6mm,幀畫面的分辨率設置為640X480,那么毫米與像素點之間的轉換關系就是80pixel/mm。”設CCD傳感器每個像素點的物理大小為dx*dy,相應地,就有dx=dy=1/80。

二. 針孔模型

?????? 又稱為線性攝像機模型,任何空間點M在圖像中的投影位置m,為光心Oc與M的連線OcM與圖像平面的交點(各種相似三角形有木有,但是要注意像平面和現在討論的其實是關于Oc對稱的哦,所以計算的時候不要忘記了負號,不然出來的圖像就是倒著的啦),這種關系也稱為重心攝影或者透視投影。此時有比例關系如下:

????? 將上面的世界坐標到攝像機坐標的轉換代入,最后皆可以得到世界坐標系與攝像機坐標系之間的關系啦:

??????? 其中,很容易可以知道alph=f/dx,beta=f/dy,分別代表了以X軸與Y軸方向上的像素為單位表示的等效焦距。gamma在較高精度的相機模型中引入,表示圖像平面中以像素為單位的坐標軸傾斜程度的量度,gamma=alpha*tan(theta),theta是相機CCD陣列v軸的偏斜角度。

??????? 由針孔模型我們可以知道,如果一直攝像機的內外參數,就知道投影矩陣M,這時候對任何空間點就可以求出其對應圖像坐標,但是如果已知空間某點的像點m位置(u,v)即使已經知道攝像機內外參數,Xw也不能唯一確定,因為在投影過程中消去了Zc的信息。

??????? 在上面的式子中M是3x4不可逆矩陣,當已知M與(u,v)時,由公式得到的三個方程中消去z,只可以得關于Xw,Yw與Zw的兩個線性方程,這個方程組即為射線OP的方程,也就是說,投影點為m的所有點均在該射線上,所以,該空間是不能唯一確定的。

三. 相機畸變

??????? 攝像頭由于光學透鏡的特性使得成像存在著徑向畸變,可由三個參數k1,k2,k3確定;由于裝配方面的誤差,傳感器與光學鏡頭之間并非完全平行,因此成像存在切向畸變,可由兩個參數p1,p2確定。單個攝像頭的定標主要是計算出攝像頭的內參(焦距f和成像原點cx,cy、五個畸變參數(一般只需要計算出k1,k2,p1,p2,對于魚眼鏡頭等徑向畸變特別大的才需要計算k3))以及外參(標定物的世界坐標)。OpenCV中使用的求解焦距和成像原點的算法是基于張正友的方法,而求解畸變參數是基于 Brown 的方法。

1.徑向畸變

?????? 設(u、v)為理想的圖像像素坐標,相對應的, 為真實獲得的像素坐標。則(x,y)就為理想的圖像物理坐標, 為實際獲得的圖像物理坐標,可以得到如下的關系式:

?????? 我們知道,(u0,v0)在求攝像機內參的時候可以知道, 在圓心提取排序后也可以知道,(u,v)可以通過OpenCV中cvProjectpoints函數求得反投影殘差。(x,y)可以通過 和求出,于是克得到如下公式:

設Dk=d,所以可以求出畸變系數k1,k2.

????? 在求得了徑向畸變的系數以后,就可以如下得到成像儀某點理想的徑向位置

?????? 其中,r就是當前點的所在透鏡半徑,k3只有在精度很高的時候才用得到(可以看到其實是將徑向畸變做了一個泰勒展開并忽略高階誤差得到的)

2.切向畸變(由于透鏡表面曲率不總是嚴格共線產生)

?????? 主要包括離心畸變和薄棱鏡畸變,其中,離心畸變是由攝像機的鏡頭中各個透鏡的光軸不能完全重合造成的。

離心畸變其數學模型可以表示為:

?????? 薄棱鏡畸變是由鏡頭設計和制造缺陷等誤差造成(比如鏡頭與攝像機像面之間有很小的傾角,其不僅會引起徑向偏差,而且會引起切向誤差)其數學模型為:

?????? 可以看到,薄棱鏡畸變的結果就是之前內參矩陣求解時候的那個gamma啦

?????? 綜合考慮徑向畸變和切向畸變,就需要對小孔成像模型進行修正,理想的圖像點歸一化坐標為p=(x,y)T,有畸變的圖像點的歸一化坐標為Pd=(xd,yd)T之間關系為:

??? 特別說明:在opencv中求出了畸變系數和攝像機內參數以后,就可以用cvUndistort2( ImageC1, Show1, &intrinsic_matrix, &distortion_coeffs);來進行圖像矯正了? (建議使用Matlab工具箱來矯正,Opencv自己的函數誤差不是一般大,而且對角點提取的精度要求超高(雖然用了亞像素級別),⊙﹏⊙b汗,之前自己按照書上來結果發現矯正以后圖像扭曲的不行還以為自己的問題查錯查了好久,結果直接標定傳入參數進行矯正以后各種準確…….)。

附錄:cvUndistort2的函數說明

總結

以上是生活随笔為你收集整理的单目相机标定原理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。