Eine interaktive Einführung in die Fouriertransformation

Jez Swanson

Übersetzt von Joni Rousu und Frank H. Dürkopf

Die Fouriertransformation ist ein Werkzeug, das für eine Vielzahl verschiedener Anwendungen genutzt werden kann. Diese Seite ist eine Einführung in die Funktionsweise und Anwendung der Fouriertransformation. Sie zeigt außerdem, wie man damit schöne Dinge machen kann, wie zum Beispiel das hier:

Ich werde erklären, wie die Animation funktioniert und dabei die Fouriertransformation erläutern!

Am Ende solltest du ein gutes Verständnis davon haben,

Wir werden die Mathematik und Gleichungen zunächst außen vor lassen. Es steckt eine Menge interessanter Mathematik dahinter, aber es ist besser als erstes damit anzufangen zu erklären was sie eigentlich tut und warum du sie nutzen willst. Wenn du mehr über das Wie wissen möchtest, gibt es unten weitere Literaturempfehlungen.

Also was ist dieses Ding?

Einfach gesagt ist die Fouriertransformation ein Verfahren etwas in eine Menge von Sinuswellen zu zerlegen. Wie gewöhnlich stammt der Name von einer Person, die vor langer Zeit gelebt hat und sich Fourier nannte.

Lasst uns mit einigen einfachen Bespielen beginnen und uns weiter nach oben arbeiten. Als erstes schauen wir uns Wellen an - Muster, die sich mit der Zeit widerholen.

Hier ist eine Beispielwelle:

Dieses Wellenmuster kann in Sinuswellen zerlegt werden. Wenn wir die zwei Sinuswellen addieren, bekommen wir die Originalwelle zurück.

Die Fouriertransformation ist für uns eine Möglichkeit die kombinierte Welle zu nehmen und jede einzelne darin enthaltene Sinuswelle zurück zu erhalten. In diesem Beispiel kann man es fast im Kopf machen, indem man die originale Welle betrachtet.

Warum? Es stellt sich heraus, dass eine große Zahl von Dingen in der echten Welt basierend auf Sinuswellen interagieren. Üblicherweise nennen wir sie die Frequenzen der Wellen.

Das offensichtlichste Beispiel ist Klang - wenn wir einen Klang hören, hören wir nicht die verschnörkelte Linie, aber die verschiedenen Frequenzen der Sinuswelle, die den Klang ausmacht.

Weil wir die Frequenzen auf einem Computer zerlegen können, gibt uns das eine Erklärung dafür, was eine Person wirklich hört. Wir verstehen, wie hoch oder tief der Klang ist oder die Note herausfinden.

Wir können diesen Prozess auch auf Wellen anwenden, die nicht so aussehen, als würden sie aus Sinuswellen bestehen.

Schauen wir uns dieses Ding an. Es wird Rechtecksignal genannt.

Es sieht vielleicht nicht so aus, aber es kann auch in Sinuswellen zerlegt werden.

Diesmal brauchen wir sehr viele davon - genau genommen eine unendliche Menge, um es perfekt darzustellen. Je mehr wir addieren, umso mehr nähern wir uns dem Rechtecksignal an, mit dem wir gestartet sind.

Ziehe den Schieberegler oben, um die Anzahl der Sinuswellen zu verändern.

Visuell wirst du bemerken, dass die ersten paar Sinuswellen den größten Einfluss haben. Mit dem Schieberegler in der Mitte haben wir den prinzipiellen Verlauf der Welle, aber er ist sehr wackelig. Wir brauchen noch den Rest der kleinen Wellen, um das Verwackeln auszuglätten.

Wenn du dir die Welle anhörst, wird der Klang tiefer werden, weil wir die höheren Frequenzen entfernen.

Dieser Prozess funktioniert genauso mit jedem sich wiederholenden Verlauf. Probiere es aus, versuche deinen eigenen Verlauf zu zeichnen!

Zeichne hier!

Bewege den Schieberegler, um zu sehen, wie sich mit dem Hinzufügen von immer mehr Wellen wir näher und näher an deine Zeichnung kommen.

Nochmal, abgesehen von der Wackeligkeit, sieht die Welle schon mit der Hälfte der Sinuswellen sehr ähnlich aus.

Tatsächlich können wir es zu unserem Vorteil nutzen, dass die Welle sehr ähnlich aussieht. Mit der Anwendung der Fouriertransformation erhalten wir die wichtigen Anteile des Klangs und speichern nur diese, um etwas zu erhalten, was dicht am Originalklang ist.

Normalerweise speichert ein Computer eine Welle als Reihe von Abtastungen.

