根据这个项目(carving a dinosaur)我想创建一个数据集,其中包含36个从对象中获取的图像,并估计相应的相机投影矩阵。
因此我用三个棋盘图案校准了我的相机一次(外在/内在)第一张图像,现在我想根据我拍摄的36幅图像添加圆周运动(粗糙10度)以获得这里显示的内容:
我的相机是静态的,而拍摄的物体每张图像旋转10度。
我如何实现这一目标?手动创建旋转矩阵并将其添加到我的相机投影矩阵中是否正确?
感谢您的建议
答案 0 :(得分:2)
修改旋转矩阵是不够的,您需要更改摄像机的位置。在运动问题的结构中,假设场景是静态的,而摄像机正在移动。你可以考虑这种情况,因为只有关系运动很重要。
让外在相机矩阵为A = R [I | -C],其中C是全局帧中摄像机中心的位置,R是从全局帧到摄像机帧的旋转。设Ra表示全局框架中关于垂直轴的角度α的旋转。它可以写成(cos(alpha), - sin(alpha),0; sin(alpha),cos(alpha),0; 0,0,1)。然后可以将所需的相机矩阵计算为A2 = R2 [I | -C 2],其中R 2 = R *转置(Ra)且C2 = Ra * C.
但是,使用此方法时应确保两件事。首先,全局帧的垂直轴必须对应于真实世界的垂直方向。其次,全局帧的原点必须位于摄像机中心旋转的轴上。后者可以通过将对象放在全局框架的原点来实现。
如果角度测量不准确或全局帧不能很好地居中,那么计算的外在矩阵也可能是不准确的。在这种情况下,它可以用作运动算法的结构的初始估计。另一种方法是为每一帧校准相机,而不仅仅是第一帧。