https://docs.opencv.org/4.2.0/da/d5c/tutorial_canny_detector.htmlから取得
https://docs.opencv.org/4.2.0/dd/d1a/group__imgproc__feature.html#ga04723e007ed888ddf11d9ba04e2232deから取得
キャニーエッジ検出器は また、として多くに知られている1986年にジョン・F・キャニーによって開発された 最適な検出器、キャニーアルゴリズムは、3つの主要な基準を満たすことを目的と:
- 低いエラー率: 存在するエッジのみを適切に検出することを意味します。
- 良好な位置特定: 検出されたエッジピクセルと実際のエッジピクセルの間の距離を最小化する必要があります。
- 最小応答: エッジごとに1つの検出器応答のみ。
手順
-
ノイズを除去します。この目的のためにガウスフィルターが使用されます。
-
画像の強度勾配を求めます。このため、Sobelと同様の手順に従います。
-
非最大 抑制が適用されます。これにより、エッジの一部とは見なされないピクセルが削除されます。したがって、細い線(候補エッジ)のみが残ります。
-
ヒステリシス:最後のステップ。Cannyは2つのしきい値(上限と下限)を使用します。ピクセルの勾配が上限の しきい値よりも高い 場合、そのピクセルはエッジとして受け入れられます。ピクセルグラディエント値が下限 しきい値を下回っている場合、その値 は拒否されます。ピクセルグラディエントが2つのしきい値の間にある場合、それが上限 しきい値を超えるピクセルに接続されている場合にのみ受け入れられ ます。キャニーが推奨 アッパー:下部 1と3:2の比1。
Edges = cv.Canny(image、threshold1、threshold2 [、edge [、開きサイズ[、L2gradient]]])
画像 | 8ビットの入力画像。 |
エッジ | 出力エッジマップ。シングルチャネル8ビットイメージ。イメージと同じサイズです。 |
しきい値1 | ヒステリシス手順の最初のしきい値。 |
しきい値2 | ヒステリシス手順の2番目のしきい値。 |
アパーチャサイズ | ソーベル演算子の開口サイズ。 |
L2gradient | より正確なL2ノルム= sqrt [(dI / dx)^ 2 +(dI / dy)^ 2]を使用して画像の勾配の大きさ(L2gradient = true)を計算するか、デフォルトのL1ノルムを使用するかを示すフラグ= | dI / dx | + | dI / dy | 十分です(L2gradient = false)。 |