雙目測距(四) 羅德里格斯變換

2021-07-15 14:14:38 字數 1345 閱讀 1043

原文:
從今天開始,把自己學習opencv的心得記錄下來,以系列的形式貼到部落格中,以期交流與備查之用,筆記內容主要偏向於演算法的理解。

處理三維旋轉問題時,通常採用旋轉矩陣的方式來描述。乙個向量乘以旋轉矩陣等價於向量以某種方式進行旋轉。除了採用旋轉矩陣描述外,還可以用旋轉向量來描述旋轉,旋轉向量的長度(模)表示繞軸逆時針旋轉的角度(弧度)。旋轉向量與旋轉矩陣可以通過羅德里格斯(rodrigues)變換進行轉換。

演算法過程如下:

式中,norm為求向量的模。反變換也可以很容易的通過如下公式實現:

opencv實現rodrigues變換的函式為

int

cvrodrigues2( const

cvmat

*src

,cvmat

*dst

,cvmat

*jacobian

=0 );

src為輸入的旋轉向量(3x1或者1x3)或者旋轉矩陣(3x3)。

dst為輸出的旋轉矩陣(3x3)或者旋轉向量(3x1或者1x3)。

jacobian為可選的輸出雅可比矩陣(3x9或者9x3),是輸入與輸出陣列的偏導數。

可以用上述方式法驗證以下例子

驗證**如下:

#include< stdio.h>

#include< cv.h>

void

main()

;double

r_matrix[9

];cvmat

pr_vec;

cvmat

pr_matrix;

cvinitmatheader(&

pr_vec,1

,3,cv_64fc1

,r_vec

,cv_autostep);

cvinitmatheader(&

pr_matrix,3

,3,cv_64fc1

,r_matrix

,cv_autostep);

cvrodrigues2(&

pr_vec,&

pr_matrix

,0);

for(i

=0;i

<

9;i++)}

羅德里格斯公式推導

k為單位向量,向量v繞旋轉軸k旋轉 得到向量vrot,那麼就有下面的旋轉方程使等式成立 vrot rv 而這個旋轉方程就是羅德里格斯方程 r cos i 1 cos kk sin k 下面開始推導 向量分解 v v k k 向量點乘得標量,k為單位向量 vrot vrot v vrot a b 由圖...

雙目測距測深度 科普 雙目測距原理

參考資料 1 深度相機原理揭秘 雙目立體視覺 2 雙目測距原理 3 相機標定原理及實現 1 雙目測距基本原理 如圖所示,p點是待測物體,camera r和camera l代表相機的光心位置,兩綠點為點p在兩個相機感光器上的成像點,f為相機焦距,b為兩相機中心距,z為所求深度資訊,兩綠點間距為d。d ...

VR開發 羅德里格公式的研究

最近在做vr方面的研究,看到了google cardboard對感測器處理的 對旋轉矩陣 羅德里格公式做了一些研究。羅德里格公式是計算三維空間中,乙個向量繞旋轉軸旋轉給定角度以後得到的新向量的計算公式,具體的詳細推導可以看維基,我覺得只要能知道如何使用就可以了,注意旋轉軸為單位向量,來計算旋轉矩陣。...