使用 OpenCV 进行相机校准:使用失真和旋转平移矩阵

Posted

技术标签:

【中文标题】使用 OpenCV 进行相机校准:使用失真和旋转平移矩阵【英文标题】:Camera Calibration with OpenCV: Using the distortion and rotation-translation matrix 【发布时间】:2015-06-17 03:02:20 【问题描述】:

我正在阅读以下文档:http://docs.opencv.org/doc/tutorials/calib3d/camera_calibration/camera_calibration.html

我已经成功地校准了相机,获得了相机矩阵和畸变矩阵。

我有两个子问题:

1) 我不知道'r',如何使用失真矩阵?

2) 对于所有视图,我都有将对象点(在模型坐标空间中给出)转换为图像点(在世界坐标空间中给出)的旋转和平移向量。所以每张图像总共有 6 个坐标(3 个旋转,3 个平移)。如何利用这些信息来获得旋转平移矩阵?

任何帮助将不胜感激。谢谢!

【问题讨论】:

【参考方案1】:

按顺序回答:

1) “r”是像素相对于畸变中心的半径。那就是:

r = sqrt((x - x_c)^2 + (y - y_c)^2)

其中 (x_c, y_c) 是非线性畸变的中心(即图像中非线性畸变为零的点。这通常(并且近似地)与主点(即相机焦轴的交点)确定与图像平面。主点的坐标在相机固有参数矩阵的第 3 列。

2) 使用Rodrigues's formula在旋转向量和旋转矩阵之间进行转换。

【讨论】:

以上是关于使用 OpenCV 进行相机校准:使用失真和旋转平移矩阵的主要内容,如果未能解决你的问题,请参考以下文章

使用来自 OpenCV 的转换矩阵手动进行图像校准

OpenCV中的相机失真内外参不失真图像相机校准

如何根据相机校准(C++)生成的真实数据使用opencv模拟失真?

使用适用于 Matlab 与 OpenCV 的相机校准工具箱进行校准

HALCON 到 OpenCV 失真系数的转换

OpenCV校准相机裁剪错误