Kapitel 12: Bildverarbeitung - Lokale Operatoren
Lokale Bildoperatoren (local image operators) transformieren jeden Pixel abhängig von seiner Nachbarschaft. Kernwerkzeug ist die Faltung (convolution) mit einem Kernel: Weichzeichner (Mittelwert, Gauss), Kantendetektoren (Differenz, Sobel, Laplace), der Kontrastfilter (sharpening), die nicht-linearen Rangordnungsoperatoren (Median, Dilatation, Erosion, Opening, Closing) sowie die Segmentierung über Zusammenhangskomponenten und Flood Fill.
Überblick
Ein Punktoperator (point operator) verändert jeden Pixel für sich allein, ohne die Nachbarn zu betrachten (z.B. Helligkeit, Kontrast, Gamma, Farbtransformation). Ein lokaler Bildoperator (local image operator) dagegen berechnet den neuen Wert eines Pixels aus dem Pixel und seinen Nachbarn. Genau das leistet die Faltung.
Roter Faden (auf mehreren Zwischenfolien wiederholt):
- Weichzeichner (blur/smoothing): Mittelwertoperator, Gauss-Filter
- Kantendetektoren (edge detectors): Differenzoperator und Sobel (1. Ableitung), Laplace (2. Ableitung)
- Kontrastverbesserung (contrast enhancement): Sharpening-Filter, motiviert durch den Mach-Band-Effekt
- Rangordnungsoperatoren (rank-order / morphological operators): Median, Erosion, Dilatation, Opening, Closing
- Segmentierung (segmentation): Zusammenhangskomponenten (ZHK) und Flood Fill
Faltung, Kernel und Nachbarschaften
Faltung (convolution): Der neue Wert eines Pixels ist die gewichtete Summe aus dem Pixel und seinen Nachbarn. Die Gewichte stehen in der Faltungsmatrix / im Kernel (convolution matrix, kernel), einer kleinen (typisch 3x3) Matrix, die Pixel für Pixel über das Bild geschoben wird.
Zwei Nachbarschaftsbegriffe:
- 4er-Nachbarschaft (N4): die 4 direkt anliegenden Pixel (oben, unten, links, rechts) - kreuzförmig.
- 8er-Nachbarschaft (N8): alle 8 umgebenden Pixel inklusive Diagonalen - der volle 3x3-Block um das Zentrum.
Die Faltungsformel für einen 3x3-Kernel (N8):
mit = Eingabebild, = Kernel, = Faltungsergebnis.
Warum ungerade Kernelgrössen (3x3, 5x5)? Nur bei ungerader Kantenlänge gibt es genau ein Zentrum (central pixel), das eindeutig durch das Ergebnis ersetzt wird. Bei gerader Grösse läge das Zentrum zwischen vier Pixeln und das Ergebnis würde sich um einen halben Pixel verschieben. Deshalb sind Kernel praktisch immer 3x3, 5x5, 7x7 usw.
Identitätsoperator
Der Identitätsoperator (identity operator) hat eine 1 in der Mitte, sonst nur Nullen. Eingabe und Ergebnis sind identisch - er dient als Ausgangspunkt für andere Kernel.
Weichzeichner: Mittelwert und Gauss
Mittelwertoperator (box blur)
Der Mittelwertoperator (mean filter, box blur) besteht aus lauter Einsen und bildet den Durchschnitt der 9 Werte. Damit das Ergebnis im Grauwertbereich bleibt, wird mit normiert:
Er macht Grauwertbereiche homogener (Blur), verwischt aber auch Kanten.
Randproblem (worked example): Am Bildrand liegen nicht alle 9 Kernelpositionen im Bild. Deckt der Kernel bei einem einzelnen weissen Pixel (255) nur 8 der 9 Positionen ab, so ergibt sich:
Gauss-Filter
Der Gauss-Filter (Gaussian filter) gewichtet die Mitte stärker und wirkt dadurch natürlicher als der Mittelwert. Kernelsumme = 16, Normierung :
Grösserer Gauss-Kernel (5x5, Summe 256, Normierung ):
Je grösser der Kernel, desto stärker die Unschärfe. Die Kernelgrösse hängt von Auflösung und gewünschtem Effekt ab.
Lineare Rücktransformation: Rechnet man ohne integrierten Normierungsfaktor, liegen die Faltungsergebnisse ausserhalb und werden linear zurückabgebildet:
- Nach Mittelwertoperator:
- Nach Gauss-Filter:
Gerichteter Mittelwert (motion blur)
Ist der Kernel nur eine Zeile oder Spalte lang, verwischt er nur in eine Richtung:
Faltung farbiger Bilder (RGB)
Ein Farbbild wird in die drei Kanäle R, G, B zerlegt, jeder Kanal wird als Grauwertbild einzeln gefiltert, anschliessend werden die Kanäle wieder zu einem Farbbild kombiniert.
Mach-Band-Effekt (Motivation für Kontrastverstärkung)
Der Mach-Band-Effekt (Mach band effect, Ernst Mach 1865) ist ein Wahrnehmungsphänomen: An Helligkeitsübergängen (Kanten) nimmt das Auge höheren Kontrast wahr, als physikalisch vorhanden ist. Gleichbleibende Flächenreize werden gedämpft, Kontraste überzeichnet - an der Kante entstehen ein Über- und ein Unterschwinger (over-/undershoot). In der Radiologie kann das zu Fehldeutungen führen (verstärkte Hell-Dunkel-Kontraste werden z.B. fälschlich als Karies interpretiert). Der Kontrastverbesserungsfilter wurde mathematisch so entwickelt, dass er Kanten genau so betont, wie es unsere Wahrnehmung tut.
Kantendetektoren I: Differenzoperator (1. Ableitung)
Der Differenzoperator (difference operator, gradient) erkennt Kanten über die diskrete 1. Ableitung der Grauwerte. Wo die 1. Ableitung ungleich Null ist, liegt eine Kante.
Kontinuierlich:
Diskret im Rasterbild ():
Kernel für vertikale Kanten und für horizontale Kanten:
Eigenschaften: markiert Kanten nur 1 Pixel breit, ist aber rauschempfindlich. Nimmt man Nachbarn hinzu, wird der Operator robuster (horizontale Variante):
Wertebereich und lineare Abbildung: Das Ergebnis liegt in und muss auf abgebildet werden:
Also: Mittelgrau 127, (schwarz), (weiss). Das Vorzeichen liefert die Kantenrichtung: eine linke Kante erscheint hell, die gegenüberliegende dunkel.
Kantendetektoren II: Sobel-Operator
Der Sobel-Operator (Sobel operator) ist ein Differenzoperator mit zusätzlicher Puffer-Zeile bzw. Puffer-Spalte (buffer row/column). Dadurch wird er robuster gegen Rauschen, markiert Kanten aber mehrere Pixel breit (im Gegensatz zur 1-Pixel-Kante des reinen Differenzoperators).
Vier Varianten:
Kantenoperator ins Eingabebild einfügen
Um Kanten zu betonen, ohne das Original zu verlieren, addiert man das -fache der Identität zum Differenzoperator ():
Je grösser , desto stärker dominiert das Original und desto subtiler die Kantenbetonung.
Kantendetektoren III: Laplace-Operator (2. Ableitung)
Der Laplace-Operator (Laplace operator) erkennt Kanten über die 2. Ableitung. Der Nulldurchgang (zero crossing) der 2. Ableitung liegt genau an der Kante. Er ist isotrop, reagiert also gleichermassen auf Zeilen- und Spaltenkanten.
Kontinuierlich und diskret:
Der Kernel entsteht als Summe der 2. Ableitung in Zeilen- und in Spaltenrichtung (Kernelsumme = 0):
Vom Laplace zum Kontrastverbesserungsfilter (Sharpening)
Damit die Kantenbetonung dem Mach-Band-Effekt entspricht (helle Seite heller, dunkle Seite dunkler), wird der Laplace zunächst invertiert:
Der Kontrastverbesserungsfilter / Sharpening-Kernel (contrast enhancement / sharpening filter) entsteht durch Addition des -fachen der Identität (also ):
Mit ist die Kernelsumme , der Filter also helligkeitserhaltend.
Worked Example: Faltung mit dem Sharpening-Kernel (Ergebnis 320)
Angewandt auf einen Bildausschnitt mit Zentralpixel 105 (obere/linke Nachbarn teils am Rand mit Zero-Padding = 0, Nachbar oben 102, Nachbar unten 103):
Das Ergebnis 320 liegt über 255, weshalb eine Rücktransformation (Clipping oder lineare Abbildung) nötig ist. Der überhöhte Wert an der Kante ist genau der gewünschte Schärfungseffekt.
Rangordnungsoperatoren (morphologische Operatoren)
Rangordnungsoperatoren (rank-order operators) tasten das Bild - ähnlich der Faltung - Pixel für Pixel ab, verwenden aber statt eines Kernels ein Strukturelement (structuring element), das beliebige Formen annehmen kann. Die abgedeckten Grauwerte werden nach Grösse sortiert (); der Zentralpixel wird durch den Wert an einer bestimmten Rangposition ersetzt. Diese Operatoren sind nicht-linear (Sortierung statt gewichteter Summe).
Ersetzungsregeln bei N8 (9 Werte, sortiert ):
| Operator | Regel | Wirkung |
|---|---|---|
| Median | (Mittelwert der Rangfolge) | Rauschen weg, Kanten scharf |
| Dilatation | (Maximum) | helle Bereiche wachsen |
| Erosion | (Minimum) | dunkle Bereiche wachsen |
Medianoperator
Der Medianoperator (median filter) ersetzt den Zentralpixel durch den mittleren Grauwert der sortierten Liste (bei N8: , der 5. von 9 Werten). Er beseitigt isolierte fehlerhafte Bildpunkte (Impulsrauschen) und verwischt dabei die Kanten nicht - der entscheidende Vorteil gegenüber dem Mittelwertoperator.
Worked Example (Median 3x3): Bei einem Ausschnitt aus Werten 99 (dunkel) und 144 (hell) mit einem einzelnen Störpixel werden die 9 überdeckten Werte sortiert und der 5. Wert () genommen. Ein einzelner Ausreisser wandert bei der Sortierung an die Ränder ( oder ) und wird so nie ausgewählt; die diagonale 99/144-Kante bleibt aber erhalten, weil dort die Mehrheit der Nachbarn den korrekten Wert liefert.
Dilatation und Erosion
Allgemein arbeiten Dilatation und Erosion mit einem Strukturelement auf dem Bild :
( laufen über den Geltungsbereich des Strukturelements.)
- Dilatation (dilation) = Maximum (): die hellen Bildbereiche (Vordergrundobjekte) dehnen sich aus.
- Erosion (erosion) = Minimum (): die dunklen Bereiche dehnen sich aus, weisse Pixelbereiche schrumpfen um eine Pixelschicht.
Worked Example (Dilatation/Erosion): Auf demselben 99/144-Ausschnitt breiten sich nach Dilatation die hellen 144er-Werte aus (mehr 144 im Ergebnis, helle Region wächst um eine Pixelschicht). Nach Erosion breiten sich umgekehrt die dunklen 99er-Werte aus.
Opening und Closing
Kombinationen aus Erosion und Dilatation ( = Anzahl Durchläufe):
- Opening (opening) danach . Zweck: Rauschen eliminieren (kleine, isolierte Vordergrundpixel entfernen).
- Closing (closing) danach . Zweck: Lücken schliessen innerhalb der Vordergrundobjekte.
Reihenfolge ist ergebnisrelevant. Bei der Pfeil-Aufgabe (erst Rauschen weg, dann Lücken zu) liefert die Reihenfolge erst Closing, dann Opening (Variante B) ein deutlich besseres Ergebnis als die umgekehrte Reihenfolge (Variante A). Opening und Closing sind nicht vertauschbar.
Segmentierung
Segmentierung (segmentation) ist die inhaltliche Interpretation eines Bildes auf Pixelebene: Anhand von Pixeleigenschaften (Grauwert/Farbe, Nachbarschaft) wird erkannt, welche Pixel zu einem Objekt gehören; Pixel mit homogenen Eigenschaften werden zu einer Gruppe zusammengefasst.
Semantische Segmentierung (semantic segmentation) teilt das Bild ebenfalls in Klassen, entscheidend ist hier aber nicht die reine Pixeleigenschaft, sondern die Zugehörigkeit zu einer Objektklasse (z.B. Baum, Auto, Fahrbahn, Hintergrund).
Binarisierung (binarization, thresholding): Umwandlung in ein Schwarz-Weiss-Bild über einen Schwellwert (threshold). Der optimale Schwellwert lässt sich aus dem Histogramm ablesen (z.B. erstes Minimum nach dem Weiss-Peak). Beispiel Pfeil: Schwellwert 127 liefert ein verrauschtes Bild, der histogrammbasierte Schwellwert 225 ein sauberes.
Zusammenhangskomponenten (ZHK) und Flood Fill
Eine Zusammenhangskomponente / ZHK (connected component, CC) ist eine Gruppe zusammenhängender gleichfarbiger Pixel. Ein Bild wird segmentiert, indem man seine Zusammenhangskomponenten bildet.
Zentrale Regel (WS2025 prüfungsrelevant): Vorder- und Hintergrund müssen immer mit entgegengesetztem Nachbarschaftsverhältnis ermittelt werden - Vordergrund N4 Hintergrund N8 (und umgekehrt). Grund: Bei einem N4-Vordergrund sind diagonal berührende Pixel nicht verbunden (die Ecken zählen nicht). Würde man den Hintergrund ebenfalls mit N4 zählen, könnte er durch dieselben diagonalen Lücken "hindurchfliessen" und Vordergrundobjekte würden fälschlich getrennt bzw. verbunden. Nur die entgegengesetzte Wahl (eine Seite N4, die andere N8) ergibt eine topologisch konsistente Aufteilung.
Worked Example (ZHK-Zählung): Dasselbe Pixelmuster in einem 8x8-Raster liefert je nach Nachbarschaft unterschiedliche Komponentenzahlen:
| Ebene | mit N4 | mit N8 |
|---|---|---|
| Vordergrund | 7 ZHK | 2 ZHK |
| Hintergrund | 4 ZHK | 1 ZHK |
Diagonal berührende Pixel bilden unter N8 eine gemeinsame Komponente, unter N4 nicht - daher die stark abweichenden Zahlen.
Flood Fill (rekursives Fluten)
Flood Fill (flood fill algorithm) bildet eine Zusammenhangskomponente rekursiv und markiert alle zusammenhängenden Vordergrundpixel mit derselben Marke (label). Ablauf (Pseudocode-Struktur der Vorlesung):
RekursivesFluten():
marke = 0
fuer alle Zeilen j:
fuer alle Spalten i:
falls g(i,j) == 255: // unmarkierter Vordergrundpixel
marke = marke + 1 // neue Komponente beginnt
PixelAnlagern(i, j, marke)
PixelAnlagern(i, j, marke):
fuer alle Nachbarpositionen (k,l) in N4 bzw. N8:
falls g(k,l) == 255: // noch unmarkierter Vordergrund
g(k,l) = marke // markieren
PixelAnlagern(k, l, marke) // rekursiv weiterfluten
Jeder Aufruf der äusseren Schleife, der auf einen noch unmarkierten Vordergrundpixel (Wert 255) trifft, startet eine neue Marke und flutet von dort aus über alle erreichbaren Nachbarn. Am Ende trägt jede ZHK eine eindeutige Marke. So lässt sich beim Pfeil-Beispiel das grösste Vordergrundobjekt behalten und kleinere Reste (übrig gebliebene Pixelhaufen) verwerfen.
Anwendung: Bildvorverarbeitung (Fahrspurerkennung)
Durchgängiges Beispiel (lane detection): JPEG Grauwertbild (Helligkeitskanal) Binarisierung (Histogramm, Schwellwert ca. 135) Kantenextraktion mit Sobel Ausdünnen auf 1 Pixel Breite (Rangordnungsoperatoren bzw. in der Praxis der Canny Edge Detector) Hough-Transformation.
- Hough-Transformation (Hough transform): sucht Geraden im Kantenbild und extrahiert jene, die (im Fahrspurbeispiel) nicht senkrecht verlaufen und die meisten Pixel vereinen. Voraussetzung: Kanten müssen 1 Pixel breit sein, sonst werden pro Kante zwei parallele Geraden erkannt.
- Canny Edge Detector (Canny edge detector): praxisüblicher Detektor, der nahezu alle Kanten auf eine Pixelbreite ausdünnt.
- Kalman-Filter (Kalman filter, Ausblick): iteratives Schätzverfahren aus fehlerbehafteten Beobachtungen (z.B. markierte Strassenpixel zu einer Linie verschmelzen, Object Tracking).
Zusammenfassende Pipeline (5 Stufen): (1) Weichzeichnen (selektiv, kantenerhaltend) (2) Binarisierung (3) Rangordnungsoperatoren (4) Kantenextraktion oder Segmentierung (5) Hough-Transformation. Ab Schritt 4/5 beginnt die inhaltliche Bildanalyse.
Kernel-Übersicht
| Kernel | Matrix | Normierung / Summe | Zweck |
|---|---|---|---|
| Identität | 1 | unverändert | |
| Mittelwert | Weichzeichner | ||
| Gauss 3x3 | Weichzeichner (natürlicher) | ||
| Gauss 5x5 | siehe oben | starker Weichzeichner | |
| Differenz (vert. Kanten) | 1. Ableitung, 1 Pixel breit | ||
| Differenz (horiz. Kanten) | 1. Ableitung | ||
| Sobel-x (vert. Kanten) | rauschrobust, breiter | ||
| Sobel-y (horiz. Kanten) | rauschrobust, breiter | ||
| Laplace | Summe 0 | 2. Ableitung, isotrop | |
| inv. Laplace | Summe 0 | Vorstufe Sharpening | |
| Sharpening () | Summe 1 | Kontrast/Schärfung |
Prüfungsrelevanz
- Punktoperator vs. lokaler Operator sicher abgrenzen (Nachbarschaft ja/nein) und Beispiele je Kategorie nennen.
- Faltungsformel und eine konkrete 3x3-Faltung rechnen (Zero-Padding am Rand). Das Sharpening-Beispiel mit Ergebnis 320 beherrschen.
- Kernel auswendig: Identität, Mittelwert (), Gauss (), Laplace , invertierter Laplace, Sharpening , Sobel-Varianten, Differenzoperator.
- Normierungen: Mittelwert , Gauss 3x3 , Gauss 5x5 ; Differenzoperator .
- 1. vs. 2. Ableitung: Differenz/Sobel = 1. Ableitung (Peak an Kante); Laplace = 2. Ableitung (Nulldurchgang an Kante). Diskrete Formeln bzw. .
- Sobel vs. Differenzoperator: Sobel mit Puffer-Zeile/-Spalte, rauschrobust aber mehrere Pixel breit; Differenzoperator 1 Pixel breit aber rauschanfällig.
- Rangordnungsoperatoren sind nicht-linear (Sortierung, Strukturelement statt Kernel). Regeln N8: Median , Dilatation , Erosion .
- Median vs. Mittelwert: Median entfernt Impulsrauschen ohne Kantenverwaschung (klassische Prüfungsfrage).
- Erosion/Dilatation-Richtung: Dilatation = Max = helle Bereiche wachsen; Erosion = Min = dunkle Bereiche wachsen / weisse schrumpfen.
- Opening = Erosion dann Dilatation (Rauschen weg); Closing = Dilatation dann Erosion (Lücken zu). Reihenfolge ist ergebnisrelevant (Variante A vs. B).
- ZHK: entgegengesetzte Nachbarschaft für Vorder-/Hintergrund; N4 vs. N8 liefert unterschiedliche Komponentenzahlen (Zählaufgabe). Flood-Fill-Ablauf verstehen.
- Hough braucht 1-Pixel-breite Kanten (sonst doppelte Geraden); Canny dünnt aus.
- Mach-Band-Effekt als Wahrnehmungsmotivation des Kontrastfilters (Over-/Undershoot, Ernst Mach 1865, radiologische Fehldeutung).
Typische Fehler
- Zero-Padding am Bildrand vergessen (Randproblem: nur 8 von 9 Positionen gültig, z.B. ).
- Normierungsfaktor weglassen und dadurch Werte ausserhalb nicht zurücktransformieren.
- Kantenrichtung verwechseln: die Orientierung des Kernels bestimmt, ob vertikale oder horizontale Kanten gefunden werden.
-
- und 2. Ableitung vertauschen (Peak an der Kante vs. Nulldurchgang an der Kante).
- Erosion und Dilatation in der Wirkungsrichtung verwechseln (hell wächst bei Dilatation, dunkel bei Erosion).
- Opening und Closing vertauschen oder die Reihenfolge der beiden Schritte als beliebig ansehen.
- Bei ZHK dieselbe Nachbarschaft für Vorder- und Hintergrund verwenden statt der entgegengesetzten.
- Kernel mit gerader Kantenlänge verwenden (kein eindeutiges Zentrum, Verschiebung um einen halben Pixel).
- Hough auf mehrere Pixel breite Kanten anwenden und dadurch doppelte Geraden pro Kante erhalten.
Glossar
| Deutsch | English |
|---|---|
| Bildverarbeitung | image processing |
| lokale Bildoperation | local image operation |
| Punktoperator | point operator |
| Faltung | convolution |
| Faltungsmatrix / Kernel | convolution matrix / kernel |
| Faltungsergebnis | convolution result |
| 4er-/8er-Nachbarschaft (N4/N8) | 4-/8-neighborhood |
| Identitätsoperator | identity operator |
| Mittelwertoperator | mean filter / box blur |
| Gauss-Filter | Gaussian filter |
| Weichzeichner | blur / smoothing filter |
| Grauwert | gray value |
| Mach-Band-Effekt | Mach band effect |
| Differenzoperator | difference operator (gradient) |
| 1. / 2. Ableitung | 1st / 2nd derivative |
| Sobel-Operator | Sobel operator |
| Puffer-Zeile/-Spalte | buffer row/column |
| Laplace-Operator | Laplace operator |
| invertierter Laplace-Operator | inverted Laplace operator |
| Kontrastverbesserungsfilter | contrast enhancement / sharpening filter |
| Kantendetektor / Kantenbild | edge detector / edge image |
| Canny Edge Detector | Canny edge detector |
| Rangordnungsoperator | rank-order operator |
| Strukturelement | structuring element |
| Medianoperator | median filter |
| Dilatation | dilation |
| Erosion | erosion |
| Opening / Closing | opening / closing |
| Rauschen | noise |
| Binarisierung | binarization / thresholding |
| Schwellwert | threshold |
| Histogramm | histogram |
| Segmentierung | segmentation |
| semantische Segmentierung | semantic segmentation |
| Zusammenhangskomponente (ZHK) | connected component |
| Nachbarschaftsverhältnis | neighborhood relation |
| Rekursives Fluten / Flood Fill | flood fill algorithm |
| Marke | label |
| Vordergrund / Hintergrund | foreground / background |
| Hough-Transformation | Hough transform |
| Fahrspurerkennung | lane detection |
| Kalman-Filter | Kalman filter |
| Bildvorverarbeitung | image preprocessing |
| Helligkeitskanal | brightness / luminance channel |