13.03.2014 Aufrufe

PDF 3.6 MB - jkrieger.de

PDF 3.6 MB - jkrieger.de

PDF 3.6 MB - jkrieger.de

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Stoffzusammenfassung zur Bild- und<br />

Signalverarbeitung<br />

Jan Krieger<br />

23. September 2006


.<br />

’The time has come,’ the Walrus said,<br />

’To talk of many things:<br />

Of shoes – and ships – and sealingwax –<br />

Of cabbages – and kings –<br />

And why the sea is boiling hot –<br />

And whether pigs have wings.’<br />

– Tweedl<strong>de</strong>e in Through the Looking-Glass by Lewis Carrol<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 2 –


Inhaltsverzeichnis<br />

I Einführung 7<br />

1 Einleitung 8<br />

1.1 Aufbau und Motivation diese Skriptes . . . . . . . . . . . . . . . . . . . . . . . . . . . 8<br />

2 Grundlagen <strong>de</strong>r Bildverarbeitung 9<br />

2.1 Bilddaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9<br />

2.2 Bildrepräsentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9<br />

2.3 Gamma-Korrektur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10<br />

2.4 Farbbil<strong>de</strong>r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10<br />

2.5 Diskrete Bil<strong>de</strong>r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11<br />

3 Fourier-Darstellung von Bil<strong>de</strong>rn 13<br />

3.1 Sinus- und Cosinus-Schwingungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13<br />

3.1.1 Geometrische 1D-Repräsentation . . . . . . . . . . . . . . . . . . . . . . . . . 13<br />

3.1.2 Geometrische 2D-Repräsentation . . . . . . . . . . . . . . . . . . . . . . . . . 14<br />

3.2 Fourier-Reihen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16<br />

3.3 Fourier-Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18<br />

3.4 Diskrete Fourier-Transformation (DFT) . . . . . . . . . . . . . . . . . . . . . . . . . . 19<br />

3.5 Mehrdimensionale Fourier-Transformationen . . . . . . . . . . . . . . . . . . . . . . . 21<br />

<strong>3.6</strong> Eigenschaften <strong>de</strong>r Fourier-Transformation . . . . . . . . . . . . . . . . . . . . . . . . . 22<br />

<strong>3.6</strong>.1 Allgemeine Eigenschaften . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22<br />

<strong>3.6</strong>.2 Spezielle Eigenschaften <strong>de</strong>r diskreten Transformationen . . . . . . . . . . . . . 26<br />

3.7 DFT als diskrete unitäre Transformation und weitere Transformationen . . . . . . . . . 26<br />

3.8 Lokale Fourier-Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27<br />

4 Digitalisierung, Abtastung und Quantisierung 28<br />

4.1 Bil<strong>de</strong>rzeugung, Abtastung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29<br />

4.2 Quantisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32<br />

5 Bildrepräsentation 34<br />

5.1 Lauflängenkodierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34<br />

5.2 Quadtree/Octree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34<br />

5.3 Weitere Kodierungsmetho<strong>de</strong>n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35<br />

II Grundlegen<strong>de</strong> Operationen auf Bilddaten 36<br />

6 Punktoperationen und geometrische Operationen 37<br />

6.1 Punktoperationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37<br />

6.2 Beispiele für Punktoperationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38<br />

6.3 Geometrische Transformationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41<br />

7 Nachbarschaftsoperationen 42<br />

7.1 lineare verschiebungsinvariante Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . 42<br />

3


Inhaltsverzeichnis<br />

7.1.1 Faltungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42<br />

7.1.2 Eigenschaften von LSI-Filtern . . . . . . . . . . . . . . . . . . . . . . . . . . . 44<br />

7.2 Rangordnungsfilter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47<br />

7.3 rekursive Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48<br />

8 Multiskalenrepräsentation 50<br />

8.1 Pyrami<strong>de</strong>n-Zerlegungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50<br />

8.1.1 Gauß-Pyrami<strong>de</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50<br />

8.1.2 Laplace-Pyrami<strong>de</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51<br />

8.1.3 Richtungszerlegungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52<br />

8.2 Skalenraumtheorie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52<br />

8.2.1 Diffusionsgleichungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53<br />

8.2.2 Eigenschaften <strong>de</strong>s Skalenraumes . . . . . . . . . . . . . . . . . . . . . . . . . . 54<br />

III Einfache Merkmalsextraktion 55<br />

9 Mittelung 56<br />

9.1 Eigenschaften . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56<br />

9.2 Rechteckfilter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57<br />

9.3 Binomialfilter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58<br />

9.4 Schnelle großräumige Mittelung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61<br />

9.4.1 Mehrschrittmittelung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61<br />

9.4.2 Rekursive Mittelung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61<br />

9.5 nichtlineare und steuerbare Mittelung . . . . . . . . . . . . . . . . . . . . . . . . . . . 62<br />

9.5.1 Medianfilter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62<br />

9.5.2 gewichtete und einstellbare Mittelung . . . . . . . . . . . . . . . . . . . . . . . 62<br />

10 Kanten<strong>de</strong>tektion 64<br />

10.1 differentielle Merkmalsbeschreibung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64<br />

10.2 Ableitungsoperatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64<br />

10.3 Eigenschaften . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65<br />

10.4 Gradientenbasierte Ableitungsfilter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66<br />

10.5 Laplace-Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68<br />

10.6 Optimierung <strong>de</strong>r Kantenfilter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70<br />

10.6.1 Allgemeine Optimierungsansätze . . . . . . . . . . . . . . . . . . . . . . . . . 70<br />

10.6.2 Regularisierte Kanten<strong>de</strong>tektoren . . . . . . . . . . . . . . . . . . . . . . . . . . 70<br />

11 Einfache Nachbarschaften 73<br />

11.1 Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73<br />

11.2 Vektordarstellung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74<br />

11.3 Tensordarstellung erster Ordnung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75<br />

11.3.1 Strukturtensor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75<br />

11.3.2 An<strong>de</strong>re Tensordarstellungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77<br />

11.4 Lokale Wellenzahl und Phase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78<br />

11.4.1 Hilbertfilter und Hilberttransformation . . . . . . . . . . . . . . . . . . . . . . . 79<br />

11.4.2 Analytisches Signal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80<br />

11.4.3 Quadraturfilter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81<br />

12 Textur 83<br />

12.1 Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83<br />

12.2 Statistik erster Ordnung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84<br />

12.3 Orientierung und Textur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85<br />

12.4 Pyramidale Texturanalyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 4 –


Inhaltsverzeichnis<br />

13 Bewegungserkennung 86<br />

13.1 Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86<br />

13.2 Einfache Bewegungs<strong>de</strong>tektion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87<br />

13.3 Bewegung im Orts-Zeit- und Fourier-Raum . . . . . . . . . . . . . . . . . . . . . . . . 88<br />

13.3.1 Orts-Zeit-Raum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88<br />

13.3.2 Fourier-Raum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89<br />

13.4 Optischer Fluss und Kontinuitätsgleichung . . . . . . . . . . . . . . . . . . . . . . . . . 90<br />

13.5 Gradientenmetho<strong>de</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91<br />

13.5.1 Tensormetho<strong>de</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92<br />

1<strong>3.6</strong> Korrelationsmetho<strong>de</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93<br />

13.7 Phasenmetho<strong>de</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94<br />

14 Inverse Filterung 95<br />

IV Bildanalyse 97<br />

15 Segmentierung 98<br />

15.1 Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98<br />

15.2 Pixelorientierte Metho<strong>de</strong>n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98<br />

15.3 Kantenbasierte Segmentierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100<br />

15.4 Regionenorientierte Verfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101<br />

15.5 Mo<strong>de</strong>llbasierte Segmentierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103<br />

15.5.1 Regularisierung und Mo<strong>de</strong>llierung . . . . . . . . . . . . . . . . . . . . . . . . . 103<br />

15.5.2 Hough-Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103<br />

15.5.3 Kontinuierliche Mo<strong>de</strong>llierung: Variationsmetho<strong>de</strong> . . . . . . . . . . . . . . . . . 104<br />

15.5.4 Diffusionsmo<strong>de</strong>lle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105<br />

16 Morphologie 107<br />

16.1 Dilatation und Erosion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107<br />

16.2 Allgemeine morphologische Operationen . . . . . . . . . . . . . . . . . . . . . . . . . 108<br />

16.3 Zusammengesetzte morphologische Operationen . . . . . . . . . . . . . . . . . . . . . 109<br />

16.3.1 Öffnen und Schließen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109<br />

16.3.2 Hit-Miss-Operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110<br />

16.4 Extraktion von Rän<strong>de</strong>rn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111<br />

17 Formrepräsentation 112<br />

17.1 Momentbasierte Formmerkmale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112<br />

17.2 Richtungsketten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113<br />

17.3 Fourier<strong>de</strong>skriptoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114<br />

17.4 Formparameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115<br />

18 Klassifikation 117<br />

18.1 Problemstellung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117<br />

18.2 Einfache Klassifikationsverfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119<br />

18.2.1 Nachschaumetho<strong>de</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120<br />

18.2.2 Qua<strong>de</strong>rmetho<strong>de</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120<br />

18.2.3 Metho<strong>de</strong> <strong>de</strong>s geringsten Abstan<strong>de</strong>s . . . . . . . . . . . . . . . . . . . . . . . . . 120<br />

18.2.4 Metho<strong>de</strong> <strong>de</strong>r höchsten Wahrscheinlichkeit . . . . . . . . . . . . . . . . . . . . . 120<br />

V Mathematische Formelsammlung 121<br />

19 Komplexe Zahlen 122<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 5 –


Inhaltsverzeichnis<br />

Abbildungsverzeichnis 125<br />

A Weblinks 128<br />

Literaturverzeichnis 129<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 6 –


Teil I<br />

Einführung<br />

7


1 Einleitung<br />

1.1 Aufbau und Motivation diese Skriptes<br />

Diese Skript ist als Vorbereitung auf meine Diplomprüfung über die Vorlesung Bildverarbeitung bei Prof.<br />

Jähne (IWR, Uni Hei<strong>de</strong>lberg), wie ich sie im WS 05/06 gehört habe entstan<strong>de</strong>n. Ich habe vornehmlich<br />

<strong>de</strong>n Inhalt dieser Vorlesung zusammengefasst, die weitgehend <strong>de</strong>m Buch [Jähne 2005]. Ich hoffe die<br />

Darstellung in diesem Skript kann einigen Helfen, sich in das Gebiet einzuarbeiten, o<strong>de</strong>r sich auf eine<br />

Prüfung vorzubereiten.<br />

Im ersten Abschnitt wer<strong>de</strong>n zunächst einmal mathematische Grundlagen, wie etwa die Fouriertransformation<br />

diskutiert.<br />

Üblicherweise glie<strong>de</strong>rt sich die Klassifizierung <strong>de</strong>r Inhalte eines Bil<strong>de</strong>s in mehrere Schritte, die in Abb.<br />

1.1 dargestellt sind und im Detail in <strong>de</strong>n einzelnen Abschnitten abgehan<strong>de</strong>lt wer<strong>de</strong>n. Es muss nicht<br />

für alle Anwendungen <strong>de</strong>r volle Weg gegangen wer<strong>de</strong>n. In vielen Fällen kann man etwa schon vorher<br />

abbrechen (z.B. nach <strong>de</strong>r Objektbeschreibung etz.)<br />

Kalibrierung,<br />

geom. Trafo,<br />

Restaurierung<br />

Glättung<br />

Mittelung<br />

physikalisches Objekt/Signal<br />

(z.B. Szene, Laut etz.)<br />

Zeitserie, 2D-Bild,<br />

Bildsequenz<br />

digitale Daten<br />

Merkmalsbild<br />

Regionenbild<br />

Bildaufnahme<br />

(CCD, Mikrofon ...)<br />

Digitalisierung,<br />

Quantisierung<br />

Glättung<br />

Kanten<strong>de</strong>tektion,<br />

Bewegungsanalyse,<br />

Bestimmung einfacher Nachbarschaften,<br />

Texturbestimmung<br />

Segmentierung<br />

Formanalyse<br />

Klassifizierung<br />

Objektbeschreibung<br />

Bildaufnahme<br />

Bildverarbeitung<br />

Bildanalyse<br />

Objektklassen<br />

Abb. 1.1: Übersicht über die einzelnen Schritte einer Klassifizierung in <strong>de</strong>r Bildverarbeitung<br />

8


2 Grundlagen <strong>de</strong>r Bildverarbeitung<br />

2.1 Bilddaten<br />

Zunächst <strong>de</strong>nkt man bei Bildverarbeitung vor Allem an die computergestützte Verarbeitung von Kamerabil<strong>de</strong>rn.<br />

Der Titel dieses Skriptes wur<strong>de</strong> aber schon etwas allgemeiner gewählt. So können die selben<br />

Techniken, die für die Verarbeitung von Kameraaufnahmen angewen<strong>de</strong>t wer<strong>de</strong>n auch auf höher dimensionale<br />

Daten angewen<strong>de</strong>t wer<strong>de</strong>n. So wer<strong>de</strong>n hier etwa auch Sequenzen von Bil<strong>de</strong>rn betrachtet, die als<br />

drei-dimensionale Bil<strong>de</strong>r aufgefasst wer<strong>de</strong>n können. Genauso könnte man sich vorstellen eine Sequenz<br />

von drei-dimensionalen Bil<strong>de</strong>rn zu verarbeiten (insg. 4-dimensional). Etwas allgemeiner, kann man beliebig<br />

dimensionale Messdaten verarbeiten. Ein Beispiel wäre etwa die Daten, die eine Wetterstation zu<br />

verschie<strong>de</strong>nen Zeitpunkten misst (z.B. Temperatur innen/außen, Luftdruck, Luftfeuchte, Regenmenge,<br />

Windgeschwindigkeit). Dies ergäbe etwa schon ein sieben-dimensionales „Bild“.<br />

2.2 Bildrepräsentation<br />

Eine übliche Kamera liefert ein Bild mit N × M Bildpunkten (Pixeln). Je<strong>de</strong>m dieser Bildpunkte ⃗x =<br />

(x, y) ist ein Grauwert zugeordnet. Man kann also ein Bild als Funktion <strong>de</strong>r Variablen x, y auffassen:<br />

g(⃗x) : ⃗ R n → ⃗ R<br />

Hier gibt n die Dimensionalität <strong>de</strong>r Daten an. n = 1 steht für ein Zeilenbild, n = 2 für ein „normale“<br />

Bild, n = 3 für ein Volumenbild, wie es etwa in <strong>de</strong>r Medizin als Ausgabe eine Computertomographen<br />

auftaucht, o<strong>de</strong>r für eine Sequenz von 2D-Bil<strong>de</strong>rn usw.<br />

Übliche Computerbil<strong>de</strong>r liegen im Zahlenbereich g(⃗x) ∈ [0..255 = 2 8 − 1] o<strong>de</strong>r g(⃗x) ∈ [0..65535 =<br />

2 16 − 1]. Führt man punktweise, arithemtische Operationen mit Bil<strong>de</strong>r aus, wie etwa die Subtraktion<br />

g ′ (⃗x) = f(⃗y) − g(⃗y)<br />

so än<strong>de</strong>rt sich dieser Zahlenbereich. So könnte etwa das Ergebnis einer Subtraktion zweier Byte-Bil<strong>de</strong>r<br />

(aus [0..255]) <strong>de</strong>n minimalen Wert 0 − 255 = −255 und <strong>de</strong>n maximalen Wert 255 − 0 = 255 haben.<br />

Damit gilt dann g ′ (⃗x) ∈ [−255..255]. Dieser Bereich ist mit einem Byte nicht mehr darstellbar, sodass<br />

man eine <strong>de</strong>r folgen<strong>de</strong>n Operationen ausführen muss:<br />

• Erweiterung <strong>de</strong>s Datentyps: unsigned byte → signed int<br />

• Kompression <strong>de</strong>s Datenbereiches und Typkonversion: g ′ (⃗x) → g ′ (⃗x)/2 ∈ [−127..127] und<br />

unsigned byte → signed byte<br />

• Verschiebung <strong>de</strong>r Werte und Typkonversion: g ′ (⃗x) → g ′ (⃗x) + 255 ∈ [0..511] und unsigned<br />

byte → unsigned int<br />

Man kann die obigen Operationen auch kombinieren. So kann man etwa <strong>de</strong>n Wertebereich verschieben<br />

und danach verkleinern, also<br />

g ′ (⃗x) → ( g ′ (⃗x) + 255 ) /2 ∈ [0..255]<br />

Dann ist keine Anpassung <strong>de</strong>s Wertebereiches nötig. Das einfachste ist aber wohl mit genügend großen<br />

Datentypen zu rechnen. Man kann Bil<strong>de</strong>r natürlich auch als Gleitkommazahl darstellen. Dabei ist aber<br />

9


2 Grundlagen <strong>de</strong>r Bildverarbeitung<br />

zu beachten, dass Gleitkommarechnungen viel langsamer sind, als Integer-Rechnungen. Spätestens bei<br />

<strong>de</strong>r Fourier-Transformation wird man aber nicht mehr um Gleitkomma-Bil<strong>de</strong>r herumkommen, die dann<br />

evtl. auch noch komplex (g(⃗x) ∈ C) sein müssen.<br />

In vielen Bildverarbeitungssystemen sind spezielle Operationen implementiert, die als Sättigungsarithmetik<br />

bezeichnet wer<strong>de</strong>n. Dabei ergibt 0−n = 0 und 255+n = 255, n ∈ N. Die Ergebnisse können also<br />

nicht größer als die obere und kleiner als die untere Schranke <strong>de</strong>s Wertebereiches eines Pixels wer<strong>de</strong>n.<br />

Altervativ kann man auch Moduloarithmetik verwen<strong>de</strong>n, bei <strong>de</strong>r etwa a + m b := (a + b) mod 256<br />

gilt. Überschreitet das Ergebnis <strong>de</strong>n Wertebereich, so wird es von unten in <strong>de</strong>n Wertebereich projiziert.<br />

So ist etwa 240 + m 30 = 270 mod 256 = 14. Dies führt aber dazu, dass überlaufen<strong>de</strong> Rechnungen, die<br />

eigentlich zu sehr „hellen“ Werten führen sollten auf „dunkle“ Werte abgebil<strong>de</strong>t wer<strong>de</strong>n.<br />

2.3 Gamma-Korrektur<br />

Das menschliche Auge hat ein logarithmisches Helligkeitsempfin<strong>de</strong>n. Dies be<strong>de</strong>utet, dass kleine Unterschie<strong>de</strong><br />

bei niedrigen Intensitäten schwächer wahrgenommen wer<strong>de</strong>n, als kleine Unterschie<strong>de</strong> bei hohen<br />

Intensitäten. Die meisten Kameras haben aber eine lineare Charakteristik, sodass evtl. eine Korrektur<br />

nötig ist. Diese erfolgt so:<br />

g(⃗x) → [ g(⃗x) ] γ<br />

Durch Variation <strong>de</strong>s γ-Wertes kann man somit <strong>de</strong>n Kontrastumfang (Fähigkeit, Intensitätsunterschie<strong>de</strong><br />

wahrzunehmen) erhöhen. Für eine lineare Darstellung wählt man γ = 1.<br />

2.4 Farbbil<strong>de</strong>r<br />

Behan<strong>de</strong>lt man Farbbil<strong>de</strong>r, so muss <strong>de</strong>r Farbwert an einem Bildpunkt dargestellt wer<strong>de</strong>n. Dazu gibt es<br />

verschie<strong>de</strong>ne Farbsysteme. Einige gebräuchliche sind:<br />

• RGB: Je<strong>de</strong> Farbe wird durch additive Mischung aus <strong>de</strong>n Farben rot, grün und blau zusammengesetzt.<br />

Zu je<strong>de</strong>m Bildpunkt wird also ein 3-Tupel (r, g, b) gespeichert. Die Werte können üblicherweise<br />

im Bereich zwischen 0 und 255 (ein Byte je Wert), o<strong>de</strong>r [0..1] liegen. Die Werte geben dabei<br />

die Intensität <strong>de</strong>r jeweiligen Grundfarbe an. So erhält man beispielsweise die Farben in Abb. 2.1.<br />

schwarz<br />

(0,0,0)<br />

weiß<br />

(255,255,255)<br />

rot<br />

(255,0,0)<br />

grün<br />

blau<br />

(0,255,0)<br />

(0,0,255)<br />

cyan<br />

(0,255,255)<br />

gelb<br />

(255,255,0)<br />

magenta<br />

(255,0,255)<br />

grau 50%<br />

(127,127,127)<br />

rot 50%<br />

(127,0,0)<br />

grün<br />

(0,127,0)<br />

blau<br />

(0,0,127)<br />

Abb. 2.1: Beispiele für RGB-Farben<br />

Übliche BIldschirme und Grafikkarten für PCs basieren auf diesem Farbmo<strong>de</strong>ll.<br />

• HSB: Hier wer<strong>de</strong>n ebenfalls drei Werte abgespeichert. Der erste Wert h gibt die Farbe an (Winkel<br />

im Frabkreis), wobei 360 <strong>de</strong>r Farbe rot entspricht, 120 ist grün und 240 blau. Die restlichen Farben<br />

liegen dazwischen, etwa gelb bei 60 und magenta bei 300. Der zweite Wert s gibt die Sättigung<br />

und <strong>de</strong>r dritte Wert b die Helligkeit <strong>de</strong>r Farbe an.<br />

• CMYK: Dieses Mo<strong>de</strong>ll wird im Offset-Druck eingesetzt, wo man Bil<strong>de</strong>r aus <strong>de</strong>n Farben Cyan<br />

(c), Magenta (m), gelb (y) und schwarz (k) zusammensetzt. Viele Bildbearbeitugsprogramm<br />

unterstützen dieses Farbformat nicht. Es wird aber auch von „normalen“ Tintenstrahl- und Laser-<br />

Farbdruckern eingesetzt.<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 10 –


2 Grundlagen <strong>de</strong>r Bildverarbeitung<br />

2.5 Diskrete Bil<strong>de</strong>r<br />

Die obige Definition be<strong>de</strong>utet ein kontinuierliche Funktion. Oft setzt sich aber ein Bild nur aus einer<br />

endlichen Zahl von Bildpunkten zusammen (z.B. n × m Pixel). Dann sind die Komponenten von ⃗x nicht<br />

mehr aus R, son<strong>de</strong>rn aus N. Ein Bild entspricht dann einer Rechteckmatrix:<br />

g 0,0 g 0,1 · · · g 0,N−1<br />

g 1,0 g 1,1 · · · g 1,N−1<br />

.<br />

.<br />

. .. .<br />

g M−1,0 g M−1,1 · · · g M−1,N−1<br />

Man stellt dann die Einzelnen Pixel eines M × N-Bil<strong>de</strong>s so dar:<br />

g m,n = g Zeile,Spalte , m ∈ [0..M − 1], n ∈ [0..N − 1]<br />

Der erste In<strong>de</strong>x steht also für die Zeile, <strong>de</strong>r zweite für die Spalte.<br />

Bisher wur<strong>de</strong> die Pixel als rechteckig angenommen. Dies ist auch in <strong>de</strong>n meisten Fällen so. Man kann<br />

aber eine Fläche auch mit drei- und sechseckigen Pixeln füllen (siehe Abb. 2.2)<br />

Abb. 2.2: verschie<strong>de</strong>ne raumfüllen<strong>de</strong> 2D-Gitter<br />

Solche Pixelanordnungen machen aber eher in Simulationen Sinn (z.B. zelluläre Automaten), in <strong>de</strong>nen<br />

die Form <strong>de</strong>s Gitters die Form <strong>de</strong>r entstehen<strong>de</strong>n Muster beeinflussen kann. SO haben Spiralen auf <strong>de</strong>n unterschiedlichen<br />

Gittern unterschiedliches Aussehen. In höher dimensionalen Räumen wer<strong>de</strong>n die Formen<br />

komplizierten. Im eindimensionalen kann man nur regelmäßige Intervalle <strong>de</strong>finieren. In <strong>de</strong>r Bildverarbeitung<br />

spielen aber nur Rechteckgitter eine Rolle.<br />

In <strong>de</strong>r obigen Abbildung sind verschie<strong>de</strong>ne Nachbarschaftsbeziehungen eingezeichnet. Diese geben<br />

Auskunft darüber, welche <strong>de</strong>r angrenzen<strong>de</strong>n Pixel als direkt benachbart angesehen wer<strong>de</strong>n. Im zweidimensionalen<br />

gibt es zwei grundlegen<strong>de</strong> Nachbarschaften. Sie sind in Abb. 2.3 dargestellt.<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 11 –


2 Grundlagen <strong>de</strong>r Bildverarbeitung<br />

von-Neumann<br />

Nachbarschaft<br />

Moore<br />

Nachbarschaft<br />

Abb. 2.3: 2D-Nachbarschaftsbeziehungen<br />

Im dreidimensionalen kann man ähnliche Nachbarschaften <strong>de</strong>finieren.<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 12 –


3 Fourier-Darstellung von Bil<strong>de</strong>rn<br />

3.1 Sinus- und Cosinus-Schwingungen<br />

Im folgen<strong>de</strong>n wer<strong>de</strong>n häufig die Sinus- und Cosinusfunktionen (harmonische Funktionen) benötigt.<br />

Deswegen sollen hier kurz einige wichtige EIgenscgaften zusammengestellt wer<strong>de</strong>n:<br />

Beziehung zwischen Sinus und Cosinus: cos(α) = sin(α + π/2) = sin(α + 90 ◦ )<br />

3.1.1 Geometrische 1D-Repräsentation<br />

In Abb. 3.1 sind eindimensionale Sinus- und Cosinus-Schwingungen gezeigt.<br />

1<br />

0<br />

cos(2 kx) sin(2 kx) k = 1 <br />

x<br />

1<br />

sin(2 kx)<br />

sin(2 kx + )<br />

(phasenverschobene<br />

Schwingung)<br />

-1<br />

1<br />

<br />

sin(2 2kx) (doppelte Frequenz 2k)<br />

0<br />

x<br />

0<br />

-1<br />

<br />

x<br />

-1<br />

x<br />

<br />

Abb. 3.1: 1D-Sinus- und Cosinus-Schwingungen, mit unterschiedlicher Phase und Frequenz.<br />

Es zeigt sich, dass diese Funktionen eine typische Periodizität aufweisen. Nach <strong>de</strong>m Abstand λ (Wellenlänge)<br />

auf <strong>de</strong>r x-Achse wie<strong>de</strong>rholt sich das Muster wie<strong>de</strong>r. Die Funktionen sin(2π·kx) und cos(2π·kx) hängen<br />

neben x auch noch von einem Parameter k (Frequenz) ab. Man <strong>de</strong>finiert die Wellenzahl o<strong>de</strong>r räumliche<br />

Frequenz k:<br />

k = 1 = Schwingungsperio<strong>de</strong>n im Einheitsintervall [0..1]<br />

λ<br />

Manchmal (vor allem in <strong>de</strong>r Physik) trifft man auch die Definition k = 2π λ<br />

<strong>de</strong>r Sinus- o<strong>de</strong>r Cosinus-Funktion nicht nötig.<br />

an. Dann ist <strong>de</strong>r Faktor 2π in<br />

Die Bezeichnung räumliche Frequenz stammt von <strong>de</strong>r Analog zu zeitlichen Schwingungen. Dort nennt<br />

man die Perio<strong>de</strong> <strong>de</strong>r Schwingung (=Wellenlänge) T und die Anzahl <strong>de</strong>r Schwingungen pro Einheitszeitintervall<br />

(z.B. 1 s ⇒ [ν] = 1 Hz) Frequenz ν = 1 T , o<strong>de</strong>r Kreisfrequenz ω = 2π λ .<br />

13


3 Fourier-Darstellung von Bil<strong>de</strong>rn<br />

In <strong>de</strong>r obigen Abbildung ist rechts auch eine Verschobene Schwingung gezeigt. Um eine solche Verschiebung<br />

zu erreichen, muss man eine Konstante ϕ (Phase) zum Argument <strong>de</strong>s Sinus addieren. Dieses<br />

ϕ hängt mit <strong>de</strong>r Verschiebung ∆x so zusammen:<br />

ϕ = ∆x<br />

λ · 2π<br />

Die Verschiebung wird also im Bogenmaß [0..2π] o<strong>de</strong>r im Gradmaß [0..360 ◦ ] gemessen.<br />

Je<strong>de</strong> harmonische 1D-Schwingung lässt sich also durch Angabe von zwei Parametern, nämlich <strong>de</strong>r<br />

Frequenz k und <strong>de</strong>r Phase ϕ genau bestimmen. Zusätzlich kann man noch einen reellen Vorfaktor r<br />

(Amplitu<strong>de</strong>) hinzufügen, <strong>de</strong>r die Schwingung skaliert:<br />

f harmonisch (x) = r · cos(2π · kx − ϕ)<br />

komplexe Repräsentation, 1D: Oft benötigt man zwar nur reelle Sinus- o<strong>de</strong>r Cosinusschwingungen.<br />

Um aber z.B. eine Phase ϕ zu einer Grundschwingung cos(2πkx) hinzuzufügen ist eine nicht-triviale<br />

Rechnung mit Additionstheoremen nötig. Dies kann man umgehen, wenn man die Beziehung<br />

z = a + ib = |z| · e iφ = |z| · (cos(φ)<br />

+ i sin(φ) ) ,<br />

i ∈ C, a, b, φ, |z| ∈ R<br />

für beliebige komplexe Zahlen ausnutzt. Man kann dann obige Schwingung so schreiben:<br />

r · cos(2πkx) = Re<br />

{r · e i·2π·kx}<br />

Man kann also mit <strong>de</strong>r komplexen Schwingung r · e i·2π·kx rechnen und hernach nur <strong>de</strong>n Realteil verwen<strong>de</strong>n.<br />

Dies hat <strong>de</strong>n Sinn, dass man jetzt eine Phase ϕ durch einfache Multiplikation mit e −iϕ hinzufügen<br />

kann:<br />

{<br />

Re r · e i·2π·kx · e −iϕ} {<br />

= Re r · e i·(2π·kx−ϕ)} = r · cos(2πkx − ϕ)<br />

3.1.2 Geometrische 2D-Repräsentation<br />

Auch in 2D-Bil<strong>de</strong>rn kann man harmonische, periodische Strukturen haben, die sich dann in Grauwertschwankung<br />

äußern, wie sie in <strong>de</strong>r folgen<strong>de</strong>n Abb. 3.2 gezeigt sind.<br />

y [Pixel]<br />

Wellenvektor k<br />

Wellenfronten<br />

g(x,y) = 1<br />

Wellenlänge λ<br />

Phasenverschiebung ∆x<br />

g(x,y) = cos(2π k x - ϕ)<br />

Ursprung (0,0)<br />

|k| =<br />

1<br />

λ<br />

ϕ = 2π ∆x<br />

λ<br />

x [Pixel]<br />

Abb. 3.2: zur Definition <strong>de</strong>s 2D-Wellenvektors<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 14 –


3 Fourier-Darstellung von Bil<strong>de</strong>rn<br />

Analog zum obigen Fall kann man hier auch wie<strong>de</strong>r Parameter für die Welle angeben. Das Bild wird von<br />

einer Funktion<br />

g(⃗x) = r · cos ( 2π · ⃗k · ⃗x − ϕ )<br />

( )<br />

erzeugt. Darin kommen die Parameter r (Amplitu<strong>de</strong>), ϕ (Phase) und ⃗ kx<br />

k = (Wellenvektor) vor. Die<br />

k y<br />

ersten bei<strong>de</strong>n Parameter sind analog zum 1D-Fall. Der Wellenvektor ⃗ k entspricht <strong>de</strong>r Wellenzahl/räumlichen<br />

Frequenz k und ist betragsmäßig gleich dieser. Zusätzlich steht er senkrecht auf <strong>de</strong>n Wellenfronten<br />

<strong>de</strong>r periodischen Struktur. Die Wellenlänge ist jetzt als <strong>de</strong>r senkrechte Abstand zwischen zwei Wellenfronten<br />

<strong>de</strong>finiert. Eine solche 2D-Struktur wird also durch <strong>de</strong>n Satz <strong>de</strong>r vier Parameter {r, ϕ, k x , k y }<br />

vollständig beschrieben.<br />

Auch hier ist es wie<strong>de</strong>r sinnvoll eine komplexe Repräsentation einzuführen:<br />

g(⃗x) = Re<br />

{r }<br />

· e i·(2π·⃗k·⃗x−ϕ)<br />

In <strong>de</strong>n folgen<strong>de</strong>n Abschnitten wird die Notation aus diesem Abschnitt verwen<strong>de</strong>t. Das Symbol k stellt<br />

also immer eine räumliche Frequenz (Wellenzahl) dar.<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 15 –


3 Fourier-Darstellung von Bil<strong>de</strong>rn<br />

3.2 Fourier-Reihen<br />

Bisher wur<strong>de</strong>n Bil<strong>de</strong>r so dargestellt, dass zu je<strong>de</strong>m Bildpunkt ein Grau (o<strong>de</strong>r Farb-)wert gespeichert<br />

wur<strong>de</strong>. Nun betrachte man aber die Strukturen in Abb. 3.3.<br />

Abb. 3.3: Wellenstrukturen in 2D-Bil<strong>de</strong>rn, mit verschie<strong>de</strong>nen Frequenzen und Ausrichtungen<br />

In ihnen steckt weit weniger Information, als <strong>de</strong>r Grauwert an je<strong>de</strong>m Bildpunkt. Sie stellen einfach Sinusförmige<br />

(und gekippte) Schwankungen <strong>de</strong>s Grauwertes dar. Es wür<strong>de</strong> also zu ihrer Abspeicherung genügen<br />

die Frequenz dieser Grauwertvariationen (Schwingungen) zu kennen, sowie ihre Verkippung. Dies<br />

bringt einen auf die I<strong>de</strong>e <strong>de</strong>r Fourier-Darstellung von Bil<strong>de</strong>rn. Dazu benutzt man eine Verallgemeinerung<br />

<strong>de</strong>s folgen<strong>de</strong>n Satzes aus <strong>de</strong>r Analysis:<br />

Satz 3.1 (FOURIER-Entwicklung in e ikx )<br />

zugehörige Fourier-Summe durch:<br />

Für eine beliebige Funktion f ∈ R[0, 2π] <strong>de</strong>finiert man die<br />

F f n (x) :=<br />

n∑<br />

k=−n<br />

c k e ikx mit c k := 1 ∫ 2π<br />

f(x) e −ikx dx; k ∈ Z.<br />

2π 0<br />

Im Falle <strong>de</strong>r Konvergenz heißt <strong>de</strong>r Limes <strong>de</strong>r Fourier-Summen, die Fourier-Reihe:<br />

F f ∞(x) :=<br />

∞∑<br />

k=−∞<br />

c k e ikx = lim<br />

n∑<br />

n→∞<br />

k=−n<br />

c k e ikx .<br />

Sei nun weiter f ∈ R[0, 2π] eine 2π-periodische Funktion. Dann konvergiert ihre Fourier-Reihe im<br />

quadratischen Mittel gegen f und mit ihren Fourier-Koeffizienten c k gilt die sog. Vollständigkeitsrelation:<br />

2π<br />

∞∑<br />

k=−∞<br />

|c k | 2 = ‖f‖ 2<br />

Dieser Satz besagt, dass sich beliebige 2π-periodische Funktionen in komplexe e-Funktionen entwickeln<br />

lässt. Diese Funktionen leben auf einem Vektorraum R[0, 2π] quadratintegrabler, 2π-periodischer Funktionen.<br />

Für dieses gelten die üblichen Regeln <strong>de</strong>r linearen Algebra, sodass man auch eine Basis fin<strong>de</strong>n<br />

kann, in <strong>de</strong>r beliebige Elemente (Vektoren) dieses Raumes dargestellt wer<strong>de</strong>n können. Dazu zunächst ein<br />

kleiner Exkurs:<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 16 –


3 Fourier-Darstellung von Bil<strong>de</strong>rn<br />

Basiswechsel im R 2 : Man betrachte hier <strong>de</strong>n zweidimensionalen Vektorraum R 2 .<br />

Vektoren dieses Raumes lassen sich als Spaltenvektoren schreiben, z.B.:<br />

( ( ) ( ( 1<br />

⃗a = , ⃗ −1<br />

1 0 b = , ⃗e<br />

1)<br />

2 x = , ⃗e<br />

0)<br />

y =<br />

1)<br />

Zwei linear unabhängige Vektoren dieses Raumes bil<strong>de</strong>n nun eine sog. Basis. Dies<br />

können beispielsweise ⃗e x und ⃗e y sein (kanonische Basis). Man kann nun je<strong>de</strong>n Vektor<br />

<strong>de</strong>s Raumes als Linearkombination dieser Vektoren darstellen:<br />

⃗a = a x · ⃗e x + a y · ⃗e y = 1 · ⃗e x + 1 · ⃗e y ,<br />

⃗ b = bx ˙⃗ex + b y · ⃗e y = −1 · ⃗e x + 2 · ⃗e y<br />

Um die Koeffizienten a x/y , b x/y vor <strong>de</strong>n Basisvektoren zu berechnen kann man, das<br />

sog. Skalarprodukt auf diesem Raum verwen<strong>de</strong>n. Das Skalarprodukt ist hier folgen<strong>de</strong>rmaßen<br />

<strong>de</strong>finiert:<br />

〈⃗a, ⃗ b〉 ≡ ⃗a ·⃗b := a x b x + a y b y<br />

Dieses Produkt berechnet <strong>de</strong>n Anteil <strong>de</strong>s Vektors ⃗ b, <strong>de</strong>r parallel zu ⃗a liegt:<br />

b<br />

{<br />

a b<br />

Stehen zwei Vektoren senkrecht aufeinan<strong>de</strong>r, so ist ihr Skalarprodukt 0. Die Koeffizienten<br />

c x/y eines beliebigen Vektors ⃗c ergeben sich dann so<br />

c x = 〈⃗c, ⃗e x 〉, c y = 〈⃗c, ⃗e y 〉<br />

Man könnte also auch eine an<strong>de</strong>re Basis wählen (z.B. {⃗a, ⃗ b}). Dort gilt dann etwa für<br />

⃗d = ⃗e x = (1, 0) t :<br />

d x = 〈 d,⃗a〉 ⃗ = 1, d y = 〈 d, ⃗ ⃗ b〉 = −1<br />

Auf <strong>de</strong>m Vektorraum R[0, 2π] <strong>de</strong>finiert man nun folgen<strong>de</strong>s Skalarprodukt:<br />

〈f, g〉 :=<br />

∫ 2π<br />

0<br />

f(x) · g ∗ (x) dx<br />

Die Funktionen f, g sind Elemente <strong>de</strong>s Vektorraumes und g ∗ (x) be<strong>de</strong>utet das komplex-konjugierte <strong>de</strong>r<br />

Funktion g(x). Mit diesem Skalarprodukt wird aus obiger Formel für die Fourier-Koeffizienten c k nichts<br />

an<strong>de</strong>res, als<br />

c k = 1<br />

2π · 〈f, e−ikx 〉<br />

Man kann die Fourier-Transformation also als Basiswechsel im Raum R[0, 2π] auffassen. Damit lassen<br />

sich zu je<strong>de</strong>r Funktion f ∈ R[0, 2π] Fourier-Koeffizienten ermitteln, mit <strong>de</strong>nen man f als Linearkombination<br />

von Exponentialfunktionen e ikx mit verschie<strong>de</strong>nen k ∈ Z darstellen kann. Man hat also eine neue<br />

Beschreibung {c 0 , c ±1 , c ±2 , ...} <strong>de</strong>r selben Funktion f gefun<strong>de</strong>n. Bisher hat man <strong>de</strong>n Wert <strong>de</strong>r Funktion<br />

an je<strong>de</strong>r Stelle x angegeben. Dafür lässt sich ebenfalls eine Basis fin<strong>de</strong>n:<br />

a<br />

f(x) = ∑ k<br />

c ′ k · δ(x − x k)<br />

Die Dirac-δ-Funktionen δ(x − x k ) sind überall 0, außer an x k . Dort streben sie gegen unendlich und es<br />

gilt:<br />

∫<br />

f(x) · δ(x − x 0 ) dx = f(x 0 )<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 17 –


3 Fourier-Darstellung von Bil<strong>de</strong>rn<br />

Dabei muss man nur voraussetzen, dass <strong>de</strong>r Integrationsbereich die Stelle x 0 überstreicht. Man stellt also<br />

die Funktion als Summe (eigentlich Integral!!!) über die Werte an <strong>de</strong>n einzelnen Stellen x k dar.<br />

Die folgen<strong>de</strong> Abb. 3.4 zeigt die Approximation einer Sägezahnfunktion durch Fourier-Reihen.<br />

0.4<br />

0.2<br />

0<br />

-0.2<br />

-0.4<br />

0 1 2 3 4 5<br />

0.5<br />

0.4<br />

0.3<br />

0.2<br />

0.1<br />

0<br />

-0.1<br />

-0.2<br />

-0.3<br />

-0.4<br />

-0.5<br />

0 1 2 3 4 5<br />

0.5<br />

0.4<br />

0.3<br />

0.2<br />

0.1<br />

0<br />

-0.1<br />

-0.2<br />

-0.3<br />

-0.4<br />

-0.5<br />

0 1 2 3 4 5<br />

0.5<br />

0.4<br />

0.3<br />

0.2<br />

0.1<br />

0<br />

-0.1<br />

-0.2<br />

-0.3<br />

-0.4<br />

-0.5<br />

0 1 2 3 4 5<br />

Abb. 3.4: Fourier-Reihendarstellung einer Sägezahnfunktion (grün: Sägezahn, rot: Fourierreihe). Es wer<strong>de</strong>n<br />

die ersten ein bis vier Koeffizienten berücksichtigt.<br />

Je mehr Koeffizienten also zu Approximation herangezogen wer<strong>de</strong>n, <strong>de</strong>sto besser wird diese. Außer<strong>de</strong>m<br />

stellt man fest, dass höhere Frequenzen zu steileren Anstiegen/Abfällen führen.<br />

3.3 Fourier-Transformation<br />

Es zeigt sich, dass man obige Reihenentwicklung auf beliebige Funktionen (die nicht notwendig periodisch<br />

sein müssen) erweitern kann. Man kommt dann zur:<br />

Satz 3.2 (FOURIER-Transformation)<br />

Sei g(x) : R → C eine quadratintegrable Funktion, d.h.<br />

∫ ∞<br />

−∞<br />

|g(x)| 2 dx < ∞.<br />

Dann ist ihre Fourier-Transformierte ĝ(k) gegeben durch:<br />

∫ ∞<br />

ĝ(k) = F[g] = g(x) · e −2πikx dx =: 〈g(x), e 2πikx 〉<br />

−∞<br />

Ist nur ĝ(k) bekannt, so erhält man g(x) durch Rücktransformation:<br />

∫ ∞<br />

g(x) = F −1 [ĝ] = ĝ(k) · e 2πikx dx<br />

−∞<br />

Dies ist die kontinuierliche Verallgemeinerung <strong>de</strong>r obigen Entwicklung. Die Funktion ĝ(k) übernimmt<br />

die Rolle <strong>de</strong>r Koeffizienten c k und die Summen gehen in Integrale über. Der erste Ausdruck entspricht<br />

wie<strong>de</strong>r einem Skalarprodukt auf <strong>de</strong>m Raum L 2 <strong>de</strong>r quadratintegrablen Funktionen (einzige Voraussetzung!).<br />

Der zweite Ausdruck entspricht <strong>de</strong>r Linearkombination <strong>de</strong>r Basisvektoren e 2πikx (man beachte<br />

die komplexe Konjugation im Skalarprodukt, die im ersten Integral e 2πikx → e −2πikx bewirkt). Bei<strong>de</strong><br />

Ausdrücke sind (bis auf das −-Zeichen) vollkommen symmetrisch. Man führt noch folgen<strong>de</strong> Schreibweise<br />

für Fourier-Paare (g, ĝ) ein:<br />

g(x) ĝ(k)<br />

Die folgen<strong>de</strong> Tabelle führt einige Fourier-Paare auf:<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 18 –


3 Fourier-Darstellung von Bil<strong>de</strong>rn<br />

Normal-/Realraum f(x) Fourierraum ˆf(k) Erklärung<br />

Die Delta-Funktion enthält<br />

alle Frequenzen<br />

δ(x) 1<br />

cos(k 0 x) 1 (<br />

2 δ(k − k0 ) + δ(k − k 0 ) ) Der Kosinus enthält nur<br />

die Frequenzkomponente<br />

k 0<br />

sin(k 0 x) 1 (<br />

2 δ(k − k0 ) − δ(k − k 0 ) )<br />

e −πx2 −πk2 Gauß transformiert sich in<br />

e<br />

Gauß<br />

Fourier-Transformation, anschaulich: Man kann die Fourier-Transformation so verstehen, dass sie<br />

angibt, welche Frequenzanteile wie stark in einer Funktion (in einem Signal) g(x) vorhan<strong>de</strong>n sind. Man<br />

kann sich dies an Tönen gut vorstellen. Je höher etwa eine Stimme aus <strong>de</strong>m Radio klingt, um größer<br />

ist <strong>de</strong>r Anteil hoher Frequenzen an <strong>de</strong>m Signal (ĝ(k) ist also groß für große k und klein für kleine k).<br />

Am Stellschalter für die höhen kann man diese hohen Anteile dämpfen, sodass eine hohe Stimme tiefer<br />

erscheint (Prinzip <strong>de</strong>r Filterung, siehe später). Dagegen enthält z.B. die Basslinie eines Musikstückes sehr<br />

viele tiefe Frequenzen (ĝ(k) ist also groß für kleine k und klein für große k). Dämpft man nun die Bässe<br />

am entsprechen<strong>de</strong>n Stellknopf, so gehen diese im Signal verloren und man nervt seine Mitbewohner nur<br />

halb so stark mit Erschütterungen <strong>de</strong>r Wohnung ;-)<br />

Bei <strong>de</strong>r Rücktransformation wer<strong>de</strong>n dann die einzelnen Basisschwingungen e ikx mit c(k) skaliert und<br />

aufintegriert.<br />

3.4 Diskrete Fourier-Transformation (DFT)<br />

Für die praktische Anwendung dieses mathematischen Konzeptes in <strong>de</strong>r Bildverarbeitung muss man eine<br />

Transformation fin<strong>de</strong>n, die auf diskreten Bil<strong>de</strong>rn arbeitet (siehe vorheriger Abschnitt 2.5). Dies leistet die<br />

diskrete Fourier-Transformation. Sie geht nun nicht mehr von einer kontinuierlichen Funktion g(x) aus,<br />

son<strong>de</strong>rn von einer Menge von N „Messpunkten“ (z.B. die Grauwerte eines Zeilenbil<strong>de</strong>s). Es gilt:<br />

Satz 3.3 (Diskrete Fourier-Transformation (1D-DFT)) Die 1D-DFT bil<strong>de</strong>t eine geordnete Menge<br />

von Werte (N-Tupel)<br />

g = {g 0 , g 1 , ..., g N }<br />

auf eine an<strong>de</strong>re geordnete Menge<br />

ĝ = {g 0 , g 1 , ..., g N }<br />

ab. Bei<strong>de</strong> lassen sich auch als Vektoren interpretieren. Die Abbildungvorschrift lautet:<br />

ĝ k = 1 N<br />

N−1<br />

∑<br />

n=0<br />

Die Rücktransformation lautet:<br />

(<br />

g n · exp − 2πink )<br />

= 1 ( ) 2πink<br />

N N 〈g, exp 〉, 0 ≤ k < N<br />

N<br />

g n = 1 (<br />

N 〈ĝ, exp − 2πink ) N−1<br />

∑<br />

〉 = ĝ k · exp<br />

N<br />

k=0<br />

( 2πink<br />

N<br />

)<br />

, 0 ≤ n < N<br />

Dies entspricht <strong>de</strong>r Diskretisierung <strong>de</strong>r kontinuierlichen Fourier-Transformation aus 3.3. Die folgen<strong>de</strong><br />

Abb. 3.5 zeigt für N = 16 alle Basisfunktionen in Real- und Imaginärteil aufgespaltet.<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 19 –


3 Fourier-Darstellung von Bil<strong>de</strong>rn<br />

N=0<br />

N=1<br />

N=2<br />

N=3<br />

N=4<br />

N=5<br />

N=6<br />

N=7<br />

N=8<br />

N=9<br />

N=10<br />

N=11<br />

N=12<br />

N=13<br />

N=14<br />

N=15<br />

N=16<br />

cos(2π i n /16) + i sin(2π i n /16)<br />

Realteil<br />

Imaginärteil<br />

Abb. 3.5: alle Basisfunktionen in Real- und Imaginärteil für eine N = 16 DFT<br />

Man kann sich leicht überlegen, welche Wellenzahlen k überhaupt erlaubt sein können. Dazu muss<br />

man betrachten, welche Schwingungen noch auf einem Gitter mit N Stützpunkten darstellbar sind. Die<br />

schnellste Schwingung ist sicher diejenige, bei <strong>de</strong>r genau zwei Stützstellen auf einer Schwingung liegen.<br />

Liegen weniger Stützstellen auf einer (dann noch schnelleren) Schwingung, so kann diese Frequenz nicht<br />

dargestellt wer<strong>de</strong>n (siehe Abb. <strong>3.6</strong>).<br />

gera<strong>de</strong> noch darstellbar<br />

(exakt 2 Stützstellen)<br />

etwas zu hoch<br />

(< 2 Stützstellen)<br />

doppelte Grenzfrequenz<br />

(1 Stützstellen)<br />

noch etwas höher<br />

(~0,8 Stützstellen)<br />

Abb. <strong>3.6</strong>: Mit <strong>de</strong>r DFT können nur periodische Strukturen bis zu einer gewissen Grenzfrequenz (2 Bildpunkte<br />

pro Schwingung) dargestellt wer<strong>de</strong>n.<br />

Die Bil<strong>de</strong>r in Abb. <strong>3.6</strong> zeigen, dass es nicht möglich ist sehr hohe Frequenzen mit N Stützstellen darzustellen.<br />

Bei sehr hohen Frequenzen können sogar zu niedrige Frequenzen in <strong>de</strong>r Darstellung erzeugt<br />

wer<strong>de</strong>n (Schwebungen, Abtasttheorem). Die niedrigste darstellbare Schwingung ist diejenige, bei <strong>de</strong>r<br />

exakt eine Wellenlänge auf <strong>de</strong>r Breite <strong>de</strong>s Bil<strong>de</strong>s unterkommt. Ein Beispiel ist <strong>de</strong>r Realteil <strong>de</strong>r Basisfunktion<br />

zu N = 1.<br />

Bemerkungen zu Datentypen/dynamischer Bereich: Man geht von einem Grauwertbild mit 256<br />

verschie<strong>de</strong>nen Grauwerten aus. Wird dieses transformiert, so ergibt sich ein komplexes Bild (Fourier-<br />

Transformierte). Dieses Bild kann zwar wie<strong>de</strong>r mit 256 Abstufungen dargestellt wer<strong>de</strong>n, dies ist aber<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 20 –


3 Fourier-Darstellung von Bil<strong>de</strong>rn<br />

nicht empfehlenswert, da die Werte sehr stark streuen (vergleichsweise großer dynamischer Bereich),<br />

sodass in <strong>de</strong>m meisten Fällen eine Darstellung als float-Bild empfehlenswert ist.<br />

3.5 Mehrdimensionale Fourier-Transformationen<br />

Die Fourier-Trafo wur<strong>de</strong> bisher nur für eine Dimension betrachtet. Die Erweiterung auf mehrere Dimensionen<br />

(speziell zwei für übliche Bil<strong>de</strong>r) ist einfach möglich: Man transformiert zunächst in <strong>de</strong>r x- und<br />

danach in <strong>de</strong>r y-Richtung. Man erhält so:<br />

Satz 3.4 (W -dimensionale Fourier-Transformation) Sei g : R W → C eine quadratintegrable Funktion,<br />

also |g(⃗x)| 2 d W x < ∞. Die Integration be<strong>de</strong>utet hier eine Integration über das<br />

∞∫<br />

gesamte,<br />

−∞<br />

unendliche Volumen <strong>de</strong>s R W . Man kann also auch schreiben:<br />

für die Fourier-Transformierte ĝ( ⃗ k):<br />

ĝ( ⃗ k) = F[g] =<br />

Die Rücktransformation ergibt analog:<br />

∫ ∞<br />

−∞<br />

g(⃗x) = F −1 [ĝ] =<br />

∞∫<br />

∞∫<br />

−∞ −∞<br />

g(⃗x) · e −2πi⃗ k·⃗x d W x =: 〈g(⃗x), e 2πi⃗ k·⃗x 〉<br />

∫ ∞<br />

−∞<br />

ĝ( ⃗ k) · e 2πi⃗ k·⃗x d W x<br />

... |g(⃗x)| 2 dx dy... < ∞. Dann gilt<br />

Die einzige Verän<strong>de</strong>rung gegenüber <strong>de</strong>r eindimensionalen Transformation ist also, dass das Produkt kx<br />

im Exponenten durch ein Skalarprodukt <strong>de</strong>r Größen ⃗x und ⃗ k ersetzt wur<strong>de</strong>. Die Be<strong>de</strong>utung von ⃗x ist<br />

klar. Es ist einfach nur <strong>de</strong>r Ortsvektor, <strong>de</strong>r auf einen bestimmte Position in g(·) zeigt. Der Vektor ⃗ k wird<br />

Wellenvektor, siehe dazu Abschnitt 3.1.2.<br />

Man erhält aus obigen Satz auch die Form <strong>de</strong>r zweidimensionalen, diskreten Fourier-Trafo. Die Erweiterung<br />

auf W > 2 Dimensionen ist vollkommen natürlich möglich. Der Fall W = 2 ist aber sehr wichtig<br />

und wird <strong>de</strong>swegen hier explizit angegeben. Die Angabe <strong>de</strong>r höheren Dimensionen ergibt im wesentlichen<br />

nur Schwierigkeiten in <strong>de</strong>r Notation.<br />

Satz 3.5 (2-dimensionale diskrete Fourier-Transformation (2D-DFT)) Man geht von einem zweidimensionalen<br />

Bild g m,n aus, das sich als M × N-Matrix darstellt. Die 2D-DFT bil<strong>de</strong>t dann auf folgen<strong>de</strong>s<br />

Bild (Fourier-Transformierte) ab:<br />

ĝ u,v = 1<br />

MN<br />

N−1<br />

∑<br />

n=0<br />

[ M−1 ∑<br />

(<br />

g m,n · exp − 2πimu ) ] (<br />

· exp − 2πinv )<br />

N<br />

N<br />

m=0<br />

0 ≤ u < M, 0 ≤ v < N<br />

Die Rück-Transformation ist analog:<br />

g m,n =<br />

N−1<br />

∑<br />

v=0<br />

[ M−1 ∑<br />

ĝ u,v · exp<br />

u=0<br />

( ) ] ( )<br />

2πimu 2πinv<br />

· exp<br />

N<br />

N<br />

0 ≤ m < M, 0 ≤ n < N<br />

Durch die Klammerung tritt die Struktur <strong>de</strong>r Hintereinan<strong>de</strong>rausführung klar zu Tage. Um auch dies<br />

wie<strong>de</strong>r als Skalarprodukt zu schreiben muss man ein Skalarprodukt auf <strong>de</strong>m Raum <strong>de</strong>r 2D-Matritzen<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 21 –


3 Fourier-Darstellung von Bil<strong>de</strong>rn<br />

<strong>de</strong>finieren. Es lautet:<br />

Damit gilt dann:<br />

〈g, f〉 =<br />

N−1<br />

∑<br />

M−1<br />

∑<br />

n=0 m=0<br />

g ∗ m,nf m,n<br />

ĝ u,v = 1 √<br />

MN<br />

· 〈b u,v , g〉 und g m,n = 1 √<br />

MN<br />

· 〈b −m,−n , ĝ u,v 〉<br />

Die Matrix <strong>de</strong>r Basismatritzen ergibt sich als:<br />

( 2πiv<br />

b u,v = exp<br />

N<br />

)<br />

· exp<br />

( ) 2πiv<br />

M<br />

Die folgen<strong>de</strong> Abb. 3.7 zeigt Real- und Imaginärteil <strong>de</strong>r Basismatritzen für eine 16 × 16-2D-DFT, also<br />

die Basisbil<strong>de</strong>r:<br />

Realteil<br />

Imaginärteil<br />

N=0<br />

N=1<br />

N=2<br />

N=3<br />

N=4<br />

N=5<br />

N=6<br />

N=7<br />

N=8<br />

N=9<br />

N=10<br />

N=11<br />

N=12<br />

N=13<br />

N=14<br />

N=15<br />

N=16<br />

Abb. 3.7: Real- und Imaginärteil <strong>de</strong>r Basismatritzen für eine 16 × 16-2D-DFT<br />

Man kann beobachten, dass Basisbil<strong>de</strong>r, die <strong>de</strong>n gleichen Abstand zur linken oberen Ecke haben, in etwa<br />

gleiche räumliche Frequenz haben. Nur ihr Verkippungswinkel variiert. Je näher das Bild zur Mitte ist,<br />

<strong>de</strong>sto höher ist die Frequenz. Die erste Zeile/Spalte ergibt bei einem Schnitt durch das Bild die Basisfunktionen<br />

<strong>de</strong>r 1D-DFT aus <strong>de</strong>m vorherigen Abschnitt. Diese zwei Darstellungen sind also analog.<br />

<strong>3.6</strong> Eigenschaften <strong>de</strong>r Fourier-Transformation<br />

<strong>3.6</strong>.1 Allgemeine Eigenschaften<br />

Betrag und Phase im Fourierraum: Auch wenn die Funktion g(x) eine rein reelle Funktion ist, kann<br />

ihre Fourier-Transformierte ˆf(k) durchaus einen nicht-verschwin<strong>de</strong>n<strong>de</strong>n Imaginärteil haben. Die gesamte<br />

Bildinformation steckt im Realraum also im Realteil. Im Fourierraum verteilt sich diese Information<br />

auf Real- â(k) = Re ĝ(k) und Imaginärteil ˆb(k) = Im ĝ(k), bzw. Phase φ = arg(ĝ(k)) =<br />

arctan ˆb(k)â(k) und Betrag |ĝ(k)| <strong>de</strong>r Fourier-Transformierten ĝ(k) = â(k)+iˆb(k) = |ĝ(k)|·e i arg(ĝ(k)) .<br />

Es darf also auf keinen Fall einer <strong>de</strong>r bei<strong>de</strong>n Anteile vernachlässigt wer<strong>de</strong>n. Die folgen<strong>de</strong> AAbb. 3.8 zeigt,<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 22 –


3 Fourier-Darstellung von Bil<strong>de</strong>rn<br />

was passiert, wenn man zunächst ĝ berechnet und dann vor <strong>de</strong>r Rücktransformation <strong>de</strong>n Real- o<strong>de</strong>r <strong>de</strong>n<br />

Imaginärteil 0 setzt, also vernachlässigt.<br />

Original:<br />

ohne Imaginärteil <strong>de</strong>r<br />

Fourier-Transformierten:<br />

ohne Realteil <strong>de</strong>r<br />

Fourier-Transformierten:<br />

nur Phaseninformation <strong>de</strong>r<br />

Fourier-Transformierten:<br />

nur Betragsinformation <strong>de</strong>r<br />

Fourier-Transformierten:<br />

γ=2.0<br />

Abb. 3.8: Auswirkung <strong>de</strong>r vernachlässigung von Real- und Imaginäreteil, bzw. Betrag o<strong>de</strong>r Phase im Fourierraum.<br />

Diese Bil<strong>de</strong>r bestätigen nochmals, dass sich die Information im Foruierraum zu gleichen Teilen auf Realund<br />

Imaginärteil verteilt.<br />

Symmetrien: Die Fouriertransformation weist einige Symmetrien auf, die auch von praktischen Nutzen<br />

sein können, da man evtl. einige Daten weglassen kann. Es treten zwei Gruppen von Symmetrien<br />

auf:<br />

gera<strong>de</strong> g(−⃗x) = g(⃗x) ungera<strong>de</strong> g(−⃗x) = −g(⃗x)<br />

hermitesch g(−⃗x) = g ∗ (⃗x) antihermitesch g(−⃗x) = −g ∗ (⃗x)<br />

Damit ergeben sich folgen<strong>de</strong> Symmetriebeziehungen für die Fourier-Transformation:<br />

reell hermitesch hermitesch reell<br />

imaginär antihermitesch antihermitesch imaginär<br />

gera<strong>de</strong> gera<strong>de</strong> ungera<strong>de</strong> ungera<strong>de</strong><br />

reell und gera<strong>de</strong> reell und gera<strong>de</strong> reell und ungera<strong>de</strong> imaginär und ungera<strong>de</strong><br />

imaginär und gera<strong>de</strong> imaginär und gera<strong>de</strong> imaginär und ungera<strong>de</strong> reell und gera<strong>de</strong><br />

Diese können so ausgenutzt wer<strong>de</strong>n, dass es etwa für ein reelles Bild nicht nötig ist <strong>de</strong>n gesamten Fourier-<br />

Raum zu speichern. Es genügt eine Hälfte, da die restlichen Pixel berechnet wer<strong>de</strong>n können. Dies ist<br />

auch einsichtig, da man im Fourierraum zu je<strong>de</strong>m Pixel zwei Werte (Real- und Imaginärteil) speichert,<br />

während im Realraum nur ein Wert nötig war. Man wür<strong>de</strong> sonst mit <strong>de</strong>r FT unnötige Information generieren.<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 23 –


3 Fourier-Darstellung von Bil<strong>de</strong>rn<br />

Die Auswirkungen <strong>de</strong>r obigen Symmetrien kann man z.B. auch in Abb. 3.7 sehen. Lässt man <strong>de</strong>n Imaginärteil<br />

im Fourierraum weg, so erzeugt man dort ein rein reales Bild, das nach <strong>de</strong>r Rücktransformation<br />

eine Symmetrie aufweist.<br />

Separabilität:<br />

Satz <strong>3.6</strong> (Separabilität <strong>de</strong>r Fourier-Transformation)<br />

Funktion mit folgen<strong>de</strong>r Eigenschaft:<br />

Als separable Funktion bezeichnet man eine<br />

f(x, y) = g 1 (x) · g 2 (y).<br />

Für die Fourier-Transformation einer solchen Funktion gilt:<br />

f(x, y) = g 1 (x) · g 2 (y) ˆf(k x , k y ) = ĝ 1 (k x ) · ĝ 2 (k y )<br />

Dies lässt sich leicht zeigen. Man benutzt dazu die Separabilität <strong>de</strong>s Kerns <strong>de</strong>r Fouriertransformation:<br />

∫∫<br />

ˆf(k x , k y ) = F[f(x, y)] = f(x, y) · e 2πi(kxx+kyy) dy dx =<br />

∫∫<br />

= g 1 (x) · g 2 (y) · e 2πikxx · e 2πikyy dy dx =<br />

{∫<br />

} {∫<br />

}<br />

= g 1 (x) · e 2πikxx dx · g 2 (y) · e 2πikyy dy =<br />

= F[g 1 (x)] · F[g 2 (y)] = ĝ 1 (k x ) · ĝ 2 (k y )<br />

Verschiebung:<br />

Satz 3.7 (Verschiebungstheorem) Wird eine Funktion g(⃗x) um einen Vektor ⃗x 0 verschoben, so erhält<br />

man die neue Funktion h(⃗x) = g(⃗x − ⃗x 0 ). Für die Fourier-Transformierte gilt dann:<br />

F[h(⃗x)] = F[g(⃗x − ⃗x 0 )] ĝ( ⃗ k) · e −2πi⃗x 0·⃗k = ĥ(⃗ k)<br />

Das be<strong>de</strong>utet, dass die Fourier-Transformierte einer Funktion, durch die Verschiebung <strong>de</strong>r Funktion nur<br />

eine zusätzliche Phase bekommt, die von <strong>de</strong>r Verschiebung abhängt. Umgekehrt be<strong>de</strong>utet eine Verschiebung<br />

<strong>de</strong>r Fourier-Transformierten um ⃗ k 0 eine Modulation <strong>de</strong>s Bil<strong>de</strong>s im Ortsraum mit einer Schwingung<br />

<strong>de</strong>r Wellenzahl ⃗ k 0 .<br />

Diese Eigenschaft lässt sich ebenfalls recht leicht beweisen, wenn man eine Variablentransformation<br />

⃗u = ⃗x − ⃗x 0 durchführt:<br />

∫∫<br />

F[g(⃗x − ⃗x 0 )] = g(⃗x − ⃗x 0 ) · e −2πi⃗k·⃗x) d W x =<br />

∫∫<br />

= g(⃗u) · e −2πi⃗ k·(⃗u+⃗x 0 ) d W u =<br />

∫∫<br />

= e −2πi⃗ k·⃗x 0<br />

g(⃗u) · e 2πi⃗k·⃗u d W u = e −2πi⃗ k·⃗x0<br />

·ĝ( ⃗ k)<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 24 –


3 Fourier-Darstellung von Bil<strong>de</strong>rn<br />

Aufteilung in Sinus- und Cosinus-Transformation: Je<strong>de</strong> beliebige Funktion g(⃗x) lässt sich in einen<br />

gera<strong>de</strong>n Anteil g g (⃗x) und einen ungera<strong>de</strong>n Anteil g u (⃗x) aufteilen. Diese berechnen sich so:<br />

g g (⃗x) =<br />

g(⃗x) + g(−⃗x)<br />

2<br />

und<br />

g u (⃗x) =<br />

g(⃗x) − g(−⃗x)<br />

2<br />

Damit kann man die Fourier-Transformation in eine Cosinus- und eine Sinustransformation zerlegen:<br />

hatg( ⃗ k) = 2<br />

∫ ∞<br />

0<br />

g g (⃗x) cos(2π · ⃗k · ⃗x) d W x + 2i<br />

∫ ∞<br />

0<br />

g u (⃗x) sin(2π · ⃗k · ⃗x) d W x<br />

Hieraus kann man ersehen, dass für die Darstellung einer ungera<strong>de</strong>n Funktion <strong>de</strong>r sin-Anteil von e iϕ =<br />

cos ϕ + i · sin ϕ ausreicht (<strong>de</strong>r Sinus ist selber ungera<strong>de</strong>) und für eine gera<strong>de</strong> Funktion <strong>de</strong>r cos-Anteil.<br />

Faltungstheorem:<br />

Satz 3.8 (Faltungstheorem) Für die Bildverarbeitung wird das Faltungstheorem von Be<strong>de</strong>utung sein.<br />

Es besagt, dass sich eine Faltung f(x) ⊛ h(x) im Fourier-Raum als Multiplikation darstellt:<br />

F[f(x) ⊛ h(x)] = ˆf(k) · ĥ(k) ⇔ f(x) ⊛ h(x) ˆf(k) · ĥ(k)<br />

Ableitung:<br />

Satz 3.9 (Fourier-Transformation <strong>de</strong>r Ableitung) Die Fourier-Transformierte <strong>de</strong>r Ableitung ∂g<br />

∂x einer<br />

Funktion g(x) hat eine sehr einfache Form, wenn die Fourier-Transformierte ĝ(k) von g(x) bekannt<br />

ist:<br />

∂g<br />

2πi · k · ĝ(k)<br />

∂x<br />

Eine Multiplikation im Fourier-Raum entspricht einer Faltung im Real-Raum, sodass man weiter erhält:<br />

∂g<br />

∂x = g(x) ⊛ F −1 [2πi · k]<br />

Dieses Ergebnis kann zur Erzeugung von Ableitungsfiltern angewen<strong>de</strong>t wer<strong>de</strong>n.<br />

Glattheit und Kompaktheit: Je glatter eine Funktion ist, <strong>de</strong>sto weniger abrupte Sprünge und schnelle<br />

Anstiege enthält sie. In Abb. 3.9 ist dies veranschaulicht. Für einen schnellen Anstieg in einer Funktion<br />

g(x) benötigt man Anteile mit hoher Frequenz in ihrer Fourier-Transformierten ĝ(x). Damit ist die<br />

Fourier-Transformierte einer solchen Funktion sehr breit. Je glatter die Funktion g(x) ist, <strong>de</strong>sto weniger<br />

hohe Frequenzanteile wer<strong>de</strong>n benötigt und die Fourier-Transformierte wird schmaler (kompakter).<br />

glatt<br />

<br />

nicht glatt<br />

kompakt<br />

<br />

nicht kompakt<br />

Abb. 3.9: glatte und weniger glatte Funktion (oben) und ihre kompakte bzw. ausge<strong>de</strong>hnte Fourier-<br />

Transformierte<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 25 –


3 Fourier-Darstellung von Bil<strong>de</strong>rn<br />

<strong>3.6</strong>.2 Spezielle Eigenschaften <strong>de</strong>r diskreten Transformationen<br />

Symmetrie <strong>de</strong>s Kerns: Die Funktion e −2πin/N wird als Kern <strong>de</strong>r DFT bezeichnet. Dieser kern weist<br />

eine charakteristische Periodizität auf:<br />

e −2πin/N = e −2πi(n+lN)/N ,<br />

mit l ∈ N<br />

Dies be<strong>de</strong>utet, dass sich das Bild <strong>de</strong>r Fourier-Transformierten im Wellenzahlraum periodisch wie<strong>de</strong>rholt.<br />

Dies lässt sich für die 1D-DFT graphisch als Ring darstellen (siehe Abb. 3.10).<br />

g N-1<br />

g 0<br />

g 1<br />

g 2<br />

g N-2<br />

Abb. 3.10: geometrische Interpretation <strong>de</strong>r Periodizität <strong>de</strong>s Kerns <strong>de</strong>r 1D-DFT<br />

3.7 DFT als diskrete unitäre Transformation und weitere<br />

Transformationen<br />

Die Fourier-Transformation (FT) ist ein Vertreter einer großen Klasse von Transformationen, <strong>de</strong>n sog.<br />

unitären Transformationen. Sie entsprechen in niedrig-dimensionalen Räumen <strong>de</strong>n Rotationen. Es han<strong>de</strong>lt<br />

sich also um Längen- und Winkel-erhalten<strong>de</strong> Transformation. Diese unitären Transformationen auf<br />

endlich dimensionalen (diskreten) Vektorräumen können folgen<strong>de</strong>rmaßen <strong>de</strong>finiert wer<strong>de</strong>n:<br />

Definition 3.1 (unitäre Transformation) Eine unitäre Transformation (durch eine Matrix U dargestellt)<br />

ist eine lineare bijektive Abbildung von einem endlich-dimensionalen Vektorraum V auf sich selbst.<br />

Es gilt:<br />

• U ist eine unitäre Matrix (U −1 = U t )<br />

• die Transformation erhält das Skalarprodukt auf V : 〈⃗g, ⃗ h〉 = 〈U⃗g, U ⃗ h〉 für alle ⃗g, ⃗ h ∈ V . Dies<br />

be<strong>de</strong>utet die Erhaltung <strong>de</strong>s Winkels zwischen ⃗g und ⃗ h.<br />

• Aus <strong>de</strong>m letzten Punkt ergibt sich auch die Erhaltung <strong>de</strong>r Länge eines Vektors: ‖⃗g‖ 2<br />

= √ 〈⃗g,⃗g〉 =<br />

√<br />

〈U⃗g, U⃗g〉 = ‖U⃗g‖2<br />

• Die Komposition zweier Transformationen U 1 · U 2 ist ebenfalls eine unitäre Transformation.<br />

• die Zeilen- und Spaltenvektoren von U bil<strong>de</strong>n eine Orthonormalbasis von V .<br />

Man kann nun die DFT etwas umformulieren und sie somit auf die Form einer unitären Transformation<br />

darstellen (mit w N = e 2πi/N ):<br />

ĝ k = 1 N<br />

= 1 N<br />

N−1<br />

∑<br />

n=0<br />

N−1<br />

∑<br />

n=0<br />

g n · e −2πink/N =<br />

g n · w −nk<br />

N<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 26 –


3 Fourier-Darstellung von Bil<strong>de</strong>rn<br />

Dies kann man als Matrixmultiplikation darstellen:<br />

ˆ⃗g = 1 N · W N⃗g<br />

Dabei ist<br />

⎛<br />

w −0·0<br />

N<br />

w −0·1<br />

N<br />

· · · w −0·N<br />

N<br />

w −1·0<br />

N<br />

w −1·1<br />

N<br />

· · · w −1·N<br />

N<br />

W N = ⎜<br />

⎝<br />

.<br />

. . .. .<br />

w −N·0<br />

N<br />

w −N·1<br />

N<br />

· · · w −N·N<br />

N<br />

⎞ ⎛<br />

wN 0 wN 0 · · · w 0 ⎞<br />

N<br />

⎟<br />

⎠ = wN<br />

0<br />

⎜<br />

w−1 N<br />

· · · w −N<br />

N<br />

.<br />

⎝ . . ..<br />

⎟ . ⎠<br />

wN<br />

0 w−N N<br />

· · · w −N 2<br />

N<br />

Nutzt man zusätzlich noch die Periodizität <strong>de</strong>s Kerns <strong>de</strong>r DFT aus (siehe <strong>3.6</strong>), so kann man W N weiter<br />

vereinfachen (hier am Beispiel N = 4):<br />

⎛<br />

W 4 = ⎜<br />

⎝<br />

w4 −0 w4 −0·1 w4 −0·2 w4<br />

−0·3<br />

w4 −0·1 w4 −1·1 w4 −2·1 w4<br />

−3·1<br />

w4 −0·2 w4 −1·2 w4 −2·2 w4<br />

−3·2<br />

w4 −0·3 w4 −1·3 w4 −2·3 w4<br />

−3·3<br />

⎞ ⎛<br />

w4 0 w4 0 w4 0 w 0 ⎞ ⎛<br />

4 w ⎟<br />

⎠ = ⎜w4<br />

0 w4 −1 w4 −2 w4<br />

−3<br />

4 0 w4 0 w4 0 w 0 ⎞<br />

4<br />

⎝ w4 −2 w4 −4 w4<br />

−6 ⎟<br />

⎠ = ⎜w4 0 w4 3 w4 2 w4<br />

1 ⎟<br />

⎝<br />

⎠<br />

w4<br />

0<br />

w4<br />

0<br />

w4 −3 w4 −6 w4<br />

−9<br />

w4 0 w4 2 w4 0 w4<br />

2<br />

w4 0 w4 1 w4 2 w4<br />

3<br />

Damit reduziert sich die Berechnung einer diskreten Fourier-Transformierten ˆ⃗g aus einem Datenvektor ⃗g<br />

entspricht also einer Matrixmultiplikation mit einer fest vorgegebenen Matrix W N . Diese lässt sich mit<br />

<strong>de</strong>m Aufwand O(N 2 ) berechnen. Nutzt man zusätzlich bekannte Eigenschaften dieser speziellen Basis,<br />

so kommt man zu schnellen Algorithmen, die als Fast-Fourier-Transformationen (FFT) bezeichnet<br />

wer<strong>de</strong>n. Sie arbeiten mit <strong>de</strong>r Komplexität O(N · log N).<br />

Es gibt noch weitere Basis-Systeme, die durch eine unitäre Transformation erreichbar sind. Dazu zählen:<br />

• Sinus- und Cosinus-Transformation<br />

• Hartley-Transformation<br />

• Hadamardtransformation<br />

• Haartransformation<br />

3.8 Lokale Fourier-Transformation<br />

Die Fourier-Transformation führt ein Bild in Ortsdarstellung in ein Bild in Frequenzdarstellung über.<br />

Dabei ist die Orts-Information im Ortsraum lokal, während die Frequenzinformation über <strong>de</strong>n ganzen<br />

Ortsraum verschmiert ist. Im Fourierraum gilt das umgekehrt. Manchmal möchte man aber eine gemischt<br />

Darstellung erreichen, in <strong>de</strong>r sowohl lokale Orts- als auch Frequenzinformation vorliegt. Dazu führt man<br />

die lokale Fourier-Transformation ein:<br />

ĝ(⃗x, ⃗ k 0 ) =<br />

∫ ∞<br />

−∞<br />

g(⃗x ′ )w(⃗x − ⃗x ′ ) e −2πi⃗ k 0·⃗x ′ dx ′2<br />

Dabei ist w(⃗x − ⃗x ′ ) eine Fensterfunktion, die nur in einer kleinen Umgebung von ⃗x ′ von 0 verschie<strong>de</strong>n<br />

ist. Die Fourier-Transformation wird so auf die lokale Nachbarschaft eingeschränkt. Es lässt sich zeigen,<br />

dass dies einer Bandpass-gefilterten Darstellung <strong>de</strong>s Bil<strong>de</strong>s entspricht, weil nur Wellenzahlen berücksichtigt<br />

wer<strong>de</strong>n, die innerhalb <strong>de</strong>s ≠ 0-Bereiches <strong>de</strong>s Fensters Platz fin<strong>de</strong>n. Die Breite <strong>de</strong>s Bandpasses<br />

ist umgekehrt propotional zur Breite <strong>de</strong>s Fensters.<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 27 –


4 Digitalisierung, Abtastung und<br />

Quantisierung<br />

Bisher wur<strong>de</strong>n kontinuierliche und diskrete Daten unterschie<strong>de</strong>n. In <strong>de</strong>r praktischen Anwendung <strong>de</strong>r<br />

Bildverarbeitung tauchen aber eigentlich nur diskrete Daten auf, weil Computer i.A. nur mit diskreten<br />

Werten rechnen. Gleitkommazahlen sind zwar quasi-kontinuierlich, aber auch hier gibt es kleinste diskrete<br />

Schritte. Außer<strong>de</strong>m liefern übliche Signalquellen, wie etwa Kameras o<strong>de</strong>r Digital-/Analog-Wandler<br />

(z.B. als PCI-Einsteckkarten, o<strong>de</strong>r auf <strong>de</strong>r Soundkarte) diskrete Werte, die meist mit konstantem Abstand<br />

und einer bestimmten Länge geliefert wer<strong>de</strong>n: So geben übliche CCD-Kameras Bil<strong>de</strong>r mit 8-16 Bit aus,<br />

das entspricht 256-65536 Graustufen, <strong>de</strong>ren Abstän<strong>de</strong> in erster Näherung konstant sind. Es stellt sich nun<br />

die Frage, wie man diese Umwandlung <strong>de</strong>r realen (kontinuierlichen) Daten in diskrete Daten auf <strong>de</strong>m<br />

Computer verstehen kann. Dieser Umwandlungsprozess glie<strong>de</strong>rt sich in mehrere Schritte:<br />

1. (Bil<strong>de</strong>rzeugung): Dieser Teil beschreibt, wie das Messsystem (Kamera) die realen Daten (z.B.<br />

mittels eines Objektives) auf einen Sensor (CCD-Chip in <strong>de</strong>r Kamera) abbil<strong>de</strong>t.<br />

2. Abtastung/Digitalisierung: Hier wird das reale Bild g(⃗x) an verschie<strong>de</strong>nen, diskreten Punkten<br />

vermessen. Eine Kamera hat z.B. 1024 × 1024 Pixel an <strong>de</strong>nen sie die Intensität misst. Ein weitere<br />

Beispiel ist eine Soundkarte, die ein Sprachsignal nur in bestimmten Zeitintervallen abtastet. Es<br />

ergibt sich also eine erste Form <strong>de</strong>r Diskretisierung, nämlich auf einem Gitter. Wie das obige<br />

Beispiel <strong>de</strong>r Kamera zeigt, wird auch nicht <strong>de</strong>r gesamte Raum abgetastet, son<strong>de</strong>rn es wird evtl. nur<br />

ein Fenster ausgeschnitten (z.B. Größe <strong>de</strong>s CCD-Sensors).<br />

3. Quantisierung: Die Werte an <strong>de</strong>n Gitterpunkten sind in diesem Mo<strong>de</strong>ll noch kontinuierlich. Sie<br />

müssen nun noch in digitale Werte (z.B. 1 Byte [0..255]) überführt wer<strong>de</strong>n.<br />

28


4 Digitalisierung, Abtastung und Quantisierung<br />

4.1 Bil<strong>de</strong>rzeugung, Abtastung<br />

Zur Bil<strong>de</strong>rzeugung zählen zwei Schritte: Zunächst wird das zu vermessen<strong>de</strong> Objekt auf einen Sensor abgebil<strong>de</strong>t.<br />

Bei einer Kamera übernimmt das z.B. das Objektiv. Hierbei können Verzerrungen und an<strong>de</strong>re<br />

Einflüsse auf das (noch kontinuierliche) Bild auftreten, die hier aber nicht weiter besprochen wer<strong>de</strong>n sollen,<br />

da hierzu ein genaues Verständnis z.B. <strong>de</strong>r Abbildungseigenschaften von Linsen nötig wäre. Danach<br />

wird das Bild auf <strong>de</strong>n Sensor projiziert. Das Bild auf <strong>de</strong>m Sensor wird mit g CCD (⃗x) bezeichnet. Hier<br />

soll <strong>de</strong>r Fall einer Kamera besprochen wer<strong>de</strong>n. Die folgen<strong>de</strong> Abb. 4.1 ver<strong>de</strong>utlicht <strong>de</strong>n Aufbau einer<br />

CCD-Kamera und wie damit abgetastet wird.<br />

unempfindliche Bereiche<br />

empfindliche Pixel Abtastpunkte<br />

digitales Gitter<br />

Abb. 4.1: Abtastung mit einer CCD-Kamera<br />

Eine mo<strong>de</strong>rne Digitalkamera ist als Gitter von lichtempfindlichen Zellen aufgebaut (dunkelgrau). Zwischen<br />

<strong>de</strong>n lichtempfindlichen Bereichen befin<strong>de</strong>n sich unempfindliche Stege (hellgrau). Pro Pixel wird<br />

nur ein Wert abgelesen, <strong>de</strong>r <strong>de</strong>m Abtastpunkt (rot) zugeordnet wird. Dies be<strong>de</strong>utet eine Mittelung <strong>de</strong>r<br />

Intensität <strong>de</strong>s einfallen<strong>de</strong>n Lichtes über die Fläche <strong>de</strong>s Pixels. Da nur die Werte an <strong>de</strong>n Abtastpunkten<br />

zurückgeliefert wer<strong>de</strong>n, entsteht ein Gitter von Werten (digitales Gitter, hellgrau). Die{<br />

Mittelung über<br />

1 ⃗x im Pixel<br />

einen einzelnen Pixel kann mathematisch als Faltung mit einem Rechteck rect(⃗x) =<br />

0 sonst<br />

dargestellt wer<strong>de</strong>n:<br />

g(⃗x m,n ) = rect ⊛ g CCD =<br />

∫ ∞<br />

−∞<br />

rect(⃗x ′ − ⃗x n,m ) · g CCD (⃗x ′ ) d P x ′<br />

( ) m · ∆x<br />

Dabei ist ⃗x m,n = , m, n ∈ Z ein Punkt auf <strong>de</strong>m Diskretisierungsgitter und rect(⃗x<br />

n · ∆y<br />

′ −⃗x n,m ) ist<br />

1 nur für ⃗x ′ in <strong>de</strong>m ihm umgeben<strong>de</strong>n Pixel. Die Integration erfolgt in P Dimensionen über <strong>de</strong>n gesamten<br />

Raum. Für eine Kamera ist P = 2.<br />

Nach diesem Schritt liegt also ein Bild g m,n ≡ g(⃗x m,n ) vor, wobei die Werte an <strong>de</strong>n Positionen n, m <strong>de</strong>s<br />

Gitters noch kontinuierlich sind. Bei <strong>de</strong>r Abtastung kann vor Allem ein Problem auftauchen, das vom<br />

folgen<strong>de</strong>n Abtasttheorem beschrieben wird:<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 29 –


4 Digitalisierung, Abtastung und Quantisierung<br />

Ist das Spektrum (Fourier-Transformierte) ĝ( ⃗ k) eines Signales g(⃗x) band-<br />

Satz 4.1 (Abtasttheorem)<br />

begrenzt, d.h.<br />

ĝ( ⃗ k) = 0 ∀ ∣ ⃗ k∣ ≥ k max<br />

=<br />

2<br />

1<br />

λ min · 2 ,<br />

dann kann es aus einer Abtastung mit <strong>de</strong>r Schrittweite von ∆x = 1<br />

k max<br />

exakt rekonstruiert wer<strong>de</strong>n.<br />

Dieser Satz besagt, dass man nur ein solches Signal g(⃗x) aus einer Abtastung richtig rekonstruieren<br />

kann, <strong>de</strong>ssen kleinste periodische Strukturen (charakterisiert durch die minimale Wellenlänge λ min , bzw.<br />

die maximale Wellenzahl/räumliche Frequenz k max = 1<br />

λ min<br />

) immernoch zwei Abtastpunkte enthalten.<br />

Die Bandbegrenztheit eines solchen Signals besagt, dass keine Strukturen vorkommen, die eine größere<br />

Frequenz enthalten, als die Grenzfrequenz. Dies kann in <strong>de</strong>r obigen einfachen Form ausgedrückt wer<strong>de</strong>n,<br />

die das Fourier-transformierte Signal ĝ( ⃗ k) benutzt, das angibt, wie stark eine Frequenzkomponente ⃗ k im<br />

Signal vorhan<strong>de</strong>n ist.<br />

Die folgen<strong>de</strong> Abb. 4.2 zeigt anschaulich einige Fehler, die beim Abtasten mit zu groben 1D-Gittern<br />

auftreten können:<br />

< Grenzfrequenz<br />

Grenzfrequenz<br />

etwas zu hoch<br />

doppelte<br />

Grenzfrequenz<br />

noch etwas höher<br />

Abb. 4.2: Fehler bei <strong>de</strong>r 1D-Abtastung (Aliasing-Effekte)<br />

Die Grenzfrequenz kann gera<strong>de</strong> noch richtig dargestellt wer<strong>de</strong>n. Bei etwas höheren Frequenzen treten<br />

Sturkturen auf, die vorher nicht da waren. Die doppelte Grenzfrequenz wird nicht gar nicht erkannt und<br />

bei noch höheren Frequenzen sieht man im Bild Strukturen sehr viel größerer Wellenlänge. Letzteres<br />

rührt daher, dass in je<strong>de</strong>r Schwingungsperio<strong>de</strong> nur noch etwas weniger als ein Abtastpunkt liegt, <strong>de</strong>r immer<br />

weiter innerhalb <strong>de</strong>r Schwingung wan<strong>de</strong>rt. Solche Fehler wer<strong>de</strong>n (im 1-dimensionalen) als Aliasing<br />

bezeichnet.<br />

Auch in höher-dimensionalen Signalen können solche Fehler auftreten. Man spricht dann oft von Moiré-<br />

Musternn. Sie treten z.B. auf, wenn man ein Bild aus einer Zeitschrift (Rasterdruck) mit nur geringfügig<br />

größerer Auflösung einscannt. Man überlagert dann das Druck-Gitter mit <strong>de</strong>m Abtastgitter <strong>de</strong>s Scanners.<br />

Solche Erscheinungen treten immer auf, wenn man zwei Gitter überlagert. Die folgen<strong>de</strong> Abb. 4.3 zeigt<br />

Beispiele für <strong>de</strong>n Moiré-Effekt<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 30 –


4 Digitalisierung, Abtastung und Quantisierung<br />

Moiré-Muster an einem Vorhang:<br />

Moiré-Effekt beim Rasterdruckes:<br />

33%<br />

100%<br />

75%<br />

200%<br />

verschie<strong>de</strong>ne Zoomstufen/Abtastintervalle<br />

Abb. 4.3: Falte eines Vorhangs (dünnes Gitter <strong>de</strong>s Stoffes), mit Moiré-Mustern (mit freundlicher Genehmigung<br />

von Julia Ziegler) und Moiré-Effekte beim Rasterdruck<br />

Die Bil<strong>de</strong>rzeugung lässt sich als Faltung mit einer Rechteck-Funktion sehen. Die Abtastung ist analog<br />

ein Multiplikation mit einem sog. Delta-Kamm ∑ m,n<br />

δ(⃗x − ⃗r m,n ) (dabei sind ⃗r m,n die Abtastpunkte),<br />

o<strong>de</strong>r auch „Nagelbrettfunktion“. Das ist eine Funktion, die sich aus δ-Peaks an <strong>de</strong>n Abtastpunkten ⃗r m,n<br />

zusammensetzt. Das abgetastete Bild lässt sich dann so schreiben:<br />

g s (⃗x) = g CCD (⃗x)ẇ(⃗x) · · ∑<br />

δ(⃗x − ⃗r m,n )<br />

Zusätzlich multipliziert man noch eine „Fensterfunktion“ w(⃗x) an das Signal, die nur innerhalb <strong>de</strong>r<br />

endlichen Größe <strong>de</strong>s Bildsensors (z.B. N = L × L = 1024 × 1024 Pixel) 1 ist und sonst 0. Damit hat<br />

das Bild eine fest vorgegebene Länge/Breite L und wird mit einer Gitterkonstante ∆x gesampelt.<br />

Diese Abtastung lässt sich auch im Fourier-Raum betrachten: Dort kann man nur Frequenzkomponenten<br />

zwischen λ min = 1<br />

L/2 und λ max = ∆x darstellen (siehe Abtasttheorem). Dabei ist L = N die Länge<br />

<strong>de</strong>s Bildausschnittes (z.B. L = 1024 Pixel) und ∆x das Abtastungs-Intervall (z.B. ∆x = 1 Pixel).<br />

Diese minimalen und maximalen Wellenlängen entsprechen maximalen und minimalen Wellenzahlen<br />

k max = 1/λ min und k min = 1/λ max . Im Fourier-Raum, wie im Realraum wer<strong>de</strong>n nur genau N Bildpunkte<br />

benutzt, sodass man im Fourier-Raum wie<strong>de</strong>r ein Gitter, mit <strong>de</strong>r Schrittweite ∆k = kmax−k min<br />

N<br />

= ∆x<br />

erhält. Man kann also ebenso nur eine diskrete, endliche Menge von Frequenzkomponenten darstellen,<br />

wie man nur eine diskrete und endliche Menge von Bildpunkten hat.<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 31 –<br />

m,n


4 Digitalisierung, Abtastung und Quantisierung<br />

Die Multiplikation mit einem Gitter im Realraum entspricht nach <strong>de</strong>m Faltungstheorem einer Faltung mit<br />

einem Gitter im Fourier-Raum. Dabei benutzt man, dass die Fourier-Transformierte eines δ-Gitters wie<strong>de</strong>r<br />

ein solches Gitter ist. Dies be<strong>de</strong>utet aber, dass man die Fourier-Transformierte durch das Sampling,<br />

mit einem Delta-Kamm faltet. Dies führt dazu, dass sich das Muster an je<strong>de</strong>m Punkt dieses Gitters wie<strong>de</strong>rholt.<br />

Man erhält also im Fourier-Raum nicht nur eine Fourier-Transformierte <strong>de</strong>s Bil<strong>de</strong>s, son<strong>de</strong>rn unendlich<br />

viele, die alle nebeneinan<strong>de</strong>r liegen. Dies kann man auch so einsehen: Die Fourier-Reihe war nur<br />

für periodische Strukturen auf einem endlichen Intervall <strong>de</strong>finiert, während die Fourier-Transformation<br />

auf beliebige Signale auf einem unendlich großen Intervall anwendbar ist. Durch die Überführung <strong>de</strong>r<br />

kontinuierlichen Fourier-Trafo in die diskrete DFT, bringt man wie<strong>de</strong>r die Begrenzung <strong>de</strong>s Intervalles<br />

mit ein, was dazu führt, dass die beschriebenen Strukturen periodisch sein müssen, wie bei <strong>de</strong>r Fourier-<br />

Reihe.<br />

Die Multiplikation mit <strong>de</strong>r Fenster-Funktion entspricht im Fourier-Raum einer Faltung mit <strong>de</strong>ren Fourier-<br />

Transformierter ŵ( ⃗ k). Dies bewirkt die oben erklärte Bandbegrenzung <strong>de</strong>s Signals. Die folgen<strong>de</strong> Abbildung<br />

zeigt eine Rechteckfenster und seine Fourier-Transformierte sinc(x) = sin(x)/x:<br />

Insgesamt be<strong>de</strong>utet also die Abtastung mit einem Gitter eine obere und die Fensterfunktion eine untere<br />

Frequenzschranke für das Signal.<br />

Standardabtastung: Die oben beschriebene Abtastung, wie in einer CCD-Kamera (je<strong>de</strong>m Bildpunkt<br />

wird <strong>de</strong>r Mittelwert <strong>de</strong>s zugehörigen Pixels zugewiesen) wird als Standardabtastung bezeichnet.<br />

Überabtastung: Um Abtastfehlern zu entgehen wählt man oft (bei bekannter Periodizität <strong>de</strong>r erwarteten<br />

Strukturen) ein Abtastgitter, das kleiner ist als die kleinste Struktur. Ist das Gitter zu fein, so steigt<br />

<strong>de</strong>r Speicherverbrauch sehr stark, ist es zu grob kommt es zu obigen Fehlern. Üblicherweise wählt man<br />

∆x so, dass man etwa 3-6 Abtastpunkte pro Schwingung erhält.<br />

Rekonstruktion <strong>de</strong>s Bil<strong>de</strong>s: Es fehlt noch eine Möglichkeit, um aus <strong>de</strong>m diskretisierten Bild das kontinuierliche<br />

Bild zu rekonstruieren. Dazu muss man die Werte an Punkten zwischen zwei Gitterpunkten<br />

aus <strong>de</strong>n umliegen<strong>de</strong>n Grauwerten interpolieren. Üblicherweise hängt dann <strong>de</strong>r Grauwert mit abstandsabhängig<br />

von <strong>de</strong>n umliegen<strong>de</strong>n Grauwerten ab.<br />

4.2 Quantisierung<br />

Der letzte Schritt be<strong>de</strong>utet die Überführung <strong>de</strong>s kontinuierlichen Signals in ein diskretes Signal, wie<br />

es etwa mit <strong>de</strong>n Datentypen int o<strong>de</strong>r char dargestellt wer<strong>de</strong>n kann. Dies gescheit in sog. Analog-<br />

/Digitalwandlern, elektronischen Bauelementen, die ein Eingangssignal mit verschie<strong>de</strong>nen vorgegebenen<br />

Signalstufen vergleichen und einen entsprechen<strong>de</strong>n Digitalwert ausgeben, z.B.:<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 32 –


4 Digitalisierung, Abtastung und Quantisierung<br />

I = 0 → 0<br />

...<br />

I = 0.5 → 127<br />

...<br />

I = 1 → 255<br />

Die folgen<strong>de</strong> Abb. 4.4 zeigt ein und dasselbe Bild, aber mit verschie<strong>de</strong>nen Anzahlen an Grau- und Farbstufen<br />

quantisiert.<br />

256 Graustufen 32 Graustufen 8 Graustufen 4 Graustufen 2 Graustufen<br />

alle Farben 256 Farben 32 Farben 8 Farben 4 Farben 2 Farben<br />

Abb. 4.4: Quantisierung eines Bil<strong>de</strong>s mit unterschiedlich vielen Grau- und Farbstufen<br />

Üblicherweise sind die Quantisierungsstufen in <strong>de</strong>r Bildverarbeitung äquidistant. Um an<strong>de</strong>re Stufen zu<br />

erreichen kann man am einfachsten das Bild vor <strong>de</strong>r Quantisierung transformieren. Treten z.B. sehr große<br />

Intensitäten I ≈ 1 und gleichzeitig sehr kleine Intensitäten I ≈ 0.005 auf, wobei in bei<strong>de</strong>n Bereichen<br />

Details aufgelöst wer<strong>de</strong>n sollen, so kann man vor <strong>de</strong>r Quantisierung <strong>de</strong>n Logarithmus <strong>de</strong>r Intensitäten<br />

an <strong>de</strong>n Bildpunkten berechnen. Dies führt dann bei Anwendung einer äquidistanten Quantisierung zu<br />

Grauwerten, die nicht-äquidistanten Intensitäten entsprechen.<br />

Macht man ein einziges Bild, so kann man Grauwerte mit <strong>de</strong>r Genauigkeit ∆g messen, die <strong>de</strong>m halben<br />

Abstand zweier Grauwertstufen entspricht. Es gilt also σ ∝ ∆g. Macht man allerdings mehrere Messungen<br />

und mittel so über N Messungen an ein und <strong>de</strong>mselben Pixel, so sinkt die Standardabweichung/<strong>de</strong>r<br />

Fehler mit N:<br />

σ ∝ ∆g √<br />

N<br />

Man kann so durch wie<strong>de</strong>rholte Bildaufnahme die Genauigkeit steigern. Es gibt aber meist eine untere<br />

Grenze für die Standardabweichung, die durch an<strong>de</strong>re (systematische) Effekte im Bildaufnahmesystem<br />

bedingt sind.<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 33 –


5 Bildrepräsentation<br />

Üblicherweise wer<strong>de</strong>n Bil<strong>de</strong>r als Feld im Speicher repräsentiert. Man kann dann mit 1,2,3,... Indizes auf<br />

die einzelnen Pixel zugreifen. Manchmal sind aber auch an<strong>de</strong>re Repräsentationen von nutzen:<br />

5.1 Lauflängenkodierung<br />

Grauwertbil<strong>de</strong>r lassen sich vorteilhaft mit <strong>de</strong>r Lauflängenkodierung (run length encoding, RLE) komprimieren.<br />

Dazu speichert man nicht die Abfolge <strong>de</strong>r Pixel (in je<strong>de</strong>r Zeile) ab, son<strong>de</strong>rn gibt an, wie oft Pixel<br />

hintereinan<strong>de</strong>r vorkommt. Kommt in einer Bildzeile also <strong>de</strong>r Wert w 25-mail hintereinan<strong>de</strong>r, so speichert<br />

man nicht 25 mal <strong>de</strong>n Wert w, son<strong>de</strong>rn die Anzahl 25 und einmal <strong>de</strong>n Wert w. Diese Kompressionsart<br />

wird in einigen Grafikformaten (z.B. TIFF, TGA, BMP) verwen<strong>de</strong>t und eignet sich natürlich vor Allem<br />

für Bil<strong>de</strong>r, in <strong>de</strong>nen auf großen Bereichen <strong>de</strong>r gleiche Grauwert steht. Man muss allerdings beachten,<br />

dass bei Grauwertbil<strong>de</strong>rn noch ein irgendwie gearteter Marker eingeführt wer<strong>de</strong>n muss, um zwischen<br />

Anzahl und Wert zu unterschei<strong>de</strong>n, da sonst alle einzelnen Pixel auf die doppelte Größe (Anzahl 1 +<br />

Pixelwert) aufgeblasen wer<strong>de</strong>n. Hier ein Beispiel:<br />

Daten:<br />

Co<strong>de</strong>:<br />

12 12 12 15 15 14 15 14 20 20 20 20 20 20 20 85 90 10 10 10 10 10 10<br />

3 12 2 15 14 15 14 7 20 85 90 6 10<br />

Anzahl Daten<br />

Diese Kodierung ist bei Schwarz-Weiß-Bil<strong>de</strong>rn beson<strong>de</strong>rs effektiv, weil hier nicht <strong>de</strong>r Wert mit abgespeichert<br />

wer<strong>de</strong>n muss. Denn auf ein schwarzes Gebiet folgt immer ein weißes und umgekehrt. Man nimmt<br />

an, dass <strong>de</strong>r erste Pixel 0 ist. Ist er dies nicht, so speichert man einfach 0 schwarze Pixel am Anfang ab.<br />

Ein Beispiel:<br />

Daten:<br />

Co<strong>de</strong>:<br />

1 1 1 1 0 0 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1<br />

0 4 2 2 1 1 1 10 9 4<br />

Anzahl<br />

5.2 Quadtree/Octree<br />

Bei <strong>de</strong>r Repräsentation als Quadtree (Octree für 3D) wer<strong>de</strong>n Schwarz-Weiß-Bil<strong>de</strong>r immer wie<strong>de</strong>r in vier<br />

Quadranten unterteilt. Ist ein Quadrant homogen gefärbt, so wird seine Farbe gespeichert. An<strong>de</strong>rnfalls<br />

wird er weiter unterteilt. In Abb. 5.1 ist ein Beispiel gezeigt.<br />

34


5 Bildrepräsentation<br />

Bild:<br />

NW<br />

NO<br />

Quadtree:<br />

NW NO SW SO<br />

SW<br />

SO<br />

Abb. 5.1: Quadtree eines Bil<strong>de</strong>s<br />

Man kann diesen Baum nach Depth-First-Or<strong>de</strong>r durchlaufen und je<strong>de</strong>n Knoten kodiert abspeichert. b<br />

steht dabei für schwarz, w für weiß und g für einen inneren Knoten. Der so entstan<strong>de</strong>ne Co<strong>de</strong> ist ein<strong>de</strong>utig.<br />

Die folgen<strong>de</strong>n Zeilen zeigen <strong>de</strong>n Co<strong>de</strong> zum Baum aus Abb. 5.1. In <strong>de</strong>r zweiten Zeile sind zur<br />

besseren Lesbarkeit Klammern eingefügt wor<strong>de</strong>n:<br />

g g w w g w w w b b w g g w b w b b w g w b w w g b w g b b w w w<br />

g( g( w w g( w w w b) b)) w g( g( w b w b) b w g( w b w w)) g( b w g( b b w w) w)<br />

Ein solcher Baum ist eine effiziente (platzsparen<strong>de</strong>) Darstellung, wenn viele Blattknoten in <strong>de</strong>n oberen<br />

Baumebenen liegen, da diese für große Bildbereiche stehen. Im Gegensatz zur Lauflängekodierung<br />

wer<strong>de</strong>n hier 2D-Daten kodiert und nicht nur einzelne Zeilen.<br />

5.3 Weitere Kodierungsmetho<strong>de</strong>n<br />

Neben <strong>de</strong>n obigen bei<strong>de</strong>n Varianten wird in Dateiformaten für Grafiken oft <strong>de</strong>r LZW-Algorithmus (Lempel-<br />

Ziv-Welch-Algorithmus) eingesetzt. Er ermöglicht es Bil<strong>de</strong>r mit diskreten Grauwerten dann gut zu codieren,<br />

wenn sie große gleichfarbige Stellen aufweisen.<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 35 –


Teil II<br />

Grundlegen<strong>de</strong> Operationen auf<br />

Bilddaten<br />

36


6 Punktoperationen und geometrische<br />

Operationen<br />

6.1 Punktoperationen<br />

Definition 6.1 (Punktoperation) Eine Punktoperation P m,n än<strong>de</strong>rt <strong>de</strong>n Grauwert eines Pixels, in Abhängigkeit<br />

vom alten Grauwert selbst und evtl. <strong>de</strong>r Position <strong>de</strong>s Bildpunktes. Man kann sie so notieren:<br />

g ′ m,n = P m,n (g m,n )<br />

Ist die Punktoperation von <strong>de</strong>r Position <strong>de</strong>s Pixels unabhängig, so nennt man sie homogen. Bei solchen<br />

lässt man die Indizes weg:<br />

g ′ m,n = P (g m,n )<br />

Hängt eine Punktoperation von zwei Bil<strong>de</strong>rn ab, so nennt man sie dyadische Punktoperation. Man kann<br />

sie so schreiben:<br />

g ′ m,n = P m,n (g m,n , h m,n )<br />

Schnelle Berechnung, Lookup-Tables: Vor Allem bei homogenen Punktoperationen treten oft Rechnungen<br />

mit <strong>de</strong>n selben Parametern auf. So kann es z.B. nur 256 verschie<strong>de</strong>ne Grauwerte, also auch nur<br />

256 verschie<strong>de</strong>ne Ergebnisse einer homogenen Punktoperation geben. Darum kann es sinnvoll sein alle<br />

möglichen vor <strong>de</strong>r Anwendung <strong>de</strong>r Operation Ergebnisse zu berechnen und bei <strong>de</strong>r Anwendung diese<br />

nur noch in einer Tabelle nachzushhlagen. Eine solche Tabelle wird auch Lookup-Table (LUT) genannt.<br />

Liegen etwa die Grauwerte zwischen 0 und 255, so kann sie als einfaches Array implementiert wer<strong>de</strong>n,<br />

wobei <strong>de</strong>r zu verarbeiten<strong>de</strong> Grauwert als In<strong>de</strong>x dient. Vor Allem bei Punktoperationen mit komplexen<br />

arithmetischen Funktionen (wie etwa <strong>de</strong>m Logarithmus) ergibt dies eine wesentliche Beschleunigung.<br />

Es än<strong>de</strong>rt sich dabei zwar nicht die Komplexität <strong>de</strong>r Operation, wohl aber die Vorfaktoren. Eine LUT-<br />

Operation ist umso effizienter, je weniger Graustufen ein Bild enthält. In einigen Frame-Grabbern sind<br />

LUTs schon in Hardware implementiert und ermöglichen so eine schnelle Vorverarbeitung <strong>de</strong>r eingelesenen<br />

Bil<strong>de</strong>r.<br />

Auch dyadische Punktoperationen können mit LUTs implementiert wer<strong>de</strong>n. Die LUT ist dann ein 2D-<br />

Array.<br />

37


6 Punktoperationen und geometrische Operationen<br />

6.2 Beispiele für Punktoperationen<br />

lineare Spreizung <strong>de</strong>s Grauwertbereiches: Die folgen<strong>de</strong> Abb. 6.1 zeigt was mit einem kontrastarmen<br />

Bild passiert, wenn man <strong>de</strong>n Grauwertbereich linear spreizt.<br />

Originalbild (Kontrastarm):<br />

Histogramme:<br />

2500<br />

2000<br />

4-fach gespreizt:<br />

1500<br />

1000<br />

500<br />

0<br />

0 50 100 150 200 250<br />

2500<br />

2000<br />

1500<br />

1000<br />

lineare LUT:<br />

300<br />

250<br />

200<br />

150<br />

100<br />

50<br />

0<br />

0 50 100 150 200 250<br />

500<br />

0<br />

0 50 100 150 200 250<br />

Abb. 6.1: Spreizung <strong>de</strong>s Grauwertbereiches eines Bil<strong>de</strong>s<br />

Je<strong>de</strong>r Grauwert wird dafür mit einem Faktor α multipliziert. Der Grauwertbereich bleibt aber auf [0..255]<br />

beschränkt, sodass im oberen Bereich ein Abschnei<strong>de</strong>n erfolgt. Evtl. kann man auch noch eine Verschiebung<br />

g 0 einbauen. Man kann diese homogene Punktoperation dann so notieren:<br />

S(g) = α · (g − g 0 )<br />

Das Beschnei<strong>de</strong>n auf <strong>de</strong>n Bereich [0..255] ist hier nicht dargestellt. In C könnte man eine solche LUT so<br />

erzeugen:<br />

Listing 6.1: Spreizung <strong>de</strong>s Grauwertbereiches mit Hilfe einer LUT<br />

1 unsigned char luts[256], pic[256][256];<br />

2<br />

3 /* Berechnung <strong>de</strong>r LUT */<br />

4 for (int i=0; i


6 Punktoperationen und geometrische Operationen<br />

nicht-lineare Spreizung <strong>de</strong>s Grauwertbereiches: Die folgen<strong>de</strong> Abb. 6.2 zeigt was mit einem kontrastarmen<br />

Bild passiert, wenn man <strong>de</strong>n Grauwertbereich mit einer γ-Transformation spreizt.<br />

Originalbild (Kontrastarm):<br />

Histogramme:<br />

2500<br />

2000<br />

1500<br />

1000<br />

Gamma LUT:<br />

300<br />

nach γ-Transformation:<br />

500<br />

0<br />

0 50 100 150 200 250<br />

2500<br />

250<br />

200<br />

150<br />

γ = 0,5<br />

2000<br />

1500<br />

1000<br />

100<br />

50<br />

0<br />

0 50 100 150 200 250<br />

500<br />

0<br />

0 50 100 150 200 250<br />

Abb. 6.2: Spreizung <strong>de</strong>s Grauwertbereiches mit einer γ-Transformation<br />

Je<strong>de</strong>r Grauwert wird dafür folgen<strong>de</strong>rmaßen mit <strong>de</strong>m Parameter γ transformiert:<br />

( g<br />

) γ<br />

Γ(g) = 255 ·<br />

255<br />

Es han<strong>de</strong>lt sich wie<strong>de</strong>r um eine homogene Punktoperation. Die Implementation kann genauso wie oben<br />

erfolgen. Eine Überschreitung <strong>de</strong>s Bereiches [0..255] ist nicht möglich. Diese Operation ermöglich eine<br />

Vergrößerung <strong>de</strong>s dynamischen Bereiches bei dunklen Grautönen auf Kosten <strong>de</strong>r hellen Grautöne<br />

(entspricht <strong>de</strong>m Verhalten <strong>de</strong>s menschlichen Auges). Siehe dazu auch Abschnitt 2.3.<br />

Bildmittelung: Oft hat man es mit Bil<strong>de</strong>r zu tun, bei <strong>de</strong>nen das Signal ähnlich groß ist wie das Hintergrundrauschen.<br />

Dies ist z.B. bei astronomischen Aufnahmen sehr dunkler Sterne <strong>de</strong>r Fall. In solchen<br />

Fällen hilft es mehrere Aufnahmen <strong>de</strong>s selben Motives zu machen und diese dann Punktweise zu mitteln.<br />

Angenommen es liegen K Aufnahmen g nm (k) vor, dann gilt:<br />

g ′ mn = M mn (g (1)<br />

nm, ..., g (K)<br />

nm ) = 1 K ·<br />

Nach <strong>de</strong>n Gesetzen <strong>de</strong>r Statistik reduziert sich dabei <strong>de</strong>r Rauschpegel um <strong>de</strong>n Faktor<br />

1 √<br />

K<br />

. Die folgen<strong>de</strong><br />

Abb. 6.3 zeigt <strong>de</strong>n Effekt <strong>de</strong>r Mittelung.<br />

K∑<br />

l=1<br />

g (k)<br />

nm<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 39 –


6 Punktoperationen und geometrische Operationen<br />

Einzelbild: N=5 N=10<br />

N=20 N=100<br />

Mittelwert:<br />

80.5<br />

Standardabweichung:<br />

73.2<br />

96.5<br />

45.5<br />

Standardabweichung als Funktion <strong>de</strong>r<br />

Anzahl N an gemittelten Bil<strong>de</strong>rn:<br />

88.3<br />

29.3<br />

Standardabweichung<br />

80<br />

70<br />

60<br />

50<br />

40<br />

30<br />

20<br />

10<br />

0<br />

84.3<br />

20.3<br />

0 20 40 N 60 80 100<br />

80.5<br />

11.8<br />

Abb. 6.3: Effekt <strong>de</strong>r Mittelung von N verrauschten Bil<strong>de</strong>rn<br />

radiometrische Zweipunkt-Korrektur: Oft macht man Aufnahmen mit ungleichmäßiger Ausleuchtung.<br />

Außer<strong>de</strong>m können die Pixel <strong>de</strong>r Kamera unterschiedlich auf die selbe Intensität reagieren. Dies<br />

wird z.B. durch Produktionsfehler und durch Staub o<strong>de</strong>r Wassertröpchen auf <strong>de</strong>m (gekühlten) CCD-<br />

Chip hervorgerufen. Man kann solche Fehler aber korrigieren. Dazu macht man zwei Referenzaufnahmen.<br />

Ein sog. Dunkelbild („darkfield“) d mn und ein Referenzbild r mn ohne Objekt. Die obigen Effekte<br />

kann man mit folgen<strong>de</strong>r inhomogener Punktoperation korrigieren:<br />

g ′ mn = R mn (g nm , r mn , d mn ) = const · gnm − d mn<br />

r nm − d mn<br />

In <strong>de</strong>r folgen<strong>de</strong>n Abbildung Abb. 6.4 sieht man ein Beispiel für die Anwendung <strong>de</strong>r Kalibrierung, allerdings<br />

ohne ein Dunkelbild, da hier Störungen durch das Abbildungssystem ausgeglichen wer<strong>de</strong>n sollen,<br />

die Belichtung aber weit über <strong>de</strong>m Rauschlevel lag.<br />

Referenzbild Originalaufnahme korrigiertes Bild<br />

Abb. 6.4: Kalibrierung <strong>de</strong>s Absorbtionsbil<strong>de</strong>s eines Bose-Einstein-Kon<strong>de</strong>nsates (dunkler Fleck) mit einem<br />

Referenzbild, aber ohne Dunkelbild (d mn = 0). Die Ringe im Referenz- und Originalbild sind die die<br />

Störung durch das Abbildungssystem, die herausgefiltert wer<strong>de</strong>n sollen.<br />

Die Zweipunkt-Korrektur ist nicht immer passend. Manchmal ist es nötig nicht-lineare Störungen zu<br />

kalibrieren. Man nimmt dann z.B. drei Bil<strong>de</strong>r auf und korrigiert mit einer parabolischen Kurve, o<strong>de</strong>r<br />

Kurven noch höherer Ordnung (mit entsprechend mehr Referenzbil<strong>de</strong>rn).<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 40 –


6 Punktoperationen und geometrische Operationen<br />

Fensterfunktionen: Bevor man die Fourier-Transformierte eines Bil<strong>de</strong>s berechnet, muss man das Bild<br />

mit einer Fensterfunktion multiplizieren, die dafür sorgt, dass die Grauwerte zum Rand hin auf 0 abfallen.<br />

Ist dies nicht gegeben, so wirkt die wirkt die Begrenzung <strong>de</strong>s Bil<strong>de</strong>s wie die Faltung mit einer Rechteck-<br />

Funktion und das Spektrum <strong>de</strong>s Bil<strong>de</strong>s wird durch die zugehörige sinc-Funktion gestört. Oft verwen<strong>de</strong>t<br />

man ein Sinus-Fenster, da es nur eine einzige Komponente im Fourier-Raum hat.<br />

( πm<br />

) ( πn<br />

)<br />

g mn = W mn (g mn ) = g mn · sin · sin<br />

M N<br />

In <strong>de</strong>r folgen<strong>de</strong>n Abb. 6.5 wird <strong>de</strong>r Effekt illustriert.<br />

Originalaufnahme<br />

Bild multipliziert<br />

mit Fenster:<br />

Sinus-<br />

Maske<br />

Störung<br />

durch<br />

fehlen<strong>de</strong>s<br />

Fenster<br />

Fourier-Transformierte:<br />

Abb. 6.5: Effekt eines Sinus-Fensters auf die FFT<br />

6.3 Geometrische Transformationen<br />

Es gibt eine weitere Klasse von Punktoperationen, sog. geometrische Transformationen. Sie än<strong>de</strong>rn in<br />

erster Linie nicht <strong>de</strong>n Grauwert eines Pixels, son<strong>de</strong>rn seine Position:<br />

⃗x ′ = M(⃗x)<br />

Damit die Pixel <strong>de</strong>n Bil<strong>de</strong>s g mn nach <strong>de</strong>r Transformation wie<strong>de</strong>r auf das Gitter eines Pixelbil<strong>de</strong>s passen<br />

ist es evtl. nötig an Zwischenstellen zu interpolieren. In Abb. 6.6 sind einige mögliche Transformationen<br />

gezeigt. Viele dieser Operationen können als einfache lineare Abbildungen dargestellt wer<strong>de</strong>n, wenn<br />

man sog. homogene Koordinaten verwen<strong>de</strong>t.<br />

Translation: Rotation: Dilatation: Scherung: Stauchung:<br />

Abb. 6.6: verschie<strong>de</strong>ne geometrische Transformationen<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 41 –


7 Nachbarschaftsoperationen<br />

Definition 7.1 (Nachbarschaftsoperation) Eine Nachbarschaftsoperation än<strong>de</strong>rt <strong>de</strong>n Grauwert g mn<br />

eines Pixels in Abhängigkeit von ihm selbst und in Abhängigkeit <strong>de</strong>r Grauwerte in einem kompakten<br />

Gebiet rund um g mn . Man notiert solche Operationen mit Operatoren A, B, ...:<br />

⃗g ′ = A ⃗g<br />

Man kann verschie<strong>de</strong>ne Nachbarschaftsoperationen unterschei<strong>de</strong>n, die in <strong>de</strong>n folgen<strong>de</strong>n Abschnitten beschrieben<br />

wer<strong>de</strong>n:<br />

• lineare verschiebungsinvariante Filter (LSI), siehe 7.1<br />

• Rangordnungsfilter, siehe 7.2<br />

• rekursive Filter, siehe 7.3<br />

7.1 lineare verschiebungsinvariante Filter<br />

7.1.1 Faltungen<br />

LSI-Filter sind Filter, die <strong>de</strong>n Grauwert basierend auf einer kleinen Umgebung verän<strong>de</strong>rt. Dazu wer<strong>de</strong>n<br />

die Grauwerte in <strong>de</strong>r Umgebung gewichtet und aufsummiert. Diese mathematische Operation wird als<br />

Faltung bezeichnet:<br />

Definition 7.2 (Faltung) Man betrachte ein diskretes 1D- bzw. 2D-Bild g m(n) und eine Faltungsmaske<br />

h mn mit m, n ∈ [−r, r]. Es gilt:<br />

1D: g ′ n =<br />

r∑<br />

k=−r<br />

h k · g n−k 2D: g ′ mn =<br />

r∑<br />

k=−r l=−r<br />

r∑<br />

h kl · g m−k,n−l<br />

Diese Operation lässt sich auch für kontinuierliche Signale formulieren:<br />

∫<br />

∫∫<br />

1D: g(x) = h(x ′ ) · g(x − x ′ ) dx ′ 2D: g(⃗x) =<br />

h(⃗x ′ ) · g(⃗x − ⃗x ′ ) d W x ′<br />

Die folgen<strong>de</strong> Abb. 7.1 illustriert <strong>de</strong>n praktischen Ablauf einer Faltung.<br />

42


7 Nachbarschaftsoperationen<br />

Beispiel für eine Faltungsmaske:<br />

0 1 0<br />

1 -4 1<br />

0 1 0<br />

bildliche Darstellung <strong>de</strong>r Faltung:<br />

Beispiel für eine 1D-Faltung:<br />

Maske: 1/3 1/3 1/3<br />

Original: 0 0 0 1 1 1 1<br />

Ergebnis: 0<br />

1/3 1/3 1/3<br />

0 0 0 1 1 1 1<br />

0 1/3<br />

1/3 1/3 1/3<br />

0 0 0 1 1 1 1<br />

0 1/3 2/3<br />

1/3 1/3 1/3<br />

0 0 0 1 1 1 1<br />

0 1/3 2/3 1<br />

1/3 1/3 1/3<br />

0 0 0 1 1 1 1<br />

0 1/3 2/3 1 1<br />

Beispiel für eine 1D-Faltung auf Zwischengitter:<br />

Maske: 1/2 1/2<br />

Original: 0 0 0 1 1 1 1<br />

Ergebnis: 0<br />

1/2 1/2<br />

0 0 0 1 1 1 1<br />

0 0<br />

1/2 1/2<br />

0 0 0 1 1 1 1<br />

0 0 1/2<br />

1/2 1/2<br />

0 0 0 1 1 1 1<br />

0 0 1/2 1<br />

1/2 1/2<br />

0 0 0 1 1 1 1<br />

0 0 1/2 1 1<br />

Abb. 7.1: Beispiel einer Faltungsmaske (Laplace-Filter) und anschauliche Darstellung <strong>de</strong>r Faltungsoperation<br />

Die Koeffizienten einer Faltungsmaske wer<strong>de</strong>n üblicherweise in <strong>de</strong>r obigen Schreibweise dargestellt. Dabei<br />

ist zu beachten, dass die Summe über die Koeffizienten 1 ergeben muss. Die Koeffizienten wer<strong>de</strong>n<br />

aber üblicherweise als ganze Zahlen dargestellt, sodass man evtl. noch einen Normierungsfaktor berücksichtigen<br />

muss. Wird dieser Faktor fortgelassen, so wird <strong>de</strong>r gegebene Grauwertbereich evtl. überschritten.<br />

Die Maske wird über das Bild geschoben. An <strong>de</strong>r aktuellen Position wer<strong>de</strong>n die Bildpunkte unter <strong>de</strong>r<br />

Maske mit <strong>de</strong>m entsprechen<strong>de</strong>n Faktoren multipliziert. Danach wer<strong>de</strong>n alle diese Werte aufaddiert. Deswegen<br />

bezeichnet man das Verfahren als Wichten und Addieren.<br />

Die bisher aufgeführten Faltungsmasken haben ungeradzahlige Breiten 2r + 1. Ist die Breite einer Faltunsgmaske<br />

geradzahlig, so liegt das Ergebnisbild auf einem Zwischengitter (siehe Abb. 7.1).<br />

Symmetrien:<br />

Es gibt zwei mögliche Symmetrien bei diskreten LSI-Filtern:<br />

• gera<strong>de</strong> Symmetrie: h −m,n = h m,n und h m,−n = h m,n<br />

• ungera<strong>de</strong> Symmetrie: h −m,n = −h m,n und h m,−n = −h m,n<br />

Nutzt man diese Symmetrien aus, so kann man die Berechnung <strong>de</strong>r Filter vereinfachen, da jetzt die<br />

Summe nur noch über die halbe Maske laufen muss. Außer<strong>de</strong>m spart man dabei Multiplikationen. Eine<br />

tatsächliche Verbesserung <strong>de</strong>r Rechenzeit bringt dies nur dann, wenn Multiplikationen teurer sind, als<br />

Additionen.<br />

Ran<strong>de</strong>ffekte: Am Rand eines Bil<strong>de</strong>s gibt es bei <strong>de</strong>r Faltung Probleme: Wie soll man die fehlen<strong>de</strong>n<br />

Pixel behan<strong>de</strong>ln? Mögliche Lösungen sind:<br />

1. Für die Randpixel wer<strong>de</strong>n keine neuen Bildpunkte berechnet. Der Nachteil dabei ist, dass das Bild<br />

kleiner wird. Bei <strong>de</strong>r Anwendung mehrerer Filter hintereinan<strong>de</strong>r wird das Bild somit kleiner und<br />

kleiner.<br />

2. alles Null: Hierbei wer<strong>de</strong>n alle Randpixel auf 0 gesetzt. Dies führt allerdings evtl. zu großen<br />

Fehlern, wenn sich die Randpixel <strong>de</strong>s Bil<strong>de</strong>s von 0 unterschei<strong>de</strong>n. Dafür ist diese Metho<strong>de</strong> am<br />

einfachsten zu implementieren.<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 43 –


7 Nachbarschaftsoperationen<br />

3. zyklische Fortsetzung: Das Bild wird am linken Rand mit <strong>de</strong>m rechten Bildrand und oben mit<br />

<strong>de</strong>m unteren Bildrand fortgesetzt (Aufrollen <strong>de</strong>s 2D-Bil<strong>de</strong>s zu einem Torus im 3D-Raum). Dabei<br />

ergibt sich eine sog. zyklische Faltung. Wird die Faltung durch eine Multiplikation im Fourier-<br />

Raum ausgeführt, so entspricht sie dieser zyklischen Faltung. Durch die periodische Fortsetzung<br />

kann es am Bildrand zu Grauwertsprüngen kommen, die nach Anwendung <strong>de</strong>r Filtermaske zu ungewollten<br />

Artefakten führen. Darum wird diese Lösung selten verwen<strong>de</strong>t. Sie ist unproblematisch,<br />

wenn das Bild zum Rand hin überall auf <strong>de</strong>n gleichen Grauwert abfällt.<br />

4. gespiegelter Rand: Das Bild wird gespiegelt fortgesetzt. Diese Randbedingung führt schon zu<br />

recht wenigen Fehlern.<br />

Rand = 0 zyklischer Rand gespiegelter Rand<br />

Ergebnis nach Mittelung:<br />

Fehler<br />

Abb. 7.2: Prinzip verschie<strong>de</strong>ner Randbedingungen und die Fehler, die dabei auftreten können. Es wur<strong>de</strong> ein<br />

3 × 3 Mittelwert-Filter eingesetzt<br />

Keine <strong>de</strong>r angegebenen Metho<strong>de</strong>n kann eine fehlerfreie Faltung garantieren. Darum sollte man darauf<br />

achten, dass die interessanten Objekte im Bild min<strong>de</strong>stens eine halbe Maskenbreite vom Rand entfernt<br />

liegen.<br />

Probleme bei <strong>de</strong>r Implementierung von Faltungsalgorithmen:<br />

noch weitere Probleme auf:<br />

Neben <strong>de</strong>n Randbedingungen treten<br />

• Mit steigen<strong>de</strong>r Dimension nimmt die Komplexität <strong>de</strong>s Faltungsalgorithmus und die Größe <strong>de</strong>r<br />

Nachbarschaft schnell zu.<br />

• Bei berechnen <strong>de</strong>r Faltung müssen in <strong>de</strong>r einfachsten Implementierung die Ergebnisse in ein neues<br />

Bild geschrieben wer<strong>de</strong>n, da überschriebene Werte evtl. noch gebraucht wer<strong>de</strong>n (siehe Abb. 7.1,<br />

rechts oben).<br />

7.1.2 Eigenschaften von LSI-Filtern<br />

Satz 7.1 (Linearität) Je<strong>de</strong>r LSI-Operator (Filter) H ist linear. D.h. zusammen mit zwei Bil<strong>de</strong>rn f,⃗g ⃗ ∈<br />

C W und zwei Skalaren a, b ∈ C gilt:<br />

H ( a ⃗g + b f ⃗ ) = a · (H⃗g) + b · (Hf)<br />

⃗<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 44 –


7 Nachbarschaftsoperationen<br />

Satz 7.2 (Verschiebungsinvarianz) Je<strong>de</strong>r LSI-Operator (Filter) H ist verschiebungsinvariant. Dies<br />

be<strong>de</strong>utet, dass <strong>de</strong>r Operator nicht von <strong>de</strong>r Position im Bild abhängt, sich also während <strong>de</strong>r Faltung<br />

nicht verän<strong>de</strong>rt. Mit <strong>de</strong>m Verschiebungsoperator S mn , <strong>de</strong>r ein Bild um [m, n] t verschiebt, kann man<br />

die Verschiebungsinvarianz so formulieren: Je<strong>de</strong>r Operator, H, <strong>de</strong>r mit <strong>de</strong>m Verschiebungsoperator S mn<br />

vertauscht, also HS mn = S mn H ist verschiebungsinvariant. Es ist also egal, ob man <strong>de</strong>n Operator erst<br />

anwen<strong>de</strong>t und dann das Ergebnis beliebig verschiebt, o<strong>de</strong>r umgekehrt.<br />

Satz 7.3 (Kommutativität)<br />

Zwei beliebige LSI-Operator A, B sind kommutativ, d.h.:<br />

AB = BA<br />

Die Reihenfolge, in <strong>de</strong>r LSI-Operatoren auf ein Bild angewen<strong>de</strong>t wer<strong>de</strong>n ist also egal.<br />

Der Beweis kann einfach im Fourier-Raum erfolgen, weil dort Faltungen in Multiplikationen übergehen,<br />

die bekanntlich kommutativ sind.<br />

Satz 7.4 (Assoziativität)<br />

Zwei beliebige LSI-Operator A, B sind assoziativ, d.h.:<br />

AB = C<br />

Dabei ist C ebenfalls ein LSI-Filter. Die Anwendung zweier (o<strong>de</strong>r mehrerer) LSI-Filter kann zu einem<br />

neuen LSI-Filter zusammengefasst wer<strong>de</strong>n.<br />

Satz 7.5 (Distributivität über die Addition) Zwei beliebige LSI-Operator A, B sind distributiv bzgl.<br />

<strong>de</strong>r Addition:<br />

(A + B)⃗g = C⃗g<br />

Dabei ist C ebenfalls ein LSI-Filter und ⃗g ein Bild.<br />

Punktantwort: Im Abschnitt 3 über die Fourier-Darstellung von Bil<strong>de</strong>rn wur<strong>de</strong> erklärt, dass ein Bild<br />

als Linearkombination von Einzelbil<strong>de</strong>rn dargestellt, die jeweils nur einen Punkt enthalten, <strong>de</strong>r von 0<br />

verschie<strong>de</strong>n ist. Ein solches Bild entspricht im kontinuierlichen Raum einer δ-Funktion. Ein solches<br />

Basisbild sei mit ⃗p mn bezeichnet. Es hat an <strong>de</strong>r Stelle (m, n) t <strong>de</strong>n Pixel ≠ 0. Ein beliebiges Bild ⃗g lässt<br />

sich dann so darstellen:<br />

⃗g = ∑ ∑<br />

g mn ⃗p mn<br />

m n<br />

Da je<strong>de</strong>r LSI-Operator H linear ist, gilt weiter:<br />

H⃗g = ∑ m<br />

∑<br />

g mn (H⃗p mn )<br />

n<br />

Es ist also interessant, wie die Antwort eines Filters auf einen δ-Puls aussieht. Diese nennt man Impulsantwort.<br />

Definition 7.3 (Impulsantwort) Die Impulsantwort eines LSI-Filters H ist das Ergebnis <strong>de</strong>r Anwendung<br />

<strong>de</strong>s Filters H auf ein Impulsbild ⃗p mn , bzw. eine δ-Funktion. Für diskrete Filter ergibt sich als<br />

Ergebnis die Filtermaske selbst.<br />

Da bei diskreten Filtern die Punktantwort endlich ausge<strong>de</strong>hnt ist (endlich große Filtermaske) spricht man<br />

auch von FIR-Filter o<strong>de</strong>r Finite-Impulse-Response-Filtern.<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 45 –


7 Nachbarschaftsoperationen<br />

Transferfunktion: Die Faltung im Realraum geht im Fourierraum in eine punktweise Multiplikation<br />

über. Es ist also auch interessant sich die Fourier-Transformierte <strong>de</strong>r Punktantwort ⃗ h eines LSI-Filters H<br />

anzusehen. Obiges lässt sich so zusammenfassen::<br />

Man <strong>de</strong>finiert so:<br />

Definition 7.4 (Transferfunktion)<br />

H⃗g = ⃗ h ⊛⃗g = F −1[ˆ⃗h · ˆ⃗g<br />

]<br />

Die Impulsantwort eines LSI-Filters H sei mit ⃗ h bezeichnet. Ihre<br />

Fourier-Transformierte ˆ⃗ h bezeichnet man als Transferfunktion (TF). Sie gibt an, wie stark welcher<br />

Frequenzanteil im endgültigen Bild enthalten ist.<br />

Im Allgemeinen ist die Transferfunktion eine komplexe Größe, sodass bestimmte Frequenzanteile nicht<br />

nur skaliert, son<strong>de</strong>rn auch verschoben wer<strong>de</strong>n können (sieh Abschnitt <strong>3.6</strong>.1 und dort die Sätze über Verschiebungen).<br />

Weist ein LSI-Filter Symmetrien auf, so vereinfacht sich dadurch die Transferfunktion. So<br />

hat ein reeller Filter mit gera<strong>de</strong>r Symmetrie eine reelle Transferfunktion. Bei ungera<strong>de</strong>r Symmetrie ergibt<br />

sich eine rein imaginäre Transferfunktion. Diese Tatsachen ergeben sich direkt aus <strong>de</strong>n Symmetriebeziehungen<br />

für die Fourier-Transformation (siehe <strong>3.6</strong>.1). Man kann sich weiter überlegen, dass gera<strong>de</strong> Filter<br />

nur Cosinus-Anteile enthalten können, weil diese selber symmetrisch sind. Ungera<strong>de</strong> Filter zerfallen dagegen<br />

nur in Sinus-Anteile. Dies kann man für einen 1D-Filter einfach berechnen. Man geht von <strong>de</strong>r<br />

Symmetriebeziehung h −n = ±h n aus und rechnet:<br />

ĥ ν =<br />

R∑<br />

n ′ =−R<br />

= h 0 +<br />

(<br />

h n ′ exp − 2πinν )<br />

=<br />

N<br />

R∑<br />

n ′ =1<br />

h n ′<br />

[ (<br />

exp − 2πinν ) ( )] 2πinν<br />

± exp<br />

N<br />

N<br />

Daraus ergibt sich schließlich analog zu obigen Behauptungen unter Verwendung von e iϕ = cos ϕ +<br />

i sin ϕ:<br />

gera<strong>de</strong> ĥ ν = h 0 + 2 ·<br />

ungera<strong>de</strong> ĥ ν = −2i ·<br />

R∑<br />

( ) 2πinν<br />

h n ′ cos<br />

N<br />

n ′ =1<br />

R∑<br />

( ) 2πinν<br />

h n ′ sin<br />

N<br />

n ′ =1<br />

(7.1.1)<br />

(7.1.2)<br />

Diese Transferfunktionen sind abhängig von einer diskreten Variable ν. Man kann durch die Setzung<br />

Nk/2 = ν eine neue, kontinuierliche Variable k einführen, die zur besseren Darstellung <strong>de</strong>r Transferfunktion<br />

herangezogen wer<strong>de</strong>n kann. Sie liegt im Bereich [−1, 1[<br />

Zerlegung eines Operator in einfachere Operatoren: Für viele komplexe Faltungsmasken lässt sich<br />

eine einfache Zerlegung angeben, die eine schnellere Implementierung erlaubt. So lässt sich etwa folgen<strong>de</strong>r<br />

2D-Operator B in zwei 1D-Operatoren B x , B y zerlegen, die über eine Faltung verknüpft sind:<br />

⎛<br />

⎞<br />

⎛ ⎞<br />

1 4 6 4 1<br />

1<br />

4 16 24 16 4<br />

B =<br />

⎜6 24 36 24 6<br />

⎟<br />

⎝4 16 24 16 4⎠ = (1, 4, 6, 4, 1) ⊛ 4<br />

⎜6<br />

⎟<br />

⎝4⎠ = B x ⊛ B y<br />

1 4 6 4 1<br />

1<br />

Man kann also anstatt mit <strong>de</strong>r großen Maske zu falten auch zweimal mit einer kleineren Maske falten.<br />

Dies verkleinert die zu betrachten<strong>de</strong> Nachbarschaft erheblich.<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 46 –


7 Nachbarschaftsoperationen<br />

7.2 Rangordnungsfilter<br />

Funktionsweise eines Medianfilters:<br />

sortierte Liste<br />

9 9 10 10 11 11 11 12 30<br />

10 10 11 9 10 9<br />

11 9 10 12 10 11<br />

10 10 11 9 8 12<br />

10 11 30 10 11 10<br />

11 9 12 11 12 12<br />

10 10 11 12 11 10<br />

9 10 12 9 12 9<br />

Eingabebild<br />

Median<br />

11<br />

Ausgabebild<br />

Anwendung eines Medianfilters:<br />

Gauß-Rauschen<br />

Die LSI-Filter können durch Wichten und Addieren charakterisiert wer<strong>de</strong>n. Es gibt aber auch an<strong>de</strong>re<br />

Schemata, wie man die Daten einer Umgebung verarbeiten kann. Eine zweite Klasse von (nicht-linearen)<br />

Verfahren sind die sog. Rangordnungsfilter. Dabei wird aus <strong>de</strong>n Grauwerte in <strong>de</strong>r Nachbarschaft eine sortierte<br />

Liste erstellt. Danach wählt man <strong>de</strong>n neuen Wert <strong>de</strong>s Pixels aus dieser Liste aus. Man nimmt z.B.<br />

<strong>de</strong>n Median, das Maximum o<strong>de</strong>r das Minimum. Die folgen<strong>de</strong> Abb. 7.3 veranschaulicht einen Medianfilter.<br />

Salt&Peppr-<br />

Rauschen<br />

Originalbild 3x3-Median 7x7-Median<br />

Abb. 7.3: Medianfilter: Prinzip und Anwendung auf ein Testbild<br />

In Abb. 7.3 sieht man unten ein Testbild mit scharfen Kanten verschie<strong>de</strong>ner Dicke. Es enthält zusätzlich<br />

rechts oben einen Bereich mit Gauß’schem Rauschen und rechts unten einen Bereich mit Salt-and-<br />

Pepper-Rauschen. letzteres ist ein Rauschen, bei <strong>de</strong>m wenige Peaks stark nach oben o<strong>de</strong>r unten abweichen.<br />

Es zeigt sich, dass Medianfilter für die Entfernung solchen Rauschens beson<strong>de</strong>rs gut geeignet sind.<br />

Es zeigt sich aber auch <strong>de</strong>r negative Einfluss auf scharfe Umrandungen im Bild. So verschwin<strong>de</strong>t schon<br />

bei einer kleinen Maske die dünne schwarze Umrandung <strong>de</strong>s Rechtecks und bei einer etwas größeren<br />

Maske auch die dicke Umrandung <strong>de</strong>s Kreises. Das Gauß-Rauschen wird nicht sehr erfolgreich geglättet.<br />

Man kann alternativ auch das Minimum o<strong>de</strong>r Maximum auswählen. In Abb. 7.4 ist die Auswirkung<br />

eines solchen Filters gezeigt. Man kann sie benutzen, um z.B. weißen o<strong>de</strong>r schwarzen Text aus einem<br />

Bild zu filtern. Ein Minimusfilter vergrößert dunkle Strukturen (kleine Grauwerte) und verkleinert helle<br />

Strukturen. So verschwin<strong>de</strong>n in <strong>de</strong>r Abbildung etwa die Glanzlichter und die Perlen <strong>de</strong>n Abakus wer<strong>de</strong>n<br />

größer. Der Maximumsfilter macht das umgekehrte. Die Glanzlichter wer<strong>de</strong>n verstärkt und <strong>de</strong>r weiße<br />

Text wird breiter.<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 47 –


7 Nachbarschaftsoperationen<br />

Originalbild Minimum-Filter Maximum-Filter<br />

Abb. 7.4: Minimums- und Maximums-Filter<br />

7.3 rekursive Filter<br />

Einführung: Es gibt noch eine dritte Nachbarschaftsoperation: Rekursive Filter. Diese greifen explizit<br />

auf die Ergebnisse <strong>de</strong>r vorausgegangenen Rechenschritte zurück. Ein einfacher Filter für ein 1D-Signal<br />

ist etwa:<br />

g n ′ = α · g n−1 ′ + (1 − α) · g n<br />

Er benutzt explizit <strong>de</strong>n Wert g n−1 ′ , also <strong>de</strong>n Wert, <strong>de</strong>r als letztes „erzeugt“ wur<strong>de</strong>. Dieser Abschnitt<br />

beschränkt sich auf 1D-Filter, da hier alle Prinzipien klar wer<strong>de</strong>n, die Notation aber gleichzeitig nicht<br />

unnötig kompliziert wird.<br />

Kausalität: Benutzt ein Filter für zeitliche Signale neben <strong>de</strong>m aktuellen Wert nur „alte“ Werte, so nennt<br />

man ihn „kausaler“ Filter. Bei räumlichen Eingabedaten gibt es keine Vorzugsrichtung, wie bei zeitlichen<br />

Daten. Dort macht also das Konzept <strong>de</strong>r Kausalität keinen Sinn.<br />

Verallgemeinerung:<br />

Definition 7.5 (kausale rekursive Filter (1D)) Ein kausales rekursives 1D-Filter bezieht bei <strong>de</strong>r Berechnung<br />

<strong>de</strong>s n-ten Pixels/Wertes auch die bereits berechneten Werte mit ein. Außer<strong>de</strong>m kann es sich auf<br />

eine Nachbarschaft beziehen. Dies führt zur folgen<strong>de</strong>n allgemeinen Formulierung, die auf Linearkombinationen<br />

<strong>de</strong>r Pixelwerte beschränkt bleibt:<br />

S∑<br />

R∑<br />

g n ′ = − a k g n−k<br />

′ + h l g n−l<br />

k=1<br />

} {{ }<br />

l=−R<br />

} {{ }<br />

rekursiverAnteil nichtrekursiver Nachbarschaftsanteil<br />

(7.3.1)<br />

Punktantwort: Im Gegensatz zu <strong>de</strong>n Filtern aus Abschnitt 7.1 sind die Impulsantworten von rekursiven<br />

Filtern meist unendlich ausge<strong>de</strong>hnt. Es han<strong>de</strong>lt sich also im Allgemeinen nicht um FIR-Filter, son<strong>de</strong>rn<br />

um IIR-Filter (Infinite-Impulse-Response-Filter). Dies sieht man leicht an obigem Beispiel. Um die<br />

Impulsantwort zu berechnen muss man die Rekursion explizit berechnen, in<strong>de</strong>m man das Signal<br />

{<br />

1 n = 0<br />

g n =<br />

0 sonst<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 48 –


7 Nachbarschaftsoperationen<br />

einsetzt.<br />

Mit <strong>de</strong>r so berechneten Punktantwort kann man einen nichtrekursiven Filter konstruieren, <strong>de</strong>r zum selben<br />

Ergebnis, wie <strong>de</strong>r rekursive Filter führt. Allerdings ist <strong>de</strong>ssen Punktantwort evtl. unendlich ausge<strong>de</strong>hnt.<br />

Aus obigem Beispiel erhält man:<br />

g 0 ′ = α g<br />

}{{} −1 +(1 − α) g 0 = 1 − α<br />

}{{}<br />

=0<br />

=1<br />

g 1 ′ = αg 0 ′ + (1 − α) g<br />

}{{} 1 = α · (1 − α)<br />

=0<br />

g 2 ′ = αg 1 ′ + (1 − α) g<br />

}{{} 2 = α 2 · (1 − α)<br />

=0<br />

.<br />

g n ′ = αg n−1 ′ + (1 − α) g<br />

}{{} n = α n · (1 − α)<br />

=0<br />

Stabilität: Man nennt einen Filter stabil, wenn seine Impulsantwort gegen 0 konvergiert. Um zu ermitteln<br />

ob ein rekursives Filter stabil ist muss die Punktantwort rekursiv berechnet wer<strong>de</strong>n. Der Filter aus<br />

obigem Beispiel ist also stabil für |α| < 1.<br />

Transferfunktion: Um die Transferfunktion eines rekursiven Filters zu berechnen geht man von <strong>de</strong>r<br />

Gleichung (7.3.1) aus obiger Definition aus. Diese wird etwas umgestellt und dann Fourier-Transformiert.<br />

Man erhält dann:<br />

mit a 0 = 1<br />

g ′ n = −<br />

S∑<br />

a k g n−k ′ +<br />

k=1<br />

S∑<br />

a k g n−k ′ =<br />

k=0<br />

ĝ ′ (k) ·<br />

R ∑<br />

l=−R<br />

R ∑<br />

l=−R<br />

h l g n−l<br />

h l g n−l<br />

S∑<br />

a j · exp(−2πijk) = ĝ(k)<br />

j=0<br />

R∑<br />

l=−R<br />

h l exp(−2πilk)<br />

Die Exponentialfunktionen rühren aus <strong>de</strong>n Sätzen über verschobene Signale her, da ein Term <strong>de</strong>r Form<br />

g n−n ′ in <strong>de</strong>r zweiten Zeile nichts an<strong>de</strong>res als ein um n ′ verschobenes Signal darstellt. Im Fourier-Raum<br />

wird aus <strong>de</strong>r Faltung eine Multiplikation, also gilt ĝ ′ (k) = ĥ(k) · ĝ(k). Damit ergibt sich zusammen mit<br />

obiger Rechnung:<br />

R∑<br />

h l exp(−2πilk)<br />

ĥ(k) = ĝ′ (k)<br />

ĝ(k) = l=−R<br />

S∑<br />

a j · exp(−2πijk)<br />

Zur weiteren Analyse dieses Ausdruckes verwen<strong>de</strong>t man die sog. z-Transformation.<br />

j=0<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 49 –


8 Multiskalenrepräsentation<br />

Oft enthält ein und dasselbe Bild verschie<strong>de</strong>ne Strukturen, die sich auf verschie<strong>de</strong>nen Längenskalen befin<strong>de</strong>n.<br />

Die folgen<strong>de</strong> Abb. 8.1 zeigt Beispiele dafür. Je gröber die Auflösung, <strong>de</strong>sto weniger feine Details<br />

sind sichtbar (kleine Punkte in <strong>de</strong>n unteren Bil<strong>de</strong>rn verschwin<strong>de</strong>n). Teilweise fließen grobe Strukturen<br />

auch ineinan<strong>de</strong>r (drei Peaks links in <strong>de</strong>n 1D-Daten wer<strong>de</strong>n zu zwei Peaks).<br />

Vergröberung <strong>de</strong>r Auflösung<br />

25<br />

20<br />

15<br />

10<br />

5<br />

0<br />

0 20 40 60 80 100 120 140<br />

25<br />

20<br />

15<br />

10<br />

5<br />

0<br />

0 20 40 60 80 100 120 140<br />

20<br />

18<br />

16<br />

14<br />

12<br />

10<br />

8<br />

6<br />

4<br />

2<br />

0<br />

0 20 40 60 80 100 120 140<br />

Abb. 8.1: Darstellung von 1D-Daten und Bilddaten in verschie<strong>de</strong>nen Auflösungen<br />

Man sucht also eine Datenstruktur, die solche multiskalaren Daten repräsentieren kann. Will man z.B.<br />

die Grobstruktur eines Bil<strong>de</strong>s bestimmen, so stört evtl. die Feinstruktur nur. Um etwa Peaks zu i<strong>de</strong>ntifizieren<br />

ist wohl <strong>de</strong>r zweite Graph besser geeignet, als <strong>de</strong>r erste. Außer<strong>de</strong>m reduziert die Reduktion<br />

<strong>de</strong>r Auflösung auch die Anzahl <strong>de</strong>r Daten und damit die Größe einer evtl. anzuwen<strong>de</strong>n<strong>de</strong>n Filtermaske.<br />

Damit ist die Strukturerkennung bei gröberer Auflösung nicht nur einfacher, son<strong>de</strong>rn evtl auch schneller.<br />

Eine Datenstruktur, die dieses leistet ist die Gauß-Pyrami<strong>de</strong>.<br />

Im Ortsraum hat man üblicherweise nur räumliche Informationen. Die Information über enthaltene Wellenzahlen<br />

ist über <strong>de</strong>n gesamten Ortsraum verschmiert. Man hätte aber u.U. auch gerne eine Darstellung<br />

<strong>de</strong>s Signals, die eine lokale Orts- und Wellenzahlinformation enthält. Man kann sich z.B. eine Serie von<br />

Bandpass-gefilterten Bil<strong>de</strong>rn mit sinken<strong>de</strong>r Auflösung vorstellen. Dabei enthält je<strong>de</strong>s Bild nur solche<br />

Strukturen, die einem charakteristischen Wellenzahlbereich entsprechen. Eine passen<strong>de</strong> Datenstruktur<br />

ist die Laplace-Pyrami<strong>de</strong>.<br />

8.1 Pyrami<strong>de</strong>n-Zerlegungen<br />

8.1.1 Gauß-Pyrami<strong>de</strong><br />

Die Gauß-Pyrami<strong>de</strong> besteht aus einer Folge von Bil<strong>de</strong>rn, <strong>de</strong>ren Länge und Breite sich von Schritt zu<br />

Schritt halbiert. Um das Abtast-Theorem nicht zu missachten muss vor <strong>de</strong>m Halbieren <strong>de</strong>r Auflösung<br />

eine Glättung erfolgen. Man bezeichnet <strong>de</strong>n Glättungsoperator mit B. Bei ihm han<strong>de</strong>lt es sich um einen<br />

50


8 Multiskalenrepräsentation<br />

Gauß-Filter (bei diskreten Bil<strong>de</strong>rn ein Binomialfilter). Zusätzlich benötigt man noch einen Operator ↓ 2 ,<br />

<strong>de</strong>r die Auflösung halbiert, also das Down-Sampling übernimmt.<br />

Definition 8.1 (Gauß-Pyrami<strong>de</strong>) Sei B ein Glättungsfilter und <strong>de</strong>r Operator ↓ 2 halbiere die Auflösung<br />

<strong>de</strong>r Bilddaten. Das Ausgangsbild sei mit G ⃗ bezeichnet. Die Gauß-Pyrami<strong>de</strong> lässt sich dann rekursiv<br />

<strong>de</strong>finieren:<br />

1. Die unterste Ebene <strong>de</strong>r Pyrami<strong>de</strong> ist das Originalbild:<br />

⃗G (0) = ⃗ G<br />

2. Die jeweils nächste Ebene berechnet sich aus <strong>de</strong>r vorherigen durch Glättung und Abtastung:<br />

⃗G (n+1) =↓ 2<br />

(<br />

B ⃗ G<br />

(n) )<br />

3. diese Vorschrift wird ausgeführt, bis das kleinste Bild nur noch aus einem Bildpunkt besteht.<br />

Der Glättungsfilter als Tiefpassfilter sei so dimensioniert, dass sich die Grenzfrequenz von Ebene zu<br />

Ebene halbiert.<br />

Man verliert also von Ebene zu Ebene an Auflösung und es gehen feine Strukturen (hohe Frequenzanteile)<br />

verloren. Man erhält eine Serie von Tiefpass-gefilterten Bil<strong>de</strong>rn. Der zusätzliche Speicherbedarf <strong>de</strong>r<br />

Gaußpyrami<strong>de</strong> im Vergleich zum Originalbild ist relativ klein. Die Gesamtzahl <strong>de</strong>r Bildpunkte in einer<br />

Pyrami<strong>de</strong> zu einem W -dimensionalen Bild ist:<br />

(<br />

N := ♯G ⃗ (0) + ♯G ⃗ (1) + ♯G ⃗ (2) + ... = M W · 1 + 1<br />

2 W + 1 )<br />

2 2W + ... < M W 2 W<br />

·<br />

2 W − 1<br />

Damit ergibt sich für W = 2 und M = 256: Das Originalbild enthält N (0) = M W = 65536 Punkte.<br />

Die Gesamte Pyrami<strong>de</strong> N < 4 3 · N (0) . Es wird also weniger als ein drittel mehr Speicher benötigt. Die<br />

Berechnung <strong>de</strong>r Pyrami<strong>de</strong> ist ebenfalls sehr effektiv, da die Bil<strong>de</strong>r von Stufe zu Stufe kleiner wer<strong>de</strong>n<br />

und somit die Filterung immer schneller von Statten geht. Die Pyrami<strong>de</strong> ermöglicht eine effiziente Datenverarbeitung<br />

auf <strong>de</strong>n höheren Stufen, weil das Bild kleiner wird und die Filtermasken auch kleiner<br />

dimensioniert wer<strong>de</strong>n können.<br />

8.1.2 Laplace-Pyrami<strong>de</strong><br />

Die Gauß-Pyrami<strong>de</strong> stellt eine Serie von Tiefpass-gefilterten Bil<strong>de</strong>rn dar. Man kann aus ihr die Laplace-<br />

Pyrami<strong>de</strong> berechnen. Diese ist eine Serie von Bandpass-gefilterten Bil<strong>de</strong>rn. Je<strong>de</strong> Ebene enthält also<br />

nur Wellenzahlen zu einem bestimmten, eng begrenzten Wellenzahlbereich. Zur Berechnung <strong>de</strong>r Gauß-<br />

Pyrami<strong>de</strong> wer<strong>de</strong>n zwei aufeinan<strong>de</strong>rfolgen<strong>de</strong> Bil<strong>de</strong>r <strong>de</strong>r Gauß-Pyrami<strong>de</strong> subtrahiert. Dazu muss eines<br />

vergrößert wer<strong>de</strong>n. Dies erledigt <strong>de</strong>r Expansionsoperator ↑ 2 . Seine Berechnung kann aber recht komplex<br />

sein, weil eine Interpolation <strong>de</strong>r fehlen<strong>de</strong>n Daten benötigt wird. Der In<strong>de</strong>x 2 gibt an, dass die Größe<br />

<strong>de</strong>s Bil<strong>de</strong>s (Längendimension) verdoppelt wird.<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 51 –


8 Multiskalenrepräsentation<br />

Definition 8.2 (Laplace-Pyrami<strong>de</strong>) Mit ↑ 2 sei <strong>de</strong>r Expansionsoperator bezeichnet. Man geht von einem<br />

originalbild G ⃗ aus, aus <strong>de</strong>m eine Gaußpyrami<strong>de</strong> mit <strong>de</strong>n Stufen G ⃗ (0) , ..., G ⃗ (M) konstruiert wur<strong>de</strong>.<br />

Daraus kann man die Laplace-Pyrami<strong>de</strong> L ⃗ (m) rekursiv berechnen:<br />

1. Die Bil<strong>de</strong>r <strong>de</strong>r obersten Ebene (kleineste Bil<strong>de</strong>r) sind gleich:<br />

⃗L (M) = ⃗ G (M)<br />

2. das nächstgrößere Bild ergibt sich durch Vergrößern und Subtrahieren aus <strong>de</strong>r Gauß-Pyrami<strong>de</strong>:<br />

⃗L (m) = ⃗ G (m) − ↑ 2<br />

⃗ G<br />

(m+1)<br />

Um das Originalbild wie<strong>de</strong>r herzustellen muss man nur die Bil<strong>de</strong>r <strong>de</strong>r Laplace-Pyrami<strong>de</strong> rekursiv vergrößern<br />

und aufaddieren:<br />

⃗G (M) = ⃗ L (M) , ⃗ G (m−1) = ⃗ L (m−1) + ↑ 2<br />

⃗ G (m) = ⃗ L (m−1) + ↑ 2<br />

( ⃗L (m) + ↑ 2<br />

⃗ G<br />

(m+1) ) = ...<br />

n = 0<br />

Gauß-Pyrami<strong>de</strong><br />

Laplace-Pyrami<strong>de</strong><br />

Beispiel für Laplace-Pyrami<strong>de</strong><br />

n = 1<br />

n = 2<br />

n = 3<br />

n = 4<br />

Abb. 8.2: Veranschaulichung <strong>de</strong>r Berechnung <strong>de</strong>r Laplace-Pyrami<strong>de</strong><br />

8.1.3 Richtungszerlegungen<br />

Man kann die obigen Pyrami<strong>de</strong>nzerlegungen noch um eine Richtungsinformation erweitern. Dabei wird<br />

zur Glättung ein separierbarer Filter B = B x B y verwen<strong>de</strong>t. Man erhält dann mehrere Bil<strong>de</strong>r pro Stufe,<br />

die zusätzlich eine Richtungsinformation enthalten, da die Glättung nur in einer Richtung erfolgte.<br />

8.2 Skalenraumtheorie<br />

Die bisherigen Zerlegungen sind nur Spezialfälle <strong>de</strong>r allgemeinere Skalenraumtheorie. Die Skala eines<br />

Bil<strong>de</strong>s charakterisiert die typische Größe von Strukturen im Bild. Bisher wur<strong>de</strong> die Skala nur in diskreten<br />

und recht großen Schritten verän<strong>de</strong>rt (immer halbiert). Es wäre aber wünschenswert die Skala kontinuierlich<br />

anpassen zu können. Man benötigt dazu einen Prozess, <strong>de</strong>r Bil<strong>de</strong>r kontinuierlich unscharf macht. In<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 52 –


8 Multiskalenrepräsentation<br />

<strong>de</strong>r Physik ist die Diffusion als ein solcher Prozess bekannt. Im folgen<strong>de</strong>n soll <strong>de</strong>r Formalismus <strong>de</strong>r Diffusion<br />

auf Bil<strong>de</strong>r angewen<strong>de</strong>t wer<strong>de</strong>n, um die Auflösung kleiner Strukturen mit einem Skalenparameter<br />

ξ kontinuierlich einstellen zu können.<br />

8.2.1 Diffusionsgleichungen<br />

Zunächst stellt man sich das Bild als Flüssigkeit vor, in <strong>de</strong>r an verschie<strong>de</strong>nen Orten unterschiedliche<br />

Konzentrationen an Farbstoff vorliegen. Der Farbstoff kann innerhalb <strong>de</strong>r Flüssigkeit verlaufen. Der<br />

Transport <strong>de</strong>s Farbstoffes wird durch seinen Fluss⃗j beschrieben. Er gibt an, wie viel Farbstoff (Grauwert)<br />

pro Zeiteinheit über die grenze zwischen zwei Pixeln fließt. Diese Fluss hängt linear vom Grauwert-<br />

(Konzentrations)-Gradienten ∇g ⃗ ab. Dabei bezeichnet g das 2D-Bild und ∇ ⃗ ( )<br />

∂/∂x<br />

= <strong>de</strong>n räumlichen<br />

∂/∂y<br />

Gradienten:<br />

⃗j(x, y) = −D · ⃗∇g(x, y) (8.2.1)<br />

Diese Differentialgleichung wird als 1. Fick’sches Gesetz bezeichnet. Zusätzlich gilt noch die sog. Kontinuitätsgleichung:<br />

∂g<br />

∂t = − div ⃗j = −∇ ⃗ · ⃗j (8.2.2)<br />

Sie besagt, dass die Gesamtmenge <strong>de</strong>s Farbstoffes (Grauwertes) erhalten bleiben muss. Man kann ja<br />

schließlich keinen Farbstoff vernichten. ∂g<br />

∂t gibt die zeitliche Än<strong>de</strong>rung <strong>de</strong>r Konzentration an und div ⃗j =<br />

∂j x<br />

∂x + ∂jy<br />

∂y ist die Quellenstärke <strong>de</strong>s Flusses. Dabei geht man davon aus, dass das Vektorfeld ⃗j <strong>de</strong>n Fluss (im<br />

Prinzip die Geschwindigkeit) einer Flüssigkeit beschreibt. Die Divergenz charakterisiert dabei Stellen im<br />

Bild, an <strong>de</strong>nen Farbstoff ab- o<strong>de</strong>r zufließt. Vergleicht man die Situation mit einem Waschbecken, so wäre<br />

<strong>de</strong>r Wasserhahn eine Quelle und <strong>de</strong>r Abfluss eine Senke für <strong>de</strong>n Wasserfluss. (8.2.2) besagt dann, dass<br />

die zeitliche Än<strong>de</strong>rung <strong>de</strong>s Grauwerte gleich <strong>de</strong>m Abfluss/Zufluss an einem bestimmten Punkt auf <strong>de</strong>m<br />

Bild sein muss. Wäre diese Gleichung nicht erfüllt, so wür<strong>de</strong> an einem bestimmten Ort Farbstoff neu<br />

erzeugt bzw. vernichtet, da sich <strong>de</strong>r Grauwert stärker än<strong>de</strong>rt, als es durch <strong>de</strong>n Zu-/Abfluss zu erklären<br />

wäre.<br />

Setzt man (8.2.1) in (8.2.2) ein, so erhält man die Diffusionsgleichung o<strong>de</strong>r das 2. Fick’sche Gesetz:<br />

∂g<br />

∂t = div( D · ⃗∇g ) = D · ∆g mit ∆ = ∂2<br />

∂x 2 + ∂2<br />

∂y 2 und D = const (8.2.3)<br />

Der letzte Schritt ist nur erlaubt, wenn die Diffusionskonstante D nicht vom Ort (x, y) t abhängt. Die partielle<br />

Differentialgleichung (8.2.3) lässt sich im Fourier-Raum relativ leicht lösen. Dazu macht man auf<br />

bei<strong>de</strong>n Seiten eine Fourier-Transformation <strong>de</strong>r Ortskoordinaten und erhält mit <strong>de</strong>n Sätzen über Fourier-<br />

Trafos aus Abschnitt <strong>3.6</strong>.1:<br />

∂ĝ( ⃗ k)<br />

= −4π 2 D ∣<br />

∂t<br />

⃗ k∣ 2 ĝ( ⃗ k) (8.2.4)<br />

Dies Differentialgleichung gat die Lösung:<br />

ĝ( ⃗ k, t) = ĝ( ⃗ k, 0) · exp ( −4π 2 D ∣ ⃗ k∣ 2 t ) (8.2.5)<br />

Dieses Ergebnis kann man nun zurück transformieren. Aus <strong>de</strong>r Multiplikation wird eine Faltung und die<br />

Gauß-Funktion bleibt eine Gauß-Funktion. Es ergibt sich:<br />

( )<br />

1<br />

g(⃗x, t) =<br />

[2πσ 2 (t)] W/2 exp − |⃗x|2<br />

2σ 2 ⊛ g(⃗x, 0) (8.2.6)<br />

(t)<br />

Dabei ist σ(t) = √ 2Dt die zeitabhängige Standardabweichung (Breite) <strong>de</strong>r Gauß-Kurve. Ein Diffusionsprozess<br />

be<strong>de</strong>utet also nichts an<strong>de</strong>res als die Faltung <strong>de</strong>s Eingabebil<strong>de</strong>s mit einem Gauß-Filter. Je länger<br />

die Diffusion andauert, <strong>de</strong>sto breiter wird <strong>de</strong>r Gauß-Filter und <strong>de</strong>sto stärker wird das Ausgangsbild<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 53 –


8 Multiskalenrepräsentation<br />

g(⃗x, 0) geglättet. Man kann also die zeit als Skalenvariable ansehen. Man setzt <strong>de</strong>swegen die Skalenvariable<br />

ξ:<br />

ξ = 2Dt = σ 2 (t)<br />

Je größer also ξ ist, <strong>de</strong>sto stärker ist die Glättung und <strong>de</strong>sto weniger feine Strukturen enthält das Bild<br />

noch. Die folgen<strong>de</strong> Abb. 8.3 zeigt wie sich ein 1D-Signal durch Diffusion verän<strong>de</strong>rt und wie dabei<br />

zunehmend Details verschwin<strong>de</strong>n. Die kleinen Schwingungen in <strong>de</strong>r periodischen Struktur sind relativ<br />

schnell verwaschen. Die groben Strukturen bleiben länger bestehen. Im Bild ganz rechts än<strong>de</strong>rt sich <strong>de</strong>r<br />

Skalenparameter schneller, sodass auch die groben Strukturen verwaschen und sich zum Schluss ein<br />

einheitlicher Grauwert ergibt (stabiles Bild).<br />

Diffusion bei einem zufälligen<br />

1D-Signal<br />

Diffusion bei einem periodischen<br />

1D-Signal<br />

langsame Diffusion<br />

schnelle Diffusion<br />

Ortskoordinate x<br />

Ortskoordinate x<br />

Skalenvariable ξ<br />

Skalenvariable ξ<br />

Skalenvariable ξ<br />

Abb. 8.3: Erzeugung eines Skalenraumes durch Diffusion am Beispiel eines zufälligen und eines perioschen<br />

1D-Signals<br />

8.2.2 Eigenschaften <strong>de</strong>s Skalenraumes<br />

Satz 8.1 (Minimum-Maximum-Prinzip) Der Filter zur Erzeugung eines Skalenraumes muss <strong>de</strong>m<br />

Minimum-Maximum-Prinzip gehorchen. Es besagt, dass sich die Grauwerte an Maxima <strong>de</strong>s Signals nicht<br />

erhöhen und an Minima <strong>de</strong>s Signals nicht erniedrigen dürfen. Dies be<strong>de</strong>utet, dass mit steigen<strong>de</strong>m Skalenparameter<br />

ξ Information im Bild verlorengeht.<br />

Für <strong>de</strong>n physikalischen Vorgang <strong>de</strong>r Diffusion ist dies einsichtig, weil er <strong>de</strong>m Ausgleich <strong>de</strong>r Konzentrationen<br />

zustrebt, als Konzentrationsunterschie<strong>de</strong> verkleinert.<br />

An<strong>de</strong>re Filterkerne: Es zeigt sich, dass <strong>de</strong>r Gauß-Filter <strong>de</strong>r einzige mögliche Filter für die Erzeugung<br />

von Skalenräumen ist, da alle an<strong>de</strong>ren <strong>de</strong>nkbaren Filter zusätzliche Strukturen erzeugen wür<strong>de</strong>n.<br />

an<strong>de</strong>re Skalenräume: Man kann <strong>de</strong>n Parameter D (Diffusionskonstante) zeitabhängig machen und<br />

erhält so eine schnellere o<strong>de</strong>r langsamere Diffusion in Abhängigkeit von ξ. Bisher gilt ξ = 2Dt. Dabei<br />

steigt aber die Breite <strong>de</strong>s Filters nur mit σ(t) ∝ √ t ∝ √ ξ. Die Stärke <strong>de</strong>r Glättung hängt also nicht-linear<br />

von <strong>de</strong>r Skala ξ ab. Durch die Setzung D ≡ D 0 t erhält man eine lineare Abhängigkeit <strong>de</strong>r Filterstärke<br />

von ξ (quadratischer Skalenraum). Mit D ≡ D 0 e t/τ sogar einen exponentiellen Zusammenhang. Die<br />

Stärke <strong>de</strong>r Glättung steigt dann exponentiell mit ξ (exponentieller Skalenraum).<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 54 –


Teil III<br />

Einfache Merkmalsextraktion<br />

55


9 Mittelung<br />

Mittelungsfilter dämpfen schnelle Grauwertän<strong>de</strong>rungen und Rauschen. Es han<strong>de</strong>lt sich um Tiefpassfilter,<br />

die hohe Frequenzanteile herausfiltern. Dies führt dazu, dass Kanten nicht scharf bleiben, son<strong>de</strong>rn verschmiert<br />

wer<strong>de</strong>n. Glättungsfilter z.B. können verwen<strong>de</strong>t wer<strong>de</strong>n, um leichte Unebenheiten in Objekten<br />

auszugleichen, die sich durch einen konstanten Grauwert auszeichnen.<br />

9.1 Eigenschaften<br />

Verschiebungsfreiheit: Ein Glättungsfilter darf die Position eines Objekte (einer Kante) nicht verän<strong>de</strong>rn,<br />

da solche Fehler später nicht mehr ausgeglichen wer<strong>de</strong>n können. Eine Verschiebung eines Objektes<br />

be<strong>de</strong>utet die Multiplikation <strong>de</strong>s Fourier-Transformierten mit einem Phasenfaktor. Daraus kann man folgern,<br />

dass die Transferfunktion (FT <strong>de</strong>r Punktantwort) eines Mittelunsgfilters reell sein muss (man sagt<br />

auch nullphasig). Nach <strong>de</strong>n Eigenschaften <strong>de</strong>r Fouriertransformation (siehe Abschnitt <strong>3.6</strong>) ist damit die<br />

Punktantwort (Filtermaske) eines Mittelungsfilters symmetrisch.<br />

Satz 9.1 (Verschiebungsfreiheit) Die Punktantwort eines Mittelungsfilters muss symmetrisch sein.<br />

Damit ist die Transferfunktion reell und <strong>de</strong>r Filter ist nullphasig. Es gilt:<br />

1D : h −n = h n ⇔ ĥν ∈ R<br />

2D : h m,−n = h m,n , h −m,n = h m,n ⇔ ĥν,µ ∈ R<br />

Damit ergibt sich aus Gleichung (7.1.1) aus Abschnitt 7.1.2 die folgen<strong>de</strong> Darstellung für die Transferfunktion<br />

eines Mittelungsfilters<br />

ĥ(k) = h 0 + 2 ·<br />

R∑<br />

h ν cos (νπk)<br />

Über eine ähnliche Rechnung, wie in 7.1.2 erhält man auch eine Formel für die 2D-Transferfunktion:<br />

ν=1<br />

ν=1<br />

ĥ( ⃗ k) = h 00<br />

R∑<br />

R∑<br />

+ 2 h 0,ν cos (νπk x ) + 2 h ν,0 cos (νπk y )<br />

+ 4<br />

R∑<br />

ν=1 µ=1<br />

ν=1<br />

R∑<br />

h ν,µ cos (νπk x ) · cos (µπk y )<br />

Auch hier sind nur (symmetrische) Cosinus-Komponenten enthalten.<br />

56


9 Mittelung<br />

Satz 9.2 (Erhaltung <strong>de</strong>s Mittelwertes) Der Mittelwert soll bei einer Glättung erhalten bleiben. Deswegen<br />

müssen sich die Filterkoeffizienten zu 1 addieren:<br />

∑<br />

1D : h n = 1<br />

2D :<br />

n<br />

∑ ∑<br />

h m,n = 1<br />

m n<br />

Satz 9.3 (Monoton fallen<strong>de</strong> Transferfunktion)<br />

steigen<strong>de</strong>r Wellenzahl monoton gegen 0 fallen:<br />

Die Transferfunktion eines Mittelunsgfilters soll mit<br />

ĥ(k 2 ) ≤ ĥ(k 1) für k 2 > k 1<br />

Dies be<strong>de</strong>utet, dass größere Wellenzahlen stärker gedämpft wer<strong>de</strong>n, als kleine Wellenzahlen. Damit wer<strong>de</strong>n<br />

kleine Strukturen stärker unterdrückt, als grobe Strukturen. Mittelungsfilter sind also Tiefpassfilter.<br />

Satz 9.4 (Isotropie) Die Glättung soll oft unabhängig von <strong>de</strong>r Richtung sein. Dies be<strong>de</strong>utet, dass sowohl<br />

die Punktantwort (Filtermaske), als auch die Transferfunktion isotrop sein sollen. Sie hängen also<br />

nur vom Betrag <strong>de</strong>s Abstan<strong>de</strong>s bzw. <strong>de</strong>r Wellenzahl ab, nicht von <strong>de</strong>r Richtung:<br />

h(⃗x) ≡ h(|⃗x|) und ĥ( ⃗ k) ≡ ĥ(|⃗ k|)<br />

9.2 Rechteckfilter<br />

Der einfachste Mittelungsfilter ist ein Rechteckfilter. Seine Filtermaske hat auf allen Plätzen <strong>de</strong>n Koeffizienten<br />

1. Der Filter ist natürlich auf 1 normiert:<br />

⎡ ⎤<br />

1D: R (3)<br />

1D = 1 [ ]<br />

1 1 1 2D: R (9)<br />

2D<br />

3<br />

= 1 1 1 1<br />

⎣1 1 1⎦<br />

9<br />

1 1 1<br />

Dieser Filter ist auch als laufen<strong>de</strong>r Mittelwertfilter bekannt. Die folgen<strong>de</strong> Abbildung zeigt Beispiele für<br />

die Anwendung <strong>de</strong>s Filters<br />

1D-Kante:<br />

0 0 0 1 1 1 1 1/3 1/3 1/3<br />

Anisotropie<br />

0 0 1/3 2/3 1 1 1<br />

periodische 1D-Struktur:<br />

1 -2 1 1 -2 1 1 1/3 1/3 1/3<br />

Phasenverschiebung<br />

0 0 0 0 0 0 0<br />

9x9 Rechteckfilter<br />

Abb. 9.1: Anwendung von 1D- und 2D-Rechteckfiltern. Im 2D-beispiel wur<strong>de</strong> <strong>de</strong>r Filter rechts oben und<br />

links unten angewen<strong>de</strong>t. Der Rest <strong>de</strong>s Bil<strong>de</strong>s zeigt das Ausgangsmuster.<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 57 –


9 Mittelung<br />

Man sieht in Abb. 9.1 <strong>de</strong>utlich, dass die Position einer 1D-Kante erhalten bleibt. Die gezeigte periodische<br />

Struktur mit <strong>de</strong>r Perio<strong>de</strong> 3 Pixel verschwin<strong>de</strong>t ganz bei Anwendung <strong>de</strong>s Filters. Der 2D-Filter arbeitet<br />

nicht-isotrop. In bestimmten Richtungen wird stärker geglättet als in an<strong>de</strong>ren. Die Anisotropie <strong>de</strong>s Filters<br />

tritt beson<strong>de</strong>rs in seiner Transferfunktion zu Tage. Sie ist in Abb. 9.2 gezeigt.<br />

Transferfunktion von 1D-Filtern:<br />

Transferfunktion von 2D-Filtern:<br />

1<br />

0.8<br />

0.6<br />

0.4<br />

0.2<br />

0<br />

-0.2<br />

5<br />

7<br />

9<br />

3<br />

0.2 0.4 0.6 0.8 1<br />

0.8<br />

0.4<br />

0<br />

-0.4<br />

3x3-Filter<br />

0.8<br />

0.4<br />

0<br />

-0.4<br />

5x5-Filter<br />

-0.4<br />

Abb. 9.2: Transferfunktionen von 1D- und 2D-Rechteckfilter verschie<strong>de</strong>ner Breite<br />

Man sieht, dass die Transferfunktionen nicht monoton gegen 0 fallen. Die Transferfunktion eines i<strong>de</strong>alen<br />

Rechteckfilters ist (wie schon öfter besprochen die sinc-Funktion:<br />

Sie nähert sich für große k zwar <strong>de</strong>r 0, oszilliert aber um diese und fällt wie 1/k (also recht langsam)<br />

gegen 0 ab. Die Stellen an <strong>de</strong>nen die Transferfunktio kleiner als 0 wird entsprechen einer Phasenverschiebung<br />

um 180 ◦ (Vorfaktor −1). Damit ist das Rechteckfilter we<strong>de</strong>r isotrop (ab 2D), noch fällt es<br />

monoton, noch ist es nullphasig. Das Rechteckfilter ist also kein gutes Glättungsfilter.<br />

Es bleibt noch anzumerken, dass das 2D-Rechteckfilter separabel ist. Es lässt sich als Faltung zweier<br />

1D-Filter darstellen und kann so schnell berechnet wer<strong>de</strong>n:<br />

⎡ ⎤<br />

⎡ ⎤<br />

R = R x ⊛ R y ⇔ 1 1 1 1<br />

⎣1 1 1⎦ = 1 [ ]<br />

1<br />

1<br />

1 1 1 ⊛ ⎣1⎦<br />

9<br />

3<br />

3<br />

1 1 1<br />

1<br />

9.3 Binomialfilter<br />

Die einfachste 1D-Glättungsfiltermaske ist B ⃗ = 1 2<br />

[1 1]. Sie mittelt zwei benachbarte Bildpunkte. Das<br />

Ergebnisbild liegt (weil die breite eine gera<strong>de</strong> Zahl ist) auf einem Zwischengitter. Man kann diesen Filter<br />

mehrfach (R mal) hintereinan<strong>de</strong>r anwen<strong>de</strong>n und erhält dadurch:<br />

1<br />

[1 1] ⊛[1 1] ⊛ ... ⊛[1 1] , B R = BB...B<br />

2R } {{ }<br />

R mal<br />

Dabei ergeben sich Filter mit <strong>de</strong>n Koeffizienten, die <strong>de</strong>n Binomialkoeffizienten entsprechen:<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 58 –


9 Mittelung<br />

R Vorfaktor Filtermaske<br />

1 1/2 1 1<br />

2 1/4 1 2 1<br />

3 1/8 1 3 3 1<br />

4 1/16 1 4 6 4 11<br />

5 1/32 1 5 10 10 5 1<br />

6 1/64 1 6 15 20 15 6 1<br />

Tabelle 9.1: Binomialfiltermasken<br />

Von diesen Filtern sind natürlich vor Allem diejenigen mit ungera<strong>de</strong>r Breite interessant.<br />

Breite <strong>de</strong>r Faltungsmaske, Binomialverteilung: Die Koeffizienten <strong>de</strong>r Faltungsmaske entsprechen<br />

<strong>de</strong>r Binomialverteilung ( ) N<br />

f n = · p n · (1 − p) N−n , 0 ≤ n < N<br />

n<br />

Dabei ist N die Gesamtzahl <strong>de</strong>r Experimente und p die Wahrscheinlichkeit für einen Treffer. f n gibt<br />

dann die Wahrscheinlichkeit an genau n Treffer zu erhalten. Für Mittelwert und Varianz gilt:<br />

µ = Np, σ 2 = Np(1 − p)<br />

Für die Binomialfilter möchte man eine um N/2 zentrierte Verteilung, wählt also p = 1 2<br />

. Damit ist die<br />

Standardabweichung eine Binomialfilters<br />

σ =<br />

√<br />

R<br />

4 ∝ √ R<br />

und steigt nur mit <strong>de</strong>r Wurzel von R. Die Glättungswirkung steigt also bei größeren Filtermasken immer<br />

langsamer an.<br />

Es zeigt sich, dass die Binomialverteilung für große N in die Gauß-Verteilung übergeht. Ein Binomialfilter<br />

ist also die natürliche Entsprechung eines Gauß-Filters für begrenzte Faltungsmasken. Die folgen<strong>de</strong><br />

Abb. 9.3 zeigt die Binomialverteilung.<br />

Abb. 9.3: Binomialverteilung für p = 1 2<br />

2D-Filter:<br />

Die 2D-Filter ergeben sich durch Faltung zweier 1D-Filter:<br />

⎡ ⎤<br />

⎡ ⎤<br />

B = B x ⊛ B y ⇔ 1 1 2 1<br />

⎣2 4 2⎦ = 1 [ ]<br />

1<br />

1<br />

1 2 1 ⊛ ⎣2⎦<br />

16<br />

4<br />

4<br />

1 2 1<br />

1<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 59 –


9 Mittelung<br />

Transferfunktion: Da sich die Filtermaske durch Faltung im Ortsraum berechnet kann man die Transferfunktion<br />

einfach durch Multiplikation im Fourierraum berechnen. Es gilt:<br />

B (R) (k) = cos R (πk/2).<br />

Dabei wur<strong>de</strong> verwen<strong>de</strong>t, dass sich die Transferfunktion <strong>de</strong>s einfachsten Filters B ⃗ = 1 2<br />

[1 1] zu B(k) =<br />

cos(πk/2) ergibt. Die folgen<strong>de</strong> Abb. 9.4 zeigt diese Transferfunktion.<br />

Abb. 9.4: Transferfunktion verschie<strong>de</strong>ner Binomialfilter<br />

Man sieht, das die Transferfunktion monoton gegen 0 fällt. Es han<strong>de</strong>lt sich hier also um einen wesentlich<br />

besseren Glättungsfilter, als <strong>de</strong>r Rechteckfilter. Der Filter ist auch tatsächlich nullphasig. Es kommt also<br />

zu keiner Phasenverschiebung.<br />

Die Transferfunktion <strong>de</strong>s 2D-Filter hat eine ähnliche Struktur:<br />

b (R) ( ⃗ k) = cos R (πk x /2) · cos R (πk y /2).<br />

Diese Transferfunktion ist nahezu (aber nicht ganz) isotrop. Eine leichte Rest-Anisotropie bleibt übrig.<br />

Bei einer isotropen Transferfunktion wür<strong>de</strong> nur ein cos-Term auftreten, in <strong>de</strong>m | ⃗ k| auftaucht.<br />

Anwendung: Wo im i<strong>de</strong>alen, kontinuierlichen Fall ein Gauß-Filter Verwendung fin<strong>de</strong>t wird im diskreten<br />

Fall ein Binomialfilter angewen<strong>de</strong>t. Ein Binomialfilter eignet sich beson<strong>de</strong>rs um (mittelwertfreies)<br />

Gauß’sches Rauschen zu entfernen. Bei Salt-and-Pepper-Rauschen ist er weniger gut, da er die Fehler<br />

über die Umgebung <strong>de</strong>s Rauschpeaks nur verteilt. Um solches Rauschen zu Filtern sind Medianfilter besser<br />

geeignet. Bei <strong>de</strong>r Rauschunterdrückung geht natürlich Detailauflösung verloren, da ja nicht nur das<br />

Rauschen, son<strong>de</strong>rn auch das Bild geglättet wird. hier ist also Vorsicht geboten, wenn sich das Rauschen<br />

auf <strong>de</strong>r gleichen Skala verän<strong>de</strong>rt, wie das eigentliche Bild.<br />

Schnelle Berechnung: Es ist günstiger die Berechnung durch wie<strong>de</strong>rholtes Anwen<strong>de</strong>n <strong>de</strong>r kleinen<br />

[1 1]-Masken auszuführen, anstatt mit <strong>de</strong>r großen Filtermaske zu falten. Die hier auftreten<strong>de</strong>n Multiplikationen<br />

sind nur ÷2 und ∗2, sodass sie durch Bit-Shift-Operationen ausgeführt wer<strong>de</strong>n können. Diese<br />

beherrschen alle gängigen CPUs und sie sind viel schneller als tatsächliche Multiplikationen.<br />

Die Anwendung einer (R+1)×(R+1)-Filtermaske benötigt bei naiver Implementierung O(R 2 ) Multiplikationen<br />

und Additionen pro Pixel. Bei <strong>de</strong>r Zerlegung <strong>de</strong>r Maske in [1 1]-Masken und Anwendung in<br />

zwei Richtungen benötigt man aber nurmehr O(R) Additionen. Die Multiplikationen können, wie oben<br />

beschrieben vereinfacht wer<strong>de</strong>n.<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 60 –


9 Mittelung<br />

9.4 Schnelle großräumige Mittelung<br />

Im vorherigen Abschnitt wur<strong>de</strong> erwähnt dass die Standardabweichung (und damit die Glättungswirkung)<br />

eines Binomialfilters nur mit √ R wächst (siehe S. 59). Um eine starke, großräumige Glättung zu erreichen<br />

kann man zwar die Filtermaske immer weiter vergrößern. Der zusätzliche Glättungseffekt einer<br />

solchen Vergrößerung wird aber immer kleiner, sodass man an<strong>de</strong>re Verfahren anwen<strong>de</strong>n muss.<br />

9.4.1 Mehrschrittmittelung<br />

Eine I<strong>de</strong>e ist es zunächst eine normale Binomial-Glättung durchzuführen und danach eine weitere Glättung,<br />

die aber mit einer größeren Schrittweite als die [1 1]-Maske ( ⃗ B x ) arbeitet usw. Eine mögliche<br />

Maske für <strong>de</strong>n zweiten Mittelungsschritt ist:<br />

⃗B 2x = 1 4<br />

[<br />

1 0 2 0 1<br />

]<br />

Eine solche Maske tastet nur mehr je<strong>de</strong>n zweiten Bildpunkt ab. Analog lassen sich noch größere Masken<br />

⃗B 4x , ⃗ B 8x usw. erzeugen. Man kann dann diese Masken so zu einem Mehrschritt-Mittelungsoperator<br />

zusammensetzen:<br />

B k := B (R)<br />

2 S−1 x · · · B(R) 8x B(R) 4x B(R) 2x B(R) x<br />

} {{ }<br />

S mal<br />

Dabei gibt <strong>de</strong>r Parameter R die Größe <strong>de</strong>r Anfangsmaske an. R = 2 entspricht B ⃗ (2) = 1 2<br />

[1 2 1]. R = 4<br />

entspricht B ⃗ (4) = 1 2<br />

[1 4 6 4 1]. Die Zahl im unteren In<strong>de</strong>x gibt dann die Spreizung <strong>de</strong>s Gitters an.<br />

Effiziente Implementierung, Mehrgittermittelung: Die jeweils nächsten Mittelungsoperatoren benutzen<br />

nicht alle Punkte, die <strong>de</strong>r vorherige Operator erzeugt. So tastet B (R)<br />

2x nur je<strong>de</strong>n zweiten Punkt ab,<br />

obwohl B x<br />

(R) auch die dazwischen liegen<strong>de</strong>n Punkte erzeugt. Man kann somit die Operatoren so modifizieren,<br />

dass sie nur noch je<strong>de</strong>n zweiten Punkt ausgeben. Dies erreicht man, in<strong>de</strong>m die Maske nicht um<br />

einen Bildpunkt, son<strong>de</strong>rn um zwei Bildpunkte vorgerückt wird. Man kennzeichnet einen solchen Operator<br />

durch einen speziellen In<strong>de</strong>x: B x|2 mittelt etwa in x-Richtung und wird jeweils um 2 Positionen<br />

weitergeschoben. Man kann dann obige kaskadierte Glättung B k auch so schreiben:<br />

B k := B (R)<br />

2|x · · · B(R) 2|x B(R) 2|x<br />

} {{ }<br />

S mal<br />

Dies be<strong>de</strong>utet, dass die späteren Optimierungen auf immer kleineren Gittern arbeiten, also wesentlich<br />

schneller wer<strong>de</strong>n.<br />

9.4.2 Rekursive Mittelung<br />

Ein rekursives Filter (siehe Abschnitt 7.3) hat eine unendliche Punktantwort, die von <strong>de</strong>r Maskengröße<br />

unabhängig ist. Man kann <strong>de</strong>swegen Glättungsfilter erstellen, <strong>de</strong>ren Glättungsgrad über einen Parameter<br />

einstellbar ist, ohne dabei die Maskengröße zu verän<strong>de</strong>rn. Somit sind mit gleichbleiben<strong>de</strong>r Komplexität<br />

sehr starke und sehr schwache Mittelung möglich. Ein Beispiel für ein parametrisiertes Tiefpassfilter ist<br />

etwa:<br />

± A : g ′ n = ·g ′ n±1 + α · (g<br />

n − g n∓1<br />

)<br />

, 0 < α ≤ 1<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 61 –


9 Mittelung<br />

Dabei han<strong>de</strong>lt es sich allerdings um ein kausales Filter, das in eine bestimme Richtung läuft. Solche<br />

Filter erfüllen nicht die Verschiebungsreiheit. Nimmt man aber an, dass man ein vor- und ein rückwärtslaufen<strong>de</strong>s<br />

kausales Filter ± A hat, so kann man diese zu einem verschiebungsfreien Filter kombinieren.<br />

Die Transferfunktionen <strong>de</strong>r obigen Filter sind:<br />

± Â(k) = a(k) ± i · b(k)<br />

kombiniert man diese Transferfunktionen so, das sich eine reelle Transferfunktion ergibt, so erhält man<br />

ein verschiebungsfreies Mittelungsfilter. Dazu gibt es zwei Möglichkeiten (im Fourier-Raum):<br />

Addition  = 1 2[ +<br />

 + −  ] = a(k)<br />

Multiplikation<br />

 = +  · − ] = a 2 (k) + b 2 (k)<br />

Die Multiplikation entspricht im Realraum einer Hintereinan<strong>de</strong>rausführung, sodass man mit obigem Filter<br />

leicht auch ein 2D-Filter erhält:<br />

A 2D = A x A y = + A x − A x + A y − A y<br />

Wie bereits gesagt sind die Vorteile eines solchen Filters die Unabhängigkeit <strong>de</strong>s Rechenaufwan<strong>de</strong>s vom<br />

Glättungsgrad und die leichte Einstellbarkeit <strong>de</strong>r Glättung. Die 2D-Filter haben aber eine große Anisotropie,<br />

sodass man evtl. zusätzliche Filter in Diagonalrichtung einsetzen muss. Ist α = 2 −l , l ∈ N, so<br />

kann man <strong>de</strong>n Filter sogar ganz ohne Multiplikation und nur mit Bit-Shifts berechnen.<br />

9.5 nichtlineare und steuerbare Mittelung<br />

9.5.1 Medianfilter<br />

Die Grun<strong>de</strong>igenschaften von Medianfiltern sind im Abschnitt 7.2 über Rangordnungfilter bereits ausführlich<br />

behan<strong>de</strong>lt wor<strong>de</strong>n. Dort wur<strong>de</strong> auch erklärt, wie ein solches Filter beson<strong>de</strong>rs Salt-and-Pepperbzw.<br />

Impuls-Rauschen unterdrückt (siehe Abb. 7.3). Die Strukturen im Bild (wie Kanten o<strong>de</strong>r Rampen)<br />

bleiben dabei erhalten. Medianfilter sind bei gauß’schem Rauschen eher schlecht geeignet.<br />

9.5.2 gewichtete und einstellbare Mittelung<br />

Oft sind zu Messdaten die Fehler bekannt (in Form <strong>de</strong>r Varianz). Bei Bil<strong>de</strong>rn hat man also neben <strong>de</strong>m<br />

eigentlichen Bild g mn noch ein Varianzbild σmn. 2 Möchte man nun über alle Punkte mitteln und dabei das<br />

statistische Gewicht eines Punktes nach seinem Fehler richten, so wird je<strong>de</strong>r Punkt mit <strong>de</strong>m Kehrwert<br />

seiner Varianz gewichtet:<br />

g = const · ∑ 1<br />

· g mn<br />

σ 2 m,n mn<br />

Oft betrachtet man <strong>de</strong>swegen auch statt <strong>de</strong>m Varianzbild ein Bild <strong>de</strong>r Wichtungsfaktoren<br />

w mn = 1<br />

σmn<br />

2 .<br />

Dieses Konzept kann auf eine Faltung erweitert wer<strong>de</strong>n:<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 62 –


9 Mittelung<br />

Definition 9.1 (normalisierte Faltung) Sei h eine Faltungsmaske, g ein beliebiges Bild und w das<br />

zugehörige Wichtungsbild. Dann ist die normalisierte Faltung <strong>de</strong>finiert als:<br />

g ′ h ⊛(w · g)<br />

=<br />

h ⊛ w<br />

w ′ = h ⊛ w<br />

Die ·-Operation entspricht einer pixelweisen Multiplikation.<br />

Man kann diese Art <strong>de</strong>r Faltung z.B. nutzen, in<strong>de</strong>m man die Kantenstärke als Wichtungsbild verwen<strong>de</strong>t<br />

und so Kanten weniger glättet als <strong>de</strong>n Rest <strong>de</strong>s Bil<strong>de</strong>s.<br />

Neben <strong>de</strong>r normalisierten Faltung kann man auch Filter <strong>de</strong>signen, <strong>de</strong>ren Mittelunsgrad über einen Parameter<br />

α anpassbar ist. Macht man diesen Parameter von <strong>de</strong>r aktuellen Umgebung im Bild abhängig, so<br />

erhält man ebenfalls eine einstellbare/gewichtete Mittelung.<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 63 –


10 Kanten<strong>de</strong>tektion<br />

Kanten<strong>de</strong>tektion<br />

10.1 differentielle Merkmalsbeschreibung<br />

Hier soll kurz aufgezählt wer<strong>de</strong>n, wie man Bildmerkmale (Kanten, Ecken ...) mit ersten und zweiten<br />

Ableitungen beschreibt.<br />

Kante an einer Kante fin<strong>de</strong>t man eine schnelle Än<strong>de</strong>rung im Signal (große erste Ableitung) senkrecht<br />

zur Kantenrichtung<br />

Ecke Bei einer Ecke han<strong>de</strong>lt es sich um eine Kante, die zusätzlich eine große Krümmung senkrecht zur<br />

Gradientenrichtung aufweist<br />

Linie hier ist die Krümmung senkrecht zur Linie groß. Es han<strong>de</strong>lt sich um ein lokales Extremum, also<br />

verschwin<strong>de</strong>t die 1. Ableitung.<br />

Kante<br />

Ecke<br />

Linie<br />

Schnitt<br />

Gradient<br />

Gradient<br />

Grauwert<br />

1. Ableitung<br />

Grauwert<br />

2. Ableitung<br />

1. Ableitung<br />

2. Ableitung<br />

Abb. 10.1: differentielle Merkmalsbeschreibung<br />

10.2 Ableitungsoperatoren<br />

Aus <strong>de</strong>r Einleitung kann man schließen, dass man sich hier im wesentlichen mit <strong>de</strong>n ersten und zweiten<br />

Ableitungen beschäftigt. Um passen<strong>de</strong> Filtermasken zu erstellen ist es auch günstig sich die Fourier-<br />

Transformierten <strong>de</strong>r entsprechen<strong>de</strong>n Operatoren anzusehen. In Abschnitt <strong>3.6</strong> wur<strong>de</strong> folgen<strong>de</strong>r Satz erwähnt:<br />

∂g<br />

∂x<br />

2πi · k · ĝ(k)<br />

64


10 Kanten<strong>de</strong>tektion<br />

Die Ableitung ∂g<br />

∂<br />

∂x<br />

lässt sich auch als Anwendung <strong>de</strong>s Operators<br />

man folgen<strong>de</strong> Beziehungen:<br />

∂x<br />

auf das Bild g sehen. Daraus erhält<br />

∂<br />

∂x<br />

2πik (10.2.1)<br />

∂ 2<br />

∂x 2 −4π 2 k 2 (10.2.2)<br />

⃗∇ 2πi ⃗ k (10.2.3)<br />

∆ = ⃗ ∇ 2 x −4π 2 | ⃗ k| 2 (10.2.4)<br />

In <strong>de</strong>n letzten bei<strong>de</strong>n Gleichungen wur<strong>de</strong>n <strong>de</strong>r Gradienten- und <strong>de</strong>r Laplace-Operator benutzt:<br />

⎛ ⎞<br />

∂/∂x 1<br />

⎜ ⃗∇ = ⎝∂/∂x 2<br />

⎟<br />

⎠ ∆ = ∇ ⃗ 2 = ∂2<br />

∂x 2 + ∂2<br />

1 ∂x 2 + . . .<br />

2<br />

.<br />

10.3 Eigenschaften<br />

Symmetrie/Verschiebungsfreiheit: Ein Ableitungsfilter darf die Position eines Objekte (einer Kante)<br />

nicht verän<strong>de</strong>rn, da solche Fehler später nicht mehr ausgeglichen wer<strong>de</strong>n können. Wie man bereits an<br />

<strong>de</strong>n Fourier-Transformieren i<strong>de</strong>alen Operatoren sieht, sollte die Transferfunktion einer ersten Ableitung<br />

komplex sein. Daraus ergibt sich mit <strong>de</strong>n Eigenschaften <strong>de</strong>r Fourier-Transformation, dass die Filtermaske<br />

komplex und antisymmetrisch sein muss:<br />

h −n = −h n<br />

Hat die Maske eine ungeradzahlige Breite, so be<strong>de</strong>utet diese Bedingung, dass das mittlere Element 0<br />

ist.<br />

Betrachtet man die zweite Ableitung, so müssen die Masken symmetrisch und reell sein.<br />

Phasenverschiebung: Es zeigt sich, dass Ableitungsfilter eine <strong>de</strong>finierte Phasenverschiebung auf ein<br />

Signal geben. Dazu betrachtet man die erste und zweite Ableitung einer Sinus-Funktion:<br />

∂<br />

sin x = cos x<br />

} ∂x {{ }<br />

90 ◦ Phasenverschiebung gegenüber sin x<br />

∂ 2<br />

sin x = − sin x<br />

∂x2 } {{ }<br />

180 ◦ Phasenverschiebung gegenüber sin x<br />

Dies be<strong>de</strong>utet auch, dass eine erste Ableitungen Extrema auf Nulldurchgänge und große Steigungen auf<br />

Extrema abbil<strong>de</strong>t. Die zweite Ableitung führt Extrema in Extrema über.<br />

Satz 10.1 (Unterdrückung <strong>de</strong>s Mittelwertes) Der Mittelwert soll bei allen Ableitungen unterdrückt<br />

wer<strong>de</strong>n. Ein solches Filter muss also konstante Anteile <strong>de</strong>s Signals entfernen. Dies lässt sich erreichen,<br />

wenn sich die Filterkoeffizienten zu null addieren:<br />

∑<br />

1D : h n = 0<br />

2D :<br />

n<br />

∑ ∑<br />

h m,n = 0<br />

m<br />

Diese Bedingung lässt sich auch für die Transferfunktion schreiben. Im Fourier-Raum wird <strong>de</strong>r konstante<br />

Anteil <strong>de</strong>s Signals auf das zentrale Pixel abgebil<strong>de</strong>t (k = 0). Das zentrale Pixel <strong>de</strong>r Transferfunktion <strong>de</strong>s<br />

Filters muss also null sein:<br />

ĥ(0) = 0<br />

n<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 65 –


10 Kanten<strong>de</strong>tektion<br />

Isotropie: Ein i<strong>de</strong>aler Kanten<strong>de</strong>tektor sollte Kanten in beliebigen Richtungen mit <strong>de</strong>r gleichen Empfindlichkeit<br />

erkennen.<br />

Transferfunktion:<br />

• 1. Ableitung: Die Transferfunktion muss imaginär und antisymmetrisch sein (siehe oben). Nach<br />

Gleichung (7.1.2) aus Abschnitt 7.1.2 hat man dann folgen<strong>de</strong> Darstellung <strong>de</strong>r 1D-Transferfunktion:<br />

ĥ(k) = −2i ·<br />

Dabei ist R die Breite <strong>de</strong>r Filtermaske h n .<br />

R∑<br />

h n ′ sin ( n ′ πk )<br />

n ′ =1<br />

• 2. Ableitung: Die Transferfunktion muss reell und symmetrisch sein (siehe oben). Nach Gleichung<br />

(7.1.1) aus Abschnitt 7.1.2 hat man dann folgen<strong>de</strong> Darstellung <strong>de</strong>r 1D-Transferfunktion:<br />

ĥ(k) = h 0 + 2 ·<br />

R∑<br />

h n ′ cos ( n ′ πk )<br />

n ′ =1<br />

10.4 Gradientenbasierte Ableitungsfilter<br />

I<strong>de</strong>ale Transferfunktion? Zunächst sollen Filter entwickelt wer<strong>de</strong>n, die Kanten über <strong>de</strong>n Gradienten<br />

<strong>de</strong>s Bil<strong>de</strong>s <strong>de</strong>tektieren. Dazu stellt sich zunächst die Frage in wieweit die i<strong>de</strong>ale Transferfunktion 2πi ⃗ k<br />

von einem Filter erfüllt wer<strong>de</strong>n soll. Es zeigt sich, dass die Bedingung diese Funktion exakt zu erfüllen<br />

zu stark ist, da z.B. auch nach einer Glättung noch eine Kante <strong>de</strong>tektiert wer<strong>de</strong>n kann. Man for<strong>de</strong>rt<br />

daher, dass <strong>de</strong>r Ableitungsfilter die i<strong>de</strong>ale (lineare) Transferfunktion nur in einem kleinen Bereich um<br />

k = 0 erfüllt (nutze evtl. Taylor-Entwicklung). Die folgen<strong>de</strong> Abb. 10.2 ver<strong>de</strong>utlicht das anhand <strong>de</strong>r<br />

Nacheinan<strong>de</strong>rausführung einer Gauß-Glättung und eines i<strong>de</strong>alen Ableitungsfilters (Multiplikation <strong>de</strong>r<br />

Filtermasken im Fourier-Raum, Faltung im Realraum).<br />

Glättung Ableitung glätten<strong>de</strong>r Ableitungsfilter<br />

Abb. 10.2: Kombination von Glättung und Ableitung in einem Filter<br />

um k=0<br />

liegt i<strong>de</strong>ale<br />

TF vor<br />

Gradientenbetrag: Die ersten Ableitungen in <strong>de</strong>n verschie<strong>de</strong>nen Richtungen ergeben einen vektorwertigen<br />

Filter D. ⃗ In <strong>de</strong>m damit gefilterten Signal muss man anschließend die Minima und Maxima<br />

fin<strong>de</strong>n. Oft ist es sinnvoll die Richtungsinformation zu unterdrücken und man möchte nur die Kantenstärke<br />

in einem Bild erhalten. Dann muss man <strong>de</strong>n Betrag <strong>de</strong>s Gradienten berechnen. Dies lässt sich mit<br />

folgen<strong>de</strong>r Operation bewerkstelligen:<br />

( )<br />

Dx<br />

⃗D = ⇒ | D|<br />

D ⃗ = √ D x · D x + D y · D y<br />

y<br />

Die Symbole + und · stehen für punktweise Addition und Multiplikation. Diese Operationen können<br />

als dyadische Punktoperationen implementiert wer<strong>de</strong>n. Man kann dann eine LUT verwen<strong>de</strong>n, um die<br />

Berechnung zu beschleunigen. Manchmal verwen<strong>de</strong>t man auch eine einfachere Betragsberechnung:<br />

| ⃗ D| = |D x | + |D y |<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 66 –


10 Kanten<strong>de</strong>tektion<br />

Da hier weniger Operationen benötigt wer<strong>de</strong>n, ist diese Betragsbildung auch schneller. Dafür ist diese<br />

Betragsberechnung wesentlich anisotroper als die obige Variante. Dies sieht auch in <strong>de</strong>r folgen<strong>de</strong>n Abb.<br />

10.3, in <strong>de</strong>r die Punkte (x, y) mit ∣ x ∣∣∣<br />

∣(<br />

= 1 aufgetragen sind. Es bleibt noch zu bemerken, dass mathematisch<br />

die erste Betragsberechnung <strong>de</strong>r euklidischen Norm und die zweite Betragsberechnung <strong>de</strong>r<br />

y)∣<br />

L1-Norm entspricht.<br />

1<br />

euklidische Norm<br />

√ x²+y²<br />

1<br />

L1- Norm<br />

|x|+|y|<br />

-1<br />

1<br />

-1<br />

1<br />

-1<br />

-1<br />

Abb. 10.3: Darstellung <strong>de</strong>r Punkte mit Betrag 1 zur euklidischen und zur L1-Norm<br />

mögliche Fehler: Bei <strong>de</strong>r Gradientenberechnung kann man zwei wesentliche Fehler machen:<br />

• falsche Richtung<br />

• falscher Betrag/falsche Länge<br />

diskrete Differenzen:<br />

Ableitung:<br />

Die einfachsten Ableitungsfilter erhält man aus <strong>de</strong>r diskreten Darstellung <strong>de</strong>r<br />

∂g g(x) − g(x − ∆x)<br />

≈<br />

∂x ∆x<br />

g(x + ∆x) − g(x)<br />

=<br />

∆x<br />

g(x + ∆x) − g(x − ∆x)<br />

=<br />

2 · ∆x<br />

(Rückwärtstransformation)<br />

(Vorwärtstransformation)<br />

(symmetrische Differenzen)<br />

Aus diesen Gleichungen kann man einfache Filtermasken ableiten. Der In<strong>de</strong>x • zeigt an, dass <strong>de</strong>r Filter<br />

an diesem Punkt aufsetzt. Es sind dann immer noch entsprechen<strong>de</strong> Masken <strong>de</strong>r BReite 3 angegeben:<br />

− ⃗ Dx = [1 • − 1] = [1 − 1 0]<br />

+ ⃗ Dx = [1 − 1 • ] = [0 1 − 1] (10.4.1)<br />

⃗D 2x = [1 0 − 1] (10.4.2)<br />

Nur die Makse ⃗ D 2x ist symmetrisch. Man kann ± ⃗ Dx als symmetrisch auffassen, wenn man das Ergebnis<br />

an die Zwischenstelle zwischen <strong>de</strong>n zwei ≠ 0-Einträgen schreibt. Dann verschieben sich aber alle Muster<br />

im Bild um eine halbe Pixelbreite. Die Transferfunktion <strong>de</strong>s Filters ⃗ D 2x ist sehr einfach:<br />

ˆd 2x = i · sin(πk)<br />

Aus <strong>de</strong>r Taylor-Entwicklung <strong>de</strong>s Sinus ersieht man, dass für |k| ≪ 1 gilt sin(x) ≈ x, sodass diese<br />

Transferfunktion um k = 0 <strong>de</strong>r i<strong>de</strong>alen Transferfunktion entspricht. Die folgen<strong>de</strong> Abb. 10.4 zeigt diese<br />

Transferfunktion.<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 67 –


1<br />

0.8<br />

0.6<br />

0.4<br />

0.2<br />

0<br />

-0.2<br />

-0.4<br />

-0.6<br />

-0.8<br />

-1<br />

30 32 34 36 38 40 42 44 46 48 50<br />

10 Kanten<strong>de</strong>tektion<br />

1<br />

0.8<br />

0.6<br />

0.4<br />

0.2<br />

0<br />

-0.2<br />

-0.4<br />

-0.6<br />

-0.8<br />

k<br />

-1<br />

-1 -0.5 0 0.5 1<br />

Abb. 10.4: Transferfunktion <strong>de</strong>s Filters ⃗ D 2x<br />

Es zeigt sich eine Ähnlichkeit zur schematischen Darstellung in Abb. 10.2. Der Filter sollte sich also<br />

als Kombination aus Glättung und Ableitung darstellen lassen. Mit Hilfe <strong>de</strong>s einfachen Binomialfilters<br />

⃗B x = 1 2 [1 1] kann man ⃗ D 2x auch über die Rückwertsdifferenzen darstellen:<br />

⃗D 2x = − D x B x = [1 • − 1] ⊛ 1 2 [1 1] = 1 [1 0 − 1]<br />

2<br />

Es zeigt sich das solche einfachen Ableitungsfilter stark anisotrop sind und große Betragsfehler aufweisen,<br />

die zusätzlich von <strong>de</strong>r Kantenorientierung abhängen.<br />

10.5 Laplace-Filter<br />

Man kann Kanten auch fin<strong>de</strong>n, wenn man die Nulldurchgänge <strong>de</strong>r zweiten Ableitung eines Signals sucht.<br />

Dazu betrachte man zunächst Abb. 10.5. Es ist dabei zu beachten, das nicht je<strong>de</strong>r Nulldurchgang einer<br />

Kante entspricht. Die kleinen Nulldurchgänge wer<strong>de</strong>n durch Rauschen im Bild verursacht. Wichtig ist<br />

also, das vor und nach <strong>de</strong>m Nulldurchgang Maxima, bzw. Minima liegen, die über <strong>de</strong>m allgemeinen<br />

Rauschpegel <strong>de</strong>s Signals liegen. Damit ist die Kanten<strong>de</strong>tektion über die zweite Ableitung viel rauschanfälliger,<br />

als die Anwendung die Bestimmung über Gradienten.<br />

1<br />

0.8<br />

1. Ableitung<br />

0.6<br />

verrauschte Daten<br />

0.4<br />

0.2<br />

0<br />

-0.2<br />

1<br />

0.8<br />

-0.4<br />

-0.6<br />

-0.8<br />

0.6<br />

0.4<br />

0.2<br />

Kanten<br />

-1<br />

0 20 40 60 80 100 120 140 160 180 200<br />

1<br />

0.8<br />

0.6<br />

2. Ableitung<br />

0<br />

-0.2<br />

0 20 40 60 80 100 120 140 160 180 200<br />

0.4<br />

0.2<br />

0<br />

-0.2<br />

-0.4<br />

-0.6<br />

-0.8<br />

-1<br />

hier keine Kanten!<br />

0 20 40 60 80 100 120 140 160 180 200<br />

Abb. 10.5: erste und zweite Ableitung von verrauschten Daten<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 68 –


10 Kanten<strong>de</strong>tektion<br />

Laplace-Operator: Zur Berechnung <strong>de</strong>r zweiten Ableitung verwen<strong>de</strong>t man <strong>de</strong>n Laplace-Operator D.<br />

Seine Faltungsmaske ist:<br />

1D : D ⃗ 2<br />

x = − Dx ⃗ ⊛ + Dx ⃗ = [1 • − 1] ⊛[1 − 1 • ] = [−1 2 − 2]<br />

⎡<br />

⎤<br />

0 −1 0<br />

2D : D xy = ⎣−1 4 −1⎦<br />

0 −1 0<br />

Diese Faltungsmasken erhält man über die Diskretisierung <strong>de</strong>s 2D-Laplace-Operators ∆ = ∂2 + ∂2<br />

∂x 2<br />

Die folgen<strong>de</strong> Abb. 10.6 zeigt die Anwendung <strong>de</strong>s Laplace-Filters auf ein Bild. Man sieht, dass je<strong>de</strong> Kante<br />

von einem schwarzen und weißen Rand umgeben sind (vgl. Abb. 10.5).<br />

∂y 2 .<br />

Original:<br />

Laplace-gefiltertes Bild:<br />

Abb. 10.6: Anwendung <strong>de</strong>s Laplace-Filters auf ein Testbild<br />

Transferfunktion:<br />

Der 2D-Filter hat folgen<strong>de</strong> Transferfunktion:<br />

ˆl( ⃗ k) = −4 sin 2 (πk x /2) − 4 sin 2 (πk y /2)<br />

Die folgen<strong>de</strong> Abb. 10.7 zeigt die Transferfunktion <strong>de</strong>s Laplace-Filters. Es ist zu beachten, dass sie an<br />

<strong>de</strong>n Rän<strong>de</strong>rn negativ wird. In <strong>de</strong>r Mitte ist die 0. Diese Transferfunktion ist nur für kleine k isotrop.<br />

0 1 0<br />

1 -4 1<br />

0 1 0<br />

1 2 1<br />

2 -12 2<br />

1 2 1<br />

0<br />

-2<br />

-4<br />

-6<br />

-8<br />

-1<br />

0<br />

k x 1 -1<br />

0<br />

0<br />

-2 0<br />

0<br />

-4 -1<br />

-2<br />

-6 -2<br />

-4<br />

-8 -3<br />

k y<br />

k<br />

-1<br />

y<br />

0<br />

0<br />

k<br />

1 -1 x<br />

-4<br />

1<br />

1<br />

Abb. 10.7: Transferfunktion <strong>de</strong>s einfachen Laplace-Filters<br />

Man kann leicht erkennen, das niedrige Wellenzahlen herausgefiltert wer<strong>de</strong>n. Es han<strong>de</strong>lt sich also um<br />

einen Hochpassfilter. Zusätzlich gilt ˆl(k) ≤ 0. Damit erzeugt <strong>de</strong>r Filter eine Phasenverschiebung von<br />

180 ◦ .<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 69 –


10 Kanten<strong>de</strong>tektion<br />

Konstruktion über Binomialoperatoren: Ein Laplace-Operator lässt sich auch mit Hilfe von Binomialoperatoren<br />

konstruieren. Dies geschiet folgen<strong>de</strong>rmaßen:<br />

⎡ ⎤ ⎡ ⎤ ⎡ ⎤<br />

4(B 2 − 1) = 1 1 2 1<br />

⎣2 4 2⎦ − 1 0 0 0<br />

⎣0 16 0⎦ = 1 1 2 1<br />

⎣2 −12 2⎦<br />

4<br />

4<br />

4<br />

1 2 1 0 0 0 1 2 1<br />

Die Transferfunktion dieses Filters lautet:<br />

ˆl( ⃗ k) = −4 cos 2 (πk x /2) · cos 2 (πk y /2) − 4<br />

Diese Funktion ist wesentlich isotroper als die obige.<br />

10.6 Optimierung <strong>de</strong>r Kantenfilter<br />

10.6.1 Allgemeine Optimierungsansätze<br />

Least-Square-Fits: Man kann Least-Square-Fits benutzen, um die Filterkoeffizienten zu optimieren.<br />

Dazu nutzt man die allgemeine Form <strong>de</strong>r Transferfunktion und bestimmt die optimalen Koeffizienten<br />

<strong>de</strong>r Faltungsmaske so, dass diese <strong>de</strong>r i<strong>de</strong>alen Transferfunktion möglichst gut entsprechen. Das folgen<strong>de</strong><br />

Beispiel zeigt das für einen 1D-Gradientenfilter:<br />

• Zielfunktion: ˆt(k) = iπk<br />

• Transferfunktion: ˆd(k) = −2i ·<br />

R∑<br />

n ′ =1<br />

h n ′ sin (n ′ πk)<br />

Man löst dann das Optimierungsproblem (ˆt(k) − ˆd(k) ) 2<br />

→<br />

min.<br />

10.6.2 Regularisierte Kanten<strong>de</strong>tektoren<br />

Bei verrauschten Bil<strong>de</strong>rn liefern die bisherigen Detektoren nur schlechte Ergebnisse, weil siehe hohe<br />

Frequenzanteile und damit auch Rauschen verstärken. Dieses Problem lässt sich lösen, wenn man zur<br />

Kanten<strong>de</strong>tektion noch eine Glättung hinzufügt. Bei einem solchen Ansatz ist es wichtig <strong>de</strong>n so entstehen<strong>de</strong>n<br />

Filter auf die Skalen <strong>de</strong>r erwarteten Objekte im Bild anzupassen. Man muss <strong>de</strong>n Filter so einstellen,<br />

dass er auf <strong>de</strong>m Wellenzahlbereich mit <strong>de</strong>m maximalen Signal-zu-Rausch-Verhältnis arbeitet. Das ist <strong>de</strong>r<br />

Bereich, in <strong>de</strong>m das Signal am stärksten über das Rauschen hinausgeht. Man <strong>de</strong>finiert <strong>de</strong>swegen:<br />

Ein Ableitungsfilter, das eine Glättung enthält wird regulari-<br />

Definition 10.1 (Regularisierter Filter)<br />

siert genannt.<br />

Regularisierte Filter stellen eine robuste Lösung für das schlecht gestellte Problem <strong>de</strong>r Ableitung diskreter,<br />

verrauschter Signale dar. Die Glättung muss so gestaltet wer<strong>de</strong>n, dass sie nur parallel zu Kanten<br />

glättet, nicht aber senkrecht, damit die Kanten nicht verschmiert wer<strong>de</strong>n.<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 70 –


10 Kanten<strong>de</strong>tektion<br />

Gauß-Filter: 1. Ableitung Gauß-Filter: 2. Ableitung Gauß-Filter:<br />

k k k<br />

Abb. 10.8: Erste und Zweite Ableitung einer Gauß-Kurve. Man sieht die Ähnlichkeit zur i<strong>de</strong>alen Transferfunktion<br />

von Gradienten- und Laplace-Operatoren.<br />

2 × 2-Gradientenfilter: Aus <strong>de</strong>n Gradienten- und Binomialfiltern lassen sich einfach regularisierte Filter<br />

konstruieren:<br />

Filtermaske<br />

[ ]<br />

x-Richtung D x B y = 1 1 −1<br />

2<br />

[<br />

1 −1<br />

]<br />

y-Richtung D y B x = 1 1 1<br />

2 −1 −1<br />

Transferfunktion<br />

ˆd xˆby ( ⃗ k) = 2i sin(πk x /2) · cos(πk y /2)<br />

ˆd yˆbx ( ⃗ k) = 2i sin(πk y /2) · cos(πk x /2)<br />

Diese Filter sind in Richtung <strong>de</strong>r Ableitung wie einfache Gradientenfilter. Senkrecht dazu sind sie einfache<br />

Binomial-Glättungsfilter.<br />

Sobel-Filter: Die Sobel-Gradientenfilter bestehen aus einer Gradientenbildung und einer stärkeren<br />

Glättung, als im letzten Absatz:<br />

⎡ ⎤<br />

⎡<br />

⎤<br />

D 2x By 2 = 1 1 0 −1<br />

⎣2 0 −2⎦ D 2y Bx 2 = 1 1 2 1<br />

⎣ 0 0 0 ⎦<br />

8<br />

8<br />

1 0 −1<br />

−1 −2 −1<br />

Canny-Filter, Canny-Kanten<strong>de</strong>tektion: Diese Filter basieren auf <strong>de</strong>n Ableitungen von Gaußfiltern.<br />

Dazu betrachtet man folgen<strong>de</strong> Abb. 10.8. Die Transferfunktion eines Gaußfilters ist ebenfalls eine Gauß-<br />

Kurve. Die erste Ableitung dieser Gaußfunktion zeigt um k = 0 die Charakteristik eines Gradientenfilters<br />

(∝ k). Die zweite Ableitung ähnelt um k = 0 <strong>de</strong>r Transferfunktion eines Laplace-Filters (∝ k 2 ). Man<br />

muss aus obigen Transferfunktionen also nur noch durch Fourier-Transformation die entsprechen<strong>de</strong>n<br />

Filtermasken berechnen. In <strong>de</strong>r realen Anwendung wird man wohl aber einfach zwei Filter wählen, die<br />

nacheinan<strong>de</strong>r angewen<strong>de</strong>t wer<strong>de</strong>n. Ein solcher Filter ist optimal bei additivem Rauschen auf (maximal)<br />

linearen Kanten. Man kann ihn auch einfach so ableiten: Zunächst wird das Rauschen im Bild mit einem<br />

Gauß-Filter G geglättet. Nun wird ein Ableitungsfilter D = ∂<br />

∂x<br />

angewen<strong>de</strong>t. Insgesamt hat man also für<br />

ein Bild g:<br />

g ′ = DGg<br />

Bei <strong>de</strong>r Anwendung von LSI-Filter kann man beliebig klammern, sodass gilt:<br />

g ′ = (DG)g<br />

Dies be<strong>de</strong>utet, dass man auch zunächst die Ableitung <strong>de</strong>s Glättungsfilters berechnen kann und dann <strong>de</strong>n<br />

so entstehen<strong>de</strong>n Filter auf das Bild anwen<strong>de</strong>n.<br />

Dieser Filter wird wohl als Canny-Filter bezeichnet. Mit Canny-Kanten<strong>de</strong>tektion bezeichnet man einen<br />

spezielle Algorithmus zum Auffin<strong>de</strong>n <strong>de</strong>r Kanten im Bild. Man setzt dazu zunächst einen Schwellwert<br />

fest. Liegt <strong>de</strong>r Gradientenbetrag an einem Pixel über diesem Schwellwert, so han<strong>de</strong>lt es sich um eine<br />

Kante. Der Algorithmus veruscht nun <strong>de</strong>n Kanten zu folgen. Dabei wird <strong>de</strong>r Schwellwert heruntergesetzt,<br />

um auch schwächere Linien zu fin<strong>de</strong>n.<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 71 –


10 Kanten<strong>de</strong>tektion<br />

LoG-Filter: Die Laplace-of-Gaussian- o<strong>de</strong>r LoG-Filter arbeiten nach <strong>de</strong>m selben Muster, wie Canny-<br />

Filter. Zunächst glättet man mit einem Gaußfilter (im diskreten einem Binomialfilter) und wen<strong>de</strong>t dann<br />

<strong>de</strong>n Laplace-Operator L an:<br />

LB p<br />

DoG-Filter: Die Difference-of-Gaussian- o<strong>de</strong>r DoG-Filter verfahren nach <strong>de</strong>m selben prinzip, wie die<br />

LoG-Filter. Es wird allerdings nicht die zweite Ableitung mit einem einfachen Laplace-Operator, son<strong>de</strong>rn<br />

mit <strong>de</strong>r Differenzdarstellung aus Binomialfiltern berechnet:<br />

4(B q − 1)<br />

} {{ }<br />

Laplace<br />

Ein solcher DoG-Filter hat eine geringere Anisotropie, als ein LoG-Filter. Man kann die Anisotropie<br />

noch weiter reduzieren, wenn man LoG und DoG-Filter kombiniert:<br />

B p<br />

2<br />

3 DoG + 1 3 LoG<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 72 –


11 Einfache Nachbarschaften<br />

11.1 Einführung<br />

Definition 11.1 (einfache Nachbarschaft) Eine einfache Nachbarschaft ist eine (kleine) lokale Umgebung<br />

in einem Bild, in <strong>de</strong>r sich <strong>de</strong>r Grauwert nur entlang einer Richtung än<strong>de</strong>rt. Dies be<strong>de</strong>utet, dass<br />

die Nachbarschaft nur aus parallelen Linien besteht. Die folgen<strong>de</strong> Abbildung zeigt einige Beispiele:<br />

homogene<br />

Umgebung<br />

zufällige<br />

Umgebung<br />

einfache Nachbarschaften<br />

n<br />

n<br />

n<br />

n<br />

Dabei bezeichnet ⃗n <strong>de</strong>n Normalenvektor auf die Grauwertstruktur, also die Richtung <strong>de</strong>r Grauwertän<strong>de</strong>rung.<br />

Man kann die Nachbarschaft so darstellen:<br />

g(⃗x) ≡ g(⃗x · ⃗n)<br />

Dabei beschreibt g(x) <strong>de</strong>n Grauwert entlang <strong>de</strong>r Normalenrichtung.<br />

Die Richtigkeit <strong>de</strong>r obigen Darstellung ergibt sich einfach durch die Berechnung <strong>de</strong>s Gradienten:<br />

⃗∇g(⃗x · ⃗n) = ⃗n · g ′ (⃗x · ⃗n)<br />

Dies be<strong>de</strong>utet, dass die Än<strong>de</strong>rung <strong>de</strong>s Grauwertes nur in Richtung ⃗n be<strong>de</strong>utet.<br />

QED.<br />

Richtung und Orientierung: Es macht keinen Sinn die Richtung <strong>de</strong>s Vektors ⃗n im vollen Winkelbereich<br />

0..360 ◦ anzugeben, da ein um 180 ◦ gedrehtes Muster nur gespiegelt ist. Man gibt daher die<br />

Ausrichtung <strong>de</strong>r Nachbarschaft als sog. Orientierung an, die nur zwischen 0 ◦ und 180 ◦ liegt. Eine Ausrichtung<br />

im vollen Winkelbereich 0..360 ◦ wird als Richtung bezeichnet.<br />

Fourier-Darstellung: Im Fourierraum steht je<strong>de</strong>r Pixel ⃗ k für eine periodische Struktur mit bestimmter<br />

Ausrichtung entlang ⃗ k = (k x , k y ) t (siehe Abb. 3.7). Damit muss <strong>de</strong>r Wellenvektor ⃗ k je<strong>de</strong>r Fourier-<br />

Komponente, die in <strong>de</strong>r Nachbarschaft vorkommt senkrecht auf <strong>de</strong>m Vektor ⃗n <strong>de</strong>r Nachbarschaft stehen.<br />

Die Fourier-Transformierte einer einfachen Nachbarschaft ist also eine Linie entlang ⃗n ‖ ⃗ k:<br />

g(⃗x · ⃗n) ĝ( ⃗ k) · δ [ ]<br />

⃗ k − ( ⃗ k · ⃗n)⃗n<br />

} {{ }<br />

schränkt auf Linie ein<br />

Bisher wur<strong>de</strong> davon ausgegangen, dass sich die einfache Nachbarschaft unendlich aus<strong>de</strong>hnt. Es soll sich<br />

aber um einen kleinen Bereich han<strong>de</strong>ln (eben eine Nachbarschaft), sodass sie durch eine Fensterfunktion<br />

w(⃗x) beschränkt wer<strong>de</strong>n muss (z.B. Gauß-Fenster). Das Bild g(⃗x · ⃗n) wird also mit <strong>de</strong>r Fensterfunktion<br />

multipliziert:<br />

g(⃗x) = w(⃗x) · g(⃗x · ⃗n)<br />

Im Fourier-Raum be<strong>de</strong>utet dies eine Faltung mit ŵ( ⃗ k).<br />

73


11 Einfache Nachbarschaften<br />

Satz 11.1 (Fourier-Transformierte einer einfachen Nachbarschaft) Eine einfache Nachbarschaft,<br />

<strong>de</strong>ren Grauwert sich nur entlang ⃗n än<strong>de</strong>rt hat folgen<strong>de</strong> Darstellung in Real- und Fourierraum:<br />

w(⃗x) · g(⃗x · ⃗n) ŵ( ⃗ k) ⊛ ĝ( ⃗ k) · δ [ ]<br />

⃗ k − ( ⃗ k · ⃗n)⃗n<br />

Die Fourier-Darstellung einer unbeschränkten Nachbarschaft ist also eine Linie. Die Fensterfunktion<br />

w(⃗x) <strong>de</strong>finiert die Größe <strong>de</strong>r Nachbarschaft. Im Fourierraum wird die Linie mit ŵ( ⃗ k) gefaltet, was eine<br />

Verbreiterung <strong>de</strong>r Linie zur Folge hat. In <strong>de</strong>r folgen<strong>de</strong>n Abbildung gibt σ die Breite <strong>de</strong>s Nachbarschaft<br />

an.<br />

Größe <strong>de</strong>r<br />

Nachbarschaft:<br />

Fourier-<br />

Transformierte:<br />

σ = 70 σ = 50 σ = 30 σ = 20<br />

11.2 Vektordarstellung<br />

Um eine lokale Nachbarschaft vollständig zu beschreiben muss man neben ihrer Orientierung auch noch<br />

ein Bestimmtheitsmaß angeben, das angibt, wie stark die Nachbarschaft tatsächlich orientiert ist. Ist das<br />

Bestimmtheitsmaß 1, so ist die Nachbarschaft perfekt orientiert. Ist es 0, so ist die Umgebung ohne<br />

erkennbare Orientierung (z.B. verrauscht o<strong>de</strong>r homogen). Man fasst diese zwei Größen zu einer vektoriellen<br />

Größe zusammen:<br />

Definition 11.2 (Vektordarstellung lokaler Nachbarschaften) Zur Beschreibung einer lokalen<br />

Nachbarschaft wer<strong>de</strong>n zwei Größen herangezogen: die Orientierung ⃗n <strong>de</strong>r Nachbarschaft und ein Bestimmtheitsmaß<br />

für die Stärke <strong>de</strong>r Orientierung. Der darstellen<strong>de</strong> Vektor zeigt in die Richtung von ⃗n.<br />

Seine Länge ist das Bestimmtheitsmaß. Je länger <strong>de</strong>r Vektor ist, <strong>de</strong>sto besser ist die Orientierung bestimmt.<br />

Diese Definition ermöglicht es über mehrere Nachbarschaften zu mitteln, in<strong>de</strong>m man über mehrere darstellen<strong>de</strong>n<br />

Vektoren addiert. Je bestimmter (länger) ein solcher Vektor ist, <strong>de</strong>sto mehr trägt er zur Summe<br />

bei. Man kann für einen solchen Orientierungsvektor eine einfache Farbdarstellung fin<strong>de</strong>n. Sein Betrag<br />

wird als Helligkeit und seine Richtung als Farbwert kodiert. Die folgen<strong>de</strong> Abbildung zeigt einen Halbkreis<br />

<strong>de</strong>r in Farben kodiert ist:<br />

Man kann dann aus einem Grauwertbild ein Farbbild berechnen. Es zeigt nur dort sichtbare Farben, wo<br />

eine gut bestimmte orientierte Nachbarschaften vorliegt. Die dortige Farbe zeigt die Ausrichtung <strong>de</strong>r<br />

Nachbarschaft an.<br />

Diese Darstellung hat allerdings einen Nachteil: Man kann mit ihr nicht zwischen homogener und zufälliger<br />

Nachbarschaft unterschei<strong>de</strong>n. Bei<strong>de</strong> führen zu einem sehr kurzen Vektor. Man wählt <strong>de</strong>swegen<br />

an<strong>de</strong>re Darstellungen, wie die folgen<strong>de</strong>n Tensordarstellungen.<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 74 –


11 Einfache Nachbarschaften<br />

11.3 Tensordarstellung erster Ordnung<br />

11.3.1 Strukturtensor<br />

Es sollen nun etwas bessere Darstellungen untersucht wer<strong>de</strong>n, als die Vektordarstellung aus Abschnitt<br />

11.2. Man betrachtet hierfür folgen<strong>de</strong> Optimierungsaufgabe:<br />

Fin<strong>de</strong> ein ⃗n, das möglichst gut zu einer gegebenen Nachbarschaft passt.<br />

Um diese Optimierungsaufgabe mathematisch zu formulieren muss man ein Maß fin<strong>de</strong>n, das die Abweichung<br />

<strong>de</strong>r zu optimieren<strong>de</strong>n Größe ⃗n von <strong>de</strong>r tatsächlichen Ausrichtung (bestimmt über <strong>de</strong>n Gradienten<br />

⃗∇g <strong>de</strong>s Grauwertes) in <strong>de</strong>r Nachbarschaft angibt. Man wählt hier:<br />

ɛ = [ ( ⃗ ∇g) · ⃗n ] 2 =<br />

∣ ∣∣ ⃗ ∇g<br />

∣ ∣∣<br />

2<br />

· cos<br />

2 [ ∠( ⃗ ∇g, ⃗n) ]<br />

Dabei ist ∠( ⃗ ∇g, ⃗n) <strong>de</strong>r Winkel zwischen ⃗n und <strong>de</strong>r tatsächlichen Orientierung. ɛ wird maximal, wenn ⃗n<br />

und ⃗ ∇g parallel liegen. Man muss also zur Bestimmung von ⃗n das Fehlermaß ɛ maximieren. Dieses Maß<br />

berücksichtigt noch nicht die endliche Aus<strong>de</strong>hnung <strong>de</strong>r Nachbarschaft (beschrieben durch das Fenster<br />

w(⃗x)). Um dieses ebenfalls zu berücksichtigen faltet man das Fehlermaß mit w(⃗x) und maximiert somit<br />

<strong>de</strong>n folgen<strong>de</strong>n Ausdruck:<br />

∫ ∞<br />

[( ⃗∇g(x ′ ) ) · ⃗n ] 2 · w(⃗x − ⃗x ′ ) d W x ′ → max<br />

−∞<br />

Man kann dies mit <strong>de</strong>m sog. Strukturtensor J (einer Matrix) auch so darstellen (nach einigen Umformungen):<br />

⃗n · (J⃗n )<br />

→ max<br />

Dabei wur<strong>de</strong> ausgenutzt, dass man [( ∇g(x ⃗ ′ ) ) · ⃗n ] 2 auch so darstellen kann:<br />

[( ⃗∇g(x ′ ) ) · ⃗n ] 2 [(<br />

= ⃗∇g(x ′ ) ) · ⃗n ] · [( ∇g(x ⃗ ′ ) ) · ⃗n ] = ⃗n t ( ∇g ⃗ ∇g ⃗ t )⃗n<br />

Der Strukturtensor ist dann so <strong>de</strong>finiert:<br />

J pq (⃗x) =<br />

∫ ∞<br />

−∞<br />

( ∂g(⃗x<br />

w(⃗x − ⃗x ′ ′ )<br />

)<br />

) ·<br />

∂x ′ · ∂g(⃗x′ )<br />

p ∂x ′ q<br />

d W x ′<br />

Man spricht hier von einer Darstellung erster Ordnung, weil zum einen nur Ableitungen erster Ordnung<br />

vorkommen und man zum An<strong>de</strong>ren nur einfache Nachbarschaften betrachtet. Der Tensor J ist symmetrisch.<br />

Somit kann man das Koordinatensystem so drehen, dass er Diagonalgestalt hat. Die zugehörigen<br />

Basisvektoren ⃗e i sind gera<strong>de</strong> die Eigenvektoren zu <strong>de</strong>n Eigenwerten λ i von J (Eigenwertgleichung:<br />

J⃗e i = λ i ⃗e i ). Ist <strong>de</strong>r Tensor in Diagonalgestalt, so liegt eine Koordinatenachse parallel zu ⃗n. Damit genügt<br />

es also <strong>de</strong>n Drehwinkel θ auszurechnen, ( um ⃗n zu erhalten. ) Die Rotation einer Matrix erfolgt mit<br />

cos θ sin θ<br />

einer unitären Transformationsmatrix U =<br />

nach <strong>de</strong>r Vorschrift J<br />

− sin θ cos θ<br />

′ = U t JU:<br />

( )<br />

λ1 0<br />

= U t JU =<br />

0 λ 2<br />

Nach längerer Rechnung ergibt sich daraus:<br />

( cos θ − sin θ<br />

sin θ cos θ<br />

)<br />

·<br />

tan 2θ = 2 · J 12<br />

J 22 − J 11<br />

( )<br />

J11 J 12<br />

·<br />

J 21 J 22<br />

( cos θ<br />

) sin θ<br />

− sin θ cos θ<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 75 –


11 Einfache Nachbarschaften<br />

Daraus wie<strong>de</strong>rum ergibt sich <strong>de</strong>r Orientierungsvektor ⃗σ =<br />

( )<br />

J22 − J 11<br />

. Seine Länge kann als Be-<br />

2 · J 12<br />

stimmtheitsmaß aufgefasst wer<strong>de</strong>n.<br />

Aus <strong>de</strong>r Analyse <strong>de</strong>r Eigenwerte λ i <strong>de</strong>s Strukturtensors lassen sich ebenfalls Aussagen über die Nachbarschaft<br />

gewinnen:<br />

Rang(J) Be<strong>de</strong>utung<br />

λ 1 = λ 2 = 0 0 konstante Umgebung<br />

λ 1 > 0, λ 2 = 0 1 einfache Nachbarschaft<br />

λ 1 > 0, λ 2 > 0 2 Grauwerte än<strong>de</strong>rn sich in alle Richtungen.<br />

Bei λ 1 = λ 2 liegt eine isotrope<br />

Struktur vor<br />

Die Größe J 11 + J 22 = Spur J ist ein Maß für die Länge <strong>de</strong>s Gradienten. Man kann <strong>de</strong>shalb ein sog.<br />

Kohärenzmaß c c <strong>de</strong>finieren. Für c c = 0 liegen isotrop verteilte Grauwerte vor, für c c = 1 hat man eine<br />

i<strong>de</strong>ale Orientierung. Es gilt:<br />

c c =<br />

|⃗σ|<br />

| ⃗ ∇g| = √<br />

(J22 − J 11 ) 2 + 4J 2 12<br />

J 11 + J 22<br />

= λ 1 − λ 2<br />

λ 1 + λ 2<br />

Farbdarstellung:<br />

• Orientierung θ → Farbwert<br />

Auch <strong>de</strong>n Strukturtensor kann man wie<strong>de</strong>r als Farbbild darstellen:<br />

• Länge <strong>de</strong>s Gradienten ⃗ ∇g → Helligkeit<br />

• Kohärenzmaß c c → Sättigung<br />

Die Länge <strong>de</strong>s Gradienten gibt die Stärke <strong>de</strong>r Grauwertän<strong>de</strong>rung in <strong>de</strong>r Nachbarschaft an. Das Kohärenzmaß<br />

gibt an, ob es sich um eine isotrope o<strong>de</strong>r eine geordnete Nachbarschaft han<strong>de</strong>lt.<br />

Implementierung: Die Komponenten J pq <strong>de</strong>s Strukturtensors lassen sich leicht berechnen. Das Integral<br />

beschreibt nur die Faltung mit einer Fensterfunktion w(⃗x). Han<strong>de</strong>lt es sich hierbei um ein gauß’sches<br />

Fenster, so kann man dieses Integral durch einen Binomialfilter B entsprechen<strong>de</strong>r Breite implementieren.<br />

Zur Berechnung <strong>de</strong>r zwei Ableitungen in p- und q-Richtung verwen<strong>de</strong>t man Ableitungsfilter D p , D q . Die<br />

Operation · beschreibt eine pixelweise Multiplikation, sodass man erhält:<br />

J pq = B ( )<br />

D p · D q<br />

Bei <strong>de</strong>r Berechnung <strong>de</strong>r Eigenwerte kann man auf gut bekannte Metho<strong>de</strong>n <strong>de</strong>r numerischen Mathematik<br />

zurückgreifen. Solange nur 2D-Bil<strong>de</strong>r vorliegen kann man die Gleichungen sogar per Hand lösen und die<br />

entsprechen<strong>de</strong>n Formeln im Programm verwen<strong>de</strong>n. Die Glättung benötigt in obiger Formel die meisten<br />

Operationen, sodass es sinnvoll erscheint J pq nicht auf <strong>de</strong>m vollen Gitter <strong>de</strong>s Bil<strong>de</strong>s g zu berechnen,<br />

son<strong>de</strong>rn vorher auf ein kleineres Gitter zu reduzieren. Dabei geht keine Information verloren, weil ja<br />

noch eine Glättung stattfin<strong>de</strong>t. Außer<strong>de</strong>m sieht man hier das allgemeine Prinzip, dass bei <strong>de</strong>r Berechnung<br />

höherer Informationen aus einem Bild immer Auflösung verlorengeht. Für die Ableitungsoperatoren<br />

sollte man optimierte Operatoren verwen<strong>de</strong>n, um <strong>de</strong>n Winkelfehler so klein wie möglich zu halten.<br />

Wichtig ist noch, bei <strong>de</strong>r Klassifizierung <strong>de</strong>r Eigenwerte nicht auf Gleichheit zu 0 zu prüfen, son<strong>de</strong>rn ob<br />

die Zahl unterhalb einer kleinen Schwelle s 0 ≪ 1 liegt, da numerische Verfahren wegen <strong>de</strong>r Rundungsfehler<br />

fast nie exakt 0 ergeben.<br />

Das folgen<strong>de</strong> Listing zeigt eine Implementierung <strong>de</strong>s Strukturtensors in Matlab.<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 76 –


11 Einfache Nachbarschaften<br />

1 # Bild in A la<strong>de</strong>n<br />

2 A = double(imread(’textur2.png’));<br />

3<br />

Listing 11.1: Berechnung <strong>de</strong>s Strukturtensors in Matlab<br />

4 # Filtermasken <strong>de</strong>finieren, Sobel-Filter in x- und y-Richtung,<br />

5 # sowie Binomial-Maske<br />

6 sobelx=[1 0 -1,<br />

7 2 0 -2,<br />

8 1 0 -1]<br />

9 sobely=[ 1 2 1,<br />

10 0 0 0,<br />

11 -1 -2 -1]<br />

12 binomial = 1/16*[ 1 2 1,<br />

13 2 4 2,<br />

14 1 2 1]<br />

15<br />

16 # Ableitungen berechnen<br />

17 dx=conv2(A,sobelx);<br />

18 dy=conv2(A,sobely);<br />

19<br />

20 # Strukturtensor-Komponenten berechnen<br />

21 ;<br />

22 J11=conv2(dx.*dx,binomial);<br />

23 J12=conv2(dx.*dy,binomial);<br />

24 J22=conv2(dy.*dy,binomial);<br />

25<br />

26 # Winkel theta und Kohärenzmaß cc berechnen<br />

27 theta=atan2(2*J12,(J22-J11))+pi;<br />

28 cc=sqrt((J22-J11).*(J22-J11)+4*J12.*J12)./(J11+J22);<br />

In <strong>de</strong>r folgen<strong>de</strong>n Abb. 11.1 sind dann die Ergebnisse dieses Programms gezeigt. Man sieht <strong>de</strong>utlich, wie<br />

die Farbe <strong>de</strong>n Winkel θ codiert. Die unterschiedlich ausgerichteten Bereiche <strong>de</strong>s Bil<strong>de</strong>s wer<strong>de</strong>n gut getrennt.<br />

Im verrauschten Testbild-Teil ist auch <strong>de</strong>r Strukturtensor verrauscht und das Kohärenzmaß ist eher<br />

klein (dunkel). Dies be<strong>de</strong>utet, dass hier keine gute Ausrichtung vorliegt. Die schwarze Umgebung <strong>de</strong>r<br />

Testfel<strong>de</strong>r erhält einen einheitlichen Winkel. Das Kohärenzmaß in dieser homogenen Nachbarschaft ist<br />

0. Das Kohärenzmaß ist in <strong>de</strong>n einzelnen Fel<strong>de</strong>r überall fast 1, was eine perfekte Orientierung anzeigt. An<br />

<strong>de</strong>n grenzen zwischen zwei verschie<strong>de</strong>nen Orientierungen wird das Kohärenzmaß kleiner (siehe zweites<br />

Feld mit Unterfeld). Der Kreis zeigt, in welche Farben die Orientierung codiert wird und dass Winkel,<br />

die sich um 180 ◦ unterschei<strong>de</strong>n auf <strong>de</strong>n selben Wert abgebil<strong>de</strong>t wer<strong>de</strong>n.<br />

Beispielbild: farbcodierter Winkel θ:<br />

Kohärenzmaß c : c<br />

Abb. 11.1: Berechnung <strong>de</strong>s Strukturtensors eines Beispielbil<strong>de</strong>s<br />

11.3.2 An<strong>de</strong>re Tensordarstellungen<br />

Neben <strong>de</strong>m Strukturtensor kann man auch an<strong>de</strong>re Tensordarstellungen für lokale Nachbarschaften fin<strong>de</strong>n.<br />

Wie im vorherigen Abschnitt gewinnt man diese durch eine Optimierungsaufgabe, allerdings mit<br />

einer an<strong>de</strong>ren Optimierungsfunktion. Man geht wie<strong>de</strong>r davon aus, dass die Fourier-Transformierte <strong>de</strong>r<br />

Nachbarschaft eine Linie im Fourier-Raum bil<strong>de</strong>t. Man berechnet dann die Regressionsgera<strong>de</strong> durch die<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 77 –


11 Einfache Nachbarschaften<br />

Punkte <strong>de</strong>s Fourier-Raums, wobei ein Punkt ⃗ k umso stärker gewichtet wird, je größer sein Betrag |ĝ( ⃗ k)| 2<br />

ist. Dies ist sinnvoll, da ja nur Punkte auf <strong>de</strong>r Gera<strong>de</strong> von 0 verschie<strong>de</strong>n sein sollten. Also tragen auc<br />

nur Punkte nahe <strong>de</strong>r tatsächlichen gera<strong>de</strong> zur Regression bei. Dieses Vorgehen entspricht <strong>de</strong>mjenigen,<br />

dass man zunächst alle Punkte fin<strong>de</strong>t, die auf <strong>de</strong>r Gera<strong>de</strong>n im Fourier-Raum liegen und diese zur Berechnung<br />

<strong>de</strong>r Regressionsgera<strong>de</strong>n heranzieht. Aus <strong>de</strong>n Parametern <strong>de</strong>r Regressionsgera<strong>de</strong> kann man dann ⃗n<br />

bestimmen. Die folgen<strong>de</strong> Abb. 11.2 veranschaulicht das.<br />

d(k)<br />

k n<br />

k y<br />

k<br />

n<br />

k x<br />

Absolutbetrag <strong>de</strong>r<br />

Fourier-Transformierten |g(k)|²<br />

schwarz = geringes Gewicht ^<br />

weiß = hohes Gewicht<br />

d(k): senkrechter Abstand eines<br />

beliebigen Punktes auf die<br />

Regressionsgera<strong>de</strong><br />

Regressionsgera<strong>de</strong><br />

Abb. 11.2: Regressionsgera<strong>de</strong> an die Fourier-Transformierte einer einfachen Nachbarschaft<br />

Der Abstand | ⃗ d( ⃗ k)| 2 eines beliebigen Punktes ⃗ k im Fourier-Raum zur Regressionsgera<strong>de</strong> wird aus folgen<strong>de</strong>r<br />

Gleichung berechnet (Satz <strong>de</strong>s Pythagoras!):<br />

d 2 ( ⃗ k) + ( ⃗ k · ⃗n) 2 = | ⃗ k| 2<br />

Der Vektor ⃗n zeigt entlang <strong>de</strong>r Regressionsgera<strong>de</strong>. Der Ausdruck ⃗ k · ⃗n stellt <strong>de</strong>n Anteil von ⃗ k dar, <strong>de</strong>r<br />

parallel zu ⃗n liegt. Es wird dann die gewichtete Summe über alle diese Abstän<strong>de</strong> im Fourier-Raum<br />

minimiert:<br />

∫ ∞<br />

−∞<br />

|ĝ( ⃗ k)| 2 · d 2 ( ⃗ k, ⃗n) d W k → min<br />

Bei <strong>de</strong>r Minimierung dieses Integrals tritt <strong>de</strong>r Trägheitstensor I auf. Aus seiner Eigenwertanalyse kann<br />

man wie<strong>de</strong>r auf die Art <strong>de</strong>r Nachbarschaft schließen. Für <strong>de</strong>n Trägheitstensor I gilt:<br />

|d| 2 = | ⃗ k| 2 − | ⃗ k · ⃗n| 2 = ⃗n t[ 1( ⃗ k · ⃗k) − ⃗ k ⃗ k t] ⃗n = ⃗n t I⃗n → min<br />

Die Minimierung dieses Ausdruckes ist wie<strong>de</strong>r <strong>de</strong>m obigen Integral äquivalent, weil die Integration vollständig<br />

in <strong>de</strong>n Tensor I hineingezogen wer<strong>de</strong>n kann. Man erhält:<br />

I pp = ∑ q≠p<br />

∫ ∞<br />

−∞<br />

k 2 q|ĝ( ⃗ k)| 2 d W k<br />

∫ ∞<br />

I pq = − k p k q |ĝ( ⃗ k)| 2 d W k,<br />

−∞<br />

für p ≠ q<br />

11.4 Lokale Wellenzahl und Phase<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 78 –


11 Einfache Nachbarschaften<br />

11.4.1 Hilbertfilter und Hilberttransformation<br />

Zur Einführung betrachte man ein einfaches Cosinus-Signal:<br />

g(x) = g 0 · cos( k · x )<br />

}{{}<br />

=φ(x)<br />

Dabei bezeichnet g 0 die Amplitu<strong>de</strong>, k die Wellenzahl und φ(x) die lokale Phase <strong>de</strong>s Bil<strong>de</strong>s. Die Wellenzahl<br />

k lässt sich leicht aus <strong>de</strong>r Phase berechnen:<br />

k = ∂φ(x)<br />

∂x<br />

Genauso wie die Phase φ(x) vom Ort abhängt kann nun auch die Wellenzahl k vom Ort abhängen. Man<br />

spricht dann von einer lokalen Wellenzahl k(x), die komplexere Bil<strong>de</strong>r ermöglicht, weil jetzt die Phase<br />

nicht mehr rein linear steigen muss. Die folgen<strong>de</strong> Abb. 11.3 zeigt ein Beispiel.<br />

lineare Phase:<br />

(konstante Wellenzahl k=1)<br />

quadratische Phase:<br />

(lineare Wellenzahl k=x)<br />

Phase<br />

30<br />

25<br />

20<br />

15<br />

10<br />

5<br />

0<br />

0 5 10 15 20 25 30<br />

90<br />

80<br />

70<br />

60<br />

50<br />

40<br />

30<br />

20<br />

10<br />

0<br />

0 5 10 15 20 25 30<br />

Signal<br />

1<br />

0.8<br />

0.6<br />

0.4<br />

0.2<br />

0<br />

-0.2<br />

-0.4<br />

-0.6<br />

-0.8<br />

-1<br />

0 5 10 15 20 25 30<br />

1<br />

0.8<br />

0.6<br />

0.4<br />

0.2<br />

0<br />

-0.2<br />

-0.4<br />

-0.6<br />

-0.8<br />

-1<br />

0 5 10 15 20 25 30<br />

Abb. 11.3: Beispiel für lokalen Wellenzahlen und Phasen<br />

Es stellt sich nun die Frage, wie man die lokale Phase (und damit auch die lokale Wellenzahl) eines Bil<strong>de</strong>s<br />

berechnen kann, wenn man nur das Bild g gegeben hat. Dazu geht man nochmals von g(x) = g 0·cos φ(x)<br />

aus. Wenn man dieses Signal mit einem Filter H um 90 ◦ o<strong>de</strong>r π/2 phasenverschiebt , so erhält man:<br />

g ′ (x) = Hg(x) = −g 0 · sin φ(x)<br />

Diese Operation entspricht (nur für Sinus- und Cosinus-Funktionen) <strong>de</strong>r Berechnung <strong>de</strong>r 1. Ableitung.<br />

Nun ist <strong>de</strong>r Tangens ganz allgemein <strong>de</strong>finiert als<br />

tan x = sin x<br />

cos x<br />

Damit kann man aber mit obigen speziellen Bil<strong>de</strong>rn g und g ′ auch schreiben:<br />

tan(kx) = sin(kx)<br />

cos(kx) = −g′ (x)<br />

g(x)<br />

Dieser Zusammenhang lässt sich für beliebige Bil<strong>de</strong>r g(x) verallgemeinern:<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 79 –


11 Einfache Nachbarschaften<br />

Satz 11.2 (Lokale Phase und Wellenzahl) Sei g ein beliebiges Bild und H ein Operator, <strong>de</strong>r das Bild<br />

um 90 ◦ phasenverschiebt. Er muss also alle Fourier-Komponenten <strong>de</strong>s Bil<strong>de</strong>s um 90 ◦ verschieben. Man<br />

kann dann die lokale Phase φ(x) <strong>de</strong>s Bil<strong>de</strong>s berechnen durch:<br />

( ) −Hg(x)<br />

φ(x) = arctan<br />

g(x)<br />

Aus <strong>de</strong>r lokalen Phase φ(x) kann man die lokale Wellenzahl durch Differenzieren (Gradientenoperator<br />

D x ) berechnen:<br />

k(x) = ∂φ(x)<br />

∂x<br />

= D xφ(x)<br />

Hilbert-Filter: Ein Filter H, das eine 90 ◦ Phasenverschiebung berechnet heißt Hilbert-Filter. Seine<br />

i<strong>de</strong>ale Transferfunktion ist gegeben als:<br />

⎧<br />

⎪⎨ i k > 0<br />

ĥ(k) = 0 k = 0<br />

⎪⎩<br />

−i k < 0<br />

i<br />

-i<br />

^<br />

h(k)<br />

k<br />

Die Punktantwort h(x) dieser Stufenfunktion ist wohl bekannt:<br />

h(x) = − 1<br />

πx<br />

Man kann dann die Anwendung (Faltung) <strong>de</strong>s i<strong>de</strong>alen Hilbert-Filters so schreiben:<br />

Hg(x) = h ⊛ g =<br />

∫ ∞<br />

−∞<br />

h(x − x ′ ) · g(x ′ ) dx ′ = − 1 π<br />

∫ ∞<br />

−∞<br />

1<br />

x − x ′ · g(x′ ) dx ′<br />

Die durch dieses Integral <strong>de</strong>finierte Integral-Transformation wird auch als Hilbert-Transformation bezeichnet.<br />

Da die Punktantwort <strong>de</strong>s i<strong>de</strong>ale Hilbertfilter damit unendlich ausge<strong>de</strong>hnt ist, kann man keine kleine,<br />

diskrete Faltungsmaske angeben, die ein exaktes Hilbert-Filter darstellt. Deswegen schränkt man die<br />

Klasse <strong>de</strong>r Signale ein, die man mit einem Hilbert-Filter bearbeiten kann. Wenn man nur band-begrenzte<br />

Signale (wie z.B. in einer Laplace-Pyrami<strong>de</strong>) vorliegen hat, so kann man mit einem Least-Square-Fit ein<br />

Hilbert-Filter optimieren, das in <strong>de</strong>m Frequenzband [k−∆k..k+∆k] <strong>de</strong>s gegebenen Bil<strong>de</strong>s nahezu i<strong>de</strong>al<br />

arbeitet. Dies vermei<strong>de</strong>t auch die Diskontinuität bei k = 0. Bei <strong>de</strong>r Optimierung ist darauf zu achten, das<br />

die Phasenverschiebung nicht von <strong>de</strong>r Wellenzahl abhängen darf.<br />

Hilbert-Transformation in höherdimensionalen Signalen: Die Hilbert-Transformation funktioniert<br />

in <strong>de</strong>r angegebenen Form nur auf 1D-Signalen. Für höherdimensionale Signale ist sie nicht <strong>de</strong>finiert.<br />

11.4.2 Analytisches Signal<br />

Definition 11.3 (Analytisches Signal) Fasst man ein Bild g mit seiner Hilbert-Transformation g h =<br />

Hg auf folgen<strong>de</strong> Weise zusammen, so nennt man das so <strong>de</strong>finierte neue Signal g a als analytisches Signal:<br />

Der Operator A berechnet g a aus einem Signal g.<br />

g a = Ag = g − i · g h = g − iHg<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 80 –


11 Einfache Nachbarschaften<br />

Das analytische Signal g a ist eine an<strong>de</strong>re Darstellung <strong>de</strong>s reellen Signals g ∈ R. Sie enthält keine zusätzlichen<br />

Informationen. Mit dieser Darstellung ist es aber sehr viel einfach die lokale Phase und Amplitu<strong>de</strong><br />

<strong>de</strong>s Signals g zu berechnen:<br />

• lokale Phase: φ(x) = arg(g a )<br />

• lokale Amplitu<strong>de</strong>: g 0 (x) = |g a |<br />

Dabei ist das Argument arg(·) einer komplexen Zahl so <strong>de</strong>finiert:<br />

z = r · e iϕ ⇒ ϕ = arg(z)<br />

Außer<strong>de</strong>m kann man das Signal selbst und seine Hilbert-Transformation aus g a berechnen:<br />

g = g a + g ∗ a<br />

2<br />

g h = Hg = g a − g ∗ a<br />

2<br />

Erzeugung mit Filter A:<br />

Punktantwort<br />

Das analytische Signal g a wird erzeugt, in<strong>de</strong>m man ein Filter A mit <strong>de</strong>r<br />

a(x)1 + ih(x) = 1 +<br />

verwen<strong>de</strong>t. Dabei ist h(x) die Transferfunktion <strong>de</strong>s Hilbertfilters H (siehe Abschnitt 11.4.1). Dieses<br />

Filter hat folgen<strong>de</strong> Transferfunktion:<br />

⎧<br />

⎪⎨ 2 k > 0<br />

â(k) = 1 k = 0<br />

⎪⎩<br />

0 k < 0<br />

i<br />

πx<br />

11.4.3 Quadraturfilter<br />

Neben <strong>de</strong>n Hilbert-Filtern gibt es noch an<strong>de</strong>re Möglichkeiten 90 ◦ Phasenverschobene Signale zu erzeugen.<br />

Man nutzt dazu ein Filter Q mit <strong>de</strong>r folgen<strong>de</strong>n Transferfunktion:<br />

{<br />

ˆq( ⃗ 2 · h(<br />

k) =<br />

⃗ k) ⃗ k · ⃗n > 0<br />

0 sonst<br />

Dabei gibt ⃗n die Richtung an, in <strong>de</strong>r das Filter angewen<strong>de</strong>t wird und h( ⃗ k) ist eine beliebige reelle Funktion,<br />

die eine Wellenzahlwichtung darstellt und anwendungsspezifisch bestimmt wird. Das Filter A zur<br />

Erzeugung <strong>de</strong>s analytischen Signals kann als Spezialfall dieser Quadraturfilter angesehen wer<strong>de</strong>n. Man<br />

kann mit <strong>de</strong>m Filter Q zwei neue Filter konstruieren:<br />

Q + : ˆq + ( ⃗ k) = ˆq(⃗ k) + ˆq(− ⃗ k)<br />

2<br />

Q − : ˆq − ( ⃗ k) = ˆq(⃗ k) − ˆq(− ⃗ k)<br />

2<br />

Das beson<strong>de</strong>re an diesen Filtern ist, dass die Signale Q + g und Q − g um 90 ◦ zueinan<strong>de</strong>r Phasenverschoben<br />

sind. Zusätzlich sind bei<strong>de</strong> noch um einen Phasenwinkel α verschoben, <strong>de</strong>r aber bei bei<strong>de</strong>n Signalen<br />

gleich ist. Damit kann man diese Signale verwen<strong>de</strong>n, um die lokale Phase <strong>de</strong>s Signals g zu berechnen:<br />

( ) −p(⃗x)<br />

φ(⃗x) = arctan<br />

q(⃗x)<br />

Dabei sind p und q die Signale, die durch Anwendung von Q ± auf g entstehen. Der Vorteil dieser Filter<br />

ist, dass sie auch für mehrdimensionale Signale <strong>de</strong>finiert sind (im Gegensatz zur Hilber-Trafo).<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 81 –


11 Einfache Nachbarschaften<br />

Lokale Wellenzahl: Wie bereits erwähnt bil<strong>de</strong>t erhält man die lokale Wellenzahl als erste Ableitung<br />

<strong>de</strong>r lokalen Phase φ(x). Man kann auch einen exlpiziten Ausdruck angeben, mit <strong>de</strong>m man die lokale<br />

Wellenzahl direkt aus p und q berechnen kann:<br />

( )<br />

⃗ k = ∇φ ⃗ = ∇ ⃗ −p(⃗x)<br />

arctan = q ∇p ⃗ − p∇q<br />

⃗<br />

q(⃗x) p 2 + q 2<br />

Gaborfilter:<br />

Das Gaborfilter ist eines <strong>de</strong>r bekanntesten Quadraturfilter. Es nutzt<br />

(<br />

)<br />

h( ⃗ k) = exp<br />

− |⃗ k − ⃗ k 0 | 2 · σ 2 x<br />

2<br />

.<br />

daraus ergibt sich dann folgen<strong>de</strong> Punktantwort:<br />

g(⃗x) = e i⃗ k 0 ⃗x exp<br />

Dabei ist ⃗ k 0 (= ⃗n) die Schwerpunktwellenlänge <strong>de</strong>s Filters.<br />

( )<br />

− |⃗x|2<br />

2σx<br />

2<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 82 –


12 Textur<br />

12.1 Einleitung<br />

Definition 12.1 (Textur) Die Textur bezeichnet das Füllmuster einer Fläche in einem Bild. Eine solche<br />

texturierte Fläche ist mit einem sich (periodisch o<strong>de</strong>r quasiperiodisch) wie<strong>de</strong>rholen<strong>de</strong>n kleinen Muster<br />

gefüllt. Zur Beschreibung einer texturierten Fläche genügt also die Beschreibung <strong>de</strong>s Elementarmusters<br />

und <strong>de</strong>r Wie<strong>de</strong>rholungseigenschaften. Die textur kann evtl. noch von <strong>de</strong>r Zoomstufe abhängen.<br />

Als charakteristische Größe einer Textur bezeichnet man die Größe <strong>de</strong>s Elementarmusters.<br />

verschie<strong>de</strong>n texturierte Bereiche:<br />

Fußbo<strong>de</strong>n mit großem Elementarmuster:<br />

Elementarmuster<br />

Abhängigkeit <strong>de</strong>r Textur von <strong>de</strong>r Zoomstufe:<br />

Abb. 12.1: verschie<strong>de</strong>ne Texturen<br />

Die Abb. 12.1 zeigt Beispiele für Texturen. In <strong>de</strong>n unteren Bil<strong>de</strong>rn steht erst im rechten Bild die Fa<strong>de</strong>nstruktur<br />

<strong>de</strong>r Gardine als Textur im Vor<strong>de</strong>rgrund. Vorher spielen auch die Falten eine Rolle und die<br />

Fa<strong>de</strong>nstruktur ist nur wenig sichtbar.<br />

Die Parameter, die zur Beschreibung einer Textur dienen sollten unabhängig von Ausrichtung und Vergrößerungsstufe<br />

sein, da sonst die Klassifikation <strong>de</strong>r textur von <strong>de</strong>r Ausrichtung und vom Abstand <strong>de</strong>r<br />

Kamera abhängen. Sind Texturen hierarchisch (wie etwa die Gardine im obigen Bild), so ist <strong>de</strong>r zweite<br />

Aspekt nicht erfüllbar. Die Erfüllung <strong>de</strong>s ersten Aspektes wird nicht immer gewünscht. So möchte man<br />

z.B. unterschiedlich ausgerichtete Streifenmuster manchmal durchaus unterschei<strong>de</strong>n.<br />

In diesem Abschnitt sollen nun einige Verfahren besprochen wer<strong>de</strong>n, mit <strong>de</strong>nen Texturen beschrieben<br />

wer<strong>de</strong>n sollen. Sie verwen<strong>de</strong>n zur Beschreibung die statistischen Parameter Mittelwert und Varianz, sowie<br />

die Orientierung (siehe Abschnitt 11 über einfache Nachbarschaften) und Größe <strong>de</strong>r Muster.<br />

83


12 Textur<br />

12.2 Statistik erster Ordnung<br />

Die Statistik erster Ordnung für Texturen basiert auf <strong>de</strong>n lokalen Grauwerthistogrammen. Sie ist damit<br />

unabhängig von Orientierung und Größe, da bei <strong>de</strong>r Berechnung <strong>de</strong>s Histogramms jegliche Information<br />

über die Position <strong>de</strong>r Pixel verlorengeht. Sie ist damit rotations- und skaleninvariant. Dafür können<br />

bestimmte Muster nicht unterschie<strong>de</strong>n wer<strong>de</strong>n, wenn sie das gleiche Histogramm aufweisen. So haben<br />

etwa die Texturen in Abb. 12.2 alle das gleiche Histogramm (ausgewogene bimodale Verteilung), obwohl<br />

sie sehr unterschiedlich aussehen.<br />

Abb. 12.2: Verschie<strong>de</strong>ne Texturen mit <strong>de</strong>m selben Grauwerthistogramm<br />

Beschreibung <strong>de</strong>r Textur: Zur Beschreibung einer Textur mit Statistik erster Ordnung, betrachtet man<br />

einen Ausschnitt M <strong>de</strong>s Bil<strong>de</strong>s (maskiertes Bild). Man kann berechnen:<br />

• Mittelwert in <strong>de</strong>r Umgebung M um ⃗x = (m, n) t :<br />

g mn = 1 P<br />

∑<br />

(m ′ ,n ′ )∈M<br />

• Varianz in <strong>de</strong>r Umgebung M um ⃗x = (m, n) t :<br />

v mn = 1<br />

P − 1<br />

∑<br />

(m ′ ,n ′ )∈M<br />

g m−m ′ ,n−n ′<br />

(g m−m ′ ,n−n ′ − g mn) 2<br />

Die Berechnung lässt sich dabei als Kombination aus Faltungen und dyadischen Punktoperationen darstellen:<br />

V = R(1 · 1) − (R · R)<br />

Dabei ist R ein Rechteckfilter, <strong>de</strong>r <strong>de</strong>n Ausmaßen von M entspricht. Um diese Berechnung noch zu<br />

verbessern kann man statt <strong>de</strong>r Rechteck-Filter Binomialfilter verwen<strong>de</strong>n.<br />

Man kann evtl. auch noch Momente höherer Ordnung berücksichtigen, um eine genauere Beschreibung<br />

<strong>de</strong>s Grauwerthistogramms zu erhalten:<br />

m (i)<br />

mn = 1<br />

P − 1<br />

∑<br />

(m ′ ,n ′ )∈M<br />

(g m−m ′ ,n−n ′ − g mn) i<br />

Benutzt man nämlich nur Mittelwert und Histogramm können z.B. die Histogramme in Abb. 12.3 nicht<br />

unterschie<strong>de</strong>n wer<strong>de</strong>n.<br />

Abb. 12.3: Mit Mittelwert und Varianz ununterscheidbare Histogramme<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 84 –


12 Textur<br />

12.3 Orientierung und Textur<br />

Oft ist es auch wünschenswert die lokale Orientierung einer Textur zu kennen. Wie man diese berechnet<br />

wur<strong>de</strong> ausführlich in Abschnitt 11 über einfache Nachbarschaften beschrieben. Als Parameter für die<br />

Textur kann man dann etwa heranziehen:<br />

• Kohärenzmaß <strong>de</strong>r Orientierung: je größer, <strong>de</strong>sto „orientierter“ ist die Textur<br />

• lokale Wellenzahl<br />

12.4 Pyramidale Texturanalyse<br />

Alternativ zur lokalen Wellenzahl kann man mit pyramidalen Strukturen auch die Vergrößerungsabhängigkeit<br />

von Texturen untersuchen. So enthält z.B. die Laplace-Pyrami<strong>de</strong> eine Serie von Bandpassgefilterten<br />

Bil<strong>de</strong>rn. Man kann also auf <strong>de</strong>n unterschiedlichen Pyrami<strong>de</strong>nstufen unterschiedliche Textur<strong>de</strong>tails<br />

betrachten. Die folgen<strong>de</strong> Abb. 12.4 zeigt verschie<strong>de</strong>n Bandpass-gefilterte Bil<strong>de</strong>r einer Gardine.<br />

Man kann leicht sehen, wie unterschiedliche Strukturen in unterschiedlichen Frequenzbän<strong>de</strong>rn zum Vorschein<br />

kommen.<br />

Abb. 12.4: verschie<strong>de</strong>n Bandpass-gefilterte Bil<strong>de</strong>r einer Gardine (Original ganz links)<br />

Mit Laplacepyrami<strong>de</strong>n L (p) gibt es eine einfache Metho<strong>de</strong> um die Varianz V zu berechnen:<br />

V = B(L (p) · L (p) )<br />

Dies entspricht <strong>de</strong>m üblichen Ausdruck für die Varianz, allerdings ohne <strong>de</strong>n Mittelwert. Da die Laplace-<br />

Pyrami<strong>de</strong> nur bandbegrenzte Bil<strong>de</strong>r enthält ist <strong>de</strong>ren Mittelwert (entspricht <strong>de</strong>r überall ausgefilterten<br />

Fourierkomponente zu ⃗ k = 0) immer 0.<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 85 –


13 Bewegungserkennung<br />

13.1 Grundlagen<br />

In <strong>de</strong>r Bewegungs<strong>de</strong>tektion geht es darum, festzustellen welche Teile zweier, o<strong>de</strong>r mehrerer Bil<strong>de</strong>r einer<br />

Bildsequenz sich geän<strong>de</strong>rt haben. Dabei möchte man erfahren, ob sich gewisse Objekte auf <strong>de</strong>n Bil<strong>de</strong>rn<br />

bewegt haben und gegebenenfalls auch die Richtung und Geschwindigkeit dieser Bewegung feststellen.<br />

Man hat zuerst das grundlegen<strong>de</strong> (auf einfache Art unlösbare) Problem, dass Bil<strong>de</strong>r meist eine Projektion<br />

einer dreidimensionalen Szene auf eine zweidimensionale Ebene (Kamera) sind. Man kann damit<br />

nie die reale Geschwindigkeit ⃗v = (v x , v y , v z ) T im R 3 ermitteln, son<strong>de</strong>rn nur die Geschwindigkeit<br />

⃗f = (f x , f y ) T auf <strong>de</strong>m Bild. Diese Geschwindigkeit f ⃗ auf <strong>de</strong>m Bild wird im folgen<strong>de</strong>n (wie in <strong>de</strong>r<br />

Literatur üblich) als optischer Fluss bezeichnet. Sie ist die Projektion von ⃗v auf die Kameraebene. Dies<br />

ver<strong>de</strong>utlicht Abb. 13.1.<br />

v'<br />

v<br />

f<br />

3D-Szene<br />

Kameraebene<br />

Abb. 13.1: Projektion einer 3D-Bewegung (Geschwindigkeit ⃗v) auf die Kamera-Ebene (optischer Fluss ⃗ f).<br />

Es zeigt sich, dass verschie<strong>de</strong>ne Bewegungen ⃗v und ⃗v ′ auf <strong>de</strong>n selben optischen Fluss ⃗ f führen.<br />

Ein weiteres grundlegen<strong>de</strong>s Problem, dass hier betrachtet wer<strong>de</strong>n soll ist das sog. Blen<strong>de</strong>nproblem.<br />

Dabei betrachtet man eine Ecke, die sich bewegt (siehe linkes Bild in Abb. 13.2). Solange man die ganze<br />

Ecke sieht ist <strong>de</strong>r optische Fluss ⃗ f klar <strong>de</strong>finiert. Betrachtet man aber nur einen Ausschnitt, wie ihn<br />

<strong>de</strong>r rechte Teil von Abb. 13.2 zeigt, so kann nur noch eine Normalkomponente ⃗ f ⊥ zu <strong>de</strong>r sichtbaren<br />

Kante berechnet wer<strong>de</strong>n. Anschaulich be<strong>de</strong>utet dies, dass man nicht feststellen kann, ob eine Bewegung<br />

entlang <strong>de</strong>r Kante (tangential) stattfin<strong>de</strong>t. Dies gilt natürlich nur solange die Kante keine Markierungen<br />

aufweist!<br />

f<br />

f<br />

f<br />

Abb. 13.2: Illustration zum Blen<strong>de</strong>nproblem, nach [Jähne 2005]<br />

Im folgen<strong>de</strong>n wird eine Bildsequenz von Graustufenbil<strong>de</strong>rn g(x, y, t) ≡ g t (x, y) betrachtet.<br />

86


13 Bewegungserkennung<br />

Der optische Fluss gibt die Verschiebung ∆x eines Objektes in einer bestimten zeit ∆t an, also<br />

⃗f = ∆⃗x<br />

∆t .<br />

Damit hat <strong>de</strong>r optische Fluss die Einheit [ f] ⃗ = Pixel<br />

s<br />

, wenn man von einem Pixel-Bild ausgeht.<br />

13.2 Einfache Bewegungs<strong>de</strong>tektion<br />

Differenzenbildung: Eine erste I<strong>de</strong>e zur Bewegungs<strong>de</strong>tektion ist es einfach die Differenz zweier Bil<strong>de</strong>r<br />

zu betrachten. Hat sich nichts verän<strong>de</strong>rt, so sollte die Differenz überall 0, an<strong>de</strong>rnfalls erhält man<br />

nicht-verschwin<strong>de</strong>n<strong>de</strong> Differenzen. In Abb. 13.3 sind einige Beispiele dargestellt.<br />

- -<br />

Beleuchtungsän<strong>de</strong>rung<br />

Bewegung in <strong>de</strong>r Szene<br />

Abb. 13.3: Bewegungs<strong>de</strong>tektion durch Differenzbildung. Die Differenzbil<strong>de</strong>r sind kontrastverstärkt. Das linke<br />

Differenzbild zeigt <strong>de</strong>n Effekt einer Beleuchtungsän<strong>de</strong>rung. Im rechten Bild wur<strong>de</strong> <strong>de</strong>r Wecker verschoben.<br />

Fin<strong>de</strong>t tatsächlich nur Bewegung statt, so kann man dies im Differenzbild g ∆ (⃗x) = g t=0 (⃗x) − g t=1 (⃗x)<br />

sehen. Es zeigt sich also, dass Bewegung in zeitlichen Grauwert-Differenzen resultiert. Mit <strong>de</strong>r hier<br />

beschriebenen Technik kann man aber auch nur feststellen, ob es eine Bewegung gegeben hat. Die Ermittlung<br />

<strong>de</strong>s optischen Flusses ⃗ f ist nicht so einfach möglich.<br />

Object-Tracking: Eine weitere „einfache“ Metho<strong>de</strong> ist Object-Tracking. Die folgen<strong>de</strong> Abb. 13.4 zeigt<br />

die I<strong>de</strong>e <strong>de</strong>s Verfahrens und die Probleme.<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 87 –


13 Bewegungserkennung<br />

Bil<strong>de</strong>r aus Bildsequenz:<br />

Überlagerung <strong>de</strong>r Bil<strong>de</strong>r:<br />

?<br />

zeitlicher Verlauf<br />

Abb. 13.4: Object-Tracking: Es wer<strong>de</strong>n zwei Bil<strong>de</strong>r einer Sequenz verglichen. Rechts sind die Bil<strong>de</strong>r überlagert<br />

und die Bewegungsvektoren sind eingezeichnet (optischer Fluss ⃗ f). Man erkennt, dass die Metho<strong>de</strong><br />

nicht ein<strong>de</strong>utig ist (rechts unten!)<br />

Beim Object-Tracking muss man zunächst Objekte in <strong>de</strong>n Bil<strong>de</strong>rn einer Zeitserie erkennen (schwarze<br />

bzw. graue Kreise in Abb. 13.4). Kann man dann die Objekte i ersten Bild im zweiten Bild wie<strong>de</strong>rfin<strong>de</strong>n,<br />

so kann man die Positionsdifferenz berechnen. Diese Differenz ∆⃗x ist ein direktes Maß für <strong>de</strong>n optischen<br />

Fluss: f ⃗ = ∆⃗x<br />

∆t<br />

. Dies ist recht einfach möglich, wenn man wenige Objekte hat, die sich nur wenig bewegen.<br />

Bei großen Bewegungen ist die Zuordnung u.U. nicht mehr ein<strong>de</strong>utig, sodass das Verfahren fehlschlägt.<br />

Die Korrelationsmetho<strong>de</strong> aus Abschnitt 1<strong>3.6</strong> ist im Prinzip eine Object-Tracking-Metho<strong>de</strong>.<br />

13.3 Bewegung im Orts-Zeit- und Fourier-Raum<br />

13.3.1 Orts-Zeit-Raum<br />

Die folgen<strong>de</strong> Abb. 13.5 zeigt zwei Bildsequenzen mit einer Bewegung. Man kann leicht erkennen, dass<br />

eine Bewegung im Orts-Zeit-Raum ({x, t}, bzw. {x, y, t}) eine Linie darstellt. Die Neigung <strong>de</strong>r Linie<br />

gibt die Geschwindigkeit (optischer Fluss f, bzw. ⃗ f) an. Verläuft die Linie parallel zur zeit-Achse, liegt<br />

keine bewegung vor. In <strong>de</strong>r 2D-Sequenz bleibt <strong>de</strong>r Kreis in <strong>de</strong>r Mitte ein für kurze Zeit stehen, um sich<br />

dann mit geän<strong>de</strong>rter Geschwindigkeit weiterzubewegen.<br />

y 1<br />

x<br />

y<br />

Zeit t<br />

Zeit t<br />

t<br />

x<br />

y,1<br />

t 1<br />

t 2<br />

2D-Bildsequenz mit verschie<strong>de</strong>nen<br />

Geschwindigkeiten <strong>de</strong>s blauen<br />

Kreises<br />

-1<br />

1D-Bildsequenz mit konstanter<br />

Geschwindigkeit <strong>de</strong>s roten<br />

Objektes<br />

Abb. 13.5: Bewegung in Raum und Zeit für eine 1D und eine 2D Bildsequenz. Die dicke grüne Linie bezeichnet<br />

jeweils die Bewegung. Auf <strong>de</strong>n flanken <strong>de</strong>r 2D-Sequenz sind Schnitte durch das Bild aufgezeichnet.<br />

<br />

x<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 88 –


13 Bewegungserkennung<br />

Aus <strong>de</strong>m 1D-Fall kann man direkt eine Beziehung zwischen Neigung ϕ und Geschwindigkeit f herstellen:<br />

f = ∆x<br />

∆t = − tan ϕ<br />

In <strong>de</strong>r 2D-Sequenz kann man zwei Geschwindigkeiten ablesen:<br />

⃗f =<br />

(<br />

fx<br />

f y<br />

)<br />

=<br />

( ∆x<br />

) ( )<br />

∆t tan ϕx<br />

∆y = −<br />

tan ϕ<br />

∆t<br />

y<br />

Es zeigt sich also zusammenfassend, dass Bewegung im Orts-Zeit-Raum als Orientierung (über einen<br />

Winkel ϕ gegeben) auftritt. Aus dieser Grun<strong>de</strong>rkenntnis leiten sich die meisten Bewegungserkennungsmetho<strong>de</strong>n<br />

her.<br />

13.3.2 Fourier-Raum<br />

Man kann sich nun die obige Bewegung auch im Fourier-Raum betrachten. Der Orts-Zeit-Raum wird von<br />

durch die Koordinaten (⃗x, t) aufgespannt. Die zugehörigen Wellenzahlen/Frequenzen wer<strong>de</strong>n mit ( ⃗ k, ν)<br />

bezeichnet. Sie spannen also <strong>de</strong>n Fourier-Raum auf. Man betrachte nun ein Bild, das sich mit konstanter<br />

Geschwindigkeit ⃗u bewegt. Man kann dies so ausdrücken:<br />

Dies lässt sich nun Fourier-Transformieren:<br />

⎡<br />

ĝ( ⃗ k, ν) = ⃗ F [ g(⃗x, t) ] =<br />

g(⃗x, t) ≡ g(⃗x − ⃗ut).<br />

∫ ∞<br />

−∞<br />

⎣<br />

∫ ∞<br />

−∞<br />

Nun führt man eine Variablensubstitution durch:<br />

g(⃗x − ⃗ut) · e −2πi·⃗k·⃗x d 2 x⎦ e −2πi·νt dt<br />

⃗x ′ = ⃗x − ⃗ut ⇒ ⃗x = ⃗x ′ + ⃗ut<br />

⎤<br />

und erhält:<br />

ĝ( ⃗ k, ν) =<br />

=<br />

=<br />

∫ ∞<br />

−∞<br />

∫ ∞<br />

−∞<br />

∫ ∞<br />

−∞<br />

⎡<br />

⎣<br />

∫ ∞<br />

−∞<br />

∫ ∞<br />

⎡<br />

⎣<br />

= ĝ( ⃗ k) ·<br />

−∞<br />

g(⃗x ′ ) · e −2πi·⃗k·(⃗x ′ +⃗ut) d 2 x ′ ⎤<br />

g(⃗x ′ ) · e −2πi·⃗k·⃗x ′<br />

d 2 x ′ ⎤<br />

⎦<br />

} {{ }<br />

=ĝ( ⃗ k)<br />

ĝ( ⃗ k) · e −2πi·(⃗ k·⃗u+ν)t dt = ĝ( ⃗ k) ·<br />

∫ ∞<br />

−∞<br />

⎦ e −2πi·νt dt =<br />

e −2πi·⃗k·⃗ut · e −2πi·νt dt =<br />

∫ ∞<br />

−∞<br />

e −2πiωt dt = ĝ( ⃗ ]<br />

k) · F t,ω<br />

[1<br />

e −2πi·(⃗ k·⃗u+ν)t dt =<br />

Nun bleibt nur noch ein Integral über die Zeit t übrig, das im letzten Schritt als Fourier-Transformation<br />

geschrieben wur<strong>de</strong>. Es wur<strong>de</strong> die Substitution ω = ⃗ k · ⃗u + ν eingeführt. Mit dieser schreibt sich das<br />

Integral als Fourier-Transformierte vom t-Raum in <strong>de</strong>n ω-Raum. Die Fourier-Trafo von 1 ist δ(ω), sodass<br />

sich aus obiger Rechnung folgen<strong>de</strong>s Ergebnis ergibt:<br />

⇒ ĝ( ⃗ k, ν) = ĝ( ⃗ k) · δ( ⃗ k · ⃗u + ν)<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 89 –


13 Bewegungserkennung<br />

Die so erhaltene Fourier-Transformierte ĝ( ⃗ k, ν) ist nur dann ungleich 0, wenn ⃗ k · ⃗u + ν = 0 ⇔ ⃗ k · ⃗u =<br />

−ν gilt. Dies ist aber die Definitionsgleichung einer Ebene im Fourier-Raum (Parameter ⃗u, unabhängige<br />

Koordinaten: ⃗ k, ν). Dies be<strong>de</strong>utet, dass eine konstante Bewegung im Ortsraum im Fourier-Raum auf eine<br />

Ebene eingeschränkt bleibt. Diese Situation entspricht <strong>de</strong>r Orientierung bei lokalen Nachbarschaften, nur<br />

um eine Dimension erweitert. Hat man diese Ebene ermittelt, so kann man ⃗u ermitteln:<br />

u x = − ∂ν = − ∂(−k xu x − k y u y )<br />

, u y entsprechend<br />

∂k x ∂k<br />

} {{ x<br />

}<br />

=u x<br />

⇔ ∇ ⃗ ⃗k ν = −⃗u<br />

( )<br />

Dabei be<strong>de</strong>utet ∇ ⃗ ∂/∂kx<br />

⃗k = <strong>de</strong>r Vektor <strong>de</strong>r ersten Ableitungen nach <strong>de</strong>n<br />

∂/∂k ⃗ k (Differentialoperator:<br />

y<br />

Gradient ∇ ⃗ ⃗k ). Man erhält also folgen<strong>de</strong>s (zumin<strong>de</strong>st theoretisch anwendbare) Rezept:<br />

1. berechne Fourier-Transformierte <strong>de</strong>r Bildsequenz<br />

2. bestimme die Ebene, die die Bewegung beschreibt<br />

3. berechne ⃗u aus <strong>de</strong>n Ebenenparametern<br />

Ist das bewegte Objekt ausge<strong>de</strong>hnt, besteht also nicht nur einem Pixel, so erhält man nicht eine exakte<br />

Ebene, son<strong>de</strong>rn eine Art Ban<strong>de</strong> im Fourier-Raum und man muss die am besten passen<strong>de</strong> Ebene darin<br />

einpassen (z.B. mit Least-Square-Fit o<strong>de</strong>r Regressionsrechnung).<br />

13.4 Optischer Fluss und Kontinuitätsgleichung<br />

Der optische Fluss wur<strong>de</strong> als Geschwindigkeit <strong>de</strong>r bewegten Objekte in <strong>de</strong>r Kamera-Ebene eingeführt.<br />

Dies ist nur solange richtig, wie sich die Beleuchtung <strong>de</strong>r Szene nicht än<strong>de</strong>rt. Man <strong>de</strong>finiert <strong>de</strong>swegen:<br />

• optischer Fluss ⃗ f: sichtbare Bewegung im Bild, also letztendlich Grauwertän<strong>de</strong>rung.<br />

• Bewegungsfeld ⃗u: tatsächliche Bewegung <strong>de</strong>s Objektes im Bild, die evtl. nicht sichtbar ist.<br />

Betrachtet man z.B. eine Kugel mit vollkommen ebener Oberfläche, die sich vor einem Hintergrund<br />

dreht, so än<strong>de</strong>rt sich am optischen Fluss nichts, also ⃗ f = 0 für alle Zeiten t. Trotz<strong>de</strong>m bewegt sich<br />

die Kugel natürlich, sodass ⃗u ≠ 0 gilt. Dies ist eben nur nicht messbar. Bringt man auf <strong>de</strong>r Kugel eine<br />

Lampe, o<strong>de</strong>r eine an<strong>de</strong>re Markierung an, so wird ⃗ f ≠ 0 und die Bewegung ⃗u wird messbar.<br />

Kontinuitätsgleichung: Man kann nun (analog zum Fluss von Flüssigkeiten in <strong>de</strong>r Physik) eine sog.<br />

Kontinuitätsgleichung herleiten. Sie lautet:<br />

∂g<br />

∂t + f ⃗ · ( ∇g) ⃗ = ∂g<br />

∂t + f x · ∂g<br />

∂x + f y · ∂g<br />

∂y = 0 (13.4.1)<br />

( )<br />

Sie stellt einen Zusammenhang zwischen <strong>de</strong>m optischen Fluss f ⃗ fx<br />

= und <strong>de</strong>r Grauwertän<strong>de</strong>rung<br />

f y<br />

in Raum ∂g<br />

∂x , ∂g<br />

∂g<br />

∂y<br />

und Zeit<br />

∂t her. Man kann aus ihr versuchen die zwei gesuchten Größen f x, f y zu<br />

ermitteln.<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 90 –


13 Bewegungserkennung<br />

Anschauliche Erklärung <strong>de</strong>r Kontinuitätsgleichung: In <strong>de</strong>r Physik <strong>de</strong>r strömen<strong>de</strong>n Flüssigkeiten<br />

besagt die Kontinuitätsgleichung die Erhaltung <strong>de</strong>r Masse. Die Än<strong>de</strong>rung <strong>de</strong>r Flüssigkeitsmenge an einem<br />

Ort kann nur durch Zu- o<strong>de</strong>r Abfluss erfolgen. Für <strong>de</strong>n Grauwert gilt ähnliches. Eine Bewegung<br />

stellt einen Zu- o<strong>de</strong>r Abfluss von Grauwert dar. Dabei be<strong>de</strong>uten die zwei Terme:<br />

• ∂g<br />

∂t<br />

beschreibt die zeitliche Verän<strong>de</strong>rung <strong>de</strong>s Grauwertes.<br />

• ⃗ f ·( ⃗ ∇g) beschreibt die Än<strong>de</strong>rung <strong>de</strong>s Grauwertes durch einen mit ⃗ f bewegten Grauwertgradienten<br />

⃗∇g. Der Gradient tritt hier auf, weil eine Bewegung einer homogenen Fläche ( ⃗ ∇g = 0) nicht<br />

erkennbar ist. Stehen Gradient und Fluss ⃗ f senkrecht aufeinan<strong>de</strong>r, so erfolgt die Bewegung entlang<br />

einer Kante <strong>de</strong>s Grauwertes und kann somit nicht <strong>de</strong>tektiert wer<strong>de</strong>n, da sich <strong>de</strong>r Grauwert nicht<br />

än<strong>de</strong>rt. Sind bei<strong>de</strong> Größen hingegen parallel, so bewegt sich das Objekt entlang seines Gradienten<br />

(senkrecht zur Kante) und <strong>de</strong>r Term ⃗ f · ( ⃗ ∇g) ist maximal.<br />

amit be<strong>de</strong>utet die Kontinuitätsgleichung<br />

∂g<br />

∂t = − ⃗ f · ( ⃗ ∇g)<br />

nichts an<strong>de</strong>res, als dass Grauwertän<strong>de</strong>rungen über die Zeit nur von sich bewegen<strong>de</strong>n Objekten/Gradienten<br />

ausgelöst wer<strong>de</strong>n können.<br />

keine erkennbare<br />

Bewegung:<br />

f, Bewegungsrichtung<br />

∇g<br />

erkennbare<br />

Bewegung:<br />

∇g<br />

f, Bewegungsrichtung<br />

Abb. 1<strong>3.6</strong>: Veranschaulichung zur Kontinuitätsgleichung<br />

1D-Fall:<br />

Für 1D-Bildsequenzen kann man f aus <strong>de</strong>m 1D-Äquivalent zu (13.4.1) bestimmen:<br />

∂g<br />

∂t + f · ∂g<br />

∂x = 0 ⇒ f = − ∂g<br />

∂t<br />

∂g<br />

∂x<br />

(13.4.2)<br />

2D-Fall: Da man hier wie<strong>de</strong>r nur eine Gleichung (13.4.1) für zwei Unbekannte f ⃗ = (f x , f y ) vorliegen<br />

hat, ist die Bestimmung von f ⃗ ohne zusätzliche Bedingungen zu stellen nicht möglich. Man kann nur die<br />

Normalkomponente <strong>de</strong>s optischen Flusses bestimmen:<br />

f ⊥ = − ∂g/∂t<br />

∣∇g<br />

⃗ ∣<br />

(13.4.3)<br />

Diese Unbestimmtheit entspricht <strong>de</strong>m in Abschnitt 13.1 geschil<strong>de</strong>rten Blen<strong>de</strong>nproblem.<br />

13.5 Gradientenmetho<strong>de</strong><br />

Im vorherigen Abschnitt wur<strong>de</strong> gezeigt, wie man die Kontinuitätsgleichung (13.4.1) nutzen kann um<br />

theoretisch <strong>de</strong>n optischen Fluss ⃗ f zu berechnen. Da nur eine Gleichung für zwei Unbekannte vorliegt<br />

ist eine ein<strong>de</strong>utige Lösung nicht immer möglich. Man kann aber eine numerische Optimierungsaufgabe<br />

formulieren, die eine Lösung <strong>de</strong>r Kontinuitätsgleichung darstellt:<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 91 –


13 Bewegungserkennung<br />

Man kommt dann zu einem Minimierungsproblem, das <strong>de</strong>n folgen<strong>de</strong>n Ausdruck mit <strong>de</strong>r Metho<strong>de</strong> <strong>de</strong>r<br />

kleinsten Quadrate zu minimieren sucht:<br />

( )<br />

‖⃗e‖ 2 ∂g<br />

2<br />

2 := ∂t + f ⃗ · ⃗∇g<br />

(13.5.1)<br />

Die Mittelung (...) be<strong>de</strong>utet hier auch eine Faltung mit einer Fensterfunktion w(x, y, t). Da man die<br />

räumlichen und zeitlichen Gradienten numerisch abschätzen muss, muss man eine Nachbarschaft <strong>de</strong>s<br />

betrachteten Punktes ⃗x mit einbeziehen. Dies wird durch w(x, y, t) erreicht. Man erhält dann:<br />

‖⃗e‖ 2 2 =<br />

∫∞<br />

−∞<br />

( ) ∂g<br />

2<br />

w(x − x ′ , y − y ′ , t − t ′ ) ·<br />

∂t + f ⃗ · ⃗∇g dx dy dt (13.5.2)<br />

Für die Fensterfunktion wählt man bei diskreten Signalen am besten eine Binomialfunktion. Den Ausdruck<br />

(13.5.2) minimiert man in<strong>de</strong>m die ersten Ableitungen Null gesetzt wer<strong>de</strong>n. Man erhält dann:<br />

∂ ‖⃗e‖ 2 2<br />

= 2 · ∂g ( ∂g<br />

∂f x ∂x · ∂t + f ⃗ · ⃗∇g<br />

∂ ‖⃗e‖ 2 2<br />

∂f y<br />

= 2 · ∂g<br />

∂y ·<br />

( ∂g<br />

∂t + ⃗ f · ⃗∇g<br />

)<br />

)<br />

!<br />

= 0<br />

!<br />

= 0<br />

Dies lässt sich einfach als Matrixgleichung auffassen:<br />

( )<br />

M · ⃗f<br />

∂x g · ∂<br />

=<br />

x g ∂ x g · ∂ y g<br />

·<br />

∂ y g · ∂ x g ∂ y g · ∂ y g<br />

(<br />

fx<br />

) ( )<br />

∂x g · ∂<br />

= −<br />

t g<br />

= d<br />

f y ∂ y g · ∂ t g<br />

⃗ (13.5.3)<br />

Die Ausdrücke ∂ p g · ∂ q g sind Schätzungen für die Produkte <strong>de</strong>r Ableitungen. Sie wer<strong>de</strong>n folgen<strong>de</strong>rmaßen<br />

berechnet:<br />

∂ p g · ∂ q g = B(D p · D q )g (13.5.4)<br />

Dabei ist B ein Glättungsfilter, <strong>de</strong>r die Fensterfunktion w(x, y, t) implementiert (z.B. eine Binomialmaske).<br />

Die Operatoren D q ist ein Ableitungsoperator in q-Richtung (z.B. ein Sobel-Operator). Die Operation<br />

· entspricht <strong>de</strong>r Punktweisen Multiplikation zweier Bil<strong>de</strong>r.<br />

Das Gleichungssystem (13.5.3) löst man, in<strong>de</strong>m die Matrix M invertiert wird. Dazu berechnet man zuerst<br />

ihre Determinante <strong>de</strong>t M = ∂ x g · ∂ x g · ∂ y g · ∂ y g − ∂ x g · ∂ y g 2 und erhält damit:<br />

⃗f = M −1 · ⃗d = 1<br />

<strong>de</strong>t M ·<br />

( )<br />

∂x g · ∂ t g ∂ y g · ∂ y g − ∂ y g · ∂ t g ∂ x g · ∂ y g<br />

∂ y g · ∂ t g ∂ x g · ∂ x g − ∂ x g · ∂ t g ∂ x g · ∂ y g<br />

(13.5.5)<br />

Dies funktioniert natürlich nur solange, wie <strong>de</strong>t M ≠ 0 gilt. Ist dies nicht erfüllt, so liefert das Verfahren<br />

keine Schätzung für ⃗ f.<br />

13.5.1 Tensormetho<strong>de</strong><br />

Die Tensormetho<strong>de</strong> verwen<strong>de</strong>t ein etwas an<strong>de</strong>res Optimierungsverfahren, um <strong>de</strong>n optischen Fluss zu<br />

schätzen. Man nimmt an, dass <strong>de</strong>r optische Fluss in Richtung ⃗e verläuft (mit ‖⃗e‖ = 1). Nun ist dieses ⃗e<br />

dann optimal geschätzt, wenn es senkrecht auf <strong>de</strong>m raum-zeitlichen Gradienten ⃗ ∇ xyt g <strong>de</strong>s Graustufenbil<strong>de</strong>s<br />

steht. Diese letzte Bedingung lässt sich über ein euklidisches Skalarprodukt schreiben:<br />

( ) 2<br />

⃗∇xyt g T !<br />

⃗e = 0 (13.5.6)<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 92 –


13 Bewegungserkennung<br />

Hier wird dann also (analog zum vorherigen Abschnitt) <strong>de</strong>r folgen<strong>de</strong> Ausdruck minimiert:<br />

(<br />

⃗∇xyt g T ⃗e) 2<br />

=<br />

∫<br />

w(x − x ′ , y − y ′ , t − t ′ ) ·<br />

(<br />

⃗∇xyt g T ⃗e) 2<br />

dx dy dt → Minimum (13.5.7)<br />

Dabei wur<strong>de</strong> wie<strong>de</strong>r eine Fensterfunktion w(x, y, t) eingeführt, die wie vorher gewählt wird. Es zeigt<br />

sich, dass sich dieses Problem auf das Auffin<strong>de</strong>n <strong>de</strong>s Eigenvektors zum kleinsten Eigenwert <strong>de</strong>s sog.<br />

Strukturtensors J (daher <strong>de</strong>r Name <strong>de</strong>s Verfahrens) reduziert. Dieser hat die folgen<strong>de</strong> Form:<br />

⎛<br />

J = ⎝<br />

∂ x g∂ x g ∂ x g∂ y g ∂ x g∂ t g<br />

∂ x g∂ y g ∂ y g∂ y g ∂ y g∂ t g<br />

∂ x g∂ t g ∂ y g∂ t g ∂ t g∂ t g<br />

⎞<br />

⎠ (13.5.8)<br />

Dabei sind die Mittelwerte (...) genauso wie im vorherigen Abschnitt <strong>de</strong>finiert. Mit numerischen Metho<strong>de</strong>n<br />

kann man nun die drei Eigenwerte (und die zugehörigen Eigenvektoren) von J ermitteln. Sie seien<br />

danach mit λ 1 ≥ λ 2 ≥ λ 3 ≥ 0 in absteigen<strong>de</strong>r Reihenfolge gegeben. Die Eigenvektoren sind dann<br />

⃗e 1 , ..., ⃗e 3 . Man kann aus <strong>de</strong>n drei Eigenwerten nun einige verschie<strong>de</strong>ne Bewegungstypen ableiten:<br />

• Keine Bewegung (λ 1 = λ 2 = λ 3 = 0): Diese Bedingung kann auch einfacher überprüft wer<strong>de</strong>n<br />

(ohne die Eigenwerte zu berechnen): Dazu berechnet man einfach die Spur von J, da J nach einer<br />

Hauptachsentransformation gera<strong>de</strong> Diagonalgestalt hat, mit <strong>de</strong>n Eigenwerten auf <strong>de</strong>r Diagonalen<br />

und die Spur unter einer solchen Transformation invariant ist.<br />

• Blen<strong>de</strong>nproblem (λ 1 > 0, λ 2 = λ 3 = 0): Hier tritt das Blen<strong>de</strong>nproblem auf und es kann nur die<br />

Normalkomponente <strong>de</strong>s optischen Flusses berechnet wer<strong>de</strong>n:<br />

⃗f ⊥ = −<br />

e ( )<br />

√<br />

1t e1x<br />

e 2 1x + , ∥ e2 e ⃗ ∥ ∥∥ e 2<br />

f ⊥ =<br />

1t<br />

1y 1y 1 − e 2 . (13.5.9)<br />

1t<br />

• konstante Bewegung (λ 1 , λ 2 > 0, λ 3 = 0): Hier lässt sich <strong>de</strong>r optische Fluss schätzen:<br />

⃗f = − 1 ( ) √<br />

e3x<br />

, ∥f<br />

e 3t e ⃗ e 2 3t<br />

∥ =<br />

3y 1 − e 2 . (13.5.10)<br />

3t<br />

• nichtkonstante Bewegung (λ 1 , λ 2 , λ 3 > 0): Hier kann keine sinnvolle Schätzung <strong>de</strong>s optischen<br />

Flusses gegeben wer<strong>de</strong>n.<br />

Die numerische Berechnung <strong>de</strong>r Eigenwerte und -vektoren lässt sich mit Standard-Verfahren (z.B. Givens-<br />

Househol<strong>de</strong>r + QL-Zerlegung) durchführen. Mit Hilfe <strong>de</strong>r Symmetrie <strong>de</strong>s Tensors J lässt sich aber das<br />

Eigenwertproblem auch analytisch lösen, was in [Kah<strong>de</strong>r etal. 2001] durchgeführt wird. Damit erhält<br />

man eine Beschleunigung <strong>de</strong>r Berechnung.<br />

1<strong>3.6</strong> Korrelationsmetho<strong>de</strong><br />

Die Korrelationsmetho<strong>de</strong> arbeitet nach <strong>de</strong>m Object-Tracking-Prinzip. Es wer<strong>de</strong>n nur zwei Bil<strong>de</strong>r einer<br />

Zeitserie verglichen. Sie seien hier mit g 1 ≡ g t und g 2 ≡ g t+∆t bezeichnet. Die Korrelationsmetho<strong>de</strong><br />

berechnet die Verschiebung ⃗s eines Objektes in <strong>de</strong>n Bil<strong>de</strong>rn in <strong>de</strong>r zeit ∆t. Es stellt sich also zunächst<br />

die Frage, wann man davon sprechen kann, dass zwei Objekte in <strong>de</strong>n Bil<strong>de</strong>rn g 1 und g 2 gleich sind.<br />

Es ist wünschenswert wenn man Beleuchtungsän<strong>de</strong>rungen ignorieren kann, also sollen zwei Objekte<br />

gleich sein, wenn sich ihr Grauwert bis auf einen Faktor α (Beleuchtung) gleicht. Dies entspricht zwei<br />

parallelen (aber unterschiedlich langen) Merkmalsvektoren.<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 93 –


13 Bewegungserkennung<br />

Um dieses Prinzip zu implementieren wird <strong>de</strong>r sog. Kreuzkorrelationskoeffizient r(⃗s) maximiert:<br />

∞∫<br />

g 1 (⃗x) · g 2 (⃗x − ⃗s) d 2 x<br />

−∞<br />

g<br />

r(⃗s) = √ 1 (⃗x) · g 2 (⃗x − ⃗s)<br />

=<br />

∞∫<br />

)<br />

∞∫<br />

1/2<br />

g 1 (⃗x) d 2 x · g 2 (⃗x − ⃗s) d 2 x<br />

(g 1 2(⃗x) · g2 2 (⃗x − ⃗s)<br />

−∞<br />

−∞<br />

Dieser Koeffizient r(⃗s) hängt von <strong>de</strong>r Verschiebung ⃗s ab und ist ein Maß für die Ähnlichkeit <strong>de</strong>r zwei<br />

Bil<strong>de</strong>r g 1 und g 2 . Er ist 0 wenn die Bil<strong>de</strong>r vollkommen unähnlich sind und 1 wenn sie sich exakt entsprechen.<br />

Man berechnet nun r in Abhängigkeit von <strong>de</strong>r Verschiebung. Bei <strong>de</strong>r richtigen Verschiebung<br />

sind sich die Bil<strong>de</strong>r gleich und man hat ein Maximum von r(⃗s) gefun<strong>de</strong>n. Der Nenner von r(⃗s) sorgt<br />

für die Normierung und die Unabhängigkeit von <strong>de</strong>r Beleuchtung. In <strong>de</strong>r Integration wird man im realen<br />

Algorithmus noch eine Fensterfunktion w(⃗x) berücksichtigen. Sie wird damit dann zu einer Mittelung<br />

o<strong>de</strong>r Glättung (z.B. Binomial/Gauß-Maske w(⃗x)). Man bestimmt dann die Verschiebung ∆⃗x und <strong>de</strong>n<br />

optischen Fluss f ⃗ so:<br />

∆⃗x = max r(⃗s) ⇒ f ⃗ = ∆⃗x<br />

⃗s<br />

∆t<br />

Die Maximierung kann z.B. mit <strong>de</strong>m Newton-Raphson-Verfahren berechnet wer<strong>de</strong>n.<br />

Evaluation: Das Verfahren ist (nach Konstruktion) unempfindlich gegenüber Beleuchtungswechseln,<br />

was es von <strong>de</strong>n Verfahren, die auf <strong>de</strong>r Kontinuitätsgleichung basieren abhebt. Dafür ist <strong>de</strong>r Rechenaufwand<br />

für das Auffin<strong>de</strong>n <strong>de</strong>s Maximums sehr hoch. Außer<strong>de</strong>m basiert das Verfahren auf <strong>de</strong>m Vergleich<br />

zweier Bil<strong>de</strong>r und kann nicht auf das Kontinuum erweitert wer<strong>de</strong>n. Es ist damit z.B. empfindlich auf<br />

kleine Bildschwankungen, die bei einer Betrachtung einer ganzen Zeitserie herausgefiltert wer<strong>de</strong>n könnten.<br />

13.7 Phasenmetho<strong>de</strong><br />

Die Phasenmetho<strong>de</strong> ist ebenfalls ein Verfahren, das versucht <strong>de</strong>n Einfluss schwanken<strong>de</strong>r Beleuchtung<br />

zu minimieren. Dazu wählt es aber einen an<strong>de</strong>ren Ansatz, wie die Korrelationsmetho<strong>de</strong>. Man wählt hier<br />

nicht <strong>de</strong>n Grauwert als Ausgangsdaten, son<strong>de</strong>rn die lokale Phase (siehe auch Abschnitt 11.4) <strong>de</strong>s Bil<strong>de</strong>s.<br />

Um das zu verstehen betrachtet man zunächst eine einfache ebene Welle in Raum und Zeit:<br />

g(x, t) = g 0 · cos [ 2π(kx − νt ] = g 0 · cos [ 2π(kx − ukt ]<br />

Dabei ist ν die Frequenz <strong>de</strong>r Welle und u = ν/k ihre Fortbewegunsgeschwindigkeit. k ist <strong>de</strong>r Wellenvektor<br />

<strong>de</strong>r Schwingung. Die Phase ist das Argument <strong>de</strong>s Cosinus, also:<br />

φ(x, t) = 2π(kx − ukt)<br />

Die Geschwindigkeit u <strong>de</strong>r Welle erhält man durch Differenzieren <strong>de</strong>r lokalen Phase:<br />

∂φ<br />

∂x = 2πk<br />

∂φ<br />

∂t = −2πν ⇒ u = ν k = − ∂φ/∂t<br />

∂φ/∂x<br />

Man kann also über die Bestimmung <strong>de</strong>r Phase φ die Bewegungsgeschwindigkeit u von Objekten im Bild<br />

bestimmen. Die Phase wird (wie in 11.4 beschrieben) über Hilbert- o<strong>de</strong>r Quadraturfilter berechnet.<br />

Evaluation: Da die Phase von <strong>de</strong>r Beleuchtung unabhängig ist (diese än<strong>de</strong>rt nur die Amplitu<strong>de</strong> g 0 )<br />

ist das verfahren nahezu unabhängig von <strong>de</strong>r Beleuchtung. Dafür ist diese Metho<strong>de</strong> eigentlich nur für<br />

1D-Sequenzen geeignet. Man kann dies umgehen, in<strong>de</strong>m man vorher eine Richtungszerlegung <strong>de</strong>s Bil<strong>de</strong>s<br />

vornimmt. Außer<strong>de</strong>m hat man die üblichen Probleme <strong>de</strong>r Quadraturfilter. Vor <strong>de</strong>r Bestimmung <strong>de</strong>r<br />

Bewegung muss man das Bild mit einem Bandpass filtern. Es zeigt sich, dass die Richtungszerlegung<br />

auf Laplace-Pyrami<strong>de</strong>n eine gute Ausgangssituation für diese Metho<strong>de</strong> ist.<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 94 –


14 Inverse Filterung<br />

Viele physikalische Bildaufnahmesysteme sind „beugungsbegrenzt“. Die Auflösung ist dabei als <strong>de</strong>r<br />

kleinste Abstand zweier Punkte <strong>de</strong>finiert, die noch getrennt wahrgenommen wer<strong>de</strong>n. Dies be<strong>de</strong>utet, dass<br />

die Auflösung eines Mikroskops, Teleskops o<strong>de</strong>r Kamerobjektivs von seiner Öffnungsweite abhängt.<br />

Die übliche Punktantwort eines optischen Systems ist ein sinc- bzw. Airy-Funktion. Sie führt zu einer<br />

Verschmierung kleiner Objekte und zu Ringen z.B. um Sterne im Teleskop. Man nimmt hier also an,<br />

dass man die Störung <strong>de</strong>s Bil<strong>de</strong>s durch das optische System als Faltung <strong>de</strong>s realen Bil<strong>de</strong>s g r mit einem<br />

Filter h für das Aufnahmesystem mo<strong>de</strong>llieren kann. Es stellt sich nun die Frage, ob es möglich ist diese<br />

Bildstörung rückgängig zu machen.<br />

Im Prinzip muss durch eine Filterung keine Information verloren gehen. Angenommen das gemessene<br />

Bild lässt sich als Faltung darstellen<br />

g = h ⊛ g r ,<br />

so entspricht dies im Fourier-Raum einer Multiplikation:<br />

ĝ = ĥ · ĝ r,<br />

Es spricht nun nichts dagegen diese Multiplikation wie<strong>de</strong>r rückgängig zu machen. Dies bezeichnet man<br />

als Rückfaltung:<br />

ĝ r = ĝ<br />

ĥ = ĥ−1 · ĝ,<br />

Man kann also das reale Bild im Fourierraum berechnen und dann in <strong>de</strong>n Realraum zurücktransformieren:<br />

[ ] F[g]<br />

g r = F −1 F[h]<br />

Die Rückfaltung durch Division im Fourierraum führt nur dann zu Problemen, wenn ĥ Nullstellen hat.<br />

Liegt dieser Fall vor, so ist durch die Faltung Information vernichtet wor<strong>de</strong>n, die nicht wie<strong>de</strong>r hergestellt<br />

wer<strong>de</strong>n kann. Als Beispiel kann man etwa die Glättung durch ein 3 × 3-Binomialfilter betrachten. Wenn<br />

das Bild 100 × 100 Pixel groß ist, so sind nur wenige Pixel von ĥ von null verschie<strong>de</strong>n, sodass eine<br />

Rückfaltung nicht möglich ist. Dies zeigt <strong>de</strong>utlich, dass eine Glättung Information vernichtet.<br />

Zusätzlich bekommt man Probleme mit Rauschen. Wenn das Rauschen n nach <strong>de</strong>r Faltung aufaddiert<br />

wird, so erhält man:<br />

g = h ⊛ g r + n ĝ = ĥ · ĝ r + ˆn ⇒ ĝ r = ĝ<br />

ĥ − ˆṋ h<br />

Damit wird das Rauschen in <strong>de</strong>n Bereichen verstärkt, in <strong>de</strong>nen ĥ klein ist. Diese große Verstärkung <strong>de</strong>s<br />

Bildrauschens macht obigen Rückfaltungs-Ansatz sehr schlecht.<br />

Man wählt daher iterative Ansätze, um die Faltung rückgängig zu machen. Eine einfache Möglichkeit ist<br />

<strong>de</strong>r folgen<strong>de</strong> Ansatz für die Umkehrung eines Unschärfeoperators H mit Transferfunktion ĥ:<br />

ĥ −1 = 1 ĥ = 1<br />

1 − ĥ′ mit ĥ′ = 1 − ĥ<br />

Diesen Ausdruck für ĥ′ kann man nach Taylor entwickeln:<br />

ĥ −1 = 1 + ĥ′ + ĥ′2 + ĥ′3 + ...<br />

95


14 Inverse Filterung<br />

Original<br />

Van-Critter-Iteration:<br />

gauß-gefiiltert<br />

n=2 n=5 n=8<br />

n=11 n=14 n=17 n=20<br />

Abb. 14.1: Van-Critter-Iteration auf einem weich-gezeichneten Testbild<br />

Im Realraum entspricht dies <strong>de</strong>r folgen<strong>de</strong>n Reihe:<br />

H −1 = I + H ′ + H ′2 + H ′3 + ...<br />

mit H ′ = I − H<br />

Man kann also einen iterativen Prozess angeben, <strong>de</strong>r immer mehr Terme hinzunimmt und damit die<br />

Rückfaltung von Schritt zu Schritt verbessert. Diesen Prozess kann man dann abbrechen, wenn das Rauschen<br />

sichtbar wird. Die einzige Voraussetzung ist, dass die Verschmierung H bekannt ist. Diese lässt<br />

sich aber oft mit Testbil<strong>de</strong>rn vermessen (z.B. als Bild einer Punkt-Lichtquelle, wie etwa einem Stern o<strong>de</strong>r<br />

einem sehr kleinen beleuchteten Staubkorn). Die direkte Implementierung dieses Schemas ist aber nicht<br />

sinnvoll, da im i-ten Schritt mit <strong>de</strong>r Maske H i gefaltet wer<strong>de</strong>n muss, die aber von Schritt zu Schritt immer<br />

größer wird. Man verwen<strong>de</strong>t <strong>de</strong>swegen das sog. Horner-Schema, um das obige Polynom zu berechnen:<br />

g 0 = g,<br />

g k+1 = g + H ′ g k<br />

Daraus erhält man:<br />

g 0 = g<br />

g 1 = g + H ′ g<br />

g 2 = g + H ′ g + H ′2 g<br />

.<br />

Dieses Iteration wird Van Critter Iteration genannt. In Abb. 14.1 ist ein Beispiel <strong>de</strong>r Anwendung gezeigt.<br />

Man sieht, dass zu Anfang das Bild immer schärfer wird, während es nach zu vielen Iterationen<br />

nur noch aus Störungen besteht.<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 96 –


Teil IV<br />

Bildanalyse<br />

97


15 Segmentierung<br />

15.1 Einleitung<br />

Die Segmentierung bestimmt, welche Bereiche eines Bil<strong>de</strong>s zu einem Objekt gehören. Die so entstan<strong>de</strong>nen<br />

Regionenbil<strong>de</strong>r können dann weiterverarbeitet, o<strong>de</strong>r zur Klassifizierung herangezogen wer<strong>de</strong>n. Es<br />

entsteht ein Binärbild, d.h. je<strong>de</strong>r Pixel kann nur die Werte 0 o<strong>de</strong>r 1 annehmen:<br />

{<br />

1 : Pixel gehört zu einem Objekt<br />

g mn =<br />

0 : Pixel gehört nicht zu einem Objekt<br />

Es gibt verschie<strong>de</strong>ne Segmentierungsmetho<strong>de</strong>n, die in <strong>de</strong>n folgen<strong>de</strong>n Abschnitten behan<strong>de</strong>lt wer<strong>de</strong>n:<br />

• pixelbasierte Metho<strong>de</strong>n schenken <strong>de</strong>r lokalen Nachbarschaft keine Beachtung<br />

• kantenbasierte Metho<strong>de</strong>n nutzen nur Diskontinuitäten (Kanten) im Bild<br />

• regionenbasierte Metho<strong>de</strong>n nutzen homogene Bildbereiche, um Objekte aufzufin<strong>de</strong>n<br />

• mo<strong>de</strong>llbasierte Metho<strong>de</strong>n nutzen Informationen über die bekannte Form <strong>de</strong>r zu segmentieren<strong>de</strong>n<br />

Objekte<br />

Die einfachsten Metho<strong>de</strong>n basieren dabei nur auf lokaler Information (kleine Nachbarschaft).<br />

15.2 Pixelorientierte Metho<strong>de</strong>n<br />

Die pixelorientierten Segmentierungsmetho<strong>de</strong>n sind die einfachste Klasse von Segmentierungsalgorithmen.<br />

Sie klassifizieren Bildpunkte anhand eines Schwellwertes für ihren Grauwert. Die folgen<strong>de</strong> Abb.<br />

15.1 zeigt zwei Bil<strong>de</strong>r mit Objekten, die klassifiziert wer<strong>de</strong>n sollen. Dazu sind jeweils die Histogramme<br />

gezeichnet. Diese zeigen einen starken bimodalen Charakter, d.h. es existieren zwei extreme Maxima,<br />

zwischen <strong>de</strong>nen nur wenige Pixel zu fin<strong>de</strong>n sind. Ein Maximum gehört zu <strong>de</strong>n Objekten; das zweite zum<br />

Hintergrund.<br />

Hintergrund<br />

Objekte<br />

Abb. 15.1: bimodale Histogramme zweier Bil<strong>de</strong>r<br />

98


15 Segmentierung<br />

Bei solchen Bil<strong>de</strong>rn mit bimodalen Histogrammen ist die pixelorientierte Segmentierung gut geeignet.<br />

Sie geht so vor:<br />

1. suche einen Schwellwert s, mit <strong>de</strong>m das Bild segmentiert wer<strong>de</strong>n kann<br />

2. überprüfe je<strong>de</strong>n Pixel g mn<br />

a) Wenn g mn < s, so gehört <strong>de</strong>r Pixel zum Hintergrund<br />

b) Wenn g mn ≥ s, so gehört <strong>de</strong>r Pixel zum Objekt<br />

Evaluierung:<br />

Ergebnis hat.<br />

Original<br />

Die folgen<strong>de</strong> Abb. 15.2 zeigt, welchen Einfluss die Wahl <strong>de</strong>s Schwellwertes auf das<br />

s=166 s=178 s=209 s=229<br />

Abb. 15.2: Segmentierung eines Bil<strong>de</strong>s mit <strong>de</strong>m Schwellenwertverfahren mit verschie<strong>de</strong>nen Schwellenwerten<br />

s.<br />

Im Bild s = 166 sieht man Probleme, die man mit inhomogener Beleuchtung haben kann. Rechts unten<br />

wer<strong>de</strong>n die Reiskörner noch gut segmentiert, während links oben <strong>de</strong>r Hintergrund als Objekt aufgefasst<br />

wird. Im Bild s = 178 sieht man links oben einige Fehlpixel, die durch Rauschen entstehen können. Außer<strong>de</strong>m<br />

sind die Reiskörner rechts unten zu breit. Das Bild s = 209 ist ein ziemlich guter Kompromiss.<br />

Im Bild s = 229 fehlen einige Reiskörner, weil sie zu dunkel sind; an<strong>de</strong>re sind zu klein.<br />

Fehler:<br />

Zusammenfassend fin<strong>de</strong>t man folgen<strong>de</strong> Fehler:<br />

• inhomogene Beleuchtung führt evtl. zu verfälschten Ergebnissen (<strong>de</strong>r Hintergrund wird als Objekt<br />

klassifiziert.<br />

• sind helle und dunkle Objekte im Bild enthalten, so wer<strong>de</strong>n bei einem globalen Schwellenwert<br />

helle Objekte eher zu groß segmentiert und dunkle Objekte eher zu klein. Abb. 15.3 ver<strong>de</strong>utlicht<br />

das.<br />

• Durch Rauschen können einzelne Störpixel entstehen.<br />

g(x)<br />

s<br />

helles Objekt<br />

normales Objekt<br />

dunkles Objekt<br />

zu groß<br />

zu klein<br />

x<br />

Abb. 15.3: Größen-Fehler beim Segmentieren bei verschie<strong>de</strong>n hellen Objekten<br />

Festlegen <strong>de</strong>s Schwellwertes: Um <strong>de</strong>n Schwellwert richtig festzulegen ist es nötig die Kanten <strong>de</strong>r<br />

Objekte im Bild zu betrachten. Es können lineare o<strong>de</strong>r nicht-lineare Kanten vorliegen (siehe Abb. 15.4).<br />

Ist die Kante ein linearer Anstieg/Abfall, so kann <strong>de</strong>r Schwellwert einfach auf die halben Kantenhöhe<br />

gesetzt wer<strong>de</strong>n. Bei nicht-linearen Kanten verschiebt er sich. Wür<strong>de</strong> man ihn hier an<strong>de</strong>rs festlegen, so<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 99 –


15 Segmentierung<br />

wären alle Objekte eher zu groß (siehe die graue Linie in <strong>de</strong>r rechten Abbildung). Die i<strong>de</strong>ale Segmentierungsgrenze<br />

liegt auf <strong>de</strong>r halben Kantenbreite. Unter Umstän<strong>de</strong>n können solche Fehler von nicht-linearen<br />

Kanten aber auch vernachlässigt wer<strong>de</strong>n (je nach Anwendung!).<br />

g(x)<br />

g(x)<br />

s<br />

s<br />

x<br />

x<br />

Abb. 15.4: Festlegung <strong>de</strong>s Schwellenwertes s bei linearen und nicht-linearen Kanten<br />

15.3 Kantenbasierte Segmentierung<br />

Dieses verfahren vermei<strong>de</strong>t <strong>de</strong>n Größenfehler <strong>de</strong>r Schwellenwertmetho<strong>de</strong>. Ein solcher Algorithmus läuft<br />

so ab:<br />

1. Berechne <strong>de</strong>n Betrag <strong>de</strong>s Gradienten <strong>de</strong>s Bil<strong>de</strong>s ∣∇g<br />

⃗ ∣<br />

∣, als Maß für die Kantenstärke<br />

2. Suche (zeilenweise) ein Maximum in ∣∇g<br />

⃗ ∣<br />

3. Folge <strong>de</strong>r zugehörigen Kante, bis <strong>de</strong>r Anfangspunkt wie<strong>de</strong>r erreicht ist<br />

4. suche das nächste Maximum und fahre mit Schritt 3 fort, bis alle Pixel auf ein Maximum untersucht<br />

wur<strong>de</strong>n<br />

Dieser Algorithmus setzt voraus, dass es sich bei <strong>de</strong>n Objekten um zusammenhängen<strong>de</strong> Gebiete han<strong>de</strong>lt.<br />

Die bei<strong>de</strong>n Objekte in Abb. 15.5 können <strong>de</strong>swegen u.U. nicht unterschie<strong>de</strong>n wer<strong>de</strong>n und führen bei<strong>de</strong><br />

zum selben segmentierten Gebiet.<br />

Segmentierung<br />

Abb. 15.5: Ununterscheidbare Objekte beim kantenbasierten Segmentieren<br />

Fehleranalyse bei inhomogener Beleuchtung: Man kann leicht zeigen, dass bei <strong>de</strong>r kantenbasierten<br />

Segmentierung kein Größenfehler entsteht, wenn die Beleuchtung maximal linear variiert. Dazu betrachtet<br />

man ein einfaches Bild mit einer steil ansteigen<strong>de</strong>n Kante.<br />

Die Kante soll inhomogen (ortsabhängig) beleuchtet wer<strong>de</strong>n. Die Beleuchtung wird als Parabel mo<strong>de</strong>lliert<br />

(linear mit b 2 = 0 und gleichmäßig mit b 1 = 0):<br />

b(x) = b 0 + b 1 x + b 2 x 2<br />

Die Kante wird zusätzlich durch eine Filtermaske h(x) verschmiert (Faltung). Die folgen<strong>de</strong> Abb. 15.6<br />

zeigt diese Schritte.<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 100 –


15 Segmentierung<br />

1.5<br />

einfache Kante verschmierte Kante verschmierte Kante<br />

mit Beleuchtung:<br />

1.5<br />

1.5<br />

1<br />

1<br />

1<br />

0.5<br />

0.5<br />

0.5<br />

0<br />

0<br />

0<br />

0<br />

0<br />

0<br />

Abb. 15.6: Mo<strong>de</strong>llierung einer Kante im Bild mit Verschmierung und Beleuchtung<br />

Man kann das Bild nach Verschmierung und Beleuchtung so schreiben (Die Kantenform wur<strong>de</strong> in <strong>de</strong>n<br />

Integralgrenzen berücksichtigt):<br />

∫ x<br />

g(x) = g 0 h(x) dx + b 0 + b 1 x + b 2 x<br />

−∞<br />

} {{ }<br />

2<br />

} {{ } Beleuchtung<br />

Faltung<br />

Nun kann man auch das Gradientenbild anschreiben:<br />

∂g<br />

∂x = g 0 · h(x) + b 1 + 2b 2 x<br />

Man nimmt nun an, dass sich h(x) um x = 0 in etwa wie eine Parabel verhält, also h(x) ≈ h 0 − h 2 x 2 .<br />

Dies kann man in obiges Gradientenbild einsetzen.<br />

∂g<br />

∂x ≈ g 0 · (h 0 − h 2 x 2 ) + b 1 + 2b 2 x<br />

Möchte man nun die Lage <strong>de</strong>r Maxima dieses Bil<strong>de</strong>s bestimmen, so bil<strong>de</strong>t man <strong>de</strong>ssen Ableitung und<br />

setzt diese null:<br />

∂ 2 ∂ 2 g<br />

∂x 2 ∂x 2 = −2g 0h 2 x + 2b 2 = 0<br />

Daraus erhält man:<br />

x kante = b 2<br />

g 0 h 2<br />

Das Ergebnis x kante<br />

ziehen:<br />

= 0 wäre i<strong>de</strong>al. Aus obiger Gleichung kann man folgen<strong>de</strong> Schlussfolgerungen<br />

1. bei maximal linearer Beleuchtung (b 2 = 0) wird die Kante immer an <strong>de</strong>r richtigen Position erkannt.<br />

Die Position hängt dann auch nicht von <strong>de</strong>r Objekthelligkeit ab.<br />

2. bei nicht-linearer Hintergrundbeleuchtung steigt <strong>de</strong>r Fehler mit <strong>de</strong>r Verschmiertheit <strong>de</strong>r Kante (entspricht<br />

h 2 ) und <strong>de</strong>r Objekthelligkeit g 0 an.<br />

15.4 Regionenorientierte Verfahren<br />

Die Standardverfahren hier sind Region-Growing und Split-and-Merge. Bei ersterem erweitert man das<br />

Gebiet um einen Saatpunkt solange, bis man an eine Kante stößt. das Split-and-merge-verfahren teilt<br />

eine Fläche solange in kleine Unterflächen auf, bis eine Unterfläche nahezu homogen ist. Sie kann kann<br />

dann als Objekt o<strong>de</strong>r Hintergrund mit einem einfachen Schwellenwert klassifiziert wer<strong>de</strong>n.<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 101 –


15 Segmentierung<br />

Pyramid-Linking ist ein iteratives, regionenorientiertes Segmentierungsverfahren. Es geht vom Grauwertbild<br />

aus, nicht vom Merkmalsbild, <strong>de</strong>nn das verfahren berechnet das Merkmal selber. Angenommen<br />

das zu segmentieren<strong>de</strong> Merkmal wird durch ein Filter M berechnet. Stößt dieses Filter an die Grenzen<br />

eines Objekte, so wird sein Wert verfälscht, da auch Hintergrundpixel eine Rolle spielen. Am besten<br />

wäre es hier die Maske M auf das Objekt zu beschränken. Dies ist aber vor <strong>de</strong>r Segmentierung nicht<br />

möglich, während aber gleichzeitig das Merkmalsbild zur Segmentierung benötigt wird. Man hat also<br />

ein klassisches Henne-und-Ei-Problem. Man verwen<strong>de</strong>t zu seine Lösung ein iteratives Verfahren. Beim<br />

Pyramid-Linking ist M einfach ein Mittelungsfilter. Das verfahren läuft folgen<strong>de</strong>rmaßen ab:<br />

1. Gauß-Pyrami<strong>de</strong>: Berechne die Gauß-Pyrami<strong>de</strong> G (i) <strong>de</strong>s Bil<strong>de</strong>s g. Dabei wird über jeweils vier<br />

Pixel gemittelt. Damit trägt je<strong>de</strong>r Bildpunkt zu zwei Nachbarpunkten bei.<br />

2. Segmentierung: Je<strong>de</strong>r Bildpunkt trägt zu zwei Knoten auf <strong>de</strong>r nächsten Ebene <strong>de</strong>r Gauß-Pyrami<strong>de</strong><br />

bei. Man entschei<strong>de</strong>t nun für je<strong>de</strong>n Punkt zu welchem <strong>de</strong>r bei<strong>de</strong>n er eher gehört (an welchem er<br />

näher liegt) und verbin<strong>de</strong>t diese. Dies wird nun für alle Pixel aller Ebenen durchgeführt. Man erhält<br />

so einen Baum, <strong>de</strong>r aus <strong>de</strong>n Pixeln <strong>de</strong>r Gauß-Pyrami<strong>de</strong> besteht.<br />

3. Mittelung miteinan<strong>de</strong>r verbun<strong>de</strong>ner Pixel: Nun mittelt man neu, in<strong>de</strong>m nur noch die mit einem<br />

Elternknoten verbun<strong>de</strong>nen Kindpixel zur Mittelung herangezogen wer<strong>de</strong>n. Nun kehrt man wie<strong>de</strong>r<br />

zu Schritt 2 zurück und wie<strong>de</strong>rholt dies, bis sich die Verbindungen nicht mehr än<strong>de</strong>rn.<br />

4. Im Ergebnisbaum kann man nun die verschie<strong>de</strong>nen Regionen i<strong>de</strong>ntifizieren. Je<strong>de</strong> Region stellt<br />

einen eigene Teilbaum dar.<br />

Das Verfahren ist in Abb. 15.7 illustriert. Die Anzahl <strong>de</strong>r Segmentierungsebenen ergibt sich aus <strong>de</strong>r<br />

Anzahl <strong>de</strong>r Teilbäume in <strong>de</strong>n ersten Schichten nach <strong>de</strong>r Wurzel <strong>de</strong>s Baumes und muss nicht unbedingt<br />

vorher bekannt sein!<br />

Abb. 15.7: Veranschaulichung <strong>de</strong>s pyramid-linking-Verfahrens<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 102 –


15 Segmentierung<br />

15.5 Mo<strong>de</strong>llbasierte Segmentierung<br />

15.5.1 Regularisierung und Mo<strong>de</strong>llierung<br />

Die bisher besprochenen verfahren verwen<strong>de</strong>n keine Information über die Form <strong>de</strong>r zu segmentieren<strong>de</strong>n<br />

Objekte. Die folgen<strong>de</strong>n Verfahren machen Annahmen über die Form enthaltenen Objekte und nutzen<br />

diese zusätzliche (globale) Information zur Segmentierung. Man erstellt also ein Mo<strong>de</strong>ll <strong>de</strong>r Wirklichkeit<br />

und versucht damit die Segmentierung zu verbessern.<br />

Mo<strong>de</strong>ll: Beim Aufstellen eines Mo<strong>de</strong>lls muss man sich einiger Tatsachen bewusst sein. Es ist wichtig,<br />

dass Mo<strong>de</strong>lle die Wirklichkeit immer nur bis zu einem gewissen Grad wie<strong>de</strong>rspiegeln können. Man muss<br />

sich also auch Gedanken über die Grenzen <strong>de</strong>s Mo<strong>de</strong>lls machen. So wird man etwa mit <strong>de</strong>r Mo<strong>de</strong>llierung<br />

von Objekten als Rechtecke keine Kreise segmentieren können. Außer<strong>de</strong>m muss ein Mo<strong>de</strong>ll auch dann<br />

nicht die Wirklichkeit beschreiben, wenn es perfekt zu <strong>de</strong>n Daten passt. In Abb. 15.8 ist ein Beispiel<br />

gezeigt. Das Mo<strong>de</strong>ll nimmt ein einziges schwarzes Objekt auf weißen Untergrund an. Das Bild rechts<br />

führt aber zum gleichen Grauwerthistogramm. Damit wür<strong>de</strong> das rechte Bild gleich klassifiziert, wie das<br />

linke und das Mo<strong>de</strong>ll ist lei<strong>de</strong>r falsch, obwohl es zu <strong>de</strong>n Daten passt.<br />

Bild 1 Histogramm Bild 2<br />

?<br />

blablub<br />

Abb. 15.8: falsches Mo<strong>de</strong>ll (Bild 1) für die Daten (Bild 2)<br />

15.5.2 Hough-Transformation<br />

Dieses verfahren erkennt gera<strong>de</strong> Kanten. Dazu geht man davon aus, dass je<strong>de</strong>r Punkt einer Kante auf<br />

einer Gera<strong>de</strong>n liegt, die über zwei Parameter a 0 , a 1 beschrieben wer<strong>de</strong>n kann (Achsenabschnitt a 0 und<br />

Steigung a 1 ). Dies be<strong>de</strong>utet, dass alle Punkte (x n , y n ) t auf <strong>de</strong>r Kante <strong>de</strong>r Gera<strong>de</strong>ngleichung genügen<br />

müssen:<br />

y n = a 0 + a 1 x n<br />

Diese Gleichung lässt sich aber auch als Bedingung für a 0 und a 1 umformulieren:<br />

a 1 = y n<br />

x x<br />

− 1<br />

x n<br />

a 0<br />

Dies ist wie<strong>de</strong>r eine Gera<strong>de</strong>ngleichung, aber mit Achsenabschnitt yn<br />

x x<br />

und Steigung − 1<br />

x n<br />

. Außer<strong>de</strong>m<br />

han<strong>de</strong>lt es sich um eine Gera<strong>de</strong> im sog. Parameterraum, <strong>de</strong>r von a 0 und a 1 aufgespannt wird. Dies kann<br />

man so interpretieren, dass je<strong>de</strong>r Punkt (a 0 , a 1 ) t im Parameterraum eine bestimmte Gera<strong>de</strong> im Bild<br />

repräsentiert (eben Achsenabschnitt und Steigung). Nun kann man also je<strong>de</strong>m Punkt auf <strong>de</strong>r Kante eine<br />

Gera<strong>de</strong> im Parameterraum zuordnen. Alle diese Gera<strong>de</strong> sollten sich (zumin<strong>de</strong>st ungefähr) in einem Punkt<br />

treffen. Seine Koordinaten geben dann einen guten Schätzwert für die Gera<strong>de</strong>ngleichung <strong>de</strong>r Kante. Das<br />

ganze ist in Abb. 15.9 für einige Punkte veranschaulicht.<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 103 –


15 Segmentierung<br />

Datenraum<br />

Parameterraum<br />

4<br />

4<br />

y<br />

2<br />

0<br />

Kante<br />

a1<br />

2<br />

0<br />

-2<br />

-4<br />

Datenpunkte<br />

-2<br />

-4<br />

Gera<strong>de</strong>n zu<br />

<strong>de</strong>n Datenpunkten<br />

-4 -2 0 2 4<br />

x<br />

-4 -2 0 2 4<br />

a0<br />

Abb. 15.9: Beispiel zur 1D-Hough-Transformation<br />

In <strong>de</strong>r Praxis verwen<strong>de</strong>t man nicht die Steigung als Parameter (diese kann unendlich wer<strong>de</strong>n), son<strong>de</strong>rn<br />

<strong>de</strong>n Winkel <strong>de</strong>s Gera<strong>de</strong>n zu <strong>de</strong>n Achsen. Der große Nachteil <strong>de</strong>r Hough-Trafo ist <strong>de</strong>r große Rechenaufwand,<br />

da zunächst die Parameter <strong>de</strong>r gera<strong>de</strong> im Parameterraum berechnet wer<strong>de</strong>n müssen und hernach<br />

die Schnitte aller gera<strong>de</strong>n miteinan<strong>de</strong>r. Aus allen diesen Schnittpunkten muss man schließlich noch <strong>de</strong>n<br />

Mittelwert bil<strong>de</strong>n.<br />

schnelle Hough-Transformation: Man kann bei <strong>de</strong>r Berechnung <strong>de</strong>r Hough-Transformation noch zusätzliche<br />

Daten berücksichtigen. Wenn ein Punkt auf einer Kante liegt, so kann man über die Metho<strong>de</strong>n<br />

aus Kapitel 11 (Strukturtensor etz.) die Orientierung <strong>de</strong>r Kante bestimmen. Man hat also neben <strong>de</strong>r Position<br />

<strong>de</strong>r Kante auch ihre Orientierung gegeben. Dies reduziert die Gera<strong>de</strong> im Parameter-Raum auf einen<br />

Punkt, sodass das Auffin<strong>de</strong>n <strong>de</strong>r Schnittpunkte <strong>de</strong>r Gera<strong>de</strong>n im Parameterraum entfällt. Im Parameterraum<br />

erhält man dann Cluster von Punkten um die tatsächlichen Parameter.<br />

15.5.3 Kontinuierliche Mo<strong>de</strong>llierung: Variationsmetho<strong>de</strong><br />

Für die Mo<strong>de</strong>llierung mit <strong>de</strong>r Variationsmetho<strong>de</strong> geht man von folgen<strong>de</strong>r Situation aus: Die Daten seien<br />

als g(⃗x) gegeben. Das Ergebnis soll eine Zielfunktion f(⃗x) sein, die die Daten möglichst gut beschreibt<br />

(z.B. die Umrandung eines Objektes bei <strong>de</strong>r Segmentierung). Man stellt nun ein sog. Fehlerfunktional<br />

ɛ[f] auf. Es misst die Abweichung <strong>de</strong>r Daten von <strong>de</strong>r Zielfunktion. Man wählt dann dasjenige f mit <strong>de</strong>m<br />

kleinsten Fehlerfunktional. Für diskrete Daten und eine euklidische Distanz zwischen f und g führt dies<br />

etwa auf einen Least-Square-Fit.<br />

f 1<br />

ε[f] f 1<br />

f 2 f 2<br />

Daten g<br />

f 3<br />

f 3<br />

x<br />

Abb. 15.10: Verschie<strong>de</strong>ne Versuche eine Funktion f an die messdaten zu fitten. rechts ist das Fehlerfunktional<br />

gezeigt. Es muss das Minimum aufgesucht wer<strong>de</strong>n.<br />

Aufstellen <strong>de</strong>s Fehlerfunktionals bei kontinuierlichen Daten: Wie man an <strong>de</strong>m Beispiel in Abb.<br />

15.10 sieht, ist es wichtig <strong>de</strong>n Abstand zwischen allen Datenpunkten und f zu messen. Sind die Daten<br />

kontinuierlich (durchgezogene blaue Linie), so muss man über beliebig dicht liegen<strong>de</strong> Punkte summieren,<br />

man integriert also über <strong>de</strong>n Abstand zwischen g und f. Wenn das Fehlerfunktional nur von f<br />

abhängt, so wer<strong>de</strong>n keine Nachbarschaftsbeziehungen beachtet. Um diese ebenfalls einzubin<strong>de</strong>n (etwa<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 104 –


15 Segmentierung<br />

um Glattheit zu garantieren) muss das Fehlerfunktional auch von <strong>de</strong>n Ableitungen ∂ i f = ∂f<br />

∂x i<br />

abhängen. Man macht <strong>de</strong>swegen folgen<strong>de</strong>n allgemeinen Ansatz:<br />

∫<br />

ɛ[f] = L(f, ∂ 1 f, ..., ∂ W f, x 1 , ..., x W ) d W x → min .<br />

von f<br />

Dabei ist ⃗x = ( 1 , ..., x W ) und W gibt die Dimensionalität <strong>de</strong>r Daten an. Die hier eingeführte Funktion<br />

L(...) wird als Lagrange-Funktion bezeichnet. Das so dargestellte Optimierungsproblem ist in <strong>de</strong>r<br />

Mathematik wohl bekannt. Es wird von <strong>de</strong>njenigen Funktionen f(⃗x) gelöst, die <strong>de</strong>n folgen<strong>de</strong>n Euler-<br />

Lagrange-Gleichungen (o<strong>de</strong>r einfach Lagrange-Gleichungen) genügen:<br />

∂L<br />

W<br />

∂f − ∑<br />

n=1<br />

( )<br />

∂ ∂L<br />

= 0<br />

∂x n ∂(∂ w f)<br />

Hierbei han<strong>de</strong>lt es sich um eine partielle Differentialgleichung. Ist f eine vektorwertige Funktion ⃗ f(⃗x),<br />

so gibt es eine Euler-Lagrange-Gleichung für je<strong>de</strong> Komponente von ⃗ f(⃗x).<br />

Ähnlichkeitsbedingung: Man for<strong>de</strong>rt, dass die Daten <strong>de</strong>m Mo<strong>de</strong>ll möglichst gut entsprechen. Dies<br />

kann man etwa über <strong>de</strong>n Abstand nach <strong>de</strong>r L p -Norm machen. Man erhält dann folgen<strong>de</strong> Lagrange-<br />

Funktion:<br />

L = ‖p‖ f(⃗x) ⃗ − ⃗g(⃗x)<br />

Daran sieht man, dass die Daten direkt in <strong>de</strong>r Lagrange-Funktion stecken. Nimmt man an, dass das Bild<br />

durch die Faltung mit einem Kern h verän<strong>de</strong>rt wur<strong>de</strong>, erhält man:<br />

L = ‖p‖ f ⊛ h − g<br />

Glattheitsbedingung: Oft ist es sinnvoll zu for<strong>de</strong>rn, dass die Funktion f(x) glatt ist. Dies be<strong>de</strong>utet,<br />

dass f(f) nur langsam mit x variiert. Anschaulich ist dies etwa bei großen Objekten (mehrere Pixel breit)<br />

mit glattem Rand gegeben. Wenn eine Funktion glatt ist, so ist ihre Ableitung ∇f ⃗ klein. Man kann also<br />

folgen<strong>de</strong> Bedingung zur Lagrange-Funktion hinzufügen:<br />

L = ‖p‖ ... − α 2 ‖q‖ ⃗ ∇f 2<br />

Lösung <strong>de</strong>r Euler-Lagrange-Gleichung: Zur Lösung <strong>de</strong>r so erhaltenen Euler-Lagrange-Gleichungen<br />

kann man numerische Verfahren verwen<strong>de</strong>n, die dann die optimale Zielfunktion f ausgeben.<br />

15.5.4 Diffusionsmo<strong>de</strong>lle<br />

Es gibt noch eine an<strong>de</strong>re Herangehensweise an die Euler-Lagrange-Gleichung. Dazu modifiziert man die<br />

(im Beispiel 1D-) Lagrange-Gleichung:<br />

∂L<br />

∂f − ∂<br />

∂x<br />

∂L<br />

∂(∂ x f) = ∂f<br />

∂t<br />

Rechts steht jetzt nicht mehr 0, son<strong>de</strong>rn die zeitliche Ableitung von f. Dies be<strong>de</strong>utet, dass die richtige<br />

Lösung von f die Gleichgewichtslösung dieses „Reaktions-Diffusions-Systems“ ist. Die Konstante α 2 in<br />

<strong>de</strong>r Glattheitsbedingung übernimmt jetzt die Rolle einer Diffusionskonstante. In<strong>de</strong>m man diese variiert<br />

kann man die Diffusion (und damit die Lösung f) an die lokale Umgebung anpassen.<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 105 –


15 Segmentierung<br />

inhomogene Diffusion: Wird etwa α 2 von <strong>de</strong>r Kantenstärke ∣∇f<br />

⃗ ∣ 2 abhängig, so kann man erreichen,<br />

dass Kanten weniger geglättet wer<strong>de</strong>n, als homogene Bereiche. Die Mo<strong>de</strong>llierung wür<strong>de</strong> sich dann gut<br />

zum Auffin<strong>de</strong>n von Kanten eignen.<br />

anisotrope Diffusion: Hier wird die Diffusion an die Orientierung von Kanten angepasst, sodass eine<br />

Glättung entlang, aber nicht senkrecht zur Kante stattfin<strong>de</strong>t.<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 106 –


16 Morphologie<br />

Aus <strong>de</strong>r Segmentierung eines Bil<strong>de</strong>s erhält man ein Binärbild mit folgen<strong>de</strong>r Eigenschaft:<br />

{<br />

1 : Pixel gehört zu einem Objekt<br />

g mn =<br />

0 : Pixel gehört nicht zu einem Objekt<br />

Hier sollen nun einige Operationen auf Binärbil<strong>de</strong>rn, die morphologischen Operationen, besprochen wer<strong>de</strong>n,<br />

mit <strong>de</strong>nen Formen in Binärbil<strong>de</strong>rn modifiziert und analysiert wer<strong>de</strong>n können.<br />

Zur Formulierung <strong>de</strong>r morphologischen Operationen wird die Sprache <strong>de</strong>r Mengen und <strong>de</strong>r Logik verwen<strong>de</strong>t.<br />

Die Operationen wirken nur auf Binärbil<strong>de</strong>r, sodass man 1 mit wahr und 0 mit falsch gleichsetzen<br />

kann. Zusätzlich wird <strong>de</strong>finiert:<br />

• M q : Menge <strong>de</strong>r Pixel ungleich null (wahr) in einer Maske um <strong>de</strong>n Punkt q<br />

• G: Menge aller Pixel ungleich null (wahr) im Bild<br />

16.1 Dilatation und Erosion<br />

Dilatation:<br />

Diese Operation erweitert die Strukturen in einem bestehen<strong>de</strong>n Binärbild.<br />

Die Abb. 16.1 zeigt dies. Die Objekte wer<strong>de</strong>n größer. Die Operation lässt sich so<br />

schreiben:<br />

G ′ = G ⊕ M = { p ∣ Mp ∩ G ≠ ∅ }<br />

Dies be<strong>de</strong>utet, dass zum neuen Bild G ′ alle diejenigen Pixel p gehören, <strong>de</strong>ren<br />

maskierte Umgebung min<strong>de</strong>stens einen Pixel mit Wert 1 enthält. Dies entspricht<br />

<strong>de</strong>r Vero<strong>de</strong>rung aller Pixel <strong>de</strong>r Umgebung:<br />

g ′ mn =<br />

R∨<br />

R∨<br />

m ′ =−R n ′ =−R<br />

g m+m ′ ,n+n ′<br />

1<br />

0<br />

1<br />

1<br />

In dieser Schreibweise entspricht die morphologische Operation einer Faltung, wenn man die Summation<br />

durch eine o<strong>de</strong>r-Verknüpfung ersetzt.<br />

Diese Operation verkleinert die Strukturen in einem bestehen<strong>de</strong>n Bi-<br />

Erosion:<br />

närbild.<br />

Die Abb. 16.1 zeigt dies. Die Operation lässt sich so schreiben:<br />

G ′ = G ⊖ M = { p ∣ ∣M p ⊆ G }<br />

0<br />

0<br />

1<br />

Dies be<strong>de</strong>utet, dass zum neuen Bild G ′ alle diejenigen Pixel p gehören, in <strong>de</strong>ren<br />

maskierter Umgebung nur Pixel mit Wert 1 enthalten sind. Dies entspricht <strong>de</strong>r<br />

Verundung aller Pixel <strong>de</strong>r Umgebung:<br />

0<br />

1<br />

g ′ mn =<br />

R∧<br />

R∧<br />

m ′ =−R n ′ =−R<br />

g m+m ′ ,n+n ′<br />

107


16 Morphologie<br />

In dieser Schreibweise entspricht die morphologische Operation einer Faltung, wenn man die Summation<br />

durch eine und-Verknüpfung ersetzt.<br />

Die Erosion wird zur Entfernung kleiner Elemente <strong>de</strong>s Bil<strong>de</strong>s verwen<strong>de</strong>t (z.B. einzelne Fehlpixel)<br />

einfachses Test-Muster:<br />

Original: Dilatation: Erosion:<br />

alte Fläche<br />

segmentierte Reiskörner:<br />

neue Fläche<br />

Abb. 16.1: Anwendung von Dilatation und Erosion auf Testbil<strong>de</strong>r<br />

16.2 Allgemeine morphologische Operationen<br />

In Abschnitt 16.1 wur<strong>de</strong> eine Schreibweise eingeführt, mit <strong>de</strong>r Erosion und Dilatation einer Faltung<br />

ähneln (und auch genauso implementiert wer<strong>de</strong>n können). Diese Schreibweise soll noch erweitert wer<strong>de</strong>n.<br />

Dazu <strong>de</strong>finiert man einen Kern h mn <strong>de</strong>r Operation. Alle Pixel dieses Kerns liegen in <strong>de</strong>r lokalen<br />

Umgebung M. Man kann dann schreiben:<br />

und:<br />

g ′ mn =<br />

g ′ mn =<br />

R∨<br />

R∨<br />

m ′ =−R n ′ =−R<br />

R∨<br />

R∧<br />

m ′ =−R n ′ =−R<br />

h m ′ ,n ′ ∧ g m+m ′ ,n+n ′<br />

h m ′ ,n ′ ∨ g m+m ′ ,n+n ′<br />

Den Kern h mn nennt man auch Strukturelement. Damit ergeben sich Dilatation und Erosion als Spezialfälle<br />

mit einer Makse, die überall 1 bzw. 0 sind. Wie die LSI-Operatoren auch gehorchen morphologische<br />

Operationen M (Struturelement M) einigen Regeln (G ist ein Binärbild):<br />

• Verschiebungsinvarianz: Mit <strong>de</strong>m Verschiebungsoperator S mn gilt:<br />

M ( S mn G ) = S mn<br />

(<br />

MG<br />

)<br />

Die Operation hängt also nicht von <strong>de</strong>r Position im Bild ab.<br />

• Superpositionsprinzip:<br />

M(G ∪ G ′ ) = (MG) ∪ (MG ′ ) und M(G ∩ G ′ ) = (MG) ∩ (MG ′ )<br />

Für Erosion und Dilatation gelten diese Beziehungen nicht unbedingt.<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 108 –


16 Morphologie<br />

• Kommutativität: Morphologische Operatoren sind i.A. nicht kommutativ:<br />

G 1 ⊕ G 2 = G 2 ⊕ G 1 aber G 1 ⊖ G 2 ≠ G 2 ⊖ G 1<br />

Bei Nacheinan<strong>de</strong>r-Anwendung von Erosions- und Dilatationsmaksen auf das selbe Bild gilt Kommutativität:<br />

(G ⊖ M 1 ) ⊖ M 2 = G ⊖ (M 1 ⊕ M 2 ) = (G ⊖ M 2 ) ⊖ M 1<br />

(G ⊕ M 1 ) ⊕ M 2 = G ⊕ (M 1 ⊕ M 2 ) = (G ⊕ M 2 ) ⊕ M 1<br />

Aus diesen Gleichungen kann man etwas über die Implementirung ablesen: wer<strong>de</strong>n nacheinan<strong>de</strong>r<br />

k Strukturelemente M 1 , ..M k auf ein Bild angewen<strong>de</strong>t, so ist die äquivalent zur Anwendung <strong>de</strong>s<br />

Strukturelement M 1 ⊕...⊕M k . Dies lässt sich ausnutzen, da man so separierbare Strukturelemente<br />

erzeugen kann (ähnlich wie separierbare Filtermasken).<br />

• Monotonie: Erosion und Dilation sind monotone Operationen. Dies be<strong>de</strong>utet, dass die Teilmengeneigenschaft<br />

erhalten bleibt:<br />

G 1 ⊆ G 2 ⇒ G 1 ⊕ M ⊂ G 2 ⊕ M<br />

G 1 ⊆ G 2 ⇒ G 1 ⊖ M ⊂ G 2 ⊖ M<br />

• Dualität: Die Erosion mit <strong>de</strong>m negierten Bild G ist äquivalent zur Negation <strong>de</strong>r Dilatation mit <strong>de</strong>m<br />

Bild G; und umgekehrt:<br />

G ⊕ M = G ⊖ M und G ⊖ M = G ⊕ M<br />

• Distributivität:<br />

(G 1 ∩ G 2 ) ⊕ M ⊆ (G 1 ⊕ M) ∩ (G 2 ⊕ M)<br />

(G 1 ∩ G 2 ) ⊖ M = (G 1 ⊖ M) ∩ (G 2 ⊖ M)<br />

und<br />

(G 1 ∪ G 2 ) ⊕ M = (G 1 ⊕ M) ∪ (G 2 ⊕ M)<br />

(G 1 ∪ G 2 ) ⊖ M ⊇ (G 1 ⊖ M) ∪ (G 2 ⊖ M)<br />

16.3 Zusammengesetzte morphologische Operationen<br />

16.3.1 Öffnen und Schließen<br />

Will man mit Erosion Fehlpixel entfernen, so wer<strong>de</strong>n dadurch auch die Objekte im Bild kleiner. Man<br />

kann <strong>de</strong>swegen nach <strong>de</strong>r Erosion nochmals eine Dilatation anwen<strong>de</strong>n, die diesen Effekt wie<strong>de</strong>r ausgleicht.<br />

Die so entstan<strong>de</strong>ne Operation heißt Öffnen (Opening):<br />

G ◦ M = (G ⊖ M) ⊕ M<br />

Diese Operation kann auch zur Entfernung von Linien verwen<strong>de</strong>t wer<strong>de</strong>n, die kleiner als das Strukturelement<br />

M sind.<br />

Mit <strong>de</strong>r Dilatation kann man Löcher in Objekten füllen. Dabei wer<strong>de</strong>n aber auch die Objekte größer. Dies<br />

kann man durch anschließen<strong>de</strong>s erodieren vermei<strong>de</strong>n. Man erhält dann eine Operation, die Schließen<br />

(Closing) genannt wird:<br />

G • M = (G ⊕ M) ⊖ M<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 109 –


16 Morphologie<br />

Die Operationen Öffnen und Schließen sind „i<strong>de</strong>mpotent“, d.h. zwei Anwendung von Schließen direkt<br />

hintereinan<strong>de</strong>r entsprechen <strong>de</strong>r einfachen Anwendung (genauso für Öffnen):<br />

G • M = (G • M) • M<br />

G ◦ M = (G ◦ M) ◦ M<br />

In Abb. 16.2 sind die Operationen an einem Testbild veranschaulicht. Man sieht <strong>de</strong>utlich, dass Schließen<br />

Löcher in <strong>de</strong>n Objekten schließt, gleichzeitig aber auch das Rauschen etwas verstärkt. Öffnen entfernt<br />

das Rauschen. Außer<strong>de</strong>m wer<strong>de</strong>n Linien herausgefilter, die dünner als 3 Pixel (Maskenbreite) sind.<br />

Original: Schließen: Öffnen:<br />

3x3-Maske<br />

3x3-Maske<br />

Abb. 16.2: Öffnen und Schließen mit einer 3 × 3-Maske auf ein Testbild angewen<strong>de</strong>t.<br />

16.3.2 Hit-Miss-Operator<br />

Der Hit-Miss-Operator <strong>de</strong>tektiert bestimmte Strukturen im Bild. Dies soll am Beispiel <strong>de</strong>r Detektion<br />

dreier nebeneinan<strong>de</strong>r liegen<strong>de</strong>r Pixel erläutert wer<strong>de</strong>n: Eine Erosion mit <strong>de</strong>m Strukturelement<br />

M 1 = [1 1 1]<br />

entfernt alle Objekte, die kleiner als drei nebeneinan<strong>de</strong>r liegen<strong>de</strong> Pixel sind. In einem zweiten Schritt<br />

muss man alle Objekte entfernen, die größer als die drei Pixel sind. Dazu erodiert man <strong>de</strong>n Hintergrund<br />

(das invertierte Bild) mit folgen<strong>de</strong>r Maske:<br />

⎡<br />

1 1 1 1<br />

⎤<br />

1<br />

M 2 = ⎣1 0 0 0 1⎦<br />

1 1 1 1 1<br />

Dies belässt nur noch diejenigen Objekte im Hintergrund, die kleiner o<strong>de</strong>r gleichgroß zu <strong>de</strong>n drei Pixeln<br />

sind. Man kann also aus <strong>de</strong>r Schnittmenge <strong>de</strong>r obigen zwei Teilergebnisse alle Elemente, die ähnlich wie<br />

drei Pixel sind herausbekommen. Es bleibt jeweil das zentrale Pixel dieser Objekte stehen. Zusammenfassend<br />

erhält man:<br />

G ⊗ (M 1 , M 2 ) = (G ⊖ M 1 ) ∩ (G ⊖ M 2 )<br />

mit M 1 ∩ M 2 = ∅<br />

Das folgen<strong>de</strong> Maskenpaar <strong>de</strong>tektiert z.B. einzelne Pixel:<br />

⎡<br />

0 0<br />

⎤<br />

0<br />

⎡<br />

1 1<br />

⎤<br />

1<br />

M 1 = ⎣0 1 0⎦ M 2 = ⎣1 0 1⎦<br />

0 0 0<br />

1 1 1<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 110 –


16 Morphologie<br />

16.4 Extraktion von Rän<strong>de</strong>rn<br />

Je<strong>de</strong>r Randpixel hat min<strong>de</strong>stens einen Nachbarn, <strong>de</strong>r 0 ist. Die folgen<strong>de</strong>n Erosionsmasken entfernen also<br />

alle Pixel, die einen Nachbarn 0 haben, also auf einem Rand liegen (4er und 8er Nachbarschaft):<br />

⎡<br />

0 1<br />

⎤<br />

0<br />

⎡<br />

1 1<br />

⎤<br />

1<br />

M b4 = ⎣1 1 1⎦ M b8 = ⎣1 1 1⎦<br />

0 1 0<br />

1 1 1<br />

Das Bild G ′ = G ⊖ M b entspricht also <strong>de</strong>m Bild G, allerdings ohne die Randpixel. Entfernt man nun aus<br />

<strong>de</strong>m Bild G alle Punkte <strong>de</strong>s Bil<strong>de</strong>s G ′ , so bleiben nur noch die Randpixel übrig:<br />

∂G = G\(G ⊖ M b )<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 111 –


17 Formrepräsentation<br />

Mit <strong>de</strong>n bisherigen Mitteln erhält man immer wie<strong>de</strong>r ein Bild als Ausgabeobjekt. In diesem Kapitel<br />

sollen Metho<strong>de</strong> dargestellt wer<strong>de</strong>n, mit <strong>de</strong>nen man Objekte über Parameter, wie Größe, Schwerpunkt<br />

etz. beschreiben kann.<br />

17.1 Momentbasierte Formmerkmale<br />

Definition 17.1 (Schwerpunkt) Zur Bestimmung <strong>de</strong>s Schwerpunktes x i eines Grauwertbil<strong>de</strong>s g(⃗x) in<br />

einer Richtung i wer<strong>de</strong>n die Positionen <strong>de</strong>r Pixel mit ihrem Grauwert gewichtet:<br />

x i =<br />

∫<br />

xi g(⃗x) d 2 x<br />

∫<br />

g(⃗x) d 2 x<br />

Weiße Pixel tragen also stärker zum Schwerpunkt bei. Besteht ein Objekt aus weißen Pixeln, so kann man<br />

hiermit seinen Schwerpunkt berechnen. Die Division durch das zweite Integral führt zur Normierung <strong>de</strong>s<br />

Schwerpunktes.<br />

Man kann g(⃗x) nicht nur als Grauwert auffassen, son<strong>de</strong>rn als beliebiges Merkmal, das umso größer ist,<br />

je eher ein Punkt zum Objekt gehört. Im Extremfall kann man das Binärbild aus einer Segmentierung<br />

verwen<strong>de</strong>n.<br />

Definition 17.2 (Momente <strong>de</strong>s Grauwertes) Zur Bestimmung <strong>de</strong>r höheren Momente µ p,q eines Grauwertbil<strong>de</strong>s<br />

g(⃗x) berechnet man analog zu Statistik:<br />

∫<br />

µ p,q = (x 1 − x 1 ) p (x 2 − x 2 ) q g(⃗x) d 2 x<br />

Für p = q = 2 ist dies die Varianz in <strong>de</strong>r Verteilung. Für p = q = 0 bleibt noch<br />

∫<br />

µ 0q = g(⃗x) d 2 x<br />

übrig. Dies ist ein Maß für die Fläche <strong>de</strong>s Objektes. Die Momente 1-ter Ordnung µ 0,1 und µ 1,0 entsprechen<br />

<strong>de</strong>n Schwerpunktkoordinaten x 1 , x 2 .<br />

Mit Hilfe dieser Merkmale kann man Objekte beschreiben. Diese Beschreibung ist aber größenabhängig.<br />

D.h. wird das Objekt doppelt so groß, so wird z.B. µ 2,2 vervierfacht. Will man unterschiedlich große<br />

Objekte vergleichen, so kann man die Momente <strong>de</strong>r Objekte mit <strong>de</strong>m 0-ten Moment µ 0 normieren:<br />

Zusammenfassend kann man sagen:<br />

µ p,q =<br />

• Moment 0. Ordnung: Fläche <strong>de</strong>s Objektes<br />

µ p,q<br />

µ (p+q+2)/2<br />

0,0<br />

• Moment 1. Ordnung: Position <strong>de</strong>s Objektes (Mittelwert/Schwerpunkt)<br />

112


17 Formrepräsentation<br />

• Moment 2. Ordnung: Aus<strong>de</strong>hnung <strong>de</strong>s Objektes (Varianz)<br />

Die Momente 2-ter Ordnung µ 1,1 , µ 2,0 , µ 0,2 beschreiben die Aus<strong>de</strong>hnung <strong>de</strong>s Objektes. Sie entsprechen<br />

<strong>de</strong>r Varianz in <strong>de</strong>r Statistik. Sie lassen sich zu einem symmetrischen Tensor (Matrix), <strong>de</strong>m Trägheitstensor<br />

J zusammenfassen:<br />

( )<br />

µ2,0 −µ<br />

J =<br />

1,1<br />

−µ 1,1 µ 0,2<br />

Dieser Tensor hat die Eigenschaft, dass das Koordinatensystem, in <strong>de</strong>m er Diagonalgestalt hat (Basisvektoren<br />

sind Eigenvektoren von J) in <strong>de</strong>n Hauptachsen <strong>de</strong>s Objektes liegt. Die folgen<strong>de</strong> Abb. 17.1<br />

ver<strong>de</strong>utlicht dies. Die Momente zweiter Ordnung geben die Aus<strong>de</strong>hnung <strong>de</strong>r eingezeichneten Ellipse an,<br />

<strong>de</strong>m sog. Trägheitsellipsoi<strong>de</strong>n. Sie mo<strong>de</strong>llieren das Objekt also im wesentlichen als Ellipse. Das grüne<br />

Koordinatensystem entsteht, wenn <strong>de</strong>r Tensor diagonalisiert wird. Seine Verkippung θ zum schwarzen<br />

System (bei<strong>de</strong> liegen im Schwerpunkt) gibt die Neigung <strong>de</strong>s Objektes an.<br />

θ<br />

System mit diagonalem<br />

Träheitstensor<br />

Mo<strong>de</strong>llierung mit Tensor J<br />

Objekt<br />

Schwerpunkt<br />

Abb. 17.1: Trägheitstensor eines Objektes<br />

Man kann <strong>de</strong>n Winkel θ und die Exzentrizität ɛ berechnen:<br />

θ = 1 2 arctan 2µ 1,1<br />

, ɛ = (µ 2,0 − µ 0,2 ) 2 + 4µ 2 1,1<br />

µ 2,0 − µ 0,2 (µ 2,0 + µ 0,2 ) 2<br />

Die Exzentrizität gibt an, wie stark das Objekt von einem Kreis (ɛ = 1) abweicht. Sie ist ein Maß für das<br />

Verhältnis <strong>de</strong>r Hauptachsen <strong>de</strong>s Trägheitsellipsoi<strong>de</strong>n.<br />

17.2 Richtungsketten<br />

Bisher wur<strong>de</strong> ein Bild über seine Pixelmatrix dargestellt. Wenn man aber in einem Schwarz-Weiß-Bild<br />

einzelne, abgegrenzte Objekte hat, so genügt es auch einfach <strong>de</strong>ren Umriss abzuspeichern. Gera<strong>de</strong> wenn<br />

die Objekte groß sind spart man so sehr viel Speicher ein. Dazu wird von einem Startpunkt aus (gegen<br />

<strong>de</strong>n Uhrzeigersinn) immer <strong>de</strong>r nächste Punkt <strong>de</strong>s Ran<strong>de</strong>s gesucht. Es gibt dabei zwei mögliche Nachbarschaftsbeziehungen:<br />

4er-Nachbarschaft:<br />

1<br />

2<br />

0<br />

3<br />

8er-Nachbarschaft:<br />

6<br />

5 7<br />

4<br />

0<br />

3 1<br />

2<br />

Mit einer 4er-Nachbarschaft benötigt man also 2 Bit und mit einer 8er-Nachbarschaft 3 Bit um <strong>de</strong>n<br />

nächsten Pixel zu codieren. Die folgen<strong>de</strong> Abb. 17.2 zeigt ein Beispiel. Der Kettenco<strong>de</strong> hat auch <strong>de</strong>n<br />

Vorteil, dass eine Fläche L 2 Pixel umfasst, als ein 2D-Objekt ist, während ihre Umrandung nur ∝ R<br />

Pixel enthält. Man spart also eine Dimension bei <strong>de</strong>r Kodierung.<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 113 –


17 Formrepräsentation<br />

4er Nachbarschaft:<br />

8er Nachbarschaft:<br />

Abb. 17.2: Kettencodierung eines Objektes mit verschie<strong>de</strong>nen Nachbarschaften<br />

2<br />

3<br />

1<br />

(x , y ) 0 0<br />

0<br />

P-1<br />

P-2<br />

4<br />

Abb. 17.3: äquidistante Abtastung einer 2D-Kurve (rot) mit P = 21 Punkten<br />

17.3 Fourier<strong>de</strong>skriptoren<br />

In Abschnitt 17.2 über Richtungsketten wur<strong>de</strong> beschrieben, wie man eine Kurve (die Umrandung einer<br />

Fläche/eines Objektes) geschickt kodieren kann. Hier soll nun ein Ansatz beschrieben wer<strong>de</strong>n, wie man<br />

eine solche Kurve beschreiben kann. Als Ausgangsdaten verwen<strong>de</strong>t man eine Kurve, die die Umrandung<br />

<strong>de</strong>s Objektes beschreibt. Diese Kurve wird an diskreten Punkten abgetastet, sodass die Pfadlänge (!)<br />

zwischen zwei Punkten immer p beträgt. In Abb. 17.3 ist dies an einem Beispiel gezeigt. Je<strong>de</strong>r Punkt in<br />

dieser Serie von Abtastungen wird durch zwei Zahlen (Koordinaten) beschrieben: x(p), y(p). Diese zwei<br />

reellen Koordinaten können zu einer komplexen Zahl zusammengefasst wer<strong>de</strong>n:<br />

Die Kurve ist zyklisch, d.h.<br />

z(p) = x(p) + i · y(p)<br />

z(p + nP ) = z(p),<br />

n ∈ Z<br />

Dies entspricht <strong>de</strong>r periodischen Fortsetzung <strong>de</strong>r Zahlenreihe z(p). Man hat damit eine periodische Folge<br />

von komplexen Zahlen. Diese kann auch als periodisches Zeilenbild aufgefasst wer<strong>de</strong>n und man kann<br />

die Fourier-Transformierte dieser Folge berechnen:<br />

ẑ ν = 1 P<br />

∫ P<br />

0<br />

( ) −2πiνp<br />

z(p) · exp<br />

P<br />

dp<br />

Die Fourierkoeffizienten ẑ ν wer<strong>de</strong>n als Fourier<strong>de</strong>skriptoren bezeichnet. Aus ihnen kann man die Kurve<br />

rekonstruieren:<br />

∞∑<br />

( ) 2πiνp<br />

z(p) = ẑ ν exp<br />

→ x(p)Re [z(p)], y(p)Im [z(p)]<br />

P<br />

ν=−∞<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 114 –


17 Formrepräsentation<br />

geometrische Deutung:<br />

ẑ 0 = 1 P<br />

Der erste Fourier<strong>de</strong>skriptor lautet:<br />

∫ P<br />

0<br />

z(p) dp = 1 P<br />

∫ P<br />

0<br />

x(p) dp + i P<br />

∫ P<br />

0<br />

y(p) dp = x + iy<br />

Dies ist gera<strong>de</strong> <strong>de</strong>r Schwerpunkt, bzw. Mittelpunkt <strong>de</strong>r Kurve. Hat nur <strong>de</strong>r zweite Desktiptor einen Beitrag,<br />

so wird aus obiger Summe:<br />

( ) 2πip<br />

z(p) = ẑ 1 exp = r 1 · e iϕ 1<br />

· e<br />

P } {{ }<br />

2πip/P = r 1 · e iϕ 1+2πip/P<br />

=ẑ 1 ∈C<br />

Dies beschreibt gera<strong>de</strong> einen Kreis mit Radius r 1 . Der Deskriptor ẑ −1 beschreibt ebenfalls einen Kreis,<br />

<strong>de</strong>r aber in <strong>de</strong>r entgegengesetzten Richtung umläuft. Zusammen beschreiben sie eine Ellipse:<br />

ẑ 1 + ẑ −1 = (r 1 + r −1 ) · cos(2πp/P ) + i · (r 1 − r −1 ) · sin(2πp/P )<br />

So fügen die Deskriptoren höherer Ordnung immer mehr Details zur Kurve hinzu.<br />

polare Fourier<strong>de</strong>skriptoren: Alternativ zur Abtastung mit äquidistanten Punkten kann man auch <strong>de</strong>n<br />

Abstand <strong>de</strong>s Ran<strong>de</strong>s zum Mittelpunkt in äquidistanten Winkelabstän<strong>de</strong>n messen. Dies führt auf eine<br />

Serie von Abstän<strong>de</strong>n r n , aus <strong>de</strong>nen man dann die sog. polaren Fourier<strong>de</strong>skriptoren berechnen kann.<br />

Objektsymmetrien: Hat das Objekt eine m-zahlige Rotationssymmetrie (z.B. Quadrat: m = 4, Linie:<br />

m = 2, gleichseitiges Dreieck: m = 3), so tragen nur die Fourier<strong>de</strong>skriptoren z 1±vm bei. Die an<strong>de</strong>re sind<br />

0. Für eine Linie tragen z.B. nur z ±1 , z ±3 , z ±5 , ... bei. Bei einem Qua<strong>de</strong>r nur z −7 , z −3 , z 1 , z ±5 , z ±9 , ....<br />

Invariante Objektbeschreibung:<br />

• positionsunabhängige Beschreibung: Die Position eines Objektes beeinflusst nur <strong>de</strong>n Koeffizienten<br />

ẑ 0 .<br />

• größenunabhängige Beschreibung: Wird ein Objekt um <strong>de</strong>n Faktor α vergrößert, so wer<strong>de</strong>n<br />

auch alle Fourier<strong>de</strong>skriptoren ν ≥ 1 mit α multipliziert. Man kann also alle Deskriptoren auf <strong>de</strong>n<br />

Deskriptor ẑ 1 normieren. Danach sind sie alle größenunabhängig und es gilt ẑ 1 = 1.<br />

• ausrichtungsunabhängige Beschreibung: Wird das Objekt um <strong>de</strong>n Winkel ϕ gedreht, so erhält<br />

je<strong>de</strong>r Deskriptor ẑ ν eine zusätzliche Phase ẑ ν → ẑ ν · e iϕ . Man kann diese Phase also aus allen<br />

Deskriptoren herausrechnen (normieren auf die Phase von ẑ 1 ) und erhält so eine rotationsunabhängige<br />

Beschreibung.<br />

Sämtliche wichtigen Invarianzen liegen also in <strong>de</strong>n ersten bei<strong>de</strong>n Deskriptoren ẑ 0 und ẑ 1 .<br />

Nachteile: Der einzige Nachteil <strong>de</strong>r sehr eleganten Fourier<strong>de</strong>skriptoren ist, dass sie gut bestimmte und<br />

äquidistante (!) Punkte (x i , y i ) auf <strong>de</strong>m Rand benötigen. Die Punkte, die sich aus <strong>de</strong>r 4er- und 8er-<br />

Nachbarschaft <strong>de</strong>r Kettenkodierung (siehe Abschnitt 17.2) ergeben sind lei<strong>de</strong>r für 8er-Nachbarschaften<br />

nicht äquidistant, sodass sie nicht als Ausgangsdaten taugen. Die Verwendung <strong>de</strong>r 4er-Nachbarschaft ist<br />

zwar möglich, <strong>de</strong>r Rand wird dadurch aber sehr ausgefranst. Deswegen müssen die Punkte auf Subpixel-<br />

Genauigkeit bestimmt wer<strong>de</strong>n, was lei<strong>de</strong>r nur schwer möglich ist.<br />

17.4 Formparameter<br />

Oft möchte man einfache Parameter eines Objektes bestimmen, wie z.B. Fläche, Umfang o<strong>de</strong>r Rundheit.<br />

Dies ist mit <strong>de</strong>n obigen Codierungen sehr einfach. Die Bestimmung dieser Parameter aus <strong>de</strong>n verschie<strong>de</strong>nen<br />

Bildrepräsentationen soll hier beschrieben wer<strong>de</strong>n:<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 115 –


17 Formrepräsentation<br />

Fläche: In einem Pixelbild muss man zur Flächenberechnung nur die Bildpunkte im Objekt zählen. Ist<br />

ein Objekt kettenkodiert kann man einfach numerisch über die Fläche integrieren. Man legt dazu eine<br />

Referenzlinie fest und läuft die einzelnen Bildpunkte ab. Man berechnet dann die Entfernung B i zu dieser<br />

Referenzlinie (in Pixeln) und addiert sie zur Fläche. Dann geht man zum nächsten Pixel über. Geht man<br />

dabei nach rechts unten, so gilt B i+1 = B i − 1 geht man nach rechts, so ist B i+1 = B i usw. Geht man<br />

nach unten, so ist B i+1 = B i −1, die Fläche nimmt aber nicht zu. In Abb. 17.4 ist das veranschaulicht.<br />

B 0 B 1<br />

Referenzlinie<br />

Abb. 17.4: Flächenberechnung mit Kettenco<strong>de</strong><br />

In <strong>de</strong>r Beschreibung mit Fourier<strong>de</strong>skriptoren ergibt sich die Fläche zu:<br />

A = π<br />

N∑<br />

2 −1<br />

µ=−N/2<br />

ν · |ẑ ν | 2<br />

Umfang: Der Umfang ist aus <strong>de</strong>r Kettenkodierung am einfachsten zu berechnen, in<strong>de</strong>m man die Kette<br />

einfach entlang läuft und die Abstän<strong>de</strong> aufaddiert. Aus <strong>de</strong>n Fourier<strong>de</strong>skriptoren lässt sich <strong>de</strong>r Umfang<br />

nicht direkt berechnen. Es ist zu beachten, dass <strong>de</strong>r Umfang vom Rauschen im Bild abhängt, weil <strong>de</strong>r<br />

Rand bei <strong>de</strong>r Segmentierung umso ausgefranster (länger) wird, je größer das Bildrauschen ausfällt.<br />

Rundheit: Die Rundheit c eines Objektes ist ein größenunabhängiger Formparameter. Er ergibt sich<br />

aus Umfang U und Fläche A:<br />

c = U 2<br />

A<br />

Die Rundheit setzt <strong>de</strong>n Umfang mit <strong>de</strong>r Fläche in Beziehung. Für ein i<strong>de</strong>al run<strong>de</strong>s Objekt (einen Kreis)<br />

erhält man c k = 4π2 r 2<br />

= 4π ≈ 12.6 Für ein Quadrat nur noch c<br />

πr 2<br />

q = (4L)2 = 16. Je run<strong>de</strong>r ein Objekt<br />

L 2<br />

ist, <strong>de</strong>sto kleiner wird c. Der Minimalwert ist <strong>de</strong>rjenige <strong>de</strong>s Kreises.<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 116 –


18 Klassifikation<br />

18.1 Problemstellung<br />

Bisher wur<strong>de</strong>n Bil<strong>de</strong>r soweit verarbeitet, dass sich Merkmale ergeben anhand <strong>de</strong>rer Regionen und Objekte<br />

im Bild in verschie<strong>de</strong>ne Klassen eingeordnet wer<strong>de</strong>n können. Ein Beispiel ist etwa verschie<strong>de</strong>ne<br />

Objekte in einem Bild zu unterschei<strong>de</strong>n. Zunächst wird ein solches Bild vorverarbeitet. Dabei wer<strong>de</strong>n<br />

die Objekte O i im Bild segmentiert. Danach wer<strong>de</strong>n beschreiben<strong>de</strong> Parameter <strong>de</strong>r Objekte bestimmt, wie<br />

etwa die Größe und an<strong>de</strong>re Formparameter o<strong>de</strong>r die Parameter <strong>de</strong>r Textur auf <strong>de</strong>n Objekten. Diese Eigenschaften<br />

<strong>de</strong>r Objekte wer<strong>de</strong>n zu sog. Merkmalsvektoren ⃗m i zusammengefasst. Die einzelnen Merkmale<br />

spannen damit <strong>de</strong>n Merkmalsraum auf. Je<strong>de</strong>m Objekt o i ordnet man also einen Punkt (Vektor) ⃗m i dieses<br />

Raumes zu. Die Aufgabenstellung ist nun die verschie<strong>de</strong>nen Objektklassen im Merkmalsraum zu<br />

unterschei<strong>de</strong>n. Wenn die Merkmale gut gewählt sind, so sollten sich ähnliche Objekte nahe beieinan<strong>de</strong>r<br />

im Merkmalsraum einfin<strong>de</strong>n (Kluster). Das ist in Abb. 18.1 schematisch für ein und zwei Merkmale<br />

illustriert.<br />

Bild:<br />

1D-Merkmalsraum<br />

als Histogramm:<br />

2D-Merkmalsraum:<br />

z.B. Pfefferkörner<br />

und Reis<br />

Häufigkeit<br />

Häufigkeit<br />

Pfeffer<br />

Reis<br />

Exzentrizität<br />

Reis&Pfeffer<br />

Größe<br />

m 2<br />

m 1<br />

m 2<br />

Exzentrizität<br />

Klasse:<br />

Reis<br />

Größe<br />

Klasse:<br />

Pfeffer<br />

Abb. 18.1: Merkmalsraum für ein einfaches Klassifikationsbeispiel von einem Bild mit Reis- und Pfefferkörnern<br />

m 1<br />

Es zeigt sich im 2D-Merkmalsraum (aufgespannt von <strong>de</strong>n Formparameter Größe/Fläche und Exzentrizität),<br />

dass die zwei Klassen Reis und Pfeffer gut zu unterschei<strong>de</strong>n sind (bis auf einige Ausreißer. Die<br />

1D-Merkmalsräume zeigen bei<strong>de</strong> eine bimodale Verteilung. Es zeigt sich aber, dass nur die Exzentrizität<br />

zur Klassifikation herangezogen wer<strong>de</strong>n kann, weil Reis und Pfeffer in etwa die selbe Größe haben.<br />

An diesem Beispiel sieht man die notwendigen Aufgaben bei <strong>de</strong>r Klassifizierung in <strong>de</strong>r Bildverarbeitung:<br />

1. Bildaufnahme<br />

2. Bildvorverarbeitung<br />

3. I<strong>de</strong>ntifizieren von sinnvollen Merkmalen (Der Versuch rechteckige und run<strong>de</strong> Papierschnipsel anhand<br />

<strong>de</strong>r Farbe zu unterschei<strong>de</strong>n wird scheitern)<br />

4. Auswahl eines Klassifikators<br />

5. evtl. Training <strong>de</strong>s Klassifikators mit Trainigsdatensatz und Evaluation <strong>de</strong>s Trainings<br />

6. Einsatz <strong>de</strong>s Klassifikators auf die zu verarbeiten<strong>de</strong>n Daten.<br />

117


18 Klassifikation<br />

Selektion von Merkmalen: Es gilt gute Merkmale zur Unterscheidung zu fin<strong>de</strong>n. Im obigen Beispiel<br />

wür<strong>de</strong> wohl auch die Exzentrizität zur Unterscheidung ausreichen, da die Größe keine sinnvolle neue<br />

Information liefert. Allgemein ist es nicht so, dass die Güte <strong>de</strong>r Klassifikation mit mehr Parametern<br />

automatisch zunimmt. Oft wird man bestimmte Klassen trotz einer i<strong>de</strong>alen Merkmalswahl nicht unterschei<strong>de</strong>n<br />

können. Dies kann z.B. auch daran liegen, dass es keine ein<strong>de</strong>utige Klassifizierung gibt. So<br />

können Zellen zwar normal o<strong>de</strong>r pathologisch sein, es können aber auch beliebige Abstufungen auftreten.<br />

U.U. <strong>de</strong>utet eine unmögliche Klassifizierung auch auf unzureichen<strong>de</strong> Bildaufnahme hin. Es ist also<br />

immer nötig auch zu untersuchen, ob eine Klassifizierung überhaupt nötig ist. Es ist auch zu beachten,<br />

dass die Komplexität und Laufzeit <strong>de</strong>s Klassifikators mit <strong>de</strong>r Anzahl <strong>de</strong>r Merkmale ansteigt.<br />

Hauptachsentransformation: Man betrachte folgen<strong>de</strong> Skizze in Abb. 18.2. Sie zeigt einen Merkmalsraum<br />

aus zwei Merkmalen m 1 , m 2 und eine Menge von Punkten, die klassifiziert wer<strong>de</strong>n sollen.<br />

m 2<br />

m 1<br />

Abb. 18.2: Merkmalsraum mit korellierten Merkmalen<br />

In diesem Raum sind die Merkmale offensichtlich korreliert. Ein hoher m 1 -Wert impliziert auch einen<br />

hohen m 2 -Wert. Um dies mathematisch auszudrücken betrachtet man die Kreuzkovarianzen σ pq <strong>de</strong>r<br />

Stichprobe, sowie die Varianzen σ pp :<br />

σ pp = ( m p − m p<br />

) 2<br />

σ pq = ( m p − m p<br />

)<br />

·<br />

(<br />

mq − m q<br />

)<br />

Die Kovarianz σ pq ist ein Maß für die Korrelation <strong>de</strong>r Merkmale m p und m q . Die Varianz σ pp ist ein<br />

Maß für die Streuung <strong>de</strong>r Merkmale. Ein gutes Merkmal sollte eine kleine Varianz aufweisen, weil dies<br />

auch kleine Kluster impliziert. Die σ pq lassen sich zur sog. Kovarianzmatrix zusammenfassen:<br />

⎛<br />

⎞<br />

σ 11 σ 12 · · · σ 1P<br />

σ 21 σ 22 · · · σ 2P<br />

Σ = ⎜<br />

⎝<br />

.<br />

. . ..<br />

⎟<br />

. ⎠<br />

σ P 1 σ P 2 · · · σ P P<br />

Bei unkorrelierten Merkmalen hat diese Matrix Diagonalgestalt. Bei korrelierten Merkmalen tragen auch<br />

die Kovarianzen bei. Man kann nun das Koordinatensystem im Merkmalsraum so drehen, dass Σ Diagonalgestalt<br />

hat. Dies ist in Abb. 18.3 veranschaulicht.<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 118 –


18 Klassifikation<br />

m' 2<br />

m 2<br />

m' 1<br />

m 1<br />

Abb. 18.3: Merkmalsraum mit korrelierten Merkmalen nach <strong>de</strong>r Hauptachsentransformation<br />

Es zeigt sich nun, dass das neue Merkmal m ′ 1 keine signifikante Aussage zur Klassifikation beitragen<br />

kann. Man kann so <strong>de</strong>n Merkmalsraum auf das neue Merkmal m ′ 2 einschränken. Seine Varianz ist relativ<br />

gering und die Verteilung damit eng und scharf. Es han<strong>de</strong>lt sich also um ein gutes Merkmal.<br />

überwachte Klassifizierung: Wird <strong>de</strong>r Klassifikator mit einem Trainingsdatensatz vor <strong>de</strong>r eigentlichen<br />

Klassifizierung trainiert, so spricht man von einem überwachten Verfahren. Dazu verwen<strong>de</strong>t man<br />

einen Datensatz, bei <strong>de</strong>m man die Klassifizierung bereits kennt und optimiert damit die Trennung <strong>de</strong>r<br />

Klassen im Merkmalsraum.<br />

unüberwachte Klassifizierung: Hierbei berechnet man direkt die Merkmalsvektoren <strong>de</strong>r zu klassifizieren<strong>de</strong>n<br />

Objekte und analysiert danach die Punkteverteilung im Merkmalsraum. Dieser Ansatz ist<br />

sicher objektiver (weil ohne Anwendung von Vorwissen), dafür ist die Trennung möglicherweise weniger<br />

gut. Hierbei muss auch die Anzahl <strong>de</strong>r Klassen vorher nicht bekannt sein.<br />

selbstlernen<strong>de</strong> Klassifizierung: Hierbei wird die Trennung im Merkmalsraum mit je<strong>de</strong>m neuen, zu<br />

klassifizieren<strong>de</strong>n Objekt angepasst. Ein solcher Ansatz hat <strong>de</strong>n Vorteil, dass er nicht steif vorgegeben ist,<br />

sich also an dynamische Situationen (zeitabhängige Daten, Beleuchtung etz.) anpassen kann.<br />

18.2 Einfache Klassifikationsverfahren<br />

Definition 18.1 (Klassifikator)<br />

Entscheidungsraum D abbil<strong>de</strong>t.<br />

Ein Klassifikator k ist eine Funktion, die vom Merkmalsraum M in <strong>de</strong>n<br />

k : M ↦→ D<br />

Der Entscheidungsraum ist ein Raum mit Q Elementen, zu je<strong>de</strong>r möglichen Klasse gehört ein Element.<br />

Im einfachsten Fall kann je<strong>de</strong>s Element die Werte 0 und 1 annehmen. Ordnet nun k ein Objekt mit <strong>de</strong>m<br />

Merkmalsvektor ⃗m ∈ M einer Klasse q zu, so ist das entsprechen<strong>de</strong> Element in D 1 und alle an<strong>de</strong>ren<br />

0. Eine weitere Möglichkeit wäre ein Wertebereich [0..1], wobei jeweils die Wahrscheinlichkeit für die<br />

Zugehörigkeit zu einer Klasse angegeben wird.<br />

Je<strong>de</strong>s <strong>de</strong>r folgen<strong>de</strong>n Verfahren kann für überwachtes und unüberwachtes Klassifizieren eingesetzt wer<strong>de</strong>n.<br />

Diese zwei Ansätze unterschei<strong>de</strong>n sich ja nur dadurch, wie die Einteilung <strong>de</strong>s Merkmalsraumes in<br />

Klassen vonstatten geht, nicht darin, wie die Klassifizierung eines neuen Objekte ⃗m ∈ M funktioniert.<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 119 –


18 Klassifikation<br />

18.2.1 Nachschaumetho<strong>de</strong><br />

Dies ist das einfachste Klassifizierungsverfahren. Der Merkmalsraum wird in diskrete Parzellen eingeteilt.<br />

Je<strong>de</strong>r Parzelle <strong>de</strong>s Merkmalsraumes wird eine Klasse zugeordnet. Überschnei<strong>de</strong>n sich zwei Klassen<br />

an einem Punkt wählt man z.B. diejenige mit <strong>de</strong>r höchsten Zugehörigkeitswahrscheinlichkeit aus. Ein<br />

neues Objekt mir Vektor ⃗m ∈ M wird dann je nach <strong>de</strong>r getroffenen Parzelle klassifiziert. Die meisten<br />

Parzellen wer<strong>de</strong>n wohl aber keiner Klasse zugeordnet wer<strong>de</strong>n.<br />

Für niedrig-dimensionale Räume M ist dies ein sehr schnelles Verfahren, da<br />

nur ein Tabellen-Lookup nötig ist. Dafür ist aber evtl. <strong>de</strong>r Speicherverbrauch<br />

für die Lookup-Tabelle sehr groß. Angenommen es gibt 3 Merkmale und 64<br />

Parzelle Pro Achse. Wird zu je<strong>de</strong>r Parzelle ein Byte gespeichert, so benötigt<br />

man bereits 64 3 = 0.256 <strong>MB</strong>yte für die Tabelle.<br />

m 2<br />

18.2.2 Qua<strong>de</strong>rmetho<strong>de</strong><br />

Hierbei wird je<strong>de</strong> Klasse im Merkmalsraum von einem Qua<strong>de</strong>r umgeben. Ist<br />

ein neuer Vektor ⃗m ∈ M innerhalb eines Qua<strong>de</strong>rs, so wird er als zugehörig<br />

klassifiziert. Liegt er außerhalb aller Qua<strong>de</strong>r, so gehört er zu keiner Klasse.<br />

Die Umschreibung von Qua<strong>de</strong>rn um Punktverteilungen funktioniert für run<strong>de</strong><br />

Verteilungen gut. Sind die Merkmale aber korreliert, so ist diese Metho<strong>de</strong><br />

eher schlecht (→ Hauptachsentransformation). Pro Dimension und Klasse<br />

wer<strong>de</strong>n hier 2 vergleiche benötigt. Also braucht man bei N Dimensionen<br />

und Q Klassen etwa 2 · P · Q Vergleiche.<br />

m 2<br />

schlecht<br />

gut<br />

m 1<br />

m 1<br />

18.2.3 Metho<strong>de</strong> <strong>de</strong>s geringsten Abstan<strong>de</strong>s<br />

Bei dieser Metho<strong>de</strong> wird je<strong>de</strong> Klasse durch ihren Schwerpunkt ⃗m q repräsen-<br />

tiert. Ein Objekt ⃗m ∈ M gehört dann zu <strong>de</strong>r Klasse, zu <strong>de</strong>r es <strong>de</strong>n geringsten<br />

(euklidischen) Abstand hat:<br />

m 2<br />

Q = min<br />

q<br />

|⃗m − ⃗m q | 2<br />

Dieses Verfahren führt zur rechts dargestellten Einteilung <strong>de</strong>s Raumes. Die<br />

Begrenzungslinien <strong>de</strong>r Cluster stehen senkrecht auf <strong>de</strong>n Verbindungslinien<br />

m 1<br />

<strong>de</strong>r Schwerpunkte. Dieses Verfahren kann leicht abgewan<strong>de</strong>lt und optimiert<br />

wer<strong>de</strong>n. So kann man etwa einen Skalierungsfaktor in die Abstandsberechnung<br />

einführen, <strong>de</strong>r dazu führt, dass <strong>de</strong>r notwendige Abstand zu wenig ausge<strong>de</strong>hnten Klustern geringer<br />

ist, als zu großen Klustern. O<strong>de</strong>r man <strong>de</strong>finiert einen Maximalabstand, <strong>de</strong>r ⃗m zu einem Zentrum haben<br />

darf. Liegt er außerhalb aller Maximalabstän<strong>de</strong>, so gehört er zu keiner Klasse.<br />

18.2.4 Metho<strong>de</strong> <strong>de</strong>r höchsten Wahrscheinlichkeit<br />

Diese Metho<strong>de</strong> mo<strong>de</strong>lliert je<strong>de</strong> Klasse als Wahrscheinlichkeitsverteilung<br />

(z.B. multivariate Normal-Verteilungen). Zu einem neuen Objekt ⃗m ∈ M<br />

wer<strong>de</strong>n dann die Wahrscheinlichkeiten p i berechnet, dass es zur Klasse i<br />

gehört. Es wird dann entwe<strong>de</strong>r in die Klasse mit <strong>de</strong>r höchsten Wahrscheinlichkeit<br />

eingeordnet, o<strong>de</strong>r es wer<strong>de</strong>n einfach die Wahrscheinlichkeiten zurückgegeben,<br />

um sie weiter auszuwerten.<br />

m 2<br />

m 1<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 120 –


Teil V<br />

Mathematische Formelsammlung<br />

121


19 Komplexe Zahlen<br />

Zunächst sind die Bil<strong>de</strong>r, die eine Kamera liefert ja reelle Bil<strong>de</strong>r, d.h. Je<strong>de</strong>m Bildpunkt ⃗x wird eine reelle<br />

Zahl g(⃗x) ∈ R zugeordnet. Oft ist es aber nötig auch komplexe Werte darzustellen. Hier sind <strong>de</strong>swegen<br />

kurz einige Rechenregeln für komplexe Zahlen zusammengestellt:<br />

1. Komplexe Einheit i:<br />

i := √ −1 ⇒ i 2 = −1,<br />

1<br />

i<br />

= −i (19.0.1)<br />

2. Normalform einer Zahl z ∈ C: Je<strong>de</strong> komplexe Zahl lässt sich als Summe darstellen:<br />

z = a + ib, a, b ∈ R, z ∈ C (19.0.2)<br />

Im(z)<br />

b<br />

z=a+ib<br />

|z|<br />

<br />

a<br />

Re(z)<br />

Abb. 19.1: Komplexe Zahlenebene<br />

Dies entspricht einem Punkt (a, b) in <strong>de</strong>r komplexe Zahlenebene (siehe Abb. 19.1). Es wer<strong>de</strong>n<br />

noch die folgen<strong>de</strong>n Operatoren eingeführt:<br />

3. Polarform einer Zahl z ∈ C:<br />

Re {a + ib} = a, Im {a + ib} = b (19.0.3)<br />

z = a + ib = |z| · (cos ϕ + i · sin ϕ) = |z| · e iϕ , absz := √ a 2 + b 2 (19.0.4)<br />

Die Interpetation <strong>de</strong>s Winkels ϕ liefert Abb. 19.1. er berechnet sich zu:<br />

tan ϕ = y x<br />

(19.0.5)<br />

4. Addition komplexer Zahlen:<br />

5. Multiplikation komplexer Zahlen:<br />

z 1 + z 2 = a 1 + a 2 + i · (b 1 + b 2 ) (19.0.6)<br />

z 1 · z 2 = a 1 a 2 − b 1 b 2 + i · (a 1 b 2 + a 2 b 2 ) = |z 1 | · |z 2 | · e i(ϕ 1+ϕ 2 )<br />

(19.0.7)<br />

122


19 Komplexe Zahlen<br />

6. Komplexe Konjugation:<br />

Damit gelten die folgen<strong>de</strong>n Rechenregeln:<br />

z ∗ = (a + ib) ∗ := a − ib (19.0.8)<br />

z ∗ · z = |z| 2 (19.0.9)<br />

z + z ∗ = 2 · Re {z}, z − z ∗ = 2i · Im {z} (19.0.10)<br />

7. Betrag von Summen: In <strong>de</strong>r Quantenmechanik treten manchmal Ausdrücke <strong>de</strong>r Form |z 1 + z 2 | 2<br />

auf. Dafür gilt:<br />

|z 1 + z 2 | 2 = |a 1 + ib 2 + a 2 + ib 2 | 2 = a 2 +c 2 +2ac+b 2 +d 2 +2bd = a 2 +b 2 +c 2 +d 2 +2(ac+bd) =<br />

= |z 1 | 2 + |z 2 | 2 + Re {z 1 · z ∗ 2} (19.0.11)<br />

Etwas allgemeiner erhält man:<br />

∣ ∑ ∣∣∣∣<br />

2<br />

z i = ∑ ∣<br />

i<br />

i<br />

|z i | 2 + ∑ i<br />

∑<br />

Re {z i · zj ∗ } (19.0.12)<br />

j≠i<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 123 –


Anhang<br />

124


Abbildungsverzeichnis<br />

1.1 Übersicht über die einzelnen Schritte einer Klassifizierung in <strong>de</strong>r Bildverarbeitung . . . 8<br />

2.1 Beispiele für RGB-Farben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10<br />

2.2 verschie<strong>de</strong>ne raumfüllen<strong>de</strong> 2D-Gitter . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11<br />

2.3 2D-Nachbarschaftsbeziehungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12<br />

3.1 1D-Sinus- und Cosinus-Schwingungen, mit unterschiedlicher Phase und Frequenz. . . . 13<br />

3.2 zur Definition <strong>de</strong>s 2D-Wellenvektors . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14<br />

3.3 Wellenstrukturen in 2D-Bil<strong>de</strong>rn, mit verschie<strong>de</strong>nen Frequenzen und Ausrichtungen . . . 16<br />

3.4 Fourier-Reihendarstellung einer Sägezahnfunktion (grün: Sägezahn, rot: Fourierreihe).<br />

Es wer<strong>de</strong>n die ersten ein bis vier Koeffizienten berücksichtigt. . . . . . . . . . . . . . . 18<br />

3.5 alle Basisfunktionen in Real- und Imaginärteil für eine N = 16 DFT . . . . . . . . . . . 20<br />

<strong>3.6</strong> Mit <strong>de</strong>r DFT können nur periodische Strukturen bis zu einer gewissen Grenzfrequenz (2<br />

Bildpunkte pro Schwingung) dargestellt wer<strong>de</strong>n. . . . . . . . . . . . . . . . . . . . . . 20<br />

3.7 Real- und Imaginärteil <strong>de</strong>r Basismatritzen für eine 16 × 16-2D-DFT . . . . . . . . . . . 22<br />

3.8 Auswirkung <strong>de</strong>r vernachlässigung von Real- und Imaginäreteil, bzw. Betrag o<strong>de</strong>r Phase<br />

im Fourierraum. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23<br />

3.9 glatte und weniger glatte Funktion (oben) und ihre kompakte bzw. ausge<strong>de</strong>hnte Fourier-<br />

Transformierte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25<br />

3.10 geometrische Interpretation <strong>de</strong>r Periodizität <strong>de</strong>s Kerns <strong>de</strong>r 1D-DFT . . . . . . . . . . . . 26<br />

4.1 Abtastung mit einer CCD-Kamera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29<br />

4.2 Fehler bei <strong>de</strong>r 1D-Abtastung (Aliasing-Effekte) . . . . . . . . . . . . . . . . . . . . . . 30<br />

4.3 Falte eines Vorhangs (dünnes Gitter <strong>de</strong>s Stoffes), mit Moiré-Mustern (mit freundlicher<br />

Genehmigung von Julia Ziegler) und Moiré-Effekte beim Rasterdruck . . . . . . . . . . 31<br />

4.4 Quantisierung eines Bil<strong>de</strong>s mit unterschiedlich vielen Grau- und Farbstufen . . . . . . . 33<br />

5.1 Quadtree eines Bil<strong>de</strong>s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35<br />

6.1 Spreizung <strong>de</strong>s Grauwertbereiches eines Bil<strong>de</strong>s . . . . . . . . . . . . . . . . . . . . . . . 38<br />

6.2 Spreizung <strong>de</strong>s Grauwertbereiches mit einer γ-Transformation . . . . . . . . . . . . . . . 39<br />

6.3 Effekt <strong>de</strong>r Mittelung von N verrauschten Bil<strong>de</strong>rn . . . . . . . . . . . . . . . . . . . . . 40<br />

6.4 Kalibrierung <strong>de</strong>s Absorbtionsbil<strong>de</strong>s eines Bose-Einstein-Kon<strong>de</strong>nsates (dunkler Fleck)<br />

mit einem Referenzbild, aber ohne Dunkelbild (d mn = 0). Die Ringe im Referenzund<br />

Originalbild sind die die Störung durch das Abbildungssystem, die herausgefiltert<br />

wer<strong>de</strong>n sollen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40<br />

6.5 Effekt eines Sinus-Fensters auf die FFT . . . . . . . . . . . . . . . . . . . . . . . . . . 41<br />

6.6 verschie<strong>de</strong>ne geometrische Transformationen . . . . . . . . . . . . . . . . . . . . . . . 41<br />

7.1 Beispiel einer Faltungsmaske (Laplace-Filter) und anschauliche Darstellung <strong>de</strong>r Faltungsoperation<br />

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43<br />

7.2 Prinzip verschie<strong>de</strong>ner Randbedingungen und die Fehler, die dabei auftreten können. Es<br />

wur<strong>de</strong> ein 3 × 3 Mittelwert-Filter eingesetzt . . . . . . . . . . . . . . . . . . . . . . . . 44<br />

7.3 Medianfilter: Prinzip und Anwendung auf ein Testbild . . . . . . . . . . . . . . . . . . 47<br />

7.4 Minimums- und Maximums-Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48<br />

125


Abbildungsverzeichnis<br />

8.1 Darstellung von 1D-Daten und Bilddaten in verschie<strong>de</strong>nen Auflösungen . . . . . . . . . 50<br />

8.2 Veranschaulichung <strong>de</strong>r Berechnung <strong>de</strong>r Laplace-Pyrami<strong>de</strong> . . . . . . . . . . . . . . . . 52<br />

8.3 Erzeugung eines Skalenraumes durch Diffusion am Beispiel eines zufälligen und eines<br />

perioschen 1D-Signals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54<br />

9.1 Anwendung von 1D- und 2D-Rechteckfiltern. Im 2D-beispiel wur<strong>de</strong> <strong>de</strong>r Filter rechts<br />

oben und links unten angewen<strong>de</strong>t. Der Rest <strong>de</strong>s Bil<strong>de</strong>s zeigt das Ausgangsmuster. . . . . 57<br />

9.2 Transferfunktionen von 1D- und 2D-Rechteckfilter verschie<strong>de</strong>ner Breite . . . . . . . . . 58<br />

9.3 Binomialverteilung für p = 1 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59<br />

9.4 Transferfunktion verschie<strong>de</strong>ner Binomialfilter . . . . . . . . . . . . . . . . . . . . . . . 60<br />

10.1 differentielle Merkmalsbeschreibung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64<br />

10.2 Kombination von Glättung und Ableitung in einem Filter . . . . . . . . . . . . . . . . . 66<br />

10.3 Darstellung <strong>de</strong>r Punkte mit Betrag 1 zur euklidischen und zur L1-Norm . . . . . . . . . 67<br />

10.4 Transferfunktion <strong>de</strong>s Filters D ⃗ 2x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68<br />

10.5 erste und zweite Ableitung von verrauschten Daten . . . . . . . . . . . . . . . . . . . . 68<br />

10.6 Anwendung <strong>de</strong>s Laplace-Filters auf ein Testbild . . . . . . . . . . . . . . . . . . . . . . 69<br />

10.7 Transferfunktion <strong>de</strong>s einfachen Laplace-Filters . . . . . . . . . . . . . . . . . . . . . . 69<br />

10.8 Erste und Zweite Ableitung einer Gauß-Kurve. Man sieht die Ähnlichkeit zur i<strong>de</strong>alen<br />

Transferfunktion von Gradienten- und Laplace-Operatoren. . . . . . . . . . . . . . . . . 71<br />

11.1 Berechnung <strong>de</strong>s Strukturtensors eines Beispielbil<strong>de</strong>s . . . . . . . . . . . . . . . . . . . 77<br />

11.2 Regressionsgera<strong>de</strong> an die Fourier-Transformierte einer einfachen Nachbarschaft . . . . . 78<br />

11.3 Beispiel für lokalen Wellenzahlen und Phasen . . . . . . . . . . . . . . . . . . . . . . . 79<br />

12.1 verschie<strong>de</strong>ne Texturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83<br />

12.2 Verschie<strong>de</strong>ne Texturen mit <strong>de</strong>m selben Grauwerthistogramm . . . . . . . . . . . . . . . 84<br />

12.3 Mit Mittelwert und Varianz ununterscheidbare Histogramme . . . . . . . . . . . . . . . 84<br />

12.4 verschie<strong>de</strong>n Bandpass-gefilterte Bil<strong>de</strong>r einer Gardine (Original ganz links) . . . . . . . . 85<br />

13.1 Projektion einer 3D-Bewegung (Geschwindigkeit ⃗v) auf die Kamera-Ebene (optischer<br />

Fluss f). ⃗ Es zeigt sich, dass verschie<strong>de</strong>ne Bewegungen ⃗v und ⃗v ′ auf <strong>de</strong>n selben optischen<br />

Fluss f ⃗ führen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86<br />

13.2 Illustration zum Blen<strong>de</strong>nproblem, nach [Jähne 2005] . . . . . . . . . . . . . . . . . . . 86<br />

13.3 Bewegungs<strong>de</strong>tektion durch Differenzbildung. Die Differenzbil<strong>de</strong>r sind kontrastverstärkt.<br />

Das linke Differenzbild zeigt <strong>de</strong>n Effekt einer Beleuchtungsän<strong>de</strong>rung. Im rechten Bild<br />

wur<strong>de</strong> <strong>de</strong>r Wecker verschoben. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87<br />

13.4 Object-Tracking: Es wer<strong>de</strong>n zwei Bil<strong>de</strong>r einer Sequenz verglichen. Rechts sind die Bil<strong>de</strong>r<br />

überlagert und die Bewegungsvektoren sind eingezeichnet (optischer Fluss f). ⃗ Man<br />

erkennt, dass die Metho<strong>de</strong> nicht ein<strong>de</strong>utig ist (rechts unten!) . . . . . . . . . . . . . . . 88<br />

13.5 Bewegung in Raum und Zeit für eine 1D und eine 2D Bildsequenz. Die dicke grüne Linie<br />

bezeichnet jeweils die Bewegung. Auf <strong>de</strong>n flanken <strong>de</strong>r 2D-Sequenz sind Schnitte durch<br />

das Bild aufgezeichnet. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88<br />

1<strong>3.6</strong> Veranschaulichung zur Kontinuitätsgleichung . . . . . . . . . . . . . . . . . . . . . . . 91<br />

14.1 Van-Critter-Iteration auf einem weich-gezeichneten Testbild . . . . . . . . . . . . . . . 96<br />

15.1 bimodale Histogramme zweier Bil<strong>de</strong>r . . . . . . . . . . . . . . . . . . . . . . . . . . . 98<br />

15.2 Segmentierung eines Bil<strong>de</strong>s mit <strong>de</strong>m Schwellenwertverfahren mit verschie<strong>de</strong>nen Schwellenwerten<br />

s. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99<br />

15.3 Größen-Fehler beim Segmentieren bei verschie<strong>de</strong>n hellen Objekten . . . . . . . . . . . 99<br />

15.4 Festlegung <strong>de</strong>s Schwellenwertes s bei linearen und nicht-linearen Kanten . . . . . . . . 100<br />

15.5 Ununterscheidbare Objekte beim kantenbasierten Segmentieren . . . . . . . . . . . . . 100<br />

15.6 Mo<strong>de</strong>llierung einer Kante im Bild mit Verschmierung und Beleuchtung . . . . . . . . . 101<br />

15.7 Veranschaulichung <strong>de</strong>s pyramid-linking-Verfahrens . . . . . . . . . . . . . . . . . . . . 102<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 126 –


Abbildungsverzeichnis<br />

15.8 falsches Mo<strong>de</strong>ll (Bild 1) für die Daten (Bild 2) . . . . . . . . . . . . . . . . . . . . . . . 103<br />

15.9 Beispiel zur 1D-Hough-Transformation . . . . . . . . . . . . . . . . . . . . . . . . . . 104<br />

15.10Verschie<strong>de</strong>ne Versuche eine Funktion f an die messdaten zu fitten. rechts ist das Fehlerfunktional<br />

gezeigt. Es muss das Minimum aufgesucht wer<strong>de</strong>n. . . . . . . . . . . . . . . 104<br />

16.1 Anwendung von Dilatation und Erosion auf Testbil<strong>de</strong>r . . . . . . . . . . . . . . . . . . 108<br />

16.2 Öffnen und Schließen mit einer 3 × 3-Maske auf ein Testbild angewen<strong>de</strong>t. . . . . . . . . 110<br />

17.1 Trägheitstensor eines Objektes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113<br />

17.2 Kettencodierung eines Objektes mit verschie<strong>de</strong>nen Nachbarschaften . . . . . . . . . . . 114<br />

17.3 äquidistante Abtastung einer 2D-Kurve (rot) mit P = 21 Punkten . . . . . . . . . . . . 114<br />

17.4 Flächenberechnung mit Kettenco<strong>de</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116<br />

18.1 Merkmalsraum für ein einfaches Klassifikationsbeispiel von einem Bild mit Reis- und<br />

Pfefferkörnern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117<br />

18.2 Merkmalsraum mit korellierten Merkmalen . . . . . . . . . . . . . . . . . . . . . . . . 118<br />

18.3 Merkmalsraum mit korrelierten Merkmalen nach <strong>de</strong>r Hauptachsentransformation . . . . 119<br />

19.1 Komplexe Zahlenebene . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 127 –


A Weblinks<br />

• Canny-Filter:<br />

http://en.wikipedia.org/wiki/Canny<br />

• Gauß- und Laplace-Pyrami<strong>de</strong>:<br />

http://www.cis.u<strong>de</strong>l.edu/~qili/ta/cis489/2/in<strong>de</strong>x.html<br />

• Hilbert-Transformation :<br />

http://en.wikipedia.org/wiki/Hilbert_transform<br />

• Hough-Transformation:<br />

http://www.cs.tu-bs.<strong>de</strong>/rob/lehre/bv/Hough.html<br />

• MatLab:<br />

http://www.prip.tuwien.ac.at/Teaching/SS/EFMEN/links.html<br />

• Segmentierung:<br />

http://www.mathematik.uni-ulm.<strong>de</strong>/stochastik/lehre/ws05_06/seminar/<br />

sauter.pdf<br />

•<br />

128


Literaturverzeichnis<br />

[Boas 1983] Boas, Mary L. (1983): Mathematical Methods In The Physical Science, 2. Auflage, New<br />

York - Brisbane - Toronto - Singapore: Wiley.<br />

[Jähne 2005] Jähne, Bernd (2005): Digitale Bildverarbietung, 6. Auflage, New York - Berlin - Hei<strong>de</strong>lberg:<br />

Springer.<br />

[Haußecker, Spieß 1999] Haußecker, H, Spies, H (1999): Chapter 13 Motion, in: Handbook of Computer<br />

Vision and Applications, Volume 2 (Signal Processing and Pattern Recognition), Aca<strong>de</strong>mic<br />

Press<br />

[Kah<strong>de</strong>r etal. 2001] Kah<strong>de</strong>r, M.H., Basser, P.j., Parker, D.L., Alesan<strong>de</strong>r, A.L. (2001): Analytical Computation<br />

of Eigenvalues and Eigenvectors in DT-MRI, in: Journal of Magnetic Resonance<br />

152, S. 41-47<br />

129


In<strong>de</strong>x<br />

δ-Kamm, 31<br />

γ-Transformation, 39<br />

γ-Wert, 10<br />

γ-Korrektur, 10, 39<br />

Ähnlichkeitsbedingung, 105<br />

Öffnen, 109<br />

Überabtastung, 32<br />

überwachte Klassifizierung, 119<br />

2D-DFT, 21<br />

Abtast-Theorem, 50<br />

Abtastpunkt, 29<br />

Abtasttheorem, 20, 29<br />

Abtastung/Digitalisierung, 28<br />

Aliasing, 30<br />

Amplitu<strong>de</strong>, 14<br />

analytisches Signal, 80<br />

anisotrope Diffusion, 106<br />

Assoziativität, 45<br />

bandbegrenztes Signal, 30<br />

Bandpass, 27, 50, 51, 94<br />

Betragsberechnung, 66<br />

Bewegungserkennung, 86<br />

Bewegungsfeld, 90<br />

Bil<strong>de</strong>rzeugung, 28<br />

Bildmittelung, 39<br />

Bildpunkt, 9<br />

bimodales Histogramm, 98<br />

Binärbild, 98, 107<br />

Binomialfilter, 51, 58, 71<br />

Binomialkoeffizienten, 58<br />

Binomialverteilung, 59<br />

Blen<strong>de</strong>nproblem, 86, 91<br />

Canny-Filter, 71<br />

Canny-Kanten<strong>de</strong>tektion, 71<br />

CCD-Kamera, 29<br />

Closing, 109<br />

CMYK, 10<br />

Cosinus (cos), 13<br />

Cosinus-Transformation, 27<br />

darkfield, 40<br />

Delta-Kamm, 31<br />

DFT, 19<br />

Difference-of-Gaussian-Filter, 72<br />

Diffusionsgleichung, 53<br />

Digitalkamera, 29<br />

Dilatation, 41, 107<br />

diskrete Differenzen, 67<br />

Diskrete Fourier-Transformation, 19<br />

Diskretisierungsgitter, 29<br />

Distributivität, 45, 109<br />

DoG-Filter, 72<br />

Dreieckgitter, 11<br />

Dualität, 109<br />

Dunkelbild, 40<br />

dyadische Punktoperation, 37<br />

dynamischer Bereich, 20<br />

Ecke, 64<br />

einfache Nachbarschaft, 73<br />

einstellbare Mittelung, 62<br />

Entscheidungsraum, 119<br />

Erosion, 107<br />

Euler-Lagrange-Gleichungen, 105<br />

Expansionsoperator, 51<br />

exponentieller Skalenraum, 54<br />

Faltung, 42, 63<br />

Faltungstheorem, 25, 32<br />

Farbbild, 10<br />

Farbsystem, 10<br />

Fast-Fourier-Transformation, 27<br />

Fehlerfunktional, 104<br />

Fensterfunktion, 31, 41<br />

FFT, 27<br />

Fick’sches Gesetz, 53<br />

Finite-Impulse-Response-Filtern, 45<br />

FIR-Filter, 45<br />

Fläche, 116<br />

Formparameter, 115<br />

Fourier-Darstellung, 16<br />

Fourier-Entwicklung, 16<br />

Fourier-Reihe, 16<br />

Fourier<strong>de</strong>skriptoren, 114<br />

Frequenz, 13<br />

Gaborfilter, 82<br />

Gamma-Korrektur, 10<br />

Gauß’sches Rauschen, 60<br />

Gauß-Filter, 51, 53<br />

Gauß-Pyrami<strong>de</strong>, 50, 102<br />

Gaußfilter, 71<br />

geometrische Transformationen, 41<br />

gera<strong>de</strong> Symmetrie, 43<br />

gespiegelter Rand, 44<br />

gewichtete Mittelung, 62<br />

Gitter, 11<br />

Glättungsfilter, 56<br />

Glattheit, 25<br />

Glattheitsbedingung, 105<br />

Gradientenfilter, 71<br />

130


In<strong>de</strong>x<br />

Grauwert, 9<br />

Haartransformation, 27<br />

Hadamardtransformation, 27<br />

Hartley-Transformation, 27<br />

Hauptachsentransformation, 118, 120<br />

Hilbert-Filter, 80<br />

Hilbert-Transformation, 80<br />

Hilbertfilter, 79, 94<br />

Hilberttransformation, 79<br />

Hit-Miss-Operator, 110<br />

homogene Koordinaten, 41<br />

homogene Punktoperation, 37<br />

Horner-Schema, 96<br />

Hough-Transformation, 103<br />

HSB, 10<br />

IIR-Filter, 48<br />

Infinite-Impulse-Response-Filter, 48<br />

inhomogene Diffusion, 106<br />

inverse Filterung, 95<br />

Kante, 64<br />

kantenbasierte Segmentierung, 100<br />

Kanten<strong>de</strong>tektion, 64<br />

kausaler Filter, 48<br />

Kern, 26<br />

Klassifikation, 117<br />

Klassifikator, 119<br />

Kluster, 117<br />

Kohärenzmaß, 76<br />

Kommutativität, 45, 109<br />

Kompaktheit, 25<br />

Komplexe Zahl, 122<br />

Komplexe Zahlenebene, 122<br />

Kontinuierliche Mo<strong>de</strong>llierung, 104<br />

Kontinuitätsgleichung, 53<br />

Korrelationsmetho<strong>de</strong>, 93<br />

Kovarianzmatrix, 118<br />

Kreuzkorrelationskoeffizient, 94<br />

Kreuzkovarianz, 118<br />

Lämgenskala, 50<br />

Lagrange-Funktion, 105<br />

Lagrange-Gleichungen, 105<br />

Laplace-of-Gaussian-Filter, 72<br />

Laplace-Operator, 69<br />

Laplace-Pyrami<strong>de</strong>, 50, 51, 94<br />

Laplacepyrami<strong>de</strong>, 85<br />

laufen<strong>de</strong>r Mittelwert, 57<br />

Lauflängenkodierung, 34<br />

Least-Square-Fit, 70, 104<br />

Lempel-Ziv-Welch-Algorithmus, 35<br />

lineare Spreizung, 38<br />

lineare verschiebungsinvariante Filter, 42<br />

Linearität, 44<br />

Linie, 64<br />

LoG-Filter, 72<br />

Lokale Fourier-Transformation, 27<br />

lokale Nachbarschaft, 90<br />

lokale Phase, 78, 94<br />

lokale Wellenzahl, 78<br />

Lookup-Table, 37<br />

LSI, 42<br />

LUT, 37, 38<br />

LZW-Algorithmus, 35<br />

Medianfilter, 62<br />

Mehrdimensionale Fourier-Transformation, 21<br />

Mehrschrittmittelung, 61<br />

Merkmalsraum, 117<br />

Merkmalsvektor, 117<br />

Metho<strong>de</strong> <strong>de</strong>r höchsten Wahrscheinlichkeit, 120<br />

Metho<strong>de</strong> <strong>de</strong>s geringsten Abstan<strong>de</strong>s, 120<br />

Minimum-Maximum-Prinzip, 54<br />

Mittelung, 56<br />

Mittelwert, 84<br />

Mo<strong>de</strong>ll, 103<br />

mo<strong>de</strong>llbasierte Segmentierung, 103<br />

Mo<strong>de</strong>llierung, 103<br />

Moduloarithmetik, 10<br />

Moiré-Mustern, 30<br />

Monotonie, 109<br />

Morphologie, 107<br />

morphologische Operation, 107<br />

Multiskalenrepräsentation, 50<br />

Nachbarschaft, 73<br />

Nachbarschaftsbeziehungen, 11<br />

Nachbarschaftsoperation, 42<br />

Nachschaumetho<strong>de</strong>, 120<br />

Nagelbrettfunktion, 31<br />

Newton-Raphson-Verfahren, 94<br />

nicht-lineare Störungen, 40<br />

nichtlineare und steuerbare Mittelung, 62<br />

normalisierte Faltung, 63<br />

nullphasiger Filter, 56<br />

Object-Tracking, 87<br />

octree, 34<br />

Opening, 109<br />

Operatornotation, 42<br />

optischer Fluss, 86, 90<br />

Orientierung, 73<br />

Ortsraum, 50<br />

Parameterraum, 103<br />

Phase, 14<br />

Phasenmetho<strong>de</strong>, 94<br />

Phasenschieber, 80<br />

Phasenverschiebung, 65<br />

Pixel, 9<br />

Pixelgitter, 11<br />

pixelorientierte Segmentierung, 98<br />

polare Fourier<strong>de</strong>skriptoren, 115<br />

Polarform, 122<br />

Punktantwort, 45, 48<br />

Punktoperation, 37<br />

Pyramid-Linking, 102<br />

Qua<strong>de</strong>rmetho<strong>de</strong>, 120<br />

quadratintegrable Funktion, 18<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 131 –


In<strong>de</strong>x<br />

quadratischer Skalenraum, 54<br />

Quadraturfilter, 94<br />

quadtree, 34<br />

Quantisierung, 28<br />

räumliche Frequenz, 13<br />

räumliche Informationen, 50<br />

Rückfaltung, 95<br />

radiometrische Zweipunkt-Korrektur, 40<br />

Ran<strong>de</strong>ffekte bei Faltungen, 43<br />

Rangordnungsfilter, 47<br />

Reaktions-Diffusions-System, 105<br />

Rechteckfilter, 57<br />

Rechteckgitter, 11<br />

Region-Growing, 101<br />

Regionenbild, 98<br />

regionenorientierte Segmentierung, 101<br />

regularisierter Kanten<strong>de</strong>tektor, 70<br />

Rekursive Mittelung, 61<br />

rekursives Filter, 48, 61<br />

RGB, 10<br />

Richtung, 73<br />

Richtungsketten, 113<br />

Richtungszerlegung, 94<br />

Richtungszerlegungen, 52<br />

RLE, 34<br />

Rotation, 41<br />

run length encoding, 34<br />

Rundheit, 116<br />

Trainingsdatensatz, 119<br />

Transferfunktion, 46, 49<br />

Translation, 41<br />

Umfang, 116<br />

unüberwachte Klassifizierung, 119<br />

ungera<strong>de</strong> Symmetrie, 43<br />

unitäre Transformation, 26<br />

Van Critter Iteration, 96<br />

Varianz, 62, 84, 118<br />

Varianzbild, 62<br />

Variationsmetho<strong>de</strong>, 104<br />

Verschiebung, 24<br />

Verschiebungsfreiheit, 56, 65<br />

Verschiebungsinvarianz, 45, 108<br />

Verschiebungsoperator, 45<br />

Vollständigkeitsrelation, 16<br />

Wellenfront, 15<br />

Wellenlänge, 13<br />

Wellenvektor, 15, 21<br />

Wellenzahl, 13<br />

Wichtungsbild, 63<br />

z-Transformation, 49<br />

Zahlenbereich, 9<br />

zyklische Faltung, 44<br />

zyklische Fortsetzung, 44<br />

Sättigungsarithmetik, 10<br />

Salt-and-Pepper-Rauschen, 60<br />

Scherung, 41<br />

Schließen, 109<br />

Schwarz-Weiß-Bild, 34, 113<br />

Schwebung, 20<br />

Schwellenwert-Verfahren (Segmentierung), 98<br />

Secheckgitter, 11<br />

Segmentierung, 98<br />

selbstlernen<strong>de</strong> Klassifizierung, 119<br />

Separabilität, 24<br />

Sinus (sin), 13<br />

Sinus-Fenster, 41<br />

Sinus-Transformation, 27<br />

Skala, 50<br />

Skalenparameter, 53<br />

Skalenraumtheorie, 52<br />

Sobel-Filter, 71<br />

Split-and-Merge, 101<br />

stabiler Filter, 49<br />

Standardabtastung, 32<br />

Stauchung, 41<br />

Strukturelement, 108<br />

Superpositionsprinzip, 108<br />

Symmetrie, 65<br />

Textur, 83<br />

Tiefpass, 51<br />

Tiefpassfilter, 56<br />

Trägheitsellipsoi<strong>de</strong>n, 113<br />

Trägheitstensor, 78<br />

c○ 2006 by Jan Krieger (http://www.<strong>jkrieger</strong>.<strong>de</strong>/) – 132 –

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!