攝像機斜視拍攝一物體后,形成的圖像會發生變形,如果將圖像映射到拍攝物體平面上,相當於將相機垂直於拍攝平面,這樣就會得到圖像的真是形狀,由於這種映射相當於將原圖重新透視到另一個平面,這種稱之為“重投影”。
圖一,圖像重投影現象
源文檔 <file:///D:\鏡頭畸變資料\紅外攝像機幾何校正研究方案報告(09.09.16-liyy).doc>
這種將攝像機進行正投影,屬於透視變化,而透視變換是中心投影的射影變換,用非齊次射影坐標表達時是平面的線性變換,具有公式:
(2)
源文文檔 <file:///D:\鏡頭畸變資料\紅外攝像機幾何校正研究方案報告(09.09.16-liyy).doc>
將上面表達式表示成矩陣
其中p與p'是變換前后圖像坐標點,U表示3*3矩陣,設置a33=1,這樣需要四個圖像點計算矩陣U
之前,一直使用的是矩形四個頂點作為已知對應點,使用opencv庫中cvGetPerspectiveTransform函數進行求取變換矩陣。
CvMat* cvGetPerspectiveTransform( const CvPoint2D32f* src, const CvPoint2D32f* dst,
CvMat* map_matrix );
確立變換矩陣,然后使用cvWarpPerspective()將圖像進行校正。
使用vison畫了一個矩形與任意四邊形嵌套的圖像,見下圖:
進行斜視拍攝后,然后使用矩形四個頂點進行校正前后結果圖如下:
斜視拍攝后原圖
利用矩陣四個頂點進行校正后圖:
但是如果使用任意四邊形的四個頂點進行校正一樣會將圖像進行透視變換校正,結果如下:
原圖
校正后圖像
結論:任意四點,只有已知原圖上四點對應圖像坐標及實際中四點坐標關系,就可以進行正視校正。