Ich verstehe nicht, wie Frequenzen in Bildern / Fotografien definiert sind. So weit ich es jetzt verstehe, sind hohe Frequenzen wie scharfe Dinge in Bildern, wie Kanten oder so, und niedrige Frequenzen sind irgendwie das Gegenteil?
Ich möchte auch das Ergebnis von diskreten Fourier-Transformationen verstehen, wie man sie richtig liest.
Es wäre cool, wenn mir jemand folgendes erklären könnte:
Was sind Frequenzen in Bildern und wie sind sie definiert?
Wie liest man das Ergebnis einer diskreten Fourier-Transformation?
terminology
image-processing
Jakob Abfalter
quelle
quelle
Antworten:
Ich werde nur die erste Frage beantworten: Was sind Frequenzen in Bildern?
Die Fourier-Transformation ist eine mathematische Technik, bei der die gleichen Bildinformationen nicht für jedes Pixel einzeln, sondern für jede Frequenz dargestellt werden. Denken Sie so darüber nach. Das Meer hat Wellen, von denen einige sehr langsam sind (wie Gezeiten), andere mittelgroß und wieder andere winzig wie die Wellen, die sich aus einer Böe bilden. Sie können sich diese Wellen als drei separate Wellen vorstellen, aber an jedem Punkt der Meeresoberfläche und zu einem bestimmten Zeitpunkt erhalten Sie nur eine Wasserhöhe.
Gleiches gilt für Bilder. Sie können sich vorstellen, dass das Bild aus verschiedenen Wellen oder Frequenzen besteht. Beginnen Sie mit der Durchschnittsfarbe, um Ihr Bild zu erstellen (Graustufenbilder sind in Wirklichkeit einfacher). Fügen Sie dann Wellen mit unterschiedlichen Wellenlängen und Stärken hinzu, um langsam Details im Bild aufzubauen.
Quellbild:
Erste Frequenz (Durchschnitt):
Die zweite Frequenz entlang der vertikalen Dimension ist eine Welle, die am unteren Bildrand bei Null beginnt, ansteigt, am zentrierten Horizont wieder zu Null wird und unter Null fällt, um am oberen Bildrand schließlich zu Null zu werden. (Ich habe eine Fourier-Reihe ohne Phasenverschiebung beschrieben, aber die Analogie ist immer noch gültig.)
Hier sehen Sie die zweite Frequenz in horizontaler und vertikaler Richtung. Beachten Sie, dass Sie erkennen können, wo der Berg sein wird (dunkel) und wo der Himmel und der See sein werden (heller).
Zweite Frequenz:
Jede zusätzliche Welle oder Frequenz bringt mehr Wellen und somit mehr Details mit sich. Um verschiedene Bilder zu erhalten, können die Wellenhöhe / -amplitude sowie der Startpunkt der Welle, auch Phase genannt, geändert werden.
Dritte Frequenz:
Interessanterweise ist die Informationsmenge in dieser Darstellung gleich und man kann zwischen normalen Bildern (räumlicher Bereich) und fouriertransformierten Bildern (Frequenzbereich) hin- und herschalten. Im Frequenzbereich müssen wir Informationen über alle Frequenzen zusammen mit der Amplituden- und der Phaseninformation aufbewahren.
Hier werden 50% der Frequenzen genutzt:
Es gibt Varianten von alledem, wobei zwischen Fourier-Reihen, Fouriertransformation und diskreter Fouriertransformation und diskreter Cosinustransformation (DCT) unterschieden werden muss.
Eine interessante Anwendung ist die Verwendung von Kompressionsalgorithmen wie JPEG. Hier wird die DCT verwendet, um mehr der wichtigen Teile des Bildes (die niedrigen Frequenzen) und weniger der hohen Frequenzen zu speichern.
Ich schrieb dies in der Hoffnung, dass Anfänger ein grundlegendes Verständnis für die Idee der Fourier-Transformationen erlangen können. Dafür habe ich einige Vereinfachungen vorgenommen, von denen ich hoffe, dass die fortgeschritteneren Leser mir vergeben werden.
Animiert
Das von Thomas Devoogdt erstellte Video kann bei Vimeo angesehen werden .
Frequenzen in der Nachbearbeitung
Es gibt zahlreiche Methoden, die sich bei der Nachbearbeitung auf Frequenzen stützen, vor allem, weil wir einzelne Pixel nie einzeln betrachten. Viele Algorithmen arbeiten mit der Frequenz, weil es natürlicher ist, sie auf diese Weise zu betrachten. Aber auch weil die Fourier-Transformation die gleichen Informationen enthält, können wir jede mathematische Operation (oder jeden Nachbearbeitungsschritt) in der Frequenz- und der räumlichen Domäne ausdrücken! Manchmal ist die pixelweise Beschreibung besser, aber oft ist die Frequenzbeschreibung besser. (Besser heißt in diesem Zusammenhang vor allem schneller.)
Eine Technik, auf die ich ohne besonderen Grund hinweisen möchte, außer dass es Künstler sind, die direkt mit Frequenzen arbeiten, und das ist * Frequenztrennung *. Ich werde es nicht beschreiben, aber Sie können sehen, wie es auf YouTube sowohl für Photoshop als auch für GIMP funktioniert.
Sie erstellen zwei Ebenen, eine mit den niedrigen und eine mit den hohen Frequenzen. Bei Porträts können Sie Hautglättungen bei hohen Frequenzen vornehmen, ohne die Hauttöne bei niedrigen Frequenzen zu beeinträchtigen.
Code
Dies ist ein Code zum Generieren der obigen Beispiele. Es kann als einfaches Python-Programm ausgeführt werden.
quelle
Ich werde versuchen, es mit möglichst einfachen mathematischen Begriffen zu erklären. Wenn Sie die Mathematik überspringen möchten, fahren Sie mit Teil II fort, wenn Sie die kurze Antwort erhalten möchten, fahren Sie mit Teil III fort
Teil I
Die Frequenz eines Signals gibt an, wie oft ein sich wiederholendes Ereignis pro Zeiteinheit auftritt. Wenn also die Zeiteinheit Sekunden ist, wird die Frequenz mit Herz gemessen: 1 Hz = 1 / s. Ein Signal mit 100 Hz hat also ein Muster, das sich 100 Mal pro Sekunde wiederholt.
Das grundlegendste Signal (vom Standpunkt der Signalverarbeitung) ist ein Sinussignal.
y (t) = sin (2πft)
Dabei ist f die Frequenz dieses Sinussignals und t die Zeit. Wenn dieses Signal ertönt und f ungefähr 50 Hz beträgt, hören Sie einen sehr tiefen Basston. Bei einer höheren Frequenz wie 15 kHz ist der Ton höher.
Um das Konzept zu verallgemeinern, könnte das Signal ein räumliches Signal sein, anstelle eines zeitlichen Signals ... als ob Sie die Sinuswelle auf ein Stück Papier zeichnen würden, wobei die mit x bezeichnete Achse nach rechts zeigt und die y-Achse senkrecht steht zur x-Achse.
y (x) = sin (2πfx)
Dabei ist f die Frequenz des Signals und x die räumliche Variable. f wird hier nicht mehr mit 1 / s gemessen, sondern mit 1 / (Raumeinheit).
Fourier, ein französischer Mathematiker, hat gezeigt, dass Sie jedes Signal erzeugen können, indem Sie eine Reihe von Sinus- und Cosinussignalen mit unterschiedlichen Amplituden und Frequenzen hinzufügen. Das nennt man Fourier-Analyse.
Mit der Fourier-Analyse ist es möglich, jede Funktion y (x) als Summe von Sinus- und Cosinussignalen mit unterschiedlichen Frequenzen zu schreiben, sodass eine Funktion y (x) in Bezug auf mehrere Funktionen in Bezug auf die Frequenz Y (f) umgeschrieben werden kann. Man kann sagen, dass y (x) = Some_Function (Y (f)) ist. oder Y (f) = Reverse_of_Some_Function (y (x))
Die Fourier-Transformation ist die Funktion F, die ein Signal von der x-Domäne in die Frequenzdomäne transformiert.
F ist eine analoge Funktion. Diskrete Fouriertransformation DFT ist die numerische Approximation von F. Schnelle Fouriertransformation FFT ist eine Möglichkeit, eine DFT zu erstellen, die für die Geschwindigkeit optimiert ist.
In Ordnung...
Teil II
Jetzt bestehen Computerbilder aus Pixeln, und jedes Pixel hat einen Intensitätswert für Rot-, Grün-, Blau- oder RGB-Werte. In Graustufenbildern ist die Intensität für R, G, B eines Pixels gleich, R = G = B = I, damit wir für Graustufenbilder über I sprechen können.
Das folgende 800 x 100 Pixel große Graustufenbild wurde unter Verwendung von I (x) = sin (2πfx) erzeugt, wobei f = 1 Wiederholung / 800 x 0,00125 Wiederholung / px
Sie können es mit Python3 selbst generieren
Das folgende 800 x 100 Pixel große Graustufenbild wurde unter Verwendung von I (x) = sin (2πfx) erzeugt, wobei f = 10 Wiederholungen / 800 Pixel = 0,0125 Wiederholungen / px
Nun ist leicht zu erkennen, dass dieses Bild eine horizontale Frequenz von 10 hat. Erhöhen wir die Frequenz um den Faktor 10, so dass n = 100. f = 100/800 = 1/8 = 0,125 Wiederholungen / px:
Wie bereits erwähnt, können Sie jedes Signal (1D-Graustufenbild) als Summenserie von Sinussignalen (1D-Graustufen-Sinusbilder) mit unterschiedlichen Frequenzen darstellen.
Teil III
Ein 1D-Graustufenbild A hat also höhere Frequenzen als ein anderes Graustufenbild B, wenn A "feinere" Details aufweist.
Sie können dieses Prinzip auf farbige 2D- und sogar 3D-Bilder verallgemeinern. Je feiner die "Details" eines Bildes sind, desto höher ist der Frequenzinhalt dieses Bildes.
Ein blauer Himmel hat also eine niedrige Frequenz im Vergleich zu einem Bild einer Blume.
Weitere Informationen hierzu finden Sie in den Abschnitten zur Fourier-Analyse und zur digitalen Bildverarbeitung.
quelle
Kurz gesagt bezieht sich die Häufigkeit auf die Änderungsrate. Genauer gesagt, ist die Frequenz der Kehrwert der Periode des Wechsels , die von einer Helligkeit (oder was auch immer) in eine anderen Helligkeit und wieder zurück zu Zyklus ist, nimmt die Menge an Zeit, die . Je schneller die Änderung erfolgt (z. B. von hell nach dunkel), desto höher ist die visuelle "Frequenz", die zur Darstellung dieses Bildteils erforderlich ist.
Mit anderen Worten, Sie können sich die Frequenz in einem Bild als Änderungsrate vorstellen. Teile des Bildes, die sich schnell von einer Farbe zur anderen ändern (z. B. scharfe Kanten), enthalten hohe Frequenzen, und Teile, die sich allmählich ändern (z. B. große Flächen mit Volltonfarben), enthalten nur niedrige Frequenzen.
Wenn wir über DCT und FFT und andere ähnliche Transformationen sprechen, machen wir diese normalerweise für einen Teil eines Bildes (z. B. für JPEG-Komprimierung, Kantenerkennung usw.). Es ist daher am sinnvollsten, über die Transformationen im Kontext eines Transformationsblocks einer bestimmten Größe zu sprechen .
Stellen Sie sich einen 32 x 32 Pixel großen Block mit Bilddaten vor. (Diese Zahl ist willkürlich.) Angenommen, das Bild ist ein einfacher Farbverlauf, der auf der linken Seite weiß, in der Mitte schwarz und auf der rechten Seite weiß ist. Wir würden sagen, dass dieses Signal eine Periode hat, die ungefähr eine Wellenlänge pro 32 Pixel Breite beträgt, da es alle 32 Pixel einen vollständigen Zyklus von Weiß nach Schwarz nach Weiß durchläuft.
Wir könnten diese Frequenz willkürlich "1" - 1 Zyklus pro 32 Pixel nennen, das heißt. Ich erinnere mich vage daran, dass dies in transformierten Lehrbüchern häufig als θ oder vielleicht als θ / 2 bezeichnet wird, aber ich könnte mich an etwas Falsches erinnern. In beiden Fällen nennen wir es vorerst 1, da dies absolut willkürlich ist. Was zählt, ist die Beziehung zwischen Frequenzen in einem relativen Sinne. :-)
Angenommen, Sie haben ein zweites Bild, das an einer Kante weiß ist und dann doppelt so schnell ausgeblendet wird, sodass es an der anderen Kante von weiß zu schwarz, zu weiß, zu schwarz und wieder zu weiß wechselt. Wir würden diese Frequenz dann "2" nennen, weil sie sich über die Breite dieses 32-Pixel-Blocks doppelt so oft ändert.
Wenn wir diese einfachen Bilder reproduzieren wollen, können wir wörtlich sagen, dass jede Zeile aus einem Signal mit einer Frequenz von 1 oder 2 besteht und Sie wissen, wie die Bilder aussehen. Wenn die Bilder von Schwarz auf 50% Grau geändert würden, könnten Sie dasselbe tun, aber Sie müssten sagen, dass sie eine Frequenz von 1 oder 2 bei einer Intensität von 50% hatten.
Bilder aus der realen Welt sind natürlich nicht nur ein einfacher Farbverlauf. Das Bild ändert sich häufig und nicht regelmäßig, wenn Sie von links nach rechts scannen. Innerhalb eines ausreichend kleinen Blocks (z. B. 8 Pixel, 16 Pixel) können Sie diese Pixelreihe als Summe einer Reihe von Signalen approximieren, beginnend mit dem Durchschnitt der Pixelwerte in der Reihe, gefolgt von der Menge der " Frequenz 0,5 "-Signal (einseitig schwarz, weiß verblassend) zum Einblenden (oder mit einem negativen Betrag, dem Betrag des zu subtrahierenden Signals), gefolgt von dem Betrag von Frequenz 1, Frequenz 2, Frequenz 4 usw. .
Ein Bild ist nun insofern einzigartig, als es eine Frequenz in beide Richtungen aufweist. es kann heller und dunkler werden, wenn es sich sowohl horizontal als auch vertikal bewegt. Aus diesem Grund verwenden wir 2D-DCT- oder FFT-Transformationen anstelle von 1D. Das Prinzip ist aber im Grunde immer noch dasselbe. Sie können ein 8x8-Bild mit einem 8x8-Raster aus ähnlich großen Eimern präzise darstellen.
Bilder sind auch wegen der Farben komplexer, aber wir werden dies vorerst ignorieren und davon ausgehen, dass wir nur ein einziges Graustufenbild betrachten, wie Sie es möglicherweise durch isolierte Betrachtung des roten Kanals eines Fotos erhalten.
Das Lesen der Ergebnisse einer Transformation hängt davon ab, ob Sie eine 1D-Transformation oder eine 2D-Transformation betrachten. Für eine 1D-Transformation haben Sie eine Reihe von Behältern. Der erste ist der Durchschnitt aller Eingabewerte. Die zweite ist der Betrag des Signals der Frequenz 1, der addiert werden soll, die dritte ist der Betrag des Signals der Frequenz 2, der addiert werden soll, usw.
Für eine 2D-Transformation haben Sie ein n x n- Wertegitter. Die obere linke Ecke ist in der Regel der Durchschnitt. Wenn Sie in horizontaler Richtung arbeiten, enthält jeder Bereich die Signalmenge, die mit einer Horizontalfrequenz von 1, 2, 4 usw. gemischt werden soll, und wenn Sie in vertikaler Richtung arbeiten, die Signalmenge ist die Signalmenge, die mit einer vertikalen Frequenz von 1, 2, 4 usw. gemischt werden soll.
Das ist natürlich die ganze Geschichte, wenn Sie von einem DCT sprechen. Im Gegensatz dazu enthält jeder Bin für eine FFT Real- und Imaginärteile. Die FFT basiert immer noch auf der gleichen Grundidee (Art von), außer dass die Art und Weise, wie die Frequenzen auf Bins abgebildet werden, anders ist und die Mathematik haariger ist. :-)
Natürlich ist der häufigste Grund, diese Art von Transformationen zu generieren, einen Schritt weiter zu gehen und einige der Daten wegzuwerfen. Beispielsweise wird die DCT bei der JPEG-Komprimierung verwendet. Durch Lesen der Werte in einem Zick-Zack-Muster, beginnend mit der oberen linken Ecke (dem Durchschnitt) und in Richtung der unteren rechten Ecke, werden die wichtigsten Daten (die Durchschnitts- und Niederfrequenzinformationen) zuerst aufgezeichnet, gefolgt von zunehmend höherfrequenten Daten. Irgendwann sagt man im Grunde "das ist gut genug" und wirft die Daten mit der höchsten Frequenz weg. Dadurch wird das Bild im Wesentlichen geglättet, indem die feinen Details verworfen werden. Sie erhalten jedoch ungefähr das richtige Bild.
Und manchmal werden FFTs mit IIRC auch für die Kantenerkennung verwendet, bei der Sie alle Komponenten außer den Hochfrequenzkomponenten wegwerfen, um die Bereiche mit hohem Kontrast an scharfen Kanten zu erkennen.
National Instruments hat einen schönen Artikel , der dies mit Bildern erklärt. :-)
quelle
Stellen Sie sich vor, Sie scannen das Bild zeilenweise mit einer Fotozelle und leiten die Ergebnisse an einen Plotter (diese flachen Maschinen, die schwarze Wellen auf Papier erzeugen), ein Oszilloskop (diese Kästchen, die flimmernde grüne Wellen auf einem Bildschirm erzeugen) oder einen Spektrumanalysator (größere Kästchen, die dies ermöglichen) machen grüne oder mehrfarbige Lattenzäune). Oder sogar einen Lautsprecher. Je feiner die Strukturen in einem Bild sind, desto höher sind die Frequenzen (die Tonhöhe im Lautsprecher) des angezeigten / gehörten Signals. Je kontrastreicher die Feinstrukturen sind, desto höher ist die Amplitude der hochfrequenten Signalanteile.
quelle
Das Ergebnis einer zweidimensionalen FFT zu lesen ist ... Nun, schwierig. Grundsätzlich liegt die Ausgabe im Bereich komplexer Zahlen.
Ich kann Ihnen keine sehr detaillierte Beschreibung geben, weil ich das meiste selbst vergessen habe, aber im Grunde genommen haben Sie eine Zerlegung, die sich als die Summe einer Reihe von Exponentialen von imaginären Zahlen ausdrückt.
Es gibt Frequenztransformationen, die für die Bildverarbeitung nützlicher sind als die DFT, wie die Kosinustransformation (die beispielsweise bei der JPEG-Codierung verwendet wird und nur reelle Koeffizienten aufweist) und die verschiedenen Arten von Wavelets.
quelle