Stattdessen können wir sie auch als Sinuswellen darstellen. Dann komprimieren wir den Klang und ignorieren die kleineren Frequenzen. Das Endresultat ist zwar nicht dasselbe, aber es klingt für eine Person sehr ähnlich.

Das ist im Wesentlichen das, was MP3s machen, außer, dass sie besser entscheiden können welche Frequenzen genutzt und welche verworfen werden.

In diesem Fall können wir die Fouriertransformation benutzen, um die fundamentalen Eigenschaften einer Welle zu verstehen und sie dann für beispielsweise Kompression zu nutzen.

Ok, steigen wir tiefer in die Fouriertransformation ein. Der nächste Abschnitt schaut cool aus, gibt dir aber auch ein bisschen mehr Verständnis darüber, was die Fouriertransformation macht. Aber hauptsächlich sieht es cool aus.

Epizyklen

Zu Beginn sagte ich, die Fouriertransformation spaltet Dinge in Sinuswellen auf. Es ist aber tatsächlich so, dass die Wellen, die erzeugt werden, keine normalen Sinuswellen sind, sondern sie in 3D sind. Man könnte sie "komplexer Sinus" nennen. Oder einfach "Spirale".

Wenn wir sie uns von der Seite ansehen, dann schauen sie aus wie Sinuswellen. Von vorn wie Kreise.

Was wir bisher gemacht haben, erforderte nur reguläre 2D Sinuswellen. Wenn wir eine Fouriertransformation auf 2D Wellen anwenden, dann kürzen sich die komplexen Anteile heraus, sodass wir nur Sinuswellen erhalten.

Aber wir können die 3D Sinuswellen für etwas lustiges, wie dies hier verwenden:

Was passiert hier?

Wir können uns die Zeichnung als 3D Form vorstellen, weil sie sich mit der Zeit bewegt. Wenn du dir vorstellst, dass die Hand von einer Person gezeichnet wird, stellen die drei Dimensionen die Position der Stiftspitze im zeitlichen Moment dar. Die X- und Y-Dimension geben die Position an, die zeitliche Dimension bestimmt die Zeit in diesem Moment.

Jetzt, da wir ein 3D Muster haben, können wir nicht die regulären 2D Sinuswellen benutzen, um es darzustellen. Egal wie viele der 2D Sinuswellen wir addieren, kommen wir nie auf etwas in 3D. Also brauchen wir etwas anderes.

Was wir benutzen können, sind die 3D Spiral-Sinuswellen von eben. Wenn wir davon sehr viele addieren, dann erhalten wir etwas, was aussieht wie unser 3D Muster.

Merke, diese Wellen sehen von vorn wie Kreise aus. Das Muster eines Kreises, welcher sich um einen anderen Kreis bewegt nennt man Epizyklus.

Benutze den Schieberegler, um die Anzahl der Kreise einzustellen.

Wie zuvor erhalten wir eine gute Annäherung an unser Muster mit nur ein paar Kreisen. Weil dies ein sehr simples Muster ist, werden von den letzten Wellen nur die Ecken etwas geschärft.

Das funktioniert wirklich bei allen Zeichnungen! Dies ist deine Chance damit herumzuspielen.

Zeichne hier!

Benutze den Schieberegler, um die Anzahl der Kreise einzustellen.

Du wirst wieder für die meisten Formen erkennen, dass wir sie mit einer kleinen Anzahl von Kreisen sehr gut darstellen können, statt alle Punkte zu speichern.

Können wir das auch für echte Daten benutzen? Ja, könnten wir! In Wirklichkeit haben wir ein Datenformat namens SVG, welches vermutlich eine bessere Arbeit bei Formen und Mustern, die wir erzeugen, leistet. Vorerst ist es nur dazu da, um coole kleine GIFs zu erstellen.

Aber es gibt noch einen anderen Typ von Bilddateien, welcher die Fouriertransformation verwendet.

JPEGs

Wusstest du, dass die Fouriertransformation auch für Bilder benutzt werden kann? Wir benutzen sie ständig, denn so funktionieren JPEGs. Wir wenden die gleichen Prinzipien auf Bilder an, indem wir sie in eine Reihe von Sinuswellen zerlegen und dann nur die Wichtigsten speichern.

Jetzt, wo wir es mit Bildern zu tun haben, brauchen wir einen anderen Typ von Sinuswellen. Wir brauchen etwas, damit egal welches Bild wir haben, wir eine große Zahl von diesen Sinuswellen addieren können, um das Ursprungsbild zu erhalten.

