绘制相机轨迹

时间:2017-03-07 15:46:18

标签: opencv plot graphics computer-vision camera-calibration

给定一组SE(3) 4x4姿势矩阵,可以得出相机的欧几里德坐标系位置如下:

enter image description here

其中R是3x3旋转矩阵,t是姿势的平移向量,按照this question

当以连续的方式处理姿势组时,例如当每个姿势在某个时间步骤引用相机的姿势时,旋转和平移组件可以如下累积:

enter image description here

enter image description here

两者都可插入第一个等式,以在给定的时间步长产生相机的相对位置。

我的问题是如何使用OpenCV或类似工具绘制这些点。对于以圆周运动在物体周围移动的相机,输出图应为圆形,原点位于轨迹的起始点。

示例如下: - enter image description here

虽然我的问题没有明确说明如上图所示绘制轴,但这将是一个奖励。

TL; DR:给定一组姿势,我们如何使用常见工具(如OpenCV,VTK,Matplotlib,MATLAB等)生成如上图所示的图。

1 个答案:

答案 0 :(得分:2)

  1. 为每个绘图点获取轴向量X,Y,Z和位置O

    简单地从矩阵中提取它们。见Understanding 4x4 homogenous transform matrices。现在我不知道你的矩阵是否已反转。因此,如果您的矩阵代表摄像机坐标系(未反转),则直接提取所需信息。如果不是首先反转矩阵然后提取。

    如果你有均匀的变换矩阵,那么你可以通过利用转置操作来做伪逆。有关详细信息,请参阅full pseudo inverse matrix

  2. 渲染每个绘图点

    所以首先将轴绘制为线条:

      red_line(O,O+a*X);
    green_line(O,O+a*Y);
     blue_line(O,O+a*Z);
    

    其中a是轴线大小。在此之后为该位置绘制一个点

    black_circle(O,r);
    

    r在某个半径范围内。您可以使用任何gfx lib / engine作为绘图。我会选择 GDI OpenGL ,但这完全取决于你熟悉的内容。

    顺便说一句。要改善时间线的avarenes,你可以调制颜色强度(从深色开始,以鲜艳的颜色结束,这样你就可以看到运动开始和结束的位置......)

相关问题