我想校正一系列图像的镜头畸变。所有图像都是在固定相机的情况下拍摄的,还提供了来自相同设置的棋盘格图像。
在检测到扭曲的棋盘图像的角点后,我想计算径向畸变系数,以便我可以校正图像。 类似于 estimateCameraParameters功能。
理想情况下,我想使用类似于 Matlab camera calibration 的方法然而,这似乎不适用于只有一个校准图像可用(并且图像都是从同一位置捕获的)的情况。
感谢任何帮助。
最佳答案
镜头畸变的校正只取决于相机本身,而不是相机的位置(也有关于相机内在参数的说法)。因此,一张图像(具有足够的引用点)足以计算这组参数。
如果你只考虑径向畸变,一个简单的例子是固定畸变中心(通常在图像的中心),你的模型可以像 R' = R*(1+a*R^ 2+b*R^4)
。首先使用外部相机参数校正图像,以消除所有单应性失真。首先估计相机位姿非常重要。
有了棋盘上各点的位置,您就可以计算出它们到畸变中心的距离 (R'),以及您期望的相应距离 (R)。然后你有一组线性方程,因此可以使用例如 SVD 稳健地找到解决方案。
OpenCV documenation 中概述了一种更复杂的方法.
关于image - 在 Matlab 中使用单个校准图像校正镜头畸变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21130509/