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)
- 輪郭処理(Contour Processing)
- 計算幾何(Computational Geometry)
- 平面細分割(Planar Subdivisions)
- モーション解析と物体追跡(Motion Analysis and Object Tracking)
- パターン認識(Pattern Recognition)
- カメラキャリブレーションと3次元再構成(Camera Calibration and 3D Reconstruction)
- 参考文献
構造解析(Structural Analysis)
輪郭処理(Contour Processing)
ApproxChains
フリーマンチェーン(Freeman chain)をポリラインで近似する
CvSeq* cvApproxChains( CvSeq* src_seq, CvMemStorage* storage,
int method=CV_CHAIN_APPROX_SIMPLE,
double parameter=0, int minimal_perimeter=0, int recursive=0 );
- src_seq
- 他のチェーンを参照可能なチェーンへのポインタ.
- storage
- 計算結果保存用のストレージ.
- method
- 推定手法(関数cvFindContoursを参照).
- parameter
- メソッドパラメータ(現在は使われていない).
- minimal_perimeter
- minimal_perimeter以上の周囲長をもつ輪郭のみを計算する.その他のチェーンは結果の構造体から削除される.
- recursive
- 0ではない場合,src_seqからh_nextあるいはv_nextによって辿ることができる全てのチェーンを近似する.0の場合,単一のチェーンを近似する.
これは独立した近似ルーチンである.関数cvApproxChainsは,対応する推定フラグを与えたcvFindContoursと全く同じ方法で動作する.この関数は,結果の一番最初の輪郭へのポインタを返す. もし他の結果がある場合は,v_nextかh_nextフィールドを使って取得できる.
StartReadChainPoints
チェーンリーダを初期化する
void cvStartReadChainPoints( CvChain* chain, CvChainPtReader* reader );
- chain
- チェーンへのポインタ.
- reader
- チェーンリーダの状態.
関数cvStartReadChainPointsは,特別なリーダを初期化する (Dynamic Data Structures の sets と sequencesを参照).
ReadChainPoint
チェーン上の次の点を得る
CvPoint cvReadChainPoint( CvChainPtReader* reader );
- reader
- チェーンリーダの状態.
関数cvReadChainPointは,現在のチェーン上の点を返し,リーダの位置を更新する.
ApproxPoly
指定した精度でポリラインを近似する
CvSeq* cvApproxPoly( const void* src_seq, int header_size, CvMemStorage* storage,
int method, double parameter, int parameter2=0 );
- src_seq
- 点のシーケンスまたは配列.
- header_size
- 近似されたポリラインのヘッダサイズ.
- storage
- 近似された輪郭の保存場所.NULLの場合,入力シーケンスのストレージが使われる.
- method
- 近似方法.CV_POLY_APPROX_DPのみサポートされる. これはDouglas-Peuckerアルゴリズムに相当する.
- parameter
- 近似方法に依存するパラメータ.CV_POLY_APPROX_DPの場合には,要求する近似精度である.
- parameter2
- src_seqがシーケンスの場合,単一のシーケンスが近似されるか, 同じレベルまたはsrc_seq以下の全てのシーケンスが近似される(cvFindContoursの階層的な輪郭の構造を参照). src_seqが点の配列(CvMat*)の場合, このパラメータは輪郭が閉じている(parameter2!=0)か,開いているか(parameter2=0)を指定する.
関数cvApproxPolyは,単一もしくは複数の近似曲線を計算し,その結果を返す. 複数の曲線の近似の場合,出力される結果のツリーは入力したものと同じ構造を持つ(一対一対応).
BoundingRect
点列を包含するまっすぐな(傾いていない)矩形を求める
CvRect cvBoundingRect( CvArr* points, int update=0 );
- points
- シーケンス (CvSeq*, CvContour*) か,点のベクトル(CvMat*)か,非0のピクセルが点列とみなされる8ビット1チャンネルマスク画像 (CvMat*, IplImage*)のいずれかで表現された2次元の点列.
- update
- 更新フラグ.以下にフラグの値とpointsの型の利用可能な組み合わせを列挙する:
- pointsがCvContour* で,update=0の場合: 包含矩形は計算されず,輪郭ヘッダのrectフィールドから読み込まれる.
- pointsがCvContour* で,update=1の場合: 包含矩形は計算され,輪郭ヘッダのrectフィールドに書き込まれる. 例えば,このモードはcvFindContoursで使われる.
- pointsがCvSeq*かCvMat*の場合: updateは無視されて,包含矩形は計算されて返される.
関数cvBoundingRectは,2次元点列を包含するまっすぐな矩形を返す.
ContourArea
輪郭の全体または部分領域を計算する
double cvContourArea( const CvArr* contour, CvSlice slice=CV_WHOLE_SEQ );
- contour
- 輪郭(頂点のシーケンスまたは配列).
- slice
- 注目領域の輪郭の始点と終点.デフォルトでは全領域が計算される.
関数cvContourAreaは,輪郭全体の領域,または輪郭の一部を計算する. 後者の場合,以下の図で示されるように,輪郭の弧と選択された2点を繋ぐ弦で区切られたエリア全体が計算される.
注意: 輪郭の姿勢によって負の値を返すことがある.絶対値を得るためにはCの関数fabs()を使うこと.
ArcLength
輪郭の周囲長または曲線の長さを計算する
double cvArcLength( const void* curve, CvSlice slice=CV_WHOLE_SEQ, int is_closed=-1 );
- curve
- 輪郭点のシーケンスまたは配列.
- slice
- 曲線の始点と終点.デフォルトでは曲線の全ての長さが計算される.
- is_closed
- 閉曲線かどうかを示す.次の3つの状態がある:
- is_closed=0 - 曲線は閉曲線として扱われない.
- is_closed>0 - 曲線は閉曲線として扱われる.
- is_closed<0 - 曲線がシーケンスの場合, ((CvSeq*)curve)->flagsのフラグCV_SEQ_FLAG_CLOSEDから閉曲線かどうかを判別する.そうでない(曲線が点の配列(CvMat*)で表現される)場合,閉曲線として扱われない.
関数cvArcLengthは,連続する輪郭点間の距離の総和として曲線の長さを計算する.
CreateContourTree
輪郭の階層的表現を生成する
CvContourTree* cvCreateContourTree( const CvSeq* contour, CvMemStorage* storage, double threshold );
- contour
- 入力輪郭.
- storage
- 結果のツリーの出力先.
- threshold
- 近似精度.
関数cvCreateContourTreeは,入力したcontourのニ分木を生成し,そのルートへのポインタを返す. パラメータthresholdが0以下の場合, この関数は全二分木(full binary tree)を生成する. 0より大きい場合, この関数は精度thresholdを持つ二分木を生成する. 元の輪郭線を分割した領域を構成する頂点数がthresholdよりも少なくなった場合,ツリーの生成を中断する. この関数は生成したツリーを返す.
ContourFromContourTree
ツリーから輪郭を復元する
CvSeq* cvContourFromContourTree( const CvContourTree* tree, CvMemStorage* storage,
CvTermCriteria criteria );
- tree
- 輪郭の二分木.
- storage
- 復元した輪郭の出力先.
- criteria
- 復元を止める基準.
関数cvContourFromContourTreeは,二分木表現から輪郭を復元する.パラメータcriteriaが正確さと復元に使われるツリーのレベルを決定するので,近似された輪郭を生成することができる. この関数は復元された輪郭を返す.
MatchContourTrees
ツリー表現を使って2つの輪郭を比較する
double cvMatchContourTrees( const CvContourTree* tree1, const CvContourTree* tree2,
int method, double threshold );
- tree1
- 一つ目の輪郭の二分木.
- tree2
- 二つ目の輪郭の二分木.
- method
- 類似度.CV_CONTOUR_TREES_MATCH_I1のみ利用可能.
- threshold
- 類似度の閾値.
関数cvMatchContourTreesは,二つの輪郭の二分木間の類似度を計算する. 類似度は二分木のルートからレベルごとに計算される. あるレベルにおいて,輪郭間の差異がthreshold未満になった時点で復元プロセスは中断され,その時点での差が返される.