Die Kantendetektion oder Kantenextraktion ist Teil einer Segmentierung von Elementen in der Bildverarbeitung. Sie versucht, flächige Bereiche in einem digitalen Bild voneinander zu trennen, wenn sie sich entlang gerader oder gekrümmter Linien ausreichend in Farb- oder Grauwert, Helligkeit oder Textur unterscheiden. Spezielle Kantenoperatoren sollen die Übergänge zwischen diesen Bereichen erkennen und als Kanten markieren. Zugleich soll aber ein einzelner, homogener Bereich als solcher erkannt werden und von einem guten Kantendetektor nicht durch eine Kante in zwei Flächen geteilt werden.
Kantenfindung
Mithilfe eines Sobel-Operators erstelltes Kantenbild
Eine Hauptschwierigkeit der Kantendetektion, insbesondere bei dreidimensionalen Objekten, ist die Unterscheidung von Reflexionskanten, die auf Eigenschaften des Objektes beruhen, und Beleuchtungskanten, die auf Eigenschaften der Beleuchtung beruhen (z. B. Schatten, Lichtkegel).
Die Kantendetektion wird u. a. im Computer Vision, in der Photogrammetrie und der Kartografie eingesetzt, um z. B. aus Luftbildern genaue Objekt- oder Geländekanten zu detektieren.
Unter einer Kante versteht man eine Kurve , entlang derer der Gradient des Bildes immer in Normalenrichtung zeigt (das heißt eine Isolinie):
Probleme mit dieser Definition
Bei der der obigen Definition der Kante mit Hilfe des Gradienten von der Helligkeit treten folgende Probleme auf:
- Wenn zwei benachbarte Teilmengen eines Bildes unterschiedliche Farben, aber die gleiche Helligkeit haben, dann ist der Gradient der Helligkeit gleich Null, und es wird keine Kante entdeckt.
- Die Kantendetektion wird am Computer mittels Bildverarbeitung gemacht. Das Bild im Computer ist ein zwei-dimensionales Feld mit ganzzahligen Elementen jedoch keine stetige Funktion, weswegen man keine Ableitungen berechnen kann. Daher muss der Gradient durch zwei partielle Differenzen (jeweils in - und -Richtung) ersetzt werden. Dies gilt zunächst einmal nur für einen Farbkanal (sogenanntes Grauwertbild). In einem Farbbild gibt es jedoch mehrere Gradienten, jeweils einen für die Farbkanäle Rot, Grün und Blau.
- Bei einer ein Pixel breiten farbigen Linie auf einem Hintergrund von einer anderen Farbe sollen zwei Kanten auf beiden Seiten der Linie entdeckt werden können. Zur Unterscheidung beider Seiten sollen die Differenzen gegenüber liegender Seiten unterschiedliche Vorzeichen haben. Hingegen soll bei einer drei Pixel breiten Rampe nur eine Kante entdeckt werden, d. h., die Differenzen sollen gleiche Vorzeichen haben. Dieses Vorzeichen kann nicht das Vorzeichen der Differenz der Helligkeiten sein, weil bei zwei benachbarten Teilmengen mit unterschiedlichen Farben und gleichen Helligkeiten die Differenz der Helligkeiten gleich Null ist und kein Vorzeichen hat.
- In der Literatur werden teilweise auch Gratlinien als Kanten bezeichnet, wo obige Definition nicht greifen würde.
Definition nach Kovalevsky
- Die Kante ist eine zusammenhängende Folge von kurzen, zwischen zwei benachbarten Pixeln liegenden Strecken, die als Cracks bezeichnet werden.[1]
- Die entsprechenden Differenzen sollen zu einem Wert zusammengeführt werden, zum Beispiel für zwei horizontal benachbarte Pixel als Summe der Beträge der Differenzen:
- .
- Die resultierende Differenz soll größer als ein vorgegebener Schwellwert sein.
- Das Vorzeichen dieser Differenz im Fall eines Farbbildes ist gleich dem Vorzeichen der Differenz der Intensitäten der grünen Farbkanäle, falls diese Differenz ungleich Null ist. Sonst soll es die Differenz der Intensitäten der roten Farbkanäle sein, falls diese Differenz ungleich Null ist. Wenn beide Differenzen, die grüne und die rote gleich Null sind, dann soll es das Vorzeichen der blauen Differenz sein. Diese kann nicht gleich Null sein, weil die Summe der drei Differenzen größer als die Schwelle ist.
- Ein Crack gehört zur Kante, wenn der Betrag der Differenz an diesem Crack größer als die Schwelle ist, und die Vorzeichen an N mit benachbarten parallelen Cracks gleich sind. Da eine Kante eine gerade Strecke ist, ist es von Vorteil, wenn man nur einen Crack bestimmt, welcher sich von den anderen Cracks hervorhebt. Dieser Crack repräsentiert dann die gesamte Kante. Um diesen zu identifizieren, vergleicht man alle N mit benachbarten parallelen Cracks und der Crack mit der größten Differenz ist der repräsentative Crack für diese Kante.
Beispiel:
Diese Bedingungen können zum Beispiel so sein:
Wenn N gleich 2 ist, die Vorzeichen dieser zwei Differenzen gleich dem Vorzeichen der Differenz von sind und der Betrag der Differenz von größer als die Beträge der beiden anderen Differenzen ist, dann gehört zur Kante.
Man kann ähnliche Bedingungen für den Fall N > 2 aufstellen. Diese Bedingungen werden so gewählt, dass unter den N mit benachbarten Cracks mit gleichen Vorzeichen der Differenzen nur ein Crack als Kante gewählt wird.
Ein Kantendetektor berechnet in der Regel den Farbwertgradienten an jedem einzelnen Pixel eines Bildes durch Untersuchung eines den Punkt umgebenden Bereiches. Dieser Vorgang erfolgt durch diskrete Faltung des Bildes mit einer Faltungsmatrix, dem Kantenoperator. Letzterer definiert dabei die Größe des zu untersuchenden Umfeldes und mit welcher Gewichtung dessen einzelne Pixel in die Berechnung eingehen. Der Kantenoperator ermittelt für das zentrale Pixel aus der Umgebung quasi einen mittleren Wert für den Gradienten. Führt man diese Operation für alle Pixel im Bild durch, so kann man aus der resultierenden Matrix der Gradienten ein neues Bild zusammensetzen, das Kantenbild genannt wird. Auf ihm heben sich die Kanten zwischen homogenen Bereichen ab, da an diesen Stellen ein vergleichsweise großer Gradient der Farbwerte vorliegt.
Wendet man den Kantenoperator auf das Ergebnisbild an, so kann man quasi die zweite Ableitung bilden, d. h., es werden die Änderungen des Helligkeits-Gradienten sichtbar. Die Kanten treten in der zweiten Ableitung meist am deutlichsten hervor. Feine Kanten können hierbei jedoch untergehen und bleiben unentdeckt.
Der größte Unterschied verschiedener Kantendetektoren besteht im Allgemeinen im verwendeten Kantenoperator.
Für eine korrekte Kantendetektion sind in der Regel vier Schritte notwendig:
- Glätten: Unterdrücke so viel Rauschen wie möglich, ohne die echten Kanten zu zerstören.
- Verbesserung: Wende einen Filter an, um die Qualität der Bildränder zu verbessern.
- Erkennung: Bestimme, welche Pixel als Rauschen verworfen werden sollen und welche beibehalten werden sollte. Normalerweise liefert die Schwellenwertbildung das Kriterium, das für die Erkennung verwendet wird.
- Lokalisierung: Bestimme die genaue Position einer Kante. Für einige Anwendungen kann es erforderlich sein, die Position einer Kante genauer als den Abstand zwischen den Pixeln zu bestimmen. Kantenverdünnung und Verknüpfung sind in der Regel in diesem Schritt erforderlich.[2]
Kantendetektion mit Ableitungen
Ein digitales Bild ist eine zweidimensionale Funktion. Daher werden Operatoren, die Kanten beschreiben, mit partiellen Ableitungen ausgedrückt. Punkte, die an einer Kante liegen, können erkannt werden durch:
- Erfassen lokaler Maxima oder Minima der ersten Ableitung
- Erfassen der Nullstellen der zweiten Ableitung
Weil ein digitales Bild keine kontinuierliche Funktion ist, sondern eine diskrete Funktion von neben einander liegenden Pixeln, kann man die partiellen Ableitungen nicht direkt bilden. Stattdessen muss man, um die Ableitungen von Farbwerten zu berechnen, sie mit endlichen Differenzen annähern:
1. Ableitung
2. Ableitung
Das kann man auf zwei Dimensionen verallgemeinern:[2]
Die bekanntesten Kantenoperatoren (auch Kantenfilter) sind:
Für den Menschen ist Kantendetektion eine wesentliche Voraussetzung zur visuellen Objekterkennung. Sein Sehapparat leistet diese Aufgabe hauptsächlich mit der lateralen Hemmung. Dadurch werden sogar feinste Linienstrukturen aus größerer Distanz erkennbar, etwa dünne Drähte oder ferne Wegverläufe. Allerdings sind auch optische Täuschungen möglich, etwa teilweise bei den sog. Marskanälen oder den Machschen Streifen.