Um das zu erreichen, muss jede unserer Sinuswellen ebenfalls ein Bild sein. Statt einer Welle, welche eine Linie ist, haben wir Bilder mit weißen und schwarzen Sektionen. Um die Größe einer Welle darzustellen, hat jedes Bild mehr oder weniger Kontrast.

Wir können sie außerdem dafür benutzen, um in ähnlicher Weise Farben darzustellen, aber bleiben wir zu Beginn erstmal bei Schwarz-Weiß-Bildern. Um farblose Bilder darzustellen, benötigen wir horizontale Wellenbilder,

zusammen mit vertikalen Wellenbildern.

Für sich allein, sind nur horizontale und vertikale Bilder nicht genug, um Bilder wie wir sie kennen darzustellen. Wir brauchen noch ein paar zusätzliche Bilder, die wir durch die Multiplikation beider Arten erhalten.

×
=

Für ein 8x8 Bild sind hier alle Bilder, die wir benötigen.

Wenn wir die Bilder nehmen, ihren Kontrast auf das richtige Maß anpassen und addieren, können wir damit jedes erdenkliche Bild erzeugen.

Lass uns mit dem Buchstaben "A" anfangen. Er ist sehr klein, aber er muss klein sein, sonst erhalten wir viel zu viele andere Bilder.

Wenn wir mehr und mehr von diesen Bildern addieren, nähern wir uns immer mehr dem eigentlichen Bild an. Ich denke, du wirst das Muster hier erkennen, da wir eine vernünftige Approximation mit ein paar von ihnen erhalten.

Für echte JPEG Bilder gibt es noch einige extra Details.

Das Bild wird in 8x8 Blöcke zerlegt und jeder Block wird separat aufgeteilt. Wir nehmen einen Satz von Frequenzen, um zu bestimmen, wie hell oder dunkel jedes Pixel ist. Anschließend nehmen wir weitere zwei Sätze für die Farbe, einen für rot-grün, den anderen für blau-gelb. Die Anzahl der Frequenzen, welche wir für jeden Block verwenden, bestimmt die Qualität des JPEG.

Hier ist ein echtes JPEG, hineingezoomt, um die Details zu sehen. Wenn wir mit den Qualitäts-Leveln spielen, können wir diesen Prozess verfolgen.

Zusammenfassung

Lass uns kurz zusammenfassen:

Damit haben wir nur an der Oberfläche einiger Anwendungen gekratzt. Die Fouriertransformation ist ein extrem mächtiges Werkzeug, da das Zerlegen von Dingen in Frequenzen so fundamental ist. Sie wird in vielen Bereichen eingesetzt, einschließlich Schaltkreis-Design, Mobilkommunikationssignale, bildgebende magnetische Resonanzverfahren (MRI) und Quantenphysik!

Fragen für die Neugierigen

Ich habe hier den meisten mathematischen Kram weggelassen, aber wenn du an den zugrunde liegenden Prinzipien der Funktionsweise interessiert bist, sind hier ein paar Fragen, um deine Recherche zu leiten:

Literaturempfehlungen

Um mehr über die Fouriertransformation zu lernen sind hier einige sehr gute Quellen:

An Interactive Guide To The Fourier Transform Ein großartiger (englischer) Artikel, der mehr auf die Mathematik eingeht.

But what is the Fourier Transform? A visual introduction. Ein gutes (englisches) Youtube-Video von 3Blue1Brown, welches die Mathematik der Fouriertransformation im Audiobereich behandelt.

A Tale of Math & Art: Creating the Fourier Series Harmonic Circles Visualization Ein weiterer (englischer) Artikel, der erklärt wie man Epizyklen zum Zeichnen von Wegen nutzen kann, erklärt aus der Sicht der linearen Algebra.

Fourier transform (Wikipedia) Und selbstverständlich ist der Wikipedia-Artikel ebenfalls ziemlich gut.

Fouriertransformation (Wikipedia) Hier nochmal auf Deutsch.

Der Autor

Ich bin Jez! In Vollzeit arbeite ich bei einer Suchfirma in der Bay Area und in meiner Freizeit erstelle ich gern Spiele und interaktiven Code, wie diesen hier!

Diese Webseite ist Open Source und kann auf GitHub eingesehen werden! Für Feedback oder Rückfragen kannst du mir gerne eine Email an schreiben oder sende mir einen Tweet auf Twitter.

Wenn du mehr von meiner Arbeit sehen möchtest, schau dir meine homepage an und wenn du wissen willst, was ich als Nächstes mache, kannst du mir auf Twitter unter @jezzamonn folgen!