摄像机斜视拍摄一物体后,形成的图像会发生变形,如果将图像映射到拍摄物体平面上,相当于将相机垂直于拍摄平面,这样就会得到图像的真是形状,由于这种映射相当于将原图重新透视到另一个平面,这种称之为“重投影”。
图一,图像重投影现象
源文档 <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画了一个矩形与任意四边形嵌套的图像,见下图:
进行斜视拍摄后,然后使用矩形四个顶点进行校正前后结果图如下:
斜视拍摄后原图
利用矩阵四个顶点进行校正后图:
但是如果使用任意四边形的四个顶点进行校正一样会将图像进行透视变换校正,结果如下:
原图
校正后图像
结论:任意四点,只有已知原图上四点对应图像坐标及实际中四点坐标关系,就可以进行正视校正。