回転ベクトルから行列への変換/逆変換を行う
Converts to/from rotation matrix from/to rotation vector

int cvRodrigues2( CvMat* src, CvMat* dst, CvMat* jacobian = 0);

回転ベクトルを行列に変換したり,その逆変換を行う. 回転ベクトルはQuaternion表記っぽい.
Converts the rotation matrix to the rotation vector or converts in opposite way. The rotation vector is expressed in Quaternion.

引数

返り値

void cv::Rodrigues(Mat src, Mat dst, Mat jacobian = 0)

C++インタフェースの関数。実態はCの関数。

引数

返り値

解説

サンプルコード

CvMat	*R	= cvCreateMat(3,1,CV_64F);
CvMat	*Rx	= cvCreateMat(3,3,CV_64F);
cvmSet(R, 0, 0, 30*CV_PI/180);
cvRodrigues2(R, Rx);

これだと,あまり有り難味が無いコードだけれどね.

実体ファイル

ジャンル:OpenCV:OpenCV 1.0:OpenCV 2.3:OpenCV 2.4準拠

-->%pi
 %pi  =
 
    3.1415927  
 
-->x = (30/180) * %pi
 x  =
 
    0.5235988  
 
-->y = (10/180) * %pi
 y  =
 
    0.1745329  
 
-->z = %pi / 2
 z  =
 
    1.5707963  
 
-->rx = [1 0 0 ; 0 cos(x) -sin(x); 0 sin(x) cos(x)]
 rx  =
 
    1.    0.           0.         
    0.    0.8660254  - 0.5        
    0.    0.5          0.8660254  
 
-->ry = [cos(y) 0 -sin(y); 0 1 0; sin(y) 0 cos(y)]
 ry  =
 
    0.9848078    0.  - 0.1736482  
    0.           1.    0.         
    0.1736482    0.    0.9848078  
 
-->rz = [cos(z) sin(z) 0;-sin(z) cos(z) 0 ; 0 0 1]
 rz  =
 
    6.123D-17    1.           0.  
  - 1.           6.123D-17    0.  
    0.           0.           1.  


-->R = rz * ry * rx
 R  =
 
    6.030D-17    0.8660254  - 0.5        
  - 0.9848078    0.0868241    0.1503837  
    0.1736482    0.4924039    0.8528685  
 
-->R(1,2)
 ans  =
 
    0.8660254  
 
-->xx = atan(R(3,2),R(3,3))
 xx  =
 
    0.5235988  
 
-->yy = -asin(R(3,1))
 yy  =
 
  - 0.1745329  
 
-->zz = atan(R(2,1),R(1,1))
 zz  =
 
  - 1.5707963

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2012-10-17 (水) 15:32:16