攝像機模型,畸變模型及畸變圖像的矯正


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

                                                                                                                                                                                                                 

 攝像機模型,畸變模型及畸變圖像的矯正

luhan@mail.nankai.edu.cn

1:文中所有圖的符號標注並不統一,一切以正文部分公式為准。

攝像機模型:

分若干步驟實現:

1)     小孔成像映射: 

類似如上的小孔成像模型,重置一下攝像機坐標系位置,得如下小孔成像模型: 

上圖中,小孔成像模型把空間坐標點(齊次坐標形式,最后多一項記為1)映射為距距攝像機坐標系平面位置為(單位為距離)的新平面上的點,其坐標描述為(齊次坐標形式,單位為距離)。映射關系描述如下:

2)     考慮主點偏移,轉化為像素值: 

考慮主點偏移,轉化為像素坐標值如下:

其中,,單位均為 距離/像素

3)     考慮像素坐標非矩陣因素: 

如上圖,考慮像素坐標非矩陣因素后,像素坐標描述如下:

4)     整理如下:

其中,,均為攝像機內參矩陣中常見待標定參數,其單位均為 像素值。另外內參矩陣常用待標定參數包括主點位置。

注意:經常采用如下形式的坐標,記為歸一化圖像坐標(normalized image coordinates:                                                            

則此時有: 

歸一化圖像坐標的單位為1。其物理意義為:取一距離攝像機坐標系平面的位置為1的新平面(歸一化圖像平面,mormalized image plane),則表示坐標點在該平面上的映射點坐標。

5)     引入世界坐標系: 

考慮世界坐標系與相機坐標系的矩陣變換(平移變換和旋轉變換),引入世界坐標系坐標后,有:                                                  

其中, 。

6)     最終小孔成像模型如下: 

該模型為線性模型。

7)     對於攝像機內參數標定過程:

已知 ,則小孔成像模型變換為:

其中,。

記為單應矩陣,則有:,為常見標定模型。

畸變模型成因:

徑向畸變:原因是鏡頭不規整造成的,不能完全把攝像機等效為小孔的等比放大模型。

切向畸變:原因是安裝時鏡頭和感光片不完全平行,引入的非線性成像。

關於畸變模型的理解:

我的理解是,小孔成像模型描述了一個線性模型(包括對安裝時鏡頭和感光片不平行部分的描述,內參數K的K(1,2)),去擬合攝像機成像的真實模型。

但各種原因(包括鏡頭不規整和鏡頭與感光片不平行的問題)造成了成像的真實模型包括非線性部分,為了充分描述和擬合該非線性部分,引入了畸變模型。

畸變模型描述:

1)     畸變模型:

給模型加入的畸變部分全部是加入在歸一化圖像坐標上的:

(參考http://blog.csdn.net/pinbodexiaozhu/article/details/43374737 )

徑向畸變模型如下:

其中畸變系數為,張正有標定法(網上有現成代碼)等中有自動標出,采用的是LM非線性優化算法。但無考慮切向畸變。

切向畸變模型如下:

其中畸變系數為,張正有標定法中未標定,同時在Matlab較新版本自帶的cameraCalibrator工具箱中有標出。(不知道采用什么優化方法?)

Matlab較新版本自帶cameraCalibrator工具箱標定過程如下圖所示:

可參考:http://blog.csdn.net/Loser__Wang/article/details/51811347

圖像畸變校正:

現在的問題是:已標定出攝像機內參數模型、畸變模型(畸變系數),給定一幅畸變圖像,如何矯正圖像?

已有畸變圖像,已知該圖像上每一點坐標和像素值,目標是求得一幅去畸變圖像,即求得該去畸變圖像上的每一點坐標和像素值。常采用做法如下:

構造一個空圖像(作為去畸變圖像),針對每一點坐標,左乘內參矩陣 得歸一化坐標,利用畸變模型得畸變的歸一化坐標,再左乘內參矩陣得對應畸變坐標。由於求得的畸變坐標通常不為整數,需要在畸變圖像上采用插值方法得到像素值,賦值給。即得到完整去畸變圖像。

問題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現成函數應該有優化。

采用自己的攝像機,對已有圖片去參數,結果如下,依次為:原圖、僅矯正徑向畸變圖、均矯正圖:

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM