有任何問題,請聯系:luhan@mail.nankai.edu.cn.









攝像機模型,畸變模型及畸變圖像的矯正
luhan@mail.nankai.edu.cn
注1:文中所有圖的符號標注並不統一,一切以正文部分公式為准。
l 攝像機模型:
分若干步驟實現:
1) 小孔成像映射:
類似如上的小孔成像模型,重置一下攝像機坐標系位置,得如下小孔成像模型:
上圖中,小孔成像模型把空間坐標點(齊次坐標形式,最后多一項記為1)映射為距距攝像機坐標系平面位置為(單位為距離)的新平面上的點,其坐標描述為(齊次坐標形式,單位為距離)。映射關系描述如下:
2) 考慮主點偏移,轉化為像素值:
考慮主點偏移,轉化為像素坐標值如下:
其中,,單位均為 距離/像素。
3) 考慮像素坐標非矩陣因素:
如上圖,考慮像素坐標非矩陣因素后,像素坐標描述如下:
4) 整理如下:
其中,,均為攝像機內參矩陣中常見待標定參數,其單位均為 像素值。另外內參矩陣常用待標定參數包括主點位置。
注意:經常采用如下形式的坐標,記為歸一化圖像坐標(normalized image coordinates):
則此時有:
歸一化圖像坐標的單位為1。其物理意義為:取一距離攝像機坐標系平面的位置為1的新平面(歸一化圖像平面,mormalized image plane),則表示坐標點在該平面上的映射點坐標。
5) 引入世界坐標系:
考慮世界坐標系與相機坐標系的矩陣變換(平移變換和旋轉變換),引入世界坐標系坐標后,有:
其中, 。
6) 最終小孔成像模型如下:
該模型為線性模型。
7) 對於攝像機內參數標定過程:
已知 ,則小孔成像模型變換為:
其中,。
記為單應矩陣,則有:,為常見標定模型。
l 畸變模型成因:
徑向畸變:原因是鏡頭不規整造成的,不能完全把攝像機等效為小孔的等比放大模型。
切向畸變:原因是安裝時鏡頭和感光片不完全平行,引入的非線性成像。
l 關於畸變模型的理解:
我的理解是,小孔成像模型描述了一個線性模型(包括對安裝時鏡頭和感光片不平行部分的描述,內參數K的K(1,2)),去擬合攝像機成像的真實模型。
但各種原因(包括鏡頭不規整和鏡頭與感光片不平行的問題)造成了成像的真實模型包括非線性部分,為了充分描述和擬合該非線性部分,引入了畸變模型。
l 畸變模型描述:
1) 畸變模型:
給模型加入的畸變部分全部是加入在歸一化圖像坐標上的:
(參考http://blog.csdn.net/pinbodexiaozhu/article/details/43374737 )
徑向畸變模型如下:
其中畸變系數為,張正有標定法(網上有現成代碼)等中有自動標出,采用的是LM非線性優化算法。但無考慮切向畸變。
切向畸變模型如下:
其中畸變系數為,張正有標定法中未標定,同時在Matlab較新版本自帶的cameraCalibrator工具箱中有標出。(不知道采用什么優化方法?)
Matlab較新版本自帶cameraCalibrator工具箱標定過程如下圖所示:
可參考:http://blog.csdn.net/Loser__Wang/article/details/51811347
l 圖像畸變校正:
現在的問題是:已標定出攝像機內參數模型、畸變模型(畸變系數),給定一幅畸變圖像,如何矯正圖像?
已有畸變圖像,已知該圖像上每一點坐標和像素值,目標是求得一幅去畸變圖像,即求得該去畸變圖像上的每一點坐標和像素值。常采用做法如下:
構造一個空圖像(作為去畸變圖像),針對每一點坐標,左乘內參矩陣 得歸一化坐標,利用畸變模型得畸變的歸一化坐標,再左乘內參矩陣得對應畸變坐標。由於求得的畸變坐標通常不為整數,需要在畸變圖像上采用插值方法得到像素值,賦值給。即得到完整去畸變圖像。
問題1:不能實現,在畸變圖像上選定一特征點,直接反向求取其在去畸變圖像上的坐標。需要先利用插值方法獲得整幅的去畸變圖像,然后再提取特征點。
問題2:對於徑向和切向畸變模型,按照什么順序什么方式疊加?
例:
采用網上找的例子:http://blog.csdn.net/Loser__Wang/article/details/51811347
攝像機內參數為:[445.0538, 0.1921, 327.1490; 0, 447.3691, 244.2735; 0, 0, 1]
徑向畸變系數:[k1, k2] = [-0.3203, 0.1177].
切向畸變系數:[p1, p2] = [-0.0055, 0.0014].
假設圖像分辨率為:640*480.(根據主點值猜測)
文中給出的待校正圖像和矯正后圖像,如下:
我在程序中僅考慮徑向畸變,和先徑向再切向畸變都矯正,得圖:
可見,圖像是得到了矯正,但顯示范圍變小了,不全了。原因是,我是截圖得到的圖片,不是文章采用的原始圖片。
另外的問題是,自己的程序耗時較長,openCV現成函數應該有優化。
采用自己的攝像機,對已有圖片去參數,結果如下,依次為:原圖、僅矯正徑向畸變圖、均矯正圖:
