3次元座標を2次元に投影
- void cvProjectPoints2( CvMat* obj_points, CvMat* rotation, CvMat* translation, CvMat* A, CvMat* distortion, CvMat* 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 );
- 解説
- サンプルコード
- 実体ファイル
- 注意
void cvProjectPoints2( CvMat* obj_points, CvMat* rotation, CvMat* translation, CvMat* A, CvMat* distortion, CvMat* img_points);†
obj_pointsを投影してimg_pointsに格納
- obj_points:CvMat*型の3次元座標
- rotation:CvMat*型の回転ベクトル/行列
- translation:CvMat*型の並進ベクトル
- A:const CvMat*型の内部行列
- distortion:CvMat*型の歪みパラメータベクトル
- img_points:CvMat*型の2次元座標.出力.
返り値†
- 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 );†
cvProjectPoints2の非省略型
- obj_points-img_pointsまでは同じく
- dpdr,dpdt,dpdf,dpdc,dpdk:CvMat*型の行列を渡す.
返り値†
- void型なのでなし
- dpdr-dpdkに画像座標を各要素で偏微分したヤコビアンが入って返って来る.
- 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で使われるらしい.
- ん?
サンプルコード†
実体ファイル†
- cv/include/cv.h
- cv/src/cvcalibration.cpp
ジャンル:OpenCV:OpenCV 1.0準拠