キャニー エッジ検出は、[多段階] エッジ検出アルゴリズムを使用してエッジを検出する方法です。
主に以下のステップに分かれています。
1. ノイズ除去:
ノイズをフィルタリングし、フィルタリングを使用して、テクスチャが弱いエッジ以外の領域を滑らかにします。
2. 勾配を計算します。
勾配の大きさと角度を計算します (PS: 2↑ は、大きさが 2 で角度が 90° であることを意味します)。エッジと勾配は常に垂直であることに注意してください。
3. 非最大抑制:
ピクセルを順番にトラバースして、現在のピクセルが周囲のグラデーション方向の最大値であるかどうかを判断します。最大値の場合は保持され、それ以外の場合は抑制 (ゼロ) されます。
4. 二重しきい値処理を使用してエッジを識別します。
仮想エッジを排除し、実際のエッジを決定します。
前の手順の後、いくつかのエッジが取得されましたが、実際のエッジに加えて、これらのエッジの間にノイズ エッジがいくつかあるため、それらをさらに削除する必要があります。主に 3 つの状況があります。
maxVal 以上の強いエッジ:
minVal より大きく maxVal より小さい仮想エッジを保持: 強いエッジに接続されている場合は保持、そうでない場合は抑制。
minVal より小さいエッジ: 抑制
上記のコード:
キャニー(img,minVal,maxVal)
import cv2
o=cv2.imread("lena.bmp",cv2.IMREAD_GRAYSCALE)
r1=cv2.Canny(o,128,200)
r2=cv2.Canny(o,32,128)
cv2.imshow("original",o)
cv2.imshow("result1",r1)
cv2.imshow("result2",r2)
cv2.waitKey()
cv2.destroyAllWindows()
結果:
バイバイ。. . .