Ich versuche, die Qualität mehrerer Bildinterpolationsmethoden für eine Anwendung zu bewerten, bei der subpixelverschobene Bilder erzeugt werden. Ich dachte, ich könnte die Ergebnisse einer Subpixelverschiebung mit all diesen Interpolationsvarianten mit einem perfekt verschobenen Bild vergleichen, aber es ist wahrscheinlich nicht möglich, es zu erhalten (was wäre dann die Notwendigkeit einer Interpolation?).
Ich habe überlegt, die DFT + -Verschiebung im Frequenzbereich zu verwenden, und bin mir nicht sicher, wie sie im Vergleich zur expliziten Interpolation des Bildes (mit bilinearen, bikubischen usw.) tatsächlich funktioniert. Ich bin sicher, dass es unmöglich ein perfekt verschobenes Bild erzeugen kann , aber ich kann nicht meinen Finger darauf legen. Entspricht die Subpixelverschiebung mit DFT der Anwendung der Interpolation und wenn ja, welche? Welche Vorspannung haben die Pixelwerte in Bildern, die mit dieser Methode erhalten wurden? Vielen Dank!
EDIT: Nachdem ich über die Sache nachgedacht hatte, stellte ich fest, dass die FFT eine Annäherung (noch mehr die DFT) der ursprünglichen Funktion in Bezug auf Harmonische (Sinusfunktionen) ist, die einer Art trigonometrischer Interpolation gleichkommt. Ich erinnere mich an eine "Fourier-Reihen-Interpolations" -Formel für diskrete Daten, die eine trigonometrische Interpolation waren, aber nicht sicher, ob sie verbunden sind.
quelle
Antworten:
Eine DFT / FFT sowie eine zusätzliche Nullpunktauffüllung im Frequenzbereich und dann eine längere IDFT / IFFT geben interpolierte Punkte zurück. Diese Punkte werden mit einem periodischen Sinc-Kernel interpoliert. Dies ist eine perfekte Interpolation für Originaldaten, die streng bandbegrenzt auf weniger als die Hälfte der Originalabtastrate sind. Die Daten werden jedoch so behandelt, als wären sie kreisförmig umbrochen, was an den Rändern einiger Bilder zu merkwürdigen Ergebnissen führen kann. Daher möchten Sie die Ränder der Originalquelle vor der Interpolation mit einem schönen Füll- oder Rahmenfarbe auffüllen.
Wenn Sie das Upsampling um das Zweifache erhöhen (die FFT auf Null setzen, um die Länge vor der IFFT zu verdoppeln), können Sie mithilfe der interpolierten Punkte eine Verschiebung um ein halbes Pixel vornehmen. 3X für eine dritte Pixelverschiebung usw. Zum Verschieben können Sie die ursprünglichen Punkte plus alle überzähligen interpolierten Punkte wegwerfen, um die gewünschte Größe zu erhalten.
quelle
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.
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.
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.
quelle