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
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.
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).
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.
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.
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.