図形検出 : ハフ変換 (Hough Transform)

直線検出

CvSeq* cvHoughLines2(
    CvArr* image,        // 入力画像
    void* line_storage,  // 検出された線を格納する領域
    int method,          // ハフ変換の種類
    double rho,          // 距離解像度 (ピクセル単位)
    double theta,        // 角度解像度 (ラジアン単位)
    int threshold,       // しきい値
    double param1 = 0,   // 1番目のパラメータ
    double param2 = 0    // 2番目のパラメータ
    );
ハフ変換の種類 (method)
定数 説明 パラメータの意味
param1 param2
CV_HOUGH_STANDARD 標準的ハフ変換 使用しない 使用しない
CV_HOUGH_PROBABILISTIC 確率的ハフ変換 最小の線の長さ 同一線上に存在する線分として扱う2つの線分の最大間隔
CV_HOUGH_MULTI_SCALE マルチスケール型の古典的ハフ変換 距離解像度 (rho) の除数 角度解像度 (theta) の除数

円検出

CvSeq* cvHoughCircles(
    CvArr* image,           // 入力画像
    void* circle_storage,   // 検出された円を格納する領域
    int method,             // ハフ変換の種類
    double dp,              // 円の中心を求める計算の解像度
    double min_dist,        // 中心座標間の最小間隔
    double param1 = 100,    // 1番目のパラメータ
    double param2 = 100,    // 2番目のパラメータ
    int min_radius = 0,     // 検出される円の最小半径
    int max_radius = 0      // 検出される円の最大半径
    );
ハフ変換の種類 (method)
定数 説明 パラメータの意味
param1 param2
CV_HOUGH_GRADIENT 基本的な2段階のハフ変換 Cannyのエッジ検出器で用いる二つのしきい値の高い方の値 中心検出計算時のしきい値