エッジ検出は、画像内のオブジェクトの輪郭を識別するコンピューター ビジョンの画像処理技術です。
Canny エッジ検出は、エッジ検出に最適な手法の 1 つです。ノイズを低減し、誤ったエッジを回避しながら、クリーンで明確なエッジを検出するように設計されています。画像内のエッジを検出するために、高しきい値と低しきい値の二重しきい値方式が使用されます。
img = cv2.Canny('photo.jpg') img_edges = cv2.Canny(img, 100, 200) // 100 is the low threshold // 200 is the high threshold
閾値は、何がエッジになり、何がエッジにならないかを決定します。この決定を行うために、勾配値を使用します。
グラデーション値は生の画像値ではありません。これらは、画像内のピクセル強度がどの程度変化するかをチェックすることによって、生の画像から導出される計算された数値です。生の画像値ではエッジがどこにあるかを直接教えてくれないため、グラデーション値を使用します。
ピクセル強度の変化を示す簡単な例: 2 つの隣接するピクセルの値が大きく異なる場合 (例: 50 と 200、グラデーション値が 150)、大きな変化があり、それはエッジである可能性があります。しかし、隣接する 2 つのピクセルの値が似ている場合 (例: 50 と 52、勾配値が 2)、変化はほとんどなく、エッジである可能性はほとんどありません。
勾配値が計算された後、それらはしきい値と比較され、何が強いエッジ、潜在的なエッジ、または非エッジとして認定されるかを決定します。
ヒステリシスによるエッジトラッキングと呼ばれる手法を使用し、接続されているエッジと破棄すべきエッジを決定します。このアルゴリズムは、潜在的なエッジ ピクセルごとに 8 つの隣接ピクセル (直接隣接するピクセル、上、下、左、右、対角線) を調べることによって機能します。強いエッジに直接的または間接的に接続されているピクセルはすべて、最終結果に含まれます。
50 80 110 90 70 250 190 120 60 180 150 70 40 60 80 50
上のこのグラデーション マップを想像してください:
しきい値 (低 = 100、高 = 200) を適用した後、強いエッジ ピクセル (> 200) は直ちにエッジとして保持されます。ここでは、ピクセル 250 のみが強いエッジとしてマークされています。
潜在的なエッジ ピクセル (100 ~ 200) は 110、190、120、180、150 です。潜在的なエッジのプールができたので、エッジ トラッキングを実行して、何が残り、何が破棄されるかを決定します。アルゴリズムは、潜在的なエッジのいずれかが強いエッジ (250) に直接的または間接的に接続されているかどうかをチェックします。
例:
80、90 などの弱いエッジ ピクセル (
以上がキャニーエッジ検出の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。