【自动驾驶】27.相机畸变_相机内参标定 整理
本文整理了很多有關(guān)相機畸變博客的相關(guān)內(nèi)容,都附上的原文地址,也糾正了一些其他博客的錯誤。
下面兩張截圖來自高翔博士的《視覺SLAM十四講》書中內(nèi)容。
有關(guān)添加畸變矯正以及去畸變的詳細過程,可以參考 自動駕駛視覺感知:相機標(biāo)定。
關(guān)于相機內(nèi)參標(biāo)定的請參考這篇博客:最詳細、最完整的相機標(biāo)定講解。 注意,這篇博客的畸變矯正公式也寫反了。
相機畸變公式推導(dǎo)可參考這篇博客:相機畸變詳細推導(dǎo)。
【畸變矯正公式參數(shù)說明:】
網(wǎng)上有很多文章都在談畸變矯正,對于畸變矯正的公式,有很多文章是把畸變前得像素坐標(biāo)和畸變后的像素坐標(biāo)的關(guān)系搞反了,下面給出正確的關(guān)系:
引用張正友論文的原文:
《Flexible camera calibration by viewing a plane from unknown orientations》
由上述論文可見, 畸變公式左側(cè) x?\color{red}\breve{x}x? 、y?\color{red}\breve{y}y?? 是畸變矯正前的像素坐標(biāo),右側(cè)的 x\color{red}xx 、y\color{red}yy 是理想情況下無畸變時的像素坐標(biāo):
正確公式如下:
徑向畸變:
切向畸變:
網(wǎng)上有些人搞反了, 他們說左側(cè) 時畸變矯正后的結(jié)果。
這里只是關(guān)于畸變公式中參數(shù)的意義做了一個說明記錄,關(guān)于畸變的矯正的代碼及詳細原理解釋可參考下面這個博客,寫的很好:https://www.jianshu.com/p/6daa8dbbfa30
原文鏈接:https://blog.csdn.net/TimeRiverForever/article/details/117283430
透鏡
實際成像時,如果小孔過小,則入射光的強度會受到影響,進一步會影響到成像。 另一方面,由于光的波動性,在小孔的邊緣上,光將發(fā)生衍射,因此,這些光將在像平面上“散播”。當(dāng)小孔變的越來越小時,入射光的“散播”范圍將變得越來越大,因此,入射光中越來越多的能量將會被“散播”到:偏離入射光方向的“地方”。
我們在使用針孔相機時,我們做過一個假設(shè):針孔是無線小的一個孔。在真實物理世界中,我們的假設(shè)一般無法成立,那如果改變針孔的大小后,會發(fā)生怎樣的變化呢?
如上圖所示,當(dāng)針孔尺寸發(fā)生改變后,穿過針孔的光線數(shù)量就會增加。光線數(shù)越多,像平面中的點就會被三維世界中物體上越多的點影響,導(dǎo)致圖像越發(fā)模糊。針孔小了,得到的圖像更清晰,但也更暗。自然而然的,我們就會想到針孔模型下的一個基本問題:我們能設(shè)計一個相機能得到既清晰又明亮的圖像嗎?
為了解決小孔相機的上述問題,我們現(xiàn)在考慮:在成像系統(tǒng)中使用透鏡。鏡頭可以使光線聚焦或分散,如果我們選用一個理想的透鏡替代針孔,那他應(yīng)該具有以下特性:P點發(fā)出的所有射線,經(jīng)鏡頭折射后,聚焦在像平面上P′點。
假如我們另取一點 Q,在像平面上的投影點則可能是模糊或失焦的。每個鏡頭都會有特定的準(zhǔn)確對焦的距離,在攝影學(xué)或計算機圖形學(xué)中也叫景深(depth of field)。
鏡頭能夠講所有平行于光軸的光線折射到同一個點,稱之為焦點。焦點和光心的距離即為焦距f。從光心穿過的光線不會偏離原始方向。
一個理想的透鏡具有如下兩個性質(zhì):
- 它的投影方式和小孔模型相同
- 將一定數(shù)量的光線匯聚在一起。
畸變模型參數(shù)
相機的內(nèi)參除了以上fx, fy, u0, v0,還包含畸變系數(shù)[k1, k2, p1, p2, k3]
理想的透鏡是沒有畸變的。但是,因為制造和安裝精度等方面的原因,鏡頭總是存在這畸變。畸變是相機固有特性,同款相機的畸變也會有些許差異,但是其和相機內(nèi)參一樣,標(biāo)定一次即可。
畸變參數(shù)分為徑向畸變(Radial Distortion)和切向畸變(Tangential Distortion),除了這兩種之外也還有其他類型畸變,但是沒有這兩種顯著,故忽略不計。
徑向畸變
徑向畸變來自透鏡形狀不規(guī)則以及建模的方式,導(dǎo)致鏡頭不同部分焦距不同。光線在遠離透鏡中心的地方偏折更大(枕型畸變)或更小(桶形畸變)。
從徑向畸變開始。實際攝像機的透鏡總是在成像儀的邊緣產(chǎn)生顯著的畸變,如下圖所示。對某些透鏡,光線在遠離透鏡中心的地方比靠近中心的地方更加彎曲。
對徑向畸變,成像儀中心(光軸)的畸變?yōu)?,隨著向邊緣移動,畸變越來越嚴(yán)重。當(dāng)然,在實際的相機中,這種畸變比較小,而且可以用r=0位置周圍的泰勒級數(shù)展開的前幾項來定量描述。
下面的公式寫反了,等號左邊應(yīng)該是畸變,右邊的x,y是理想值。
下圖顯示矩形網(wǎng)格因徑向畸變而產(chǎn)生的位移。越遠離光軸中心的地方,矩形網(wǎng)格上的點偏移越大。
下圖描述了3種常見的畸變情形,桶形畸變通常k1>0,枕形畸變通常k1<0。
切向畸變
切向畸變來自于整個攝像機的組裝過程。由于透鏡制造上的缺陷使得透鏡本身與圖像平面不平行而產(chǎn)生的,如下圖所示:
切向畸變可以用兩個額外的參數(shù)p1和p2來描述:
下面的公式寫反了,等號左邊應(yīng)該是畸變,右邊的x,y是理想值。
去畸變計算
到目前位置,相機的模型已經(jīng)建立起來了,以下公式中的矩陣描述了相機的固有參數(shù)
有時(u0, v0)也寫作(cx, cy),以及畸變參數(shù):Distortioncoefficients=(k1,k2,p1,p2,k3)
決定這兩個矩陣的過程,便是相機標(biāo)定。通常,把攝像機對準(zhǔn)一個有很多獨立可標(biāo)識點的物體,在不同角度觀看這個物體,進一步可通過每個圖像來計算攝像機的相對位置和方向,以及攝像機的內(nèi)參。
在內(nèi)參標(biāo)定完成后,可以建立三維坐標(biāo)和二維圖像的關(guān)系:
綜合徑向畸變和切向畸變,我們總結(jié)出去畸變公式:
- Ideal point (xu,yu)為理想點
- real point (xd,yd)為實際點
- dr為徑向畸變,參數(shù)為{k1, k2, k3}
- dt為切向畸變,參數(shù)為{p1, p2}
于是通過下面的變換,可以得到?jīng)]有畸變的標(biāo)定結(jié)果:
下面的公式寫反了,等號左邊應(yīng)該是畸變,右邊的x,y是理想值。
等式右邊的(x, y)為得到的圖像中的理想點,但是存在畸變,于是把其帶入等式右邊,經(jīng)過徑向和切向變換后,得到左邊的畸變校正后的實際點坐標(biāo)(xcorrected, ycorrected),取出對應(yīng)顏色值作為(x, y)的顏色值即可。通過去畸變,可以完成圖像的矯正,如下圖:
注:以上文字和圖片均來源于鏈接,若有侵權(quán)請聯(lián)系轉(zhuǎn)載方刪除。
總結(jié)
以上是生活随笔為你收集整理的【自动驾驶】27.相机畸变_相机内参标定 整理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【自动驾驶】相机标定 疑问总结
- 下一篇: 【Tools】git提示“warning