Quais são as diferenças praticamente relevantes entre os vários métodos de reamostragem de imagem?


22

A ImageResizefunção do Mathematica suporta muitos métodos de reamostragem .

Não conhecendo esta área, além do vizinho mais próximo, bilinear, biquadrático e bicúbico (que é óbvio pelo nome), estou perdido.

Você pode me indicar uma fonte que explique as diferenças básicas (matemáticas) entre esses métodos e, em particular, aponte as diferenças práticas (por exemplo, mostrando imagens de exemplo onde a escolha do método realmente importa e introduz diferenças visíveis)?

Como não tenho experiência em processamento de sinais, prefiro uma introdução "gentil" e concisa :-)


Vou copiar aqui a lista de ImageResizemétodos para aqueles "preguiçosos" clicarem no link:

  • Reamostragem do vizinho mais próximo "mais próximo"

  • Interpolação bilinear "bilinear"

  • Interpolação de estrias biquadrática "biquadrática"

  • Interpolação de spline bicúbica "bicúbica"

  • Reamostragem Gaussiana "Gaussiana"

  • Método de interpolação multivariada "Lanczos" Lanczos

  • Interpolação de cosseno "cosseno"

  • Interpolação de Hamming com cosseno elevado "Hamming"

  • Interpolação Hann "Hann" com cosseno elevado

  • Cosseno elevado generalizado de três termos "Blackman"

  • Interpolação de janela triangular "Bartlett"

  • "Connes" ao quadrado da interpolação de Welch

  • Interpolação quadrática "Welch" Welch

  • "Parzen" interpolação cúbica por partes

  • Interpolação de Bessel modificada de ordem zero "Kaiser"


1
A pergunta parece muito ampla para mim. Seria uma boa idéia separá-lo em métodos específicos e fazer perguntas específicas para os métodos com os quais você tem problemas.
Mirror2image

Um pouco tangencial à sua pergunta, você pode encontrar esta imagem comparação upsampling interessante: general-cathexis.com/interpolation/index.html
Mr.Wizard

Eu prestaria atenção que todos os métodos que você escreveu são invariantes no espaço. Penso que os métodos mais modernos de upsampling são o Edge Aware e o Space Variant.
Royi

Aqui está a penúltima transformação. É chamado de transformação PB e transforma a imagem prevendo valores bicubicamente de acordo com a probabilidade do que ocorrer depois de ser treinado em muitas outras imagens. Aqui está a aparência do [resultado] [1]. [1]: v1.std3.ru/57/a9/…
MyBushisaNeonJungle

Respostas:


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)

Assim como nas funções de janela para sinais temporais, é fácil ter uma noção do que um kernel de interpolação de imagem faz observando sua resposta de frequência. Da minha resposta nas funções da janela :

Os dois fatores principais que descrevem uma função da janela são:

  1. Largura do lóbulo principal (ou seja, em qual caixa de frequência é a potência metade da resposta máxima)
  2. Atenuação dos lobos laterais (ou seja, a que distância estão os lobos laterais do lóbulo principal). Isso informa sobre o vazamento espectral na janela.

Isso se aplica aos kernels de interpolação. A escolha é basicamente uma troca entre filtragem de frequência (atenuação de lóbulos laterais), localização espacial (largura do lóbulo principal) e redução de outros efeitos como toque (efeito Gibbs), aliasing, desfoque, etc. Por exemplo, um núcleo com oscilações como como o kernel sinc e o kernel Lanczos4 introduzirão "toque" na imagem, enquanto uma reamostragem gaussiana não introduzirá o toque.

Aqui está um exemplo simplificado no Mathematica que permite ver os efeitos de diferentes funções de interpolação:

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)

insira a descrição da imagem aqui insira a descrição da imagem aqui

Você pode ver por si mesmo que diferentes funções de interpolação têm efeitos diferentes. Os mais próximos e alguns outros possuem recursos muito grosseiros e você pode ver essencialmente linhas irregulares (ver imagem em tamanho normal, não a exibição da grade). Bicubic, biquadratic e Parzen superam isso, mas introduzem muito embaçamento. De todos os grãos, Lanczos parece (visualmente) ser o mais atraente e o que faz o melhor trabalho do lote.

Tentarei expandir essa resposta e fornecer exemplos mais intuitivos que demonstram as diferenças quando tiver tempo. Você pode ler este artigo bastante fácil e informativo que encontrei na Web (aviso em PDF).


É essa notação infix que eu vejo!?! : ->
Sr.Wizard

@ Mr.Wizard eu disse que eu iria fazer uma tentativa honesta :)
Lorem Ipsum
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.