繁体   English   中英

通过OpenCV的摄像机校准估算旋转角度

[英]Estimating rotation angles from camera calibration of opencv

我一直无法理解opencv的Calib3d.calibrateCamera()功能所返回的旋转矢量。 为了理解该函数的返回值,我尝试了以下步骤。

我首先用Java生成了棋盘图案。 然后,我对其应用了15个旋转矢量和15个平移矢量。 我还应用了代表相机本征矩阵的已知矩阵。 我基本上是试图重新创建为国际象棋拍摄许多照片的手动过程。 我创建的某些图像如下所示: 我生成的带有确定角的图像之一

生成图像后,我通过角落识别和相机校准功能对它们进行了处理。 我从校准函数中获得了几乎完全使用的本征矩阵。

当我比较用于生成图像的旋转矢量和从校准函数获得的矢量时,它们互为负。 比较图如下所示:

比较输入和输出绕x轴的旋转值

这是正常行为还是我做错了什么?

答案为opencv旋转是从图像坐标系到对象坐标系。 这可能是原因吗?

如果预期旋转矢量和实际旋转矢量彼此相反,则意味着预期旋转矩阵和实际旋转矩阵彼此相反。 因此,您可能混淆了源坐标系和目标坐标系。

通常,这很容易检查:

  1. 将[R | t]矩阵应用于与图案角相对应的3D点
  2. 使用内在矩阵将它们投影到图像中
  3. 检查拐角投影的值与图像中观察到的值一致。 如果它们不一致,请对逆旋转矩阵尝试相同的操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM