Quelles sont les différences pratiquement pertinentes entre les différentes méthodes de rééchantillonnage d'images?

22

La ImageResizefonction de Mathematica prend en charge de nombreuses méthodes de rééchantillonnage .

Ne connaissant pas ce domaine, au-delà du plus proche voisin, bilinéaire, biquadratique et bicubique (qui sont évidents d'après le nom), je suis perdu.

Pouvez-vous m'indiquer une source qui expliquera les différences de base (mathématiques) entre ces méthodes, et en particulier souligner les différences pratiques (par exemple en montrant des exemples d'images où le choix de la méthode importe vraiment et introduit des différences notables)?

Je n'ai pas d'expérience dans le traitement du signal, je préfère donc une introduction "douce" et concise :-)


Je vais copier ici la liste des ImageResizeméthodes pour ces "paresseux" pour cliquer sur le lien:

  • Rééchantillonnage du plus proche voisin "le plus proche"

  • Interpolation bilinéaire "bilinéaire"

  • Interpolation spline biquadratique "biquadratique"

  • Interpolation de spline bicubique "bicubique"

  • Rééchantillonnage gaussien "gaussien"

  • "Lanczos" Méthode d'interpolation multivariée Lanczos

  • Interpolation cosinus "cosinus"

  • Interpolation de Hamming en cosinus surélevé "Hamming"

  • "Hann" interpolation de Hann à cosinus surélevé

  • "Blackman" cosinus surélevé généralisé à trois termes

  • Interpolation de fenêtre triangulaire "Bartlett"

  • "Connes" interpolation Welch au carré

  • "Welch" interpolation quadratique Welch

  • Interpolation cubique par morceaux "Parzen"

  • Interpolation Bessel d'ordre zéro "Kaiser" modifiée

Szabolcs
la source
1
La question me semble trop large. Ce serait une bonne idée de le séparer en méthodes spécifiques et de poser des questions spécifiques pour les méthodes avec lesquelles vous avez des problèmes.
mirror2image
Tangentielle peu à votre question, vous trouverez peut - être cette comparaison suréchantillonnage image intéressante: general-cathexis.com/interpolation/index.html
Mr.Wizard
Je voudrais faire attention que toutes les méthodes que vous avez écrites sont invariantes à l'espace. Je pense que les méthodes plus modernes de suréchantillonnage sont Edge Aware et Space Variant aussi.
Royi
Voici l'avant-dernière transformation. On l'appelle la transformée PB et elle transforme l'image en prédisant bicubiquement les valeurs en fonction de la probabilité de ce qui doit se produire après avoir été entraîné sur de nombreuses autres images. Voici à quoi ressemble le [résultat] [1]. [1]: v1.std3.ru/57/a9/…
MyBushisaNeonJungle

Réponses:

12

I(m,n)m,nm,n

I~(m,n)=m=mw+1m+w n=nw+1n+wI(m,n) f(mm,nn)

I~I(x,y)

f(m,n)

Tout comme avec les fonctions de fenêtre pour les signaux temporels, il est facile d'obtenir un aperçu de ce que fait un noyau d'interpolation d'image en regardant sa réponse en fréquence. De ma réponse sur les fonctions de la fenêtre :

Les deux principaux facteurs qui décrivent une fonction de fenêtre sont:

  1. Largeur du lobe principal (c.-à-d. À quelle fréquence le bac correspond-il à la moitié de la puissance de la réponse maximale)
  2. Atténuation des lobes latéraux (c.-à-d. À quelle distance se trouvent les lobes latéraux du lobe principal). Cela vous informe de la fuite spectrale dans la fenêtre.

Cela est vrai pour les noyaux d'interpolation. Le choix est essentiellement un compromis entre le filtrage de fréquence (atténuation des lobes latéraux), la localisation spatiale (largeur du lobe principal) et la réduction d'autres effets tels que la sonnerie (effet Gibbs), le repliement, le flou, etc. Par exemple, un noyau avec des oscillations telles car le noyau sinc et le noyau Lanczos4 introduiront une "sonnerie" dans l'image, alors qu'un rééchantillonnage gaussien n'introduira pas de sonnerie.

Voici un exemple simplifié dans Mathematica qui vous permet de voir les effets de différentes fonctions d'interpolation:

true = ExampleData[{"TestImage", "Lena"}];
resampling = {"Nearest", "Bilinear", "Biquadratic", "Bicubic", 
   "Gaussian", "Lanczos", "Cosine", "Hamming", "Hann", "Blackman", 
   "Bartlett", "Connes", "Welch", "Parzen", "Kaiser"};
small = ImageResize[true, Scaled[1/4]];

trueI(x,y)smallI(m,n)I(m,n)I~(m,n)

entrez la description de l'image ici entrez la description de l'image ici

Vous pouvez constater par vous-même que différentes fonctions d'interpolation ont des effets différents. Les plus proches et quelques autres ont des caractéristiques très grossières et vous pouvez essentiellement voir des lignes irrégulières (voir l'image en taille réelle, pas l'affichage de la grille). Bicubic, biquadratic et Parzen surmontent cela mais introduisent beaucoup de flou. De tous les noyaux, Lanczos semble (visuellement) être le plus attrayant et celui qui fait le meilleur travail du lot.

Je vais essayer de développer cette réponse et de fournir des exemples plus intuitifs démontrant les différences lorsque j'en aurai le temps. Vous voudrez peut-être lire cet article assez facile et informatif que j'ai trouvé sur le Web (avertissement PDF).

Lorem Ipsum
la source
Est-ce la notation infixe que je vois!?! : ->
Mr.Wizard
@ Mr.Wizard J'ai dit que je ferais une tentative honnête :)
Lorem Ipsum