エッジ検出
エッジ検出（エッジけんしゅつ、）は、画像処理やコンピュータビジョンの用語で、特徴検出 () や特徴抽出 () の一種であり、デジタル画像の画像の明るさが鋭敏に、より形式的に言えば不連続に変化している箇所を特定するアルゴリズムを指す。
画像の明るさの鋭敏な変化を検出する目的は、実世界の属性の重要な事象や変化を捉えることである。一般的な画像形成モデルにおいて、画像の明るさの不連続な変化は次のような事象と一致する可能性がある。
理想的には、画像にエッジ検出を施すことで、物体の境界を示す連続する曲線が得られ、面の向きが不連続に変化している部分（要するに角）も曲線として得られる。したがって、エッジ検出を画像に施すことで処理すべきデータ量が大幅に削減され、相対的にあまり重要でない情報を排除しつつ、画像の構造的属性だけを保持する。エッジ検出が成功すると、その後の画像処理がずっと単純化される。しかし、それなりに複雑な実際の画像で理想的なエッジを抽出するのはそう簡単ではない。実際の画像から得られるエッジは、興味深い現象と一致しない「偽のエッジ」があったり、エッジ曲線が途切れていて「断片化」していることがあり、その後の画像処理を複雑にしている。
3次元のシーンの2次元画像から抽出されるエッジは、視点依存のエッジと視点独立なエッジに分類できる。視点独立のエッジは、3次元の物体の本質的な特徴を反映したもので、表面の形状などに対応している。視点依存のエッジは、視点が変わると変化するもので、どの方向から撮影するかに依存している。例えば視点によって物体同士が重なる場合などである。
典型的なエッジは、例えば赤のブロックと黄色のブロックの間の境界がある。一方、直線状のものは数ピクセル幅の色が異なる部分が背景と違っている。この場合、その物体の両サイドにエッジを検出することになる。
エッジは画像処理の多くの応用で極めて重要な役割を担っており、特にマシンビジョンシステムで制御された照明下で製品を撮影して、それを解析する場合によく使われる。しかし、では前処理としてエッジ検出を行わずに画像処理する手法の研究が進んでいる。
書籍には理想的なエッジの検出が説明されているが、実際の画像から得られるエッジは理想のエッジとは程遠く、一般に以下のような点に影響を受ける。
以下のモデルは実際の画像におけるエッジの可変性を完全に捉えているわけではないが、誤差関数 formula_1 はエッジのぼやけをモデル化する単純な方法としてよく使われている。1次元の画像 formula_2 があり、formula_3 の位置に1つのエッジがあるとき、そのモデルは次のように表される。
エッジの左側では、輝度は formula_4、右側では formula_5 となる。尺度パラメータ σ をエッジのぼやけ尺度と呼ぶ。
エッジ検出がいかに難しいかを示すため、以下の1次元の信号でエッジを検出することを考える。見ての通り、4番目と5番目のピクセルの間にエッジがある。
コンピュータは色を直接認識しているわけではなく、上の段のような数値でピクセルを認識している。4番目と5番目のピクセルの輝度の差がこれより小さく、その前後の変化がもっと激しい場合、エッジを正確に認識するのはより難しく、場合によっては複数のエッジを検出してしまうかもしれない。したがって、エッジと判断すべきピクセル間の輝度変化の大きさは固定のしきい値で済む問題ではなく、単純には決められない。そのため、照明が厳密に制御された環境で単純な物体を扱うのでない限り、エッジ検出は難しい問題である。
エッジ検出には様々な手法があるが、大まかに2種類に分類できる。探索ベースの手法とゼロ交差法をベースとした手法である。探索ベースの手法ではまず、通常1次微分で勾配を計算することでエッジの強さを計算し、勾配の方向からエッジの局所的方向を予測し、その方向の勾配が局所的に極大となる箇所を探す。ゼロ交差法ベースの手法では、対象の画像から計算した2次微分式でのゼロ交差を探すもので、一般にラプラシアンでのゼロ交差か非線形微分式でのゼロ交差を探す。エッジ検出の前段階として平滑化（ガウス平滑化が一般的）を行うのが普通である（ノイズリダクション参照）。
エッジ検出法は、主に利用する平滑化フィルタの種類とエッジの強さの計算方法が異なる。多くのエッジ検出法は画像の輝度の勾配計算に基づいており、X軸方向とY軸方向で勾配を見積もる計算に使うフィルタの種類もそれぞれで異なる。
John F. Canny は1986年、エッジの検出・局所化・複数応答の最小化を可能にする理想の平滑化フィルタを数学的に検討した。彼はこれらの仮定に基づく理想のフィルタが4つの指数項の総和で表されることを示した。また、そのフィルタはガウス関数の1次微分で近似できることも示した。彼はまた「非最大（エッジ）抑制」という観念を導入した。それは事前平滑化フィルタを適用したとき、エッジが勾配方向の勾配の大きさが局所的な極大となる箇所であると定義したものである。
Canny はコンピュータビジョンの先駆者だが、キャニー法はでも最先端のエッジ検出法である。事前条件が特殊でない限り、キャニー法よりも性能のよいエッジ検出法を見つけることは難しい。
キャニー・デリチェ法 () もキャニー法と同様の数学的手法で得られたエッジ検出法だが、離散的観点から出発しているため、指数フィルタやガウシアンフィルタではなく画像平滑化の再帰フィルタを生み出した。
後述する微分エッジ検出法は、キャニー法を尺度空間 () 表現から計算される微分不変量の観点から再定式化したものとも言える。
画像の輝度の勾配を見積もる方法はいくつもある。最も単純な方法は次のような中央差分の式で表される。
これは、次のようなフィルタで画像をマスクするのに相当する。
比較的古くからあるは、次のフィルタに基づいている。
1次微分の見積もりがこのように与えられると、勾配の大きさは次のように計算できる。
このとき勾配の方向は次のように見積もられる。
同様の手法としては他にもやがある。
勾配の大きさなどでエッジの強さを計算すると、次にしきい値を適用して必要なエッジだけを抽出する必要がある。しきい値を低く設定すればエッジは多くなり、ノイズの影響を受けやすくなるため、画像の本質的でない特徴を捉えてしまいやすくなる。逆にしきい値を高く設定すると断片化したエッジしか得られないことになる。
勾配の強さを画像化したものにしきい値を適用すると、得られるエッジは太いのが普通で、なんらかの方法でそれを細くする必要がある。非最大抑制でエッジ検出した場合、その定義上エッジは細くなり、エッジ連結処理を施すことでエッジの線同士を連結して多角形を形成することができる。離散的な手法で非最大抑制のような効果を得るには、1次微分から勾配方向を見積もり、それを45度単位に丸め、その勾配方向での勾配の強さを比較する。
適切なしきい値を求めるために一般に使われる手法は、ヒステリシスを伴った適応的しきい値処理と呼ばれる手法である。これは、複数のしきい値を使うもので、まず最大のしきい値でエッジの始点を求める。始点が見つかったら、そこからエッジがどう続いているかをピクセル単位に検討していき、最小のしきい値より上のエッジ箇所を全て見ていき、しきい値未満になった時点で追跡をやめる。この手法はエッジが連続的な曲線になっていると仮定しており、不要なエッジを検出することなく、必要なエッジのかすかな部分も検出できるという利点がある。それでも適切なしきい値を選択する問題は残っており、一般に画像によって適切なしきい値は異なる。
一部のエッジ検出法は輝度の2次微分に基づいている。これは輝度勾配における変化率を捉えるものである。したがって、理想の連続的ケースでは2次導関数でのゼロ交差が勾配の局所的極大になる。
初期のマー・ヒルドレス法 () は、ガウシアン平滑化画像にラプラシアンを適用してゼロ交差を検出するものであった。しかし、この方法では偽のエッジも検出しやすい。また、曲線のエッジに弱い性質がある。このため、現在ではほとんど使われない。
より洗練された2次のエッジ検出法として微分エッジ検出 () がある。これは自動的にサブピクセルの正確さでエッジの位置を求めることができるもので、勾配方向の2次導関数のゼロ交差を以下のように検出する手法に基づいている。非最大抑制の必要条件を表現する微分幾何学的方法に基づき、画像の全ての点に画像の勾配方向を v-軸とする局所的な座標系 formula_6 を導入する。画像は事前にガウシアン平滑化されているものとし、尺度 formula_7 における尺度空間表現 formula_8 を計算しておく。尺度表現の勾配の大きさは、v-方向 formula_9 における1次微分係数に等しく、それをv-方向に1次微分した値はゼロになるはずである。
そして、formula_9 をv-方向に2次微分すると負になる。
局所的な偏導関数 formula_11, formula_12 ... formula_13 で明示的な式として書くと、このエッジの定義は微分不変量のゼロ交差曲線として表現できる。
このとき、以下の微分不変量の符号条件が成り立つ。
ここで、formula_11, formula_12 ... formula_13 は、元の画像をガウシアン平滑化したものから得た尺度空間表現 formula_17 から計算した偏導関数である。このようにして、エッジをサブピクセルの正確さで曲線として自動的に得ることができる。ヒステリシスしきい値処理をこれに適用することもできる。
1次微分の近似は上述したように中央差分で計算できるが、2次微分の近似は次のような尺度空間表現 formula_17 から計算できる。
これは次のようなフィルタによるマスクと対応している。