画像の輪郭を検出する仕組みを学びます
エッジとは、画像の中で明るさが急激に変化する場所のことです。 物体の輪郭や境界線がエッジとして現れます。
エッジを検出することで、画像から物体の形状や構造を抽出できます。
エッジを検出するには、画像の勾配を計算します。 勾配とは、ピクセル値の変化の大きさと方向を表します。
勾配は、X方向(水平)とY方向(垂直)の変化から計算されます。
縦のエッジを検出
横のエッジを検出
Sobelフィルタは、勾配を計算するための代表的なフィルタです。 X方向とY方向それぞれのカーネルを使用します。
GxとGyから、各ピクセルでのエッジの強度と方向を計算できます。
明るいほど強いエッジ
色でエッジの向きを表現
勾配の方向(明るさの増加方向)を色で表現
Cannyエッジ検出は、より高精度なエッジ検出アルゴリズムです。 Sobelフィルタに加えて、いくつかの追加処理を行います。
非極大抑制により、エッジが細く鮮明になります。 その後、二重閾値処理とヒステリシスにより、重要なエッジだけを残します。
エッジの方向に対して垂直な方向で、勾配の強度が極大となるピクセルだけを残します。 これにより、太いエッジが細い1ピクセル幅のエッジになります。
高い閾値($T_{high}$)と低い閾値($T_{low}$)を設定し、
・勾配 > $T_{high}$ → 強いエッジ(確実に残す)
・$T_{low}$ < 勾配 < $T_{high}$ → 弱いエッジ(条件付きで残す)
・勾配 < $T_{low}$ → 削除
太いエッジ
細く鮮明なエッジ
エッジ検出は、物体認識や画像解析の基礎となる重要な技術です。