3次元座標を2次元に投影

#contents

*void cvProjectPoints2( CvMat* obj_points, CvMat* rotation, CvMat* translation, CvMat* A, CvMat* distortion, CvMat* img_points); [#a1c540fa]

obj_pointsを投影してimg_pointsに格納

**引数 [#j152c7f3]
-obj_points:CvMat*型の3次元座標
-rotation:CvMat*型の回転ベクトル/行列
-translation:CvMat*型の並進ベクトル
-A:const CvMat*型の内部行列
-distortion:CvMat*型の歪みパラメータベクトル
-img_points:CvMat*型の2次元座標.出力.

**返り値 [#vaceeabf]
-void型なのでなし
-2次元座標はimg_pointsに格納される

*void cvProjectPoints2( CvMat* obj_points, CvMat* rotation, CvMat* translation, CvMat* A, CvMat* distortion, CvMat* img_points, CvMat* dpdr, CvMat* dpdt, CvMat* dpdf, CvMat* dpdc, CvMat* dpdk ); [#kb77b0af]

cvProjectPoints2の非省略型

**引数 [#m8e54d57]
-obj_points-img_pointsまでは同じく
-dpdr,dpdt,dpdf,dpdc,dpdk:CvMat*型の行列を渡す.

**返り値 [#z1c67cfc]
-void型なのでなし
-dpdr-dpdkに画像座標を各要素で偏微分したヤコビアンが入って返って来る.

*解説 [#yc5065c8]
-obj_pointsは3次元座標
--3xNかNx3のサイズで与える.
--&mimetex(\begin{bmatrix}X_{\small{0}} & X_{\small{1}} & \ldots & X_{\small{N}} \\ Y_{\small{0}} & Y_{\small{1}} & \ldots & Y_{\small{N}} \\ Z_{\small{0}} & Z_{\small{1}} & \ldots & Z_{\small{N}} \end{bmatrix});
--の形か,その転置の形で調べる.
-rotationは回転ベクトル/行列
--回転ベクトルはQuaternion表記の1x3か3x1のサイズで与える.
--回転行列は3x3のサイズで与える.
--詳細は[[回転ベクトル/行列]]を参照
-translationは並進ベクトル
--1x3か3x1のサイズで与える.
--&mimetex(\begin{bmatrix}t_{\small{X}} & t_{\small{Y}} & t_{\small{Z}} \end{bmatrix}^\top);
-Aは内部パラメータ行列
--3x3のサイズで与える.
--&mimetex(\begin{bmatrix}f_x & 0 & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{bmatrix});
-distortion歪みパラメータベクトル
--4x1か1x4のサイズで与える.
--&mimetex(\begin{bmatrix}k_{\small{1}} & k_{\small{2}} & p_{\small{1}} & p_{\small{2}}\end{bmatrix});
--NULLを指定すると全て0で与えられる.
-img_pointsは投影された2次元座標
--2xNかNx2のサイズで渡す.
--&mimetex(\begin{bmatrix}x_{\small{0}} & x_{\small{1}} & \ldots & x_{\small{N}} \\ y_{\small{0}} & y_{\small{1}} & \ldots & y_{\small{N}} \end{bmatrix});
-dpdrは画像座標を回転ベクトルの各要素で編微分したヤコビアン
--2Nx3の行列
--&mimetex(\begin{bmatrix}\frac{\partial x_{\small{0}}}{\partial r_x} & \frac{\partial x_{\small{0}}}{\partial r_y} & \frac{\partial x_{\small{0}}}{\partial r_z} \\ \frac{\partial y_{\small{0}}}{\partial r_x} & \frac{\partial y_{\small{0}}}{\partial r_y} & \frac{\partial y_{\small{0}}}{\partial r_z} \\ \vdots & \vdots & \vdots \\ \frac{\partial x_{\small{N}}}{\partial r_x} & \frac{\partial x_{\small{N}}}{\partial r_y} & \frac{\partial x_{\small{N}}}{\partial r_z} \\ \frac{\partial y_{\small{N}}}{\partial r_x} & \frac{\partial y_{\small{N}}}{\partial r_y} & \frac{\partial y_{\small{N}}}{\partial r_z} \\ \end{bmatrix});
-dpdtは画像座標を並進ベクトルの各要素で編微分したヤコビアン
--2Nx3の行列
--&mimetex(\begin{bmatrix}\frac{\partial x_{\small{0}}}{\partial t_x} & \frac{\partial x_{\small{0}}}{\partial t_y} & \frac{\partial x_{\small{0}}}{\partial t_z} \\ \frac{\partial y_{\small{0}}}{\partial t_x} & \frac{\partial y_{\small{0}}}{\partial t_y} & \frac{\partial y_{\small{0}}}{\partial t_z} \\ \vdots & \vdots & \vdots \\ \frac{\partial x_{\small{N}}}{\partial t_x} & \frac{\partial x_{\small{N}}}{\partial t_y} & \frac{\partial x_{\small{N}}}{\partial t_z} \\ \frac{\partial y_{\small{N}}}{\partial t_x} & \frac{\partial y_{\small{N}}}{\partial t_y} & \frac{\partial y_{\small{N}}}{\partial t_z} \\ \end{bmatrix});
-dpdfは画像座標を焦点距離&mimetex(f_x);, &mimetex(f_y);で編微分したヤコビアン
--2Nx2の行列
--&mimetex(\begin{bmatrix}\frac{\partial x_{\small{0}}}{\partial f_x} & \frac{\partial x_{\small{0}}}{\partial f_y} \\ \frac{\partial y_{\small{0}}}{\partial f_x} & \frac{\partial y_{\small{0}}}{\partial f_y} \\ \vdots & \vdots \\ \frac{\partial x_{\small{N}}}{\partial f_x} & \frac{\partial x_{\small{N}}}{\partial f_y} \\ \frac{\partial y_{\small{N}}}{\partial f_x} & \frac{\partial y_{\small{N}}}{\partial f_y} \\ \end{bmatrix});
-dpdcは画像座標を画像中心&mimetex(c_x);, &mimetex(c_y);で編微分したヤコビアン
--2Nx2の行列
--&mimetex(\begin{bmatrix}\frac{\partial x_{\small{0}}}{\partial c_x} & \frac{\partial x_{\small{0}}}{\partial c_y} \\ \frac{\partial y_{\small{0}}}{\partial c_x} & \frac{\partial y_{\small{0}}}{\partial c_y} \\ \vdots & \vdots \\ \frac{\partial x_{\small{N}}}{\partial c_x} & \frac{\partial x_{\small{N}}}{\partial c_y} \\ \frac{\partial y_{\small{N}}}{\partial c_x} & \frac{\partial y_{\small{N}}}{\partial c_y} \\ \end{bmatrix});
-dpdkは画像座標を歪み係数の各要素で編微分したヤコビアン
--2Nx4の行列
--&mimetex(\begin{bmatrix}\frac{\partial x_{\small{0}}}{\partial k_x} & \frac{\partial x_{\small{0}}}{\partial k_y} \\ \frac{\partial y_{\small{0}}}{\partial k_x} & \frac{\partial y_{\small{0}}}{\partial k_y} \\ \vdots & \vdots \\ \frac{\partial x_{\small{N}}}{\partial k_x} & \frac{\partial x_{\small{N}}}{\partial k_y} \\ \frac{\partial y_{\small{N}}}{\partial k_x} & \frac{\partial y_{\small{N}}}{\partial k_y} \\ \end{bmatrix});
-ヤコビアン行列はcvCalibrateCamera2やcvFindExtrinsicCameraParams2で使われるらしい.
-ん?

*サンプルコード [#ffa9eaf0]

*実体ファイル [#e5a4f978]
-cv/include/cv.h
-cv/src/cvcalibration.cpp

*注意 [#la3f71f0]

ジャンル[[:OpenCV]][[:OpenCV 1.0]]準拠

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS