opencv3.0関数学習8——Canny演算子検出プロファイル

2608 ワード

Canny演算子検出プロファイル(ユーザ選択可能な複数のプロファイル検出アルゴリズム)
Canny演算子
1983,MIT,Cannyが提案したエッジ検出の3つの基準:
  • 検出基準:重要なエッジを失わず、虚偽のエッジを持つべきではない.
  • 位置決め基準:実際のエッジと検出されたエッジ位置との偏差が最小である.
  • 単一応答規格:複数の応答を単一のエッジ応答に低減する.すなわち、画像には本来1つのエッジポイントしかないのに、複数のエッジポイントが検出され、複数の応答に対応する.

  • Canny演算子の力図はノイズ干渉と精度の間で最適なスキームを求め,Canny演算子には関連する複雑な理論があり,その基本的なステップは:
  • ガウスフィルタを用いて画像を平滑化し、ボリュームコアスケールはガウスフィルタの標準差によって
  • を決定する.
  • フィルタリング後の画像の勾配幅値と方向を計算するには、Sobel演算子を用いてGxとGy方向の勾配を計算することができ、勾配幅値と勾配の方向は
  • の順である.
  • 非最大化抑制法を用いて、現在の画素点が隣接画素点よりもエッジに属する可能性のある画素であるか否かを決定し、現在の画素位置の勾配値を勾配方向に隣接する勾配方向の勾配値と比較し、周囲に勾配値が現在の画素の勾配値よりも大きい場合、現在のピクセルポイントがエッジポイントであるとは思えません.例えば、Gx方向の3つの勾配値が[2 4 3]の順であると、Gx勾配方向に4が位置する画素点がエッジ点であり、[2 4 1]に変更すればエッジ点ではない.全方向の勾配方向を非最大抑制の判断根拠とすると、G(x,y)>全4近傍または8近傍の勾配値がエッジ点とみなされることが要求される.
  • 二重閾値[T 1,T 2]法を用いてエッジの始点と終点を検出することで、接続されたエッジを形成することができる.T 2>T 1,T 2は、縁を探す破断部を両端に伸ばし、これらの縁を接続するために使用される線分がない線分を見つけるために使用される.

  • 関数パラメータ
    void cv::Canny
    (
    InputArray 
    image,
     
     
    OutputArray 
    edges,
     
     
    double 
    threshold 1、(調整が必要)
     
     
    double 
    threshold 2、(調整が必要)
     
     
    int 
    apertureSize=3(テンプレートサイズは3*3 5*5 7*7デフォルト3*3)
     
     
    bool 
    L 2 gradient=false(デフォルトはfalse)
     
    )
     
     
    Finds edges in an image using the Canny algorithm [25] .
    The function finds edges in the input image image and marks them in the output map edges using the Canny algorithm. The smallest value between threshold1 and threshold2 is used for edge linking. The largest value is used to find initial segments of strong edges. See http://en.wikipedia.org/wiki/Canny_edge_detector
    Parameters
    image
    8-bit input image.
    edges
    output edge map; single channels 8-bit image, which has the same size as image .
    threshold1
    first threshold for the hysteresis procedure.
    threshold2
    second threshold for the hysteresis procedure.
    apertureSize
    aperture size for the Sobel operator.
    L2gradient
    a flag, indicating whether a more accurate L 2   norm =(dI/dx) 2 +(dI/dy) 2  − − − − − − − − − − − − − − − −  √   should be used to calculate the image gradient magnitude ( L2gradient=true ), or whether the defaultL 1   norm =|dI/dx|+|dI/dy|  is enough ( L2gradient=false ).
    1つ目のパラメータ:入力:階調図、カラー図でも階調図に処理
    第2のパラメータ:出力する図の位置、出力する図式の2値図
    第3の第4のパラメータ:2つのしきい値、上限と下限であり、1つの画素の勾配が上限より大きい場合はエッジ画素とみなされ、下限より低い場合は捨てられ、両者の間にある場合は、上限より高いしきい値の画素に接続されている場合にのみ受け入れられる.
    5番目のパラメータ:テンプレートのサイズを表し、3の場合は3*3マトリクスのサイズを表します.