camera - 标定相机给定角度的圆周运动

标签 camera computer-vision camera-calibration calibration

根据此项目 ( carving a dinosaur ),我想创建一个包含从物体拍摄的 36 张图像的数据集,并估计适当的相机投影矩阵。

因此,我为具有三个棋盘图案的第一张图像校准了一次相机(外部/内部),现在我想根据我拍摄的 36 张图像添加圆周运动(大约 10 度),以获得如下所示的效果:

camera poses

我的相机是静态的,而每张图像的拍摄对象都旋转 10 度。

我该如何实现这一目标?手动创建旋转矩阵并将其添加到我的相机投影矩阵中是否正确?

感谢您的建议

最佳答案

仅仅修改旋转矩阵是不够的,你需要改变相机的位置。在运动问题的结构中,假设场景是静态的,而相机是移动的。您可以考虑这种情况,因为只有关系移动才重要。

设外部相机矩阵为 A = R[I | -C],其中C是全局坐标系中相机中心的位置,R是从全局坐标系到相机坐标系的旋转。让 Ra 表示绕全局坐标系中的垂直轴旋转角度 alpha。它可以写成(cos(alpha),-sin(alpha),0;sin(alpha),cos(alpha),0;0,0,1)。然后所需的相机矩阵可以计算为 A2 = R2[I | -C2],其中 R2 = R * 转置(Ra) 且 C2 = Ra * C。

但是,使用此方法时应确保两件事。首先,全局框架的垂直轴必须对应于现实世界的垂直方向。其次,全局框架的原点必须位于相机中心旋转轴上。后者可以通过将对象放置在全局框架的原点来实现。

如果角度测量不准确或者全局框架没有很好地居中,那么计算的外在矩阵也可能不准确。在这种情况下,它可以用作运动算法对结构的初始估计。另一种选择是为每一帧校准相机,而不仅仅是第一帧。

关于camera - 标定相机给定角度的圆周运动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15075583/

相关文章:

opencv - 如何在相机不失真后保存 View

c - 在 STM32 - C 上处理图像

java - LibGDX 仅渲染(如果相机看到它)

Android - 在转换的小部件中转换小部件以及由此产生的可用性问题

opencv - 哪些计算机视觉库和算法可用于人类行为分析?

c# - 在 emgu CV 中进行相机校准后如何访问旋转和平移矢量?

android - 摘要 : Take a picture utilizing Camera Intent and display the photo with correct orientation (works on hopefully all devices)

numpy - 当我尝试使用 Keras 预处理功能向图像添加噪声时出现错误参数错误

c++ - PointCloudLibrary (PCL) - 八叉树 - 获取 *branch* 节点内所有点的索引

c++ - 如何从相机矩阵中找到焦距?