Aufgabe vollständig gelöst
-
Gradientenbetrag an Pixel (31, 3) des Schachbrett-Testbildes 9 Schritte
Das Schachbrett-Testbild — rein schwarz und weiß, Quadrate 32 Pixel breit — bei σ = 1,0 mit dem 3×3-Weichzeichnungsfilter, Tlo = 30 und Thi = 80. Leiten Sie den Gradientenbetrag am Pixel (31, 3) ab, der letzten weißen Spalte vor der ersten vertikalen Grenze, und ermitteln Sie anschließend, wie viele Pixel breit die Kante ausfällt, zu der er gehört.
-
Zuerst Graustufen, und bei diesem Bild bewirkt das nichts: Die drei Gewichtungen addieren sich zu genau 1, sodass ein Pixel mit gleichen Rot-, Grün- und Blauwerten seinen Wert behält. Weiß bleibt 255, Schwarz bleibt 0, daher stammt jede nachstehende Zahl aus nur diesen beiden Werten.
-
Die Gauß-Gewichte fallen mit dem Quadrat des Abstandes ab. Bei σ = 1 erhält das Zentrum 1, die 4 Pixel, die sich eine Kante teilen, erhalten e-0,5 = 0,6065 und die 4 Ecken erhalten e-1 = 0,3679; die Division durch die Summe 4,8976 macht sie zu einem gewichteten Mittelwert.
-
Zeile 3 liegt weit innerhalb eines horizontalen Streifens, sodass die 3 Zeilen jedes Fensters dort identisch sind und sich die vertikale Struktur des Kernels aufhebt. Es zählen nur seine Spaltensummen, und davon gibt es nur 2.
-
Weichzeichnen über die Grenze hinweg. Bei x = 31 deckt das Fenster 2 weiße Spalten und 1 schwarze ab; bei x = 32 deckt es 1 weiße und 2 schwarze ab. Der harte Sprung von 255 auf 0 ist zu der Rampe 255, 185, 70, 0 geworden — diese mittleren 2 Werte, gerundet, sind diejenigen, die der Inspektor anzeigt.
-
Sobel gewichtet die linke Spalte mit -1, -2, -1 und die rechte mit +1, +2, +1 und die mittlere Spalte überhaupt nicht. Wenn alle 3 Zeilen gleich sind, reduzieren sich diese Gewichte auf einen einzigen Faktor von 4, sodass die gesamte Faltung das 4-Fache der Differenz zwischen den Spalten auf beiden Seiten beträgt.
-
Der vertikale Gradient verschwindet aus dem spiegelbildlichen Grund: Die Zeile über dem Pixel und die Zeile darunter bestehen aus denselben 3 Zahlen, sodass die Summe +1, +2, +1 die Summe -1, -2, -1 Glied für Glied aufhebt. Diese Kante verläuft im Gradienten rein horizontal, was den nächsten Schritt einfach macht.
-
Kombiniert man beide, entspricht der Betrag genau dem horizontalen.
-
Vergleicht man dies mit dem Ergebnis derselben Kante ohne Weichzeichnung: ein reiner Sprung von 255 über denselben Kernel. Die Glättung hat 280 Einheiten gekostet, knapp über 27 % der verfügbaren Antwort, und das ist der Preis der Rauschimmunität — kein Rundungsverlust, sondern ein bewusster Kompromiss.
-
Nun wiederholen wir das eine Spalte weiter rechts. Bei x = 32 liest das Fenster 185, 70, 0, sodass die Differenz wieder -185 und der Betrag wieder 740 beträgt. Eine Spalte weiter außen auf beiden Seiten bricht die Differenz auf etwa -70 und der Betrag auf 280 ein.
Antwort
740 — und die Kante fällt 2 Pixel breit aus. Non-Maximum-Unterdrückung behält ein Pixel, wenn sein Betrag ≥ beiden Nachbarn entlang des Gradienten ist. Hier zeigt der Gradient entlang x, sodass Pixel 31 mit 280 zu seiner Linken und 740 zu seiner Rechten verglichen wird, Pixel 32 mit 740 und 280. Beide sind gleichauf, und ein Gleichstand erfüllt ≥, sodass beide überleben; bei 740 liegen beide um mehr als das 9-Fache über Thi = 80, sodass beide weiß herauskommen. Kein Schwellenwertpaar kann sie trennen, da Schwellenwerte nicht die Ursache sind. Die tatsächliche Grenze liegt bei x = 31,5, genau auf halbem Weg zwischen dem letzten weißen und dem ersten schwarzen Pixel, und eine symmetrische Weichzeichnung lässt den Gradienten symmetrisch um diese halbe Zahl — es gibt kein einzelnes Maximum zu finden. Das ist gut zu wissen, bevor man etwas einstellt: Eine doppelte Linie in einer Kantenkarte ist manchmal ein Fehler der Schwellenwertauswahl und manchmal Arithmetik, und hier ist es 740 = 740 auf einem Bild, dessen Quadrate zufällig eine ganze Zahl von Pixeln breit sind.
-
Quellen (1)
- Insight block 3 — the three criteria, and the trade-off between two of them: J. Canny, "A Computational Approach to Edge Detection." IEEE Transactions on Pattern Analysis and Machine Intelligence PAMI-8(6), 679–698, 1986.