J'essaie d'évaluer la qualité de plusieurs méthodes d'interpolation d'images pour une application qui implique la génération d'images décalées en sous-pixels. Je pensais pouvoir comparer les résultats d'un décalage de sous-pixel en utilisant toutes ces variantes d'interpolation avec une image parfaitement décalée, mais ce n'est probablement pas possible de l'obtenir (quel serait alors le besoin d'interpolation?).
Je pensais à utiliser le décalage DFT + dans le domaine fréquentiel, et je ne sais pas comment cela fonctionne réellement par rapport à une interpolation explicite de l'image (en utilisant bilinéaire, bicubique, etc ...). Je suis sûr que cela ne peut pas générer une image parfaitement décalée , mais je ne peux pas mettre le doigt dessus. Le décalage de sous-pixels avec DFT équivaut-il à appliquer une interpolation et si oui, lequel? Quel est le biais des valeurs des pixels dans les images obtenues à l'aide de cette méthode? Merci!
EDIT: Après avoir réfléchi à la question, je me suis dit que la FFT est une approximation (encore plus la DFT) de la fonction d'origine en termes d'harmoniques (fonctions sinus), que cela équivaudrait à une sorte d'interpolation trigonométrique. Je me souviens d'une formule "d'interpolation de la série de Fourier" pour les données discrètes qui était une interpolation trigonométrique, mais je ne sais pas si elle est connectée.
la source
Réponses:
Un DFT / FFT, plus un remplissage nul ajouté dans le domaine fréquentiel, puis un IDFT / IFFT plus long, retournent des points interpolés. Ces points seront interpolés à l'aide d'un noyau Sinc périodique, qui est une interpolation parfaite pour les données originales strictement limitées à une bande inférieure à la moitié de la fréquence d'échantillonnage d'origine. Cependant, les données seront traitées comme si elles étaient enveloppées de façon circulaire, ce qui peut produire des résultats étranges sur les bords de certaines images. Donc, vous voudrez peut-être remplir les bords de la source d'origine avec une belle couleur de remplissage ou de cadrage avant l'interpolation.
Si vous suréchantillonnez par 2X (mettez à zéro la FFT pour doubler la longueur avant l'IFFT), vous pouvez alors effectuer un décalage d'un demi-pixel en utilisant les points interpolés. 3X pour un troisième décalage de pixel, etc. Pour le décalage, vous pouvez jeter les points d'origine plus les points interpolés en excès pour obtenir la taille souhaitée.
la source
Il existe plusieurs informations clés dont vous avez besoin pour comprendre comment la DFT vous permet de décaler une image.
Tout d'abord, le théorème de Fourier: il est probablement plus facile de regarder d'abord le cas continu (c'est-à-dire analogique). Imaginez que vous ayez une fonction, appelez-la g (t). Pour simplifier, disons que g (t) est un enregistrement audio analogique, donc c'est une fonction unidimensionnelle, qui est continue, et représente la pression instantanée en fonction du temps.
Maintenant, g (t) est une façon de représenter notre enregistrement audio. Un autre est G (f). G (f) est la transformée de Fourier de g (t). Donc, G (f) == FT (g (t)). G (f) a toutes les mêmes informations que g (t), mais il représente ces informations dans le domaine fréquentiel au lieu du domaine temporel. Il y a quelques détails pointilleux sur les transformées de Fourier, que je ne mentionnerai pas.
Vous pouvez en quelque sorte considérer G (f) comme la "distribution des fréquences" contenue dans g (t). Donc, si g (t) est une onde sinusoïdale (c'est-à-dire un ton pur), alors G (f) sera nul partout, sauf à la fréquence de ce ton. C'est probablement un bon point pour mentionner que G (f) est en général une fonction complexe - c'est-à-dire qu'il renvoie des nombres complexes, qui peuvent être considérés comme ayant une composante réelle et imaginaire ou une amplitude et une phase.
Ok, alors maintenant nous avons des FT continus à notre actif.
Voici le deuxième aperçu: une transformée de Fourier discrète est une transformée de Fourier comme un signal échantillonné est un signal analogique. Dans ce cas, le «discret» fait référence à la quantification du domaine de la fonction (temps ou fréquence), pas sa plage. (Le signal numérique échantillonné que vous obtenez de votre carte son est quantifié à la fois dans le domaine et dans la plage.)
Le flux d'octets numérique que vous obtenez à partir de votre carte son contient des "échantillons" du signal continu (analogique) original du microphone. Si nous prenons la DFT de notre g (t) échantillonné, nous obtenons toujours un G (f). G (f), rappelez-vous, n'est qu'une façon différente de représenter les informations contenues dans g (t). Si nous obéissons au théorème de Nyquist , le signal échantillonné g (t) contient toute "l'intelligence" du signal continu d'origine, donc notre discret G (f) doit contenir toutes les informations de notre signal continu d'origine. Entre parenthèses, G (f) est toujours une fonction complexe.
C'est là que la magie du décalage sous-pixel entre en jeu, mais dans ce cas, je vais écrire sur le décalage du signal audio dans le temps de moins d'un échantillon, car c'est la même chose.
Cela signifie que nous pouvons changer notre enregistrement audio dans le temps (par tout montant que nous choisissons, y compris une fraction de temps d'échantillonnage) simplement en modifiant la phase de G (t). En fait, cette déclaration est peut-être un peu trop désinvolte. Pour un signal échantillonné non quantifié, la phase peut être ajustée arbitrairement (cela fait partie de la raison pour laquelle j'ai fait la distinction entre quantification du domaine et de la plage plus tôt). Cependant, pour un signal échantillonné quantifié (notre flux d'octets audio, par exemple), la taille du pas de quantification (c'est-à-dire le nombre de bits) détermine la résolution avec laquelle nous pouvons ajuster la phase. Lorsque nous transformons la Fourier inverse G (f) (ou le DIFT, pour ce signal échantillonné), le nouvel ensemble d'échantillons g '(t) = DIFT (G (F)) sera tous décalés dans le temps de la quantité que nous choisissons.
Appliquer cela à vos pixels signifie simplement utiliser un FT à 2 dimensions au lieu du FT à 1 dimension discuté ici.
la source