CV リファレンス マニュアル
-
画像処理(Image Processing)
- 勾配,エッジ,コーナー,特徴(Gradients, Edges, Corners and Features)
- サンプリング,補間,幾何変換(Sampling, Interpolation and Geometrical Transforms)
- モルフォロジー演算(Morphological Operations)
- フィルタと色変換(Filters and Color Conversion)
- ピラミッドとその応用(Pyramids and the Applications)
- 画像分割,領域結合,輪郭検出(Image Segmentation, Connected Components and Contour Retrieval)
- 画像と形状のモーメント(Image and Contour Moments)
- 特殊な画像変換(Special Image Transforms)
- ヒストグラム(Histograms)
- マッチング(Matching)
- 構造解析(Structural Analysis)
- モーション解析と物体追跡(Motion Analysis and Object Tracking)
- パターン認識(Pattern Recognition)
- カメラキャリブレーションと3次元再構成(Camera Calibration and 3D Reconstruction)
- 参考文献
カメラキャリブレーションと3次元再構成(Camera Calibration and 3D Reconstruction)
姿勢推定(Pose Estimation)
CreatePOSITObject
オブジェクトの情報を持つ構造体を初期化する
CvPOSITObject* cvCreatePOSITObject( CvPoint3D32f* points, int point_count );
- points
- 3次元オブジェクトモデル上の点データへのポインタ.
- point_count
- オブジェクト上の点データの数.
関数 cvCreatePOSITObjectは,オブジェクト構造体のメモリ領域 を確保し,オブジェクト内部行列を計算する.
OpenCVの内部構造体 CvPOSITObject には, 前処理されたオブジェクトデータが保存される.この構造体にユーザが直接ア クセスすることはできない.ユーザはこの構造体を作り,そのポインタを関数 に渡すだけである.
オブジェクトは,ある座標系において与えられた点の集合として定義 される.関数 cvPOSIT は,カメラ座標系の原点 を始点とし,オブジェクト上の点points[0]を終点とするベクト ルを計算する.与えられたオブジェクトに対する処理が終了した時点で,メモ リを解放するために関 数 cvReleasePOSITObject を呼ぶ 必要がある.
POSIT
POSITアルゴリズムの実装
void cvPOSIT( CvPOSITObject* posit_object, CvPoint2D32f* image_points, double focal_length,
CvTermCriteria criteria, CvMatr32f rotation_matrix, CvVect32f translation_vector );
- posit_object
- オブジェクト構造体へのポインタ.
- image_points
- オブジェクト上の点を二次元画像平面上へ投影して得られる点群へのポインタ.
- focal_length
- 使用するカメラの焦点距離.
- criteria
- 反復POSITアルゴリズムの終了条件.
- rotation_matrix
- 回転行列.
- translation_vector
- 並進ベクトル.
関数 cvPOSITは,POSITアルゴリズムを実装する.画像座標はカ メラ座標系に従う.焦点距離はカメラキャリブレーション関数を用いて得られ る.アルゴリズム中の繰り返し計算毎に,推定された姿勢の透視投影が新しく 計算される.
繰り返し中の連続した2つの透視投影結果のノルム差が,対応点間の最大距離となる. このノルム差がパラメータcriteria.epsilonを下回った場合,アルゴリズムは終了する.
ReleasePOSITObject
3次元オブジェクト構造体のメモリを解放する
void cvReleasePOSITObject( CvPOSITObject** posit_object );
- posit_object
- 構造体 CvPOSIT へのポインタのポインタ.
関数 cvReleasePOSITObjectは,関 数 cvCreatePOSITObject によって 事前に確保されたメモリを解放する.
CalcImageHomography
楕円平面オブジェクト(例えば,人間の腕)のためのホモグ ラフィ行列(平面射影変換行列)を計算する
void cvCalcImageHomography( float* line, CvPoint3D32f* center,
float* intrinsic, float* homography );
- line
- オブジェクトの主軸方向(ベクトル (dx,dy,dz)).
- center
- オブジェクトの中心座標(ベクトル(cx,cy,cz)).
- intrinsic
- カメラの内部パラメータ(3x3 の行列).
- homography
- ホモグラフィ行列(3x3).
関数 cvCalcImageHomographyは,ホモグラフィ行列を計算する (OpenCVガイドの 3D Reconstruction Chapter Figure 6-10 を参照).この行列によって,3次元空間中の楕円平面オブ ジェクトの主軸によって定義されるような仮想平面が,カメラ画像平面に変換 される.