Es gibt mehrere wichtige Erkenntnisse, die Sie benötigen, um zu verstehen, wie Sie mit DFT ein Bild verschieben können.
Zunächst das Fourier-Theorum: Es ist wahrscheinlich einfacher, zuerst den kontinuierlichen (dh analogen) Fall zu betrachten. Stellen Sie sich vor, Sie haben eine Funktion, nennen Sie sie g (t). Nehmen wir der Einfachheit halber an, dass g (t) eine analoge Audioaufnahme ist, also eine eindimensionale Funktion, die kontinuierlich ist und den momentanen Druck als Funktion der Zeit darstellt.
Nun, g (t) ist eine Möglichkeit, wie wir unsere Audioaufnahme darstellen können. Ein anderes ist G (f). G (f) ist die Fourier-Transformation von g (t). Also ist G (f) = FT (g (t)). G (f) hat die gleichen Informationen wie g (t), repräsentiert diese Informationen jedoch im Frequenzbereich anstelle des Zeitbereichs. Es gibt ein paar wählerische Details zu Fourier-Transformationen, die ich nicht erwähnen werde.
Sie können sich G (f) gewissermaßen als die in g (t) enthaltene "Häufigkeitsverteilung" vorstellen. Wenn also g (t) eine Sinuswelle ist (dh ein reiner Ton), dann ist G (f) überall Null, außer bei der Frequenz dieses Tons. Dies ist wahrscheinlich ein guter Punkt, um zu erwähnen, dass G (f) im Allgemeinen eine komplexe Funktion ist - das heißt, dass es komplexe Zahlen zurückgibt, von denen angenommen werden kann, dass sie eine reelle und imaginäre Komponente oder eine Größe und Phase haben.
δ( w )δ
Ok, jetzt haben wir ununterbrochene FT's unter unserer Gürtellinie.
Hier ist die zweite Erkenntnis: Eine diskrete Fouriertransformation ist eine Fouriertransformation, wie ein abgetastetes Signal ein analoges Signal ist. In diesem Fall bezieht sich "diskret" auf die Quantisierung des Funktionsbereichs (Zeit oder Frequenz), nicht auf dessen Bereich. (Das abgetastete digitale Signal, das Sie von Ihrer Soundkarte erhalten, wird sowohl in der Domäne als auch im Bereich quantisiert.)
Der digitale Byte-Stream, den Sie von Ihrer Soundkarte erhalten, enthält "Samples" des ursprünglichen kontinuierlichen (analogen) Signals vom Mikrofon. Wenn wir die DFT unseres abgetasteten g (t) nehmen, erhalten wir immer noch ein G (f). Denken Sie daran, dass G (f) nur eine andere Art der Darstellung der in g (t) enthaltenen Informationen ist. Wenn wir Nyquists Theorum befolgen , enthält das abgetastete Signal g (t) die gesamte "Intelligenz" des ursprünglichen kontinuierlichen Signals, so dass unser diskretes G (f) alle Informationen aus unserem ursprünglichen kontinuierlichen Signal enthalten muss. In Klammern ist G (f) immer noch eine komplexe Funktion.
Hier kommt die Magie der Subpixel-Verschiebung ins Spiel, aber in diesem Fall schreibe ich über die zeitliche Verschiebung des Audiosignals um weniger als ein Sample, da es dasselbe ist.
ei π2
Das heißt, wir können unsere Audioaufnahme zeitlich verschieben (um einen beliebigen Betrag, einschließlich eines Bruchteils der Abtastzeit), indem wir einfach die Phase von G (t) ändern. Eigentlich ist diese Aussage vielleicht etwas zu beiläufig. Für ein nicht quantisiertes, abgetastetes Signal kann die Phase willkürlich eingestellt werden (dies ist ein Teil des Grundes, warum ich früher zwischen der Quantisierung der Domäne und dem Bereich unterschieden habe). Für ein quantisiertes abgetastetes Signal (zum Beispiel unseren Audio-Bytestrom) bestimmt die Quantisierungsschrittgröße (dh die Anzahl der Bits) die Auflösung, mit der wir die Phase einstellen können. Wenn wir die Fouriertransformation G (f) invertieren (oder für dieses abgetastete Signal DIFT), wird der neue Satz von Abtastwerten g '(t) = DIFT (G (F)) alle zeitlich um den von uns ausgewählten Betrag verschoben.
Wenn Sie dies auf Ihre Pixel anwenden, verwenden Sie einfach eine zweidimensionale FT anstelle der hier beschriebenen eindimensionalen FT.