Sobel- vs. Canny-Kantendetektor
Schicke ein Testbild durch die vollständige Kantenerkennungs-Pipeline hinter maschinellem Sehen — Graustufen, Gauß-Weichzeichnung, Sobel-Gradienten, Non-Max-Suppression, Canny-Hysterese — und fahre über jeden Schritt, um die Mathematik hinter einem einzelnen Pixel zu untersuchen.
warum erst geglättet wird und warum zwei Schwellen 🖖
Eine Ableitung verstärkt alles, was man ihr gibt — auch Rauschen. Leitest du ein Rohbild direkt ab, sieht jede Ein-Pixel-Schwankung wie eine Kante aus. Die vorherige Faltung mit einem Gauß-Kern (Schritt 2) mittelt dieses Rauschen weg, ohne die großräumigen Intensitätsänderungen zu beeinträchtigen, die echte Kanten sind — deshalb glättet jeder praktische gradientenbasierte Detektor, bevor er ableitet. Die Sobel-Kerne selbst sind separierbare Näherungen der partiellen Ableitungen ∂I/∂x und ∂I/∂y, gewichtet 1-2-1 entlang der senkrechten Achse, um die Schätzung zur Mittelzeile bzw. -spalte hin zu verzerren. Eine einzelne Schwelle auf den resultierenden Betrag erzwingt eine unmögliche Wahl: setzt man sie niedrig, sprenkelt Rauschen die Ausgabe; setzt man sie hoch, zerfallen kontrastarme Kanten in gestrichelte Fragmente. Hysterese (Schritt 6) entkommt diesem Kompromiss, indem sie zwei Schwellen statt einer verwendet — die obere Schwelle (T_high) findet Kanten, bei denen sie sich sicher ist, und die untere Schwelle (T_low), die nur auf Pixel angewendet wird, die bereits eine starke Kante berühren, lässt eine echte Kontur durch eine vorübergehend schwache Stelle weiterlaufen, ohne dass Rauschen selbst eine Kontur beginnen kann. Dieselbe Doppelschwellen-Idee wird bei der Flood-Fill-Segmentierung und in Schmitt-Trigger-Schaltungen verwendet, überall dort, wo eine einzelne Schwelle flackern würde.
Zwei Fragen an ein Bild 🖖
Sobel und Canny stellen an dieselbe Aufnahme unterschiedliche Fragen. Sobel erzeugt eine Gradientenkarte: Jeder Pixel erhält einen Wert dafür, wie stark sich die Helligkeit dort ändert, sodass Kanten dick und in Graustufen erscheinen, wie ein weiches Leuchten. Canny nimmt genau diesen Gradienten und erzwingt eine Entscheidung — die Non-Maximum-Suppression behält nur den hellsten Pixel quer über jeden Kamm und dünnt das Leuchten zu einer scharfen Ein-Pixel-Linie aus, die dann als Kante eingestuft wird oder nicht. Wechsle zwischen den Reitern Gradient und Canny, um zu sehen, wie eine verschwommene Karte zu einer sauberen Kontur zusammenfällt.
Cannys Kanten bergen einen eingebauten Zielkonflikt 🖖
John Canny hat sich nicht zu einem Rezept vorgetastet. In seiner Arbeit von 1986 formulierte er die Kantenerkennung als Optimierung mit drei Zielen — echte Kanten finden, sie genau lokalisieren und pro Kante nur einmal ansprechen — und löste sie mit der Variationsrechnung; die Lösung war fast exakt die erste Ableitung einer Gaußfunktion. Der Haken, den er ebenfalls bewies: Detektion und Lokalisierung wirken gegeneinander, je breiter die Glättung wird — ein größeres σ findet schwächere Kanten, verschmiert aber ihre Position, und kein einzelnes σ ist in beidem am besten. Schiebe σ und beobachte es.
Beispielaufgaben
- Klare Formen - Geometrische Formen — Standard-Canny-Einstellungen, saubere binäre Kantenkarte
- Schachbrett-Gradient - Schachbrett — ideale Stufenkanten, maximale Sobel-Antwort an den Übergängen
- Leiterbahnen - Leiterplatte — niedriges s erhält dünne Kupferbahnen im Canny-Ergebnis
- Geglättetes Gesicht - Gesicht mit s=2.5 — starke Weichzeichnung entfernt Textur, strukturelle Kanten bleiben erhalten