Quali sono le differenze praticamente rilevanti tra i vari metodi di ricampionamento delle immagini?


22

La ImageResizefunzione di Mathematica supporta molti metodi di ricampionamento .

Non avendo familiarità con quest'area, al di là del vicino più vicino, bilineare, biquadratico e bicubico (che sono evidenti dal nome), mi sono perso.

Puoi indicarmi una fonte che spiegherà le differenze di base (matematiche) tra questi metodi, e in particolare evidenziare le differenze pratiche (ad esempio mostrando immagini di esempio in cui la scelta del metodo conta davvero e introduce differenze evidenti)?

Non ho un background di elaborazione del segnale, quindi preferirei un'introduzione "delicata" e concisa :-)


Copierò qui l'elenco dei ImageResizemetodi per quei "pigri" per fare clic sul collegamento:

  • Ricampionamento del vicino più vicino "più vicino"

  • Interpolazione bilineare "bilineare"

  • Interpolazione spline biquadratica "Biquadratic"

  • Interpolazione spline bicubica "bicubica"

  • Ricampionamento gaussiano "gaussiano"

  • "Lanczos" Metodo di interpolazione multivariata di Lanczos

  • Interpolazione del coseno "coseno"

  • Interpolazione di Hamming "cosmo sollevata" di Hamming

  • Interpolazione Hann "coseno rialzato"

  • "Blackman" coseno rialzato generalizzato a tre termini

  • Interpolazione triangolare "Bartlett"

  • Interpolazione Welch al quadrato "Connes"

  • Interpolazione quadratica di Welch "Welch"

  • Interpolazione cubica a tratti "Parzen"

  • Interpolazione di Bessel modificata all'ordine zero "Kaiser"


1
La domanda mi sembra troppo ampia. Sarebbe una buona idea separarlo in metodi specifici e porre domande specifiche per i metodi con cui hai problemi.
mirror2image

Un po 'tangente alla tua domanda, è possibile trovare questa immagine confronto upsampling interessante: general-cathexis.com/interpolation/index.html
Mr.Wizard

Vorrei prestare attenzione al fatto che tutti i metodi che hai scritto sono Space Invariant. Penso che i metodi più moderni per l'upsampling siano Edge Aware e anche Space Variant.
Royi,

Ecco la penultima trasformazione. Si chiama trasformata PB e trasforma l'immagine predicendo bicubicamente i valori in base alla probabilità su cosa deve accadere dopo essere stato addestrato su molte altre immagini. Ecco come appare il [risultato] [1]. [1]: v1.std3.ru/57/a9/…
MyBushisaNeonJungle

Risposte:


12

Data un'immagine con m , n numeri interi, l'interpolazione di quell'immagine in qualsiasi punto arbitrario m , n può essere scritta comeio(m,n)m,nm',n'

io~(m',n')=Σm=m'-w+1m'+w Σn=n'-w+1n'+wio(m,n) f(m'-m,n'-n)

Il risultato è ancora solo un'approssimazione della vera immagine continua sottostante I ( x , y ) e tutto ciò che fanno le diverse funzioni di interpolazione è minimizzare l'errore di approssimazione con vincoli e obiettivi diversi.io~io(X,y)

Nell'elaborazione del segnale, desideri che la funzione di interpolazione sia il filtro passa basso ideale. Tuttavia, la sua risposta in frequenza richiede un supporto infinito ed è utile solo per segnali bandlimited. La maggior parte delle immagini non ha limiti di banda e nell'elaborazione delle immagini ci sono altri fattori da considerare (come il modo in cui l'occhio interpreta le immagini. Ciò che è matematicamente ottimale potrebbe non essere visivamente accattivante). La scelta di una funzione di interpolazione, proprio come le funzioni della finestra , dipende molto dal problema specifico a portata di mano. Non ho sentito parlare di Connes, Welch e Parzen (forse sono specifici del dominio), ma gli altri dovrebbero essere gli equivalenti 2-D delle funzioni matematiche per una finestra 1-D fornita nel link Wikipedia sopra.f(m,n)

Proprio come con le funzioni della finestra per i segnali temporali, è facile avere un'idea di cosa fa un kernel di interpolazione di immagini osservando la sua risposta in frequenza. Dalla mia risposta sulle funzioni della finestra :

I due fattori principali che descrivono una funzione di finestra sono:

  1. Larghezza del lobo principale (cioè, a quale frequenza bin è la metà della potenza della risposta massima)
  2. Attenuazione dei lobi laterali (cioè, quanto distanti sono i lobi laterali dal lobo principale). Questo ti dice della perdita spettrale nella finestra.

Questo vale praticamente per i kernel di interpolazione. La scelta è fondamentalmente un compromesso tra il filtro di frequenza (attenuazione dei sidelobes), la localizzazione spaziale (larghezza del lobo principale) e la riduzione di altri effetti come lo squillo (effetto di Gibbs), l'aliasing, la sfocatura, ecc. Ad esempio, un kernel con oscillazioni come poiché il kernel sinc e il kernel Lanczos4 introdurranno il "ringing" nell'immagine, mentre un ricampionamento gaussiano non introdurrà il ringing.

Ecco un esempio semplificato in Mathematica che ti consente di vedere gli effetti di diverse funzioni di interpolazione:

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]];

trueio(X,y)smallio(m,n)io(m,n)io~(m',n')

inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine

Puoi vedere tu stesso che diverse funzioni di interpolazione hanno effetti diversi. Più vicino e pochi altri hanno caratteristiche molto grossolane e puoi essenzialmente vedere linee frastagliate (vedi immagine a dimensione intera, non la visualizzazione della griglia). Bicubic, biquadratic e Parzen lo superano ma introducono molte sfocature. Di tutti i kernel, Lanczos sembra (visivamente) essere il più accattivante e uno che fa il miglior lavoro del lotto.

Proverò ad ampliare questa risposta e fornirò esempi più intuitivi che dimostrano le differenze quando ho tempo. Potresti voler leggere questo articolo piuttosto semplice e informativo che ho trovato sul web (avviso PDF).


Quella notazione infografica che vedo!?! : ->
Mr.Wizard,

@ Mr.Wizard Ho detto che avrei fatto un tentativo onesto :)
Lorem Ipsum,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.