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

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のサイズで与える.
    • \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のサイズで与える.
    • \begin{bmatrix}t_{\small{X}} & t_{\small{Y}} & t_{\small{Z}} \end{bmatrix}^\top
  • Aは内部パラメータ行列
    • 3x3のサイズで与える.
    • \begin{bmatrix}f_x & 0 & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{bmatrix}
  • distortion歪みパラメータベクトル
    • 4x1か1x4のサイズで与える.
    • \begin{bmatrix}k_{\small{1}} & k_{\small{2}} & p_{\small{1}} & p_{\small{2}}\end{bmatrix}
    • NULLを指定すると全て0で与えられる.
  • img_pointsは投影された2次元座標
    • 2xNかNx2のサイズで渡す.
    • \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の行列
    • \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の行列
    • \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は画像座標を焦点距離f_x, f_yで編微分したヤコビアン
    • 2Nx2の行列
    • \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は画像座標を画像中心c_x, c_yで編微分したヤコビアン
    • 2Nx2の行列
    • \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の行列
    • \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準拠


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-05-27 (木) 12:00:12 (2734d)