根据此项目 ( carving a dinosaur ),我想创建一个包含从物体拍摄的 36 张图像的数据集,并估计适当的相机投影矩阵。
因此,我为具有三个棋盘图案的第一张图像校准了一次相机(外部/内部),现在我想根据我拍摄的 36 张图像添加圆周运动(大约 10 度),以获得如下所示的效果:
我的相机是静态的,而每张图像的拍摄对象都旋转 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/