2017-03-07 72 views
2

給定一組SE(3) 4×4的姿態矩陣,就可以得出相機的歐幾里得座標系統的位置,如下所示:情節相機軌跡

enter image description here

其中R是3×3旋轉矩陣t是平移向量根據this question

當設置姿勢以順序的方式進行處理時,例如當每一個是指照相機的姿勢在一段時間的步驟中,旋轉和平移組件可以如下積累:

enter image description here

enter image description here

在哪裏都可以插入到所述第一方程式,以產生相機的相對位置在給定的時間步長。

我的問題是如何使用OpenCV或類似工具繪製這些點。對於以圓周運動在物體周圍移動的攝像機,輸出圖應該是圓形的,原點位於軌跡的起始點。

一個例子如下: - enter image description here

雖然我的問題是沒有明確關於繪製軸如上圖所示,這將是一個獎金。

TL; DR:給定一組姿勢,我們怎樣才能產生這樣與常用的工具,如OpenCV的,VTK,Matplotlib,MATLAB等

+0

您可以用攪拌器嗎?動畫通常是運動的更有用的可視化。 –

+0

@FrancescoCallari如果它可以給我所需的輸出,那麼它是一個選項。但是,我從來沒有使用過Blender。 –

回答

1
  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庫/引擎的情節。我會去GDIOpenGL但這完全取決於你所熟悉的。

    順便說一句。提高了時間線,你可以調節色彩強度的avarenes(開始與黑暗和明亮的色彩結束,所以你看到那裏的運動開始和結束...)