使用Matlab中的单个校准图像校正镜头失真

时间:2014-01-15 06:29:58

标签: image matlab distortion matlab-cvst lens

我想纠正一系列图像上的镜头扭曲。所有图像都是在相机固定到位的情况下拍摄的,并且也可以使用相同设置的棋盘图像。

在检测到扭曲的棋盘图像的角落后,我想计算径向畸变系数,以便我可以校正图像。 与estimateCameraParameters函数类似。

理想情况下,我想使用类似于Matlab camera calibration的方法,但是这似乎不适用于只有一个校准图像可用的情况(并且图像都是从同一位置捕获的)。

感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

镜头扭曲的校正仅取决于相机本身,而不取决于相机的位置(一个人也谈到固有的相机参数)。因此,一个图像(具有足够的参考点)足以计算这组参数。

如果只考虑径向扭曲,一个简单的例子就是修复扭曲中心(通常位于图像的中心),你的模型就像R' = R*(1+a*R^2+b*R^4)。首先使用extrisic相机参数校正图像,以消除所有单调的扭曲。首先估计相机姿势非常重要。

拥有棋盘点的位置,你可以计算它们到扭曲中心(R')的距离,以及你期望的相应距离(R)。然后你有一组线性方程,因此可以用SVD很好地找到解决方案。

OpenCV documenation中草拟了一个更复杂的方法。