¿Cuáles son las diferencias prácticamente relevantes entre varios métodos de remuestreo de imágenes?


22

La ImageResizefunción de Mathematica soporta muchos métodos de remuestreo .

Al no estar familiarizado con esta área, más allá del vecino más cercano, bilineal, biquadratic y bicubic (que son obvios por el nombre), estoy perdido.

¿Puede señalarme alguna fuente que explique las diferencias básicas (matemáticas) entre estos métodos y, en particular, señalar las diferencias prácticas (por ejemplo, mostrando imágenes de muestra donde la elección del método realmente importa e introduce diferencias notables)?

No tengo un fondo de procesamiento de señal, por lo que preferiría una introducción "suave" y concisa :-)


Copiaré aquí la lista de ImageResizemétodos para que los "perezosos" hagan clic en el enlace:

  • Muestreo vecino más cercano "más cercano"

  • Interpolación bilineal "bilineal"

  • Interpolación biquadrática de spline "biquadratic"

  • Interpolación de estrías bicúbicas "bicúbicas"

  • Muestreo gaussiano "gaussiano"

  • "Lanczos" Lanczos método de interpolación multivariante

  • Interpolación de coseno "coseno"

  • Interpolación de Hamming de coseno elevado "Hamming"

  • "Hann" interpolación Hann de coseno elevado

  • Coseno elevado generalizado de tres términos "Blackman"

  • Interpolación de ventana triangular "Bartlett"

  • "Connes" al cuadrado de la interpolación de Welch

  • "Welch" Welch interpolación cuadrática

  • Interpolación cúbica por partes "Parzen"

  • Interpolación de Bessel modificada de orden cero "Kaiser"


1
La pregunta me parece demasiado amplia. Sería una buena idea separarlo en métodos específicos y hacer preguntas específicas para los métodos con los que tiene problemas.
mirror2image

Algo tangencial a su pregunta, puede encontrar interesante esta comparación de
muestreo de

Me gustaría prestar atención a que todos los métodos que escribió son Space Invariant. Creo que los métodos más modernos para el sobremuestreo son Edge Aware y Space Variant también.
Royi

Aquí está la penúltima transformación. Se llama la transformación PB y transforma la imagen prediciendo valores bicúbicamente de acuerdo con la probabilidad de lo que ocurrirá después de ser entrenado en muchas otras imágenes. Así es como se ve el [resultado] [1]. [1]: v1.std3.ru/57/a9/…
MyBushisaNeonJungle

Respuestas:


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)

Al igual que con las funciones de ventana para señales temporales, es fácil obtener una idea general de lo que hace un núcleo de interpolación de imágenes al observar su respuesta de frecuencia. De mi respuesta sobre las funciones de la ventana :

Los dos factores principales que describen una función de ventana son:

  1. Ancho del lóbulo principal (es decir, a qué frecuencia es la mitad de la potencia de la respuesta máxima)
  2. Atenuación de los lóbulos laterales (es decir, qué tan lejos están los lóbulos laterales del lóbulo principal). Esto le informa sobre la fuga espectral en la ventana.

Esto es bastante cierto para los núcleos de interpolación. La elección es básicamente una compensación entre el filtrado de frecuencia (atenuación de los lóbulos laterales), la localización espacial (ancho del lóbulo principal) y la reducción de otros efectos como el timbre (efecto Gibbs), alias, desenfoque, etc. Por ejemplo, un núcleo con oscilaciones tales ya que el núcleo sinc y el núcleo Lanczos4 introducirán " timbres " en la imagen, mientras que un remuestreo gaussiano no introducirá timbres.

Aquí hay un ejemplo simplificado en Mathematica que le permite ver los efectos de diferentes funciones de interpolación:

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)

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

Puedes ver por ti mismo que diferentes funciones de interpolación tienen diferentes efectos. El más cercano y algunos otros tienen características muy gruesas y esencialmente puede ver líneas irregulares (vea la imagen a tamaño completo, no la pantalla de cuadrícula). Bicubic, biquadratic y Parzen superan esto, pero introducen un gran desenfoque. De todos los núcleos, Lanczos parece (visualmente) ser el más atractivo y uno que hace el mejor trabajo del lote.

Intentaré ampliar esta respuesta y proporcionar ejemplos más intuitivos que demuestren las diferencias cuando tenga tiempo. Es posible que desee leer este artículo bastante sencillo e informativo que encontré en la web (advertencia en PDF).


¿Es esa notación infija que veo? : ->
Mr.Wizard

@ Mr.Wizard Dije que haría un intento honesto :)
Lorem Ipsum
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.