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)
- 参考文献
画像処理(Image Processing)
注釈:
この章では画像処理及び解析のための関数について述べる.ほとんどの関数はピクセルの2次元配列に対して実行される.OpenCVでは配列を「画像」として取り扱う.しかしその配列はIplImage形式である必要はなく,CvMat形式またはCvMatND形式でもよい.
画像と形状のモーメント(Image and Contour Moments)
Moments
ポリゴンまたはラスタ形状の3次までのモーメントを計算する
void cvMoments( const CvArr* arr, CvMoments* moments, int binary=0 );
- arr
- 画像(1チャンネル,あるいはCOIをもつ3チャンネル画像) あるいはポリゴン (CvSeqで表される点群,または点のベクトル).
- moments
- 画像モーメントを表す構造体へのポインタ.
- binary
- (画像の場合のみ)このフラグが0でない場合,値0のピクセルは0として,その他のピクセル値は1として扱われる.
関数 cvMoments は3次までの空間モーメントあるいは中心モーメントを計算し,結果を moments に保存する.モーメントは形状の重心,面積,主軸,また7つのHuモーメント不変量を含む各種の形状特徴を計算するのに用いられる.
GetSpatialMoment
画像モーメント構造体から空間モーメントを計算する
double cvGetSpatialMoment( CvMoments* moments, int x_order, int y_order );
- moments
- cvMoments によって得られる画像モーメント構造体.
- x_order
- 取り出すモーメントのx方向の次数,x_order >= 0.
- y_order
- 取り出すモーメントのy方向の次数, y_order >= 0 かつ x_order + y_order <= 3.
関数 cvGetSpatialMoment は,以下のように画像モーメントから空間モーメントを計算する.
Mx_order,y_order=sumx,y(I(x,y)•xx_order•yy_order)
ここで,I(x,y) はピクセル (x, y) の強度(輝度).
GetCentralMoment
画像モーメント構造体から中心モーメントを計算する
double cvGetCentralMoment( CvMoments* moments, int x_order, int y_order );
- moments
- 画像モーメント構造体へのポインタ.
- x_order
- 取り出すモーメントのx方向の次数,x_order >= 0.
- y_order
- 取り出すモーメントのy方向の次数, y_order >= 0 かつ x_order + y_order <= 3.
関数 cvGetCentralMoment は,以下のように画像モーメントから中心モーメントを計算する.
μx_order,y_order=sumx,y(I(x,y)•(x-xc)x_order•(y-yc)y_order),
ここで,xc=M10/M00, yc=M01/M00 - は重心の座標.
GetNormalizedCentralMoment
画像モーメント構造体から正規化された中心モーメントを計算する
double cvGetNormalizedCentralMoment( CvMoments* moments, int x_order, int y_order );
- moments
- 画像モーメント構造体へのポインタ.
- x_order
- 取り出すモーメントのx方向の次数,x_order >= 0.
- y_order
- 取り出すモーメントのy方向の次数, y_order >= 0 かつ x_order + y_order <= 3.
関数 cvGetNormalizedCentralMoment は,以下のように正規化された中心モーメントを計算する.
ηx_order,y_order= μx_order,y_order/M00((y_order+x_order)/2+1)
GetHuMoments
7つのHuモーメント不変量を計算する
void cvGetHuMoments( CvMoments* moments, CvHuMoments* hu_moments );
- moments
- 画像モーメント構造体へのポインタ.
- hu_moments
- Huモーメント構造体へのポインタ.
関数 cvGetHuMoments は,以下のように7つのHuモーメント不変量を計算する.
h1=η20+η02 h2=(η20-η02)²+4η11² h3=(η30-3η12)²+ (3η21-η03)² h4=(η30+η12)²+ (η21+η03)² h5=(η30-3η12)(η30+η12)[(η30+η12)²-3(η21+η03)²]+(3η21-η03)(η21+η03)[3(η30+η12)²-(η21+η03)²] h6=(η20-η02)[(η30+η12)²- (η21+η03)²]+4η11(η30+η12)(η21+η03) h7=(3η21-η03)(η21+η03)[3(η30+η12)²-(η21+η03)²]-(η30-3η12)(η21+η03)[3(η30+η12)²-(η21+η03)²]
ここで,ηi,j は,2次,3次の正規化された中心モーメント. 反転によって符号が変わる7番目の値以外は,画像のスケーリング・回転・反転に対して不変である.