Forum: Digitale Signalverarbeitung / DSP / Machine Learning Verständnisproblem Faltung von 2 Bildern


von David D. (manfred0)


Lesenswert?

Guten Morgen,

ich würde gerne die Ähnlichkeit von 2 Bildern feststellen und da würde 
sich ja eine Faltung dieser anbieten. Es handelt sich um reine 
Grauwertbilder.
Ich würde nun das eine über das andere Zeilen und Spaltenweise über das 
andere schieben.
Bei der Rechenoperation bin ich mir aber etwas unsicher. Mein Ansatz 
wäre, dass ich in dem sich aktuelle überlappenden Bildbereich alle Pixel 
durchgehe und die Anzahl der Pixel zählen deren Grauwerte 
übereinstimmen. Bei 2 10x10 Bildern hätte ich dann ein 20x20 Array und 
der höchste Wert in diesem Array würde die Verschiebungsposition mit der 
größten Übereinstimmung wiedergeben.

Nun lese ich aber häufiger davon, dass man in der Praxis die FFT 
einsetzt um Bildfaltungsoperationen durchzuführen. Leider ist mir da die 
Vorgehensweise nicht ganz klar. Durch die FFT habe ich für jedes Pixel 
einen Realteil, einen Imaginärteil und eine Phaseninformation. Nun stehe 
ich auf dem Schlauch wie ich diese Information für eine Faltung 
verwenden könnte.

Besteht die Möglichkeit, dass mir jemand erklärt wie ich mithilfe der 
FFT die Ähnlichkeit von 2 Bildern feststellen kann?

Danke

von Steffen E. (steffen23)


Lesenswert?

Also der Weg über die FFT ist sozusagen der Umweg über einen 
Hilfsbereich. Die Faltung ist der Originalbereich. Wenn man beide Teile 
mittels FFT in den Bildbereich bringt, kann man dort statt der Faltung 
einfach eine Multiplikation machen. Das Ergebnis wäre dann noch mittels 
iFFT wieder zurück zu transformieren.

Diese Verfahren sind bei Bildern üblich, wenn es um Kompression geht. 
Hier würde ich dir mal ein Blick in JPEG raten. Dort wird eine 
Blockweise DCT gemacht (diskrete Kosinustransfomation), auch eine Art 
FFT.

Ich habe so was bei Bildern noch nicht mit den Ziel der Ähnlchkeit 
gemacht, aber Grundlegend ist dass der Weg.

von fulfisk (Gast)


Lesenswert?

Hi,

Schau mal zum Thema Parseval-Gleichung, im Prinzip ist ne 
Faltung/Korrelation im Ortsraum eine Multiplikation/konjugierte 
Multiplikation im Frequenzraum.
Dabei handelt es sich um eine komplexe Multiplikation, die Du mehr oder 
weniger optimiert auf den verschiedenen Plattformen umsetzen kannst 
(wenn Speed überhaupt gefragt ist).

Die Methode, Grauwerte zu vergleichen und zu zählen haut dann genau 
nicht hin, wenn Du kleine Abweichungen der 'passenden' Grauwerte 
voneinander hast. Mit der Korrelation (siehe Wikipedia o.ä.) passiert 
das nicht, am Ende machst Du dann nach der Rücktransformation den 
üblichen Maximum-Search.

Gibt verschiedene Bibliotheken, die das erledigen. (Ich hätte auch noch 
irgendwo eine für Bilder mit 2er-Potenz-Dimensionen).

von Interessierter (Gast)


Lesenswert?

Wie würde man die FFT eines Bildes zu interpretieren haben? - Eine FFT 
benötigt einen definierten Datenbereich, wie weit spannt man den auf? 
Ein Bild = alle Zeilen, eine Zeile? Eine Pixelgruppe?

Nehmen wir einen Punkt und seine Umgebung von n Punkten: Dann erhalte 
ich für jeden Punkt eine FFT, die mir die Frequenzen in seiner Umgebung 
angeben. Diese wären je nach Kontrast entsprechend belegt. Beim 
Vergleich der FFTs (jeweils je ein IST-Pixel mit einem Soll-Pixel) 
bekomme ich einen Grad an Übereinstimmung - soweit wäre mir das klar. 
Liegen die Bilder auseinander, ist dieser Grad besonders hoch.

Wo aber ist nun der Vorteil der Verwendung der FFT?

Ich kann doch auch das Bild selber mit dem Sollbild verknüpfen und 
bekomme einen peak dort, wo die Übereinstimmung am Besten ist.

von David D. (manfred0)


Lesenswert?

Danke erst einmal für eure Anregungen.

Bibliotheken und Algorithmen die mir Ergebnisse liefern besitze ich 
(ImageJ, OpenCV, AForge....die Werkzeugvielfalt ist groß).
Probleme macht mir die Theorie dahinter ich habe Anfangs versucht 
Veränderungen über Differenzbilder zu ermitteln aber damit konnte ich 
nur feststellen ob sich ein Bild verändert hat und nicht ob sich ein 
Objekt auf dem Bild bewegt, verzogen oder gedreht wurde. Wenn dann noch 
etwas rauschen auf der Aufnahme ist, kann man diese Methodik komplett 
vergessen.

Ich bin dann auf die Faltung bzw. Bildkorrelation gestolpert und 
versuche nun diese schnellen Algorithmen dahinter zu verstehen. Wenn ich 
einzeln Pixeldaten aufsummiere frisst das einfach zu viel Zeit und die 
Operationen mithilfe der FFT und bei Bildern mit Bildbreite und Höhe 2^n 
liefen erstaunlich schnell Ergebnisse daher ist das Interesse an der 
Theorie dahinter sehr groß.
Ich habe aber jetzt erstmal wieder genug Stichworte um mir etwas Lektüre 
aus der Bibliothek zu besorgen.

von Kai S. (kai1986)


Lesenswert?

Hallo,

als Literatur kann ich das Buch "Fouriertransformation für Fußgänger" 
von Tilman Butz empfehlen. Darin wird die Fouriertransformation bis hin 
zur Funktionsweise von Fensterfunktionen und FFT sehr gut verständlich 
mit vielen Beispielen erklärt.

Gruß Kai

von Bildverwursteler (Gast)


Lesenswert?

Gibt es dazu auch etwas konkret zur Bildverarbeitung?

von David D. (manfred0)


Lesenswert?

Bildverwursteler schrieb:
> Gibt es dazu auch etwas konkret zur Bildverarbeitung?

Wenn es um die Theorie zur FFT und DCT bei Bildern geht mit ein paar 
Programmierbeispielen empfehle ich dir 
http://www.amazon.de/Digitale-Bildverarbeitung-Eine-Einf%C3%BChrung-ImageJ/dp/3540309403/

Es werden auch einige Worte über die Faltung verloren mit dem Vermerk 
"Ein von manchen Studenten völlig zu Unrecht gefürchtetes Mysterium" wo 
ich schmunzeln musste.

von Kai S. (kai1986)


Lesenswert?

Bildverwursteler schrieb:
> Gibt es dazu auch etwas konkret zur Bildverarbeitung?

Nein, Fouriertransformation für Fußgänger behandelt die Bildverarbeitung 
im spezellen nicht. Es beschränkt sich auf die Fouriertransformation, 
erklärt aber deren Grundlage sehr gut. Für jemanden, der einfach was 
fertiges zum Anwenden sucht ist das Buch das falsche, wenn jemand die 
Grundlagen verstehen möchte ist das Buch geeignet.

Gruß Kai

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.