image - 在 Matlab 中使用单个校准图像校正镜头畸变

标签 image matlab matlab-cvst distortion

我想校正一系列图像的镜头畸变。所有图像都是在固定相机的情况下拍摄的,还提供了来自相同设置的棋盘格图像。

在检测到扭曲的棋盘图像的角点后,我想计算径向畸变系数,以便我可以校正图像。 类似于 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/

相关文章:

javascript - 在 JavaScript 中单击时如何旋转单个图像的顺序?

python - 检查一个不平等制度是否会带来另一个平等制度?

matlab - 从matlab中的矩阵中找到不是最常见的数字

Matlab 与 Octave 兼容性 - 计算机视觉差异?

image - 如何使用golang从文件系统中的base64字符串创建jpg/png图像

python - 带有图像的标签周围有白色边框?

matlab - 如何求解具有 transient 参数的常微分方程组

matlab - 在 MATLAB 中生成代码期间替代外部函数,例如 imread 和其他函数

opencv - 需要消除相机镜头变形

java - 如何使用 Picasso 加载 Google map 静态 map ?