CV リファレンス マニュアル
- 画像処理(Image Processing)
- 勾配,エッジ,コーナー(Gradients, Edges and Corners)
- サンプリング,補間,幾何変換(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形式でもよい.
モルフォロジー演算(Morphological Operations)
CreateStructuringElementEx
構造要素を生成する
IplConvKernel* cvCreateStructuringElementEx( int cols, int rows, int anchor_x, int anchor_y,
int shape, int* values=NULL );
- cols
- 構造要素の列数.
- rows
- 構造要素の行数.
- anchor_x
- アンカーポイントの水平方向相対オフセット値.
- anchor_y
- アンカーポイントの垂直方向相対オフセット値.
- shape
- 構造要素の形状.以下のような値を持つ.
- CV_SHAPE_RECT, 矩形の構造要素
- CV_SHAPE_CROSS, 十字の構造要素
- CV_SHAPE_ELLIPSE, 楕円の構造要素
- CV_SHAPE_CUSTOM, ユーザー定義形状の構造要素.この場合は,パラメータ values で考慮されるべき領域のマスク形状を指定する.
- values
- 構造要素データへのポインタであり,データは構造要素行列の行ごとの走査によって表現される平面配列で与えられる.0以外の値の場合は構造要素を構成する点であることを示す.ポインタが NULL の場合は,全ての値が0でないことを示す,すなわち構造要素の形状は矩形となる.このパラメータは形状が CV_SHAPE_CUSTOM のときのみ有効である.
関数 cvCreateStructuringElementEx は領域を確保し,モルフォロジー演算の構造要素として用いる構造体 IplConvKernel の各パラメータをセットする.
ReleaseStructuringElement
構造要素を削除する
void cvReleaseStructuringElement( IplConvKernel** element );
- element
- 削除する構造要素へのポインタ.
関数 cvReleaseStructuringElement は,不要となった構造体 IplConvKernelを解放する. *element が NULL の場合,この関数は何もしない.
Erode
任意の構造要素を用いて画像の収縮を行う
void cvErode( const CvArr* src, CvArr* dst, IplConvKernel* element=NULL, int iterations=1 );
- src
- 入力画像.
- dst
- 出力画像.
- element
- 収縮に用いる構造要素.NULL の場合は, 3×3 の矩形形状の構造要素を用いる.
- iterations
- 収縮の回数.
関数 cvErode は,隣接ピクセルの形状を決定する指定された構造要素を用いて,入力画像を収縮する.以下のように各ピクセルについてその隣接の最小値をピクセル値とする.
dst=erode(src,element): dst(x,y)=min((x',y') in element))src(x+x',y+y')
この関数はインプレースモード(src=dstである入力)をサポートする.収縮は複数回 (iterations) 繰り返すことができる. カラー画像の場合は,それぞれのチャンネルが独立に処理される.
Dilate
任意の構造要素を用いて画像の膨張を行う
void cvDilate( const CvArr* src, CvArr* dst, IplConvKernel* element=NULL, int iterations=1 );
- src
- 入力画像.
- dst
- 出力画像.
- element
- 膨張に用いる構造要素.NULL の場合は, 3×3 の矩形形状の構造要素を用いる.
- iterations
- 収縮の回数.
関数 cvDilate は,ピクセル隣接の形状を決定する指定された構造要素を用いて,入力画像を膨張する.以下のように各ピクセルについてその隣接の最大値をピクセル値とする.
dst=dilate(src,element): dst(x,y)=max((x',y') in element))src(x+x',y+y')
この関数はインプレースモード(src=dstである入力)をサポートする.収縮は複数回 (iterations) 繰り返すことができる. カラー画像の場合は,それぞれのチャンネルが独立に処理される.
MorphologyEx
高度なモルフォロジー変換を実行する
void cvMorphologyEx( const CvArr* src, CvArr* dst, CvArr* temp,
IplConvKernel* element, int operation, int iterations=1 );
- src
- 入力画像.
- dst
- 出力画像.
- temp
- テンポラリ画像(いくつかの処理で必要とされる).
- element
- 構造要素.
- operation
- モルフォロジー演算の種類(以下のうちのいずれか)
CV_MOP_OPEN - オープニング
CV_MOP_CLOSE - クロージング
CV_MOP_GRADIENT - モルフォロジー勾配(エッジ検出)
CV_MOP_TOPHAT - トップハット変換(top hat)
CV_MOP_BLACKHAT - ブラックハット変換(black hat)
- iterations
- 収縮と膨張の繰り返し回数.
関数 cvMorphologyEx は,基本の演算として収縮と膨張を(組み合わせて)用いる高度なモルフォロジー変換を行うことができる.
オープニング: dst=open(src,element)=dilate(erode(src,element),element) クロージング: dst=close(src,element)=erode(dilate(src,element),element) モルフォロジー勾配: dst=morph_grad(src,element)=dilate(src,element)-erode(src,element) トップハット変換: dst=tophat(src,element)=src-open(src,element) ブラックハット変換: dst=blackhat(src,element)=close(src,element)-src
テンポラリ画像 temp は,モルフォロジー勾配の時と,インプレースモードでのトップハット変換 と ブラックハット変換で必要となる.