Reduzir a amostragem de uma imagem por um fator inteiro

16

Ao reduzir a amostragem de uma imagem por um fator inteiro , o método óbvio é definir os pixels da imagem de saída para a média dos blocos correspondentes na imagem de entrada.nn×n

Lembro-me vagamente de ter lido em algum lugar que esse método não é o ideal (desculpe, não me lembro de nenhum detalhe)

É verdade que existe um método melhor (e, em caso afirmativo, onde o método acima falha, embora pareça "obviamente" correto)? Eu não sei muito sobre processamento de sinais, esta questão me interessa.

Styg Oldenbaum
fonte
Se você não possui experiência em processamento de sinal, a explicação para laymans é: Existem métodos melhores para reduzir a amostragem. Seu algoritmo de redução de amostragem reduzirá tecnicamente o tamanho do pixel da imagem por N, MAS o algoritmo descrito acima terá uma qualidade muito reduzida em comparação com os melhores algoritmos de redução de amostragem.
Trevor Boyd Smith

Respostas:

16

Reduzir a amostragem de uma imagem reduz o número de amostras que podem representar o sinal. Em termos de domínio da frequência, quando um sinal é reduzido por amostragem, a porção de alta frequência do sinal será alterada com a porção de baixa frequência. Quando aplicado ao processamento de imagens, o resultado desejado é preservar apenas a parte de baixa frequência. Para fazer isso, a imagem original precisa ser pré-processada (filtrada por alias) para remover a parte de alta frequência para que o aliasing não ocorra.


O filtro digital ideal para remover a parte de alta frequência (com o corte mais nítido) é uma função sinc . O motivo é que a representação no domínio da frequência da função Sinc é quase 1 constante em toda a região de baixa frequência e quase constante 0 em toda a região de alta frequência.

sinc(x)=pecado(πx)πx

A resposta ao impulso do filtro sinc é infinita. O filtro Lanczos é um filtro sinc modificado que atenua os coeficientes sinc e os trunca quando os valores caem para insignificância.


No entanto, ser ótimo no domínio da frequência não implica ser ótimo aos olhos humanos. Existem métodos de upsampling e downsampling que não obedecem às transformações lineares, mas produzem melhores resultados que os lineares.


No que diz respeito à afirmação sobre , é importante ter em mente que, durante a amostragem de imagens, a escolha da correspondência de coordenadas entre o sinal de alta resolução e o sinal de baixa resolução não é arbitrária, nem é suficiente para alinhar na mesma origem (0) na linha numérica real ou discreta.n×n

O requisito mínimo na correspondência de coordenadas é que

  1. Aumentar a amostragem de uma imagem contendo valores aleatórios arbitrários por um fator inteiro e reduzir a amostragem pelo mesmo fator inteiro deve resultar na mesma imagem com uma alteração mínima numericamente.
  2. A ampliação / redução da amostragem de uma imagem que consiste em apenas um valor uniforme, seguida pela operação oposta, deve resultar em uma imagem que consiste no mesmo valor de maneira uniforme, com desvios numéricos mínimos.
  3. A aplicação repetida de pares de upsampling / downsampling deve minimizar ao máximo a alteração no conteúdo da imagem.
rwong
fonte
O que você quer dizer com a transformação da função sinc sendo "quase" 1 e 0 nas respectivas regiões?
@ Tim: Fenômeno de Gibbs próximo à frequência de corte do filtro sinc.
Rwong #
2
A reamostragem simples faz sentido apenas nos sinais percebidos / processados ​​no domínio da frequência, como o áudio. As imagens são percebidas, pelo menos aproximadamente, no domínio espacial (isso é discutível; é possível que alguma percepção de padrões repetidos esteja no domínio da frequência) e qualquer transformação baseada no domínio da frequência produz distorções desagradáveis (toque, etc.) no domínio espacial. Basicamente, qualquer operação de convolução / linear com coeficientes negativos produzirá artefatos desagradáveis ​​e qualquer com todos os coeficientes não negativos produzirá desfoque.
R .. GitHub Pare de ajudar o gelo
6

Você está certo de que a média da área está bem próxima do "mais correto" que você pode obter, mas o problema é um comportamento inconsistente ao reduzir uma linha N-largura acentuada por um fator de N. Se o local da linha estiver no módulo alinhado N, você obterá uma linha nítida de 1 pixel, mas se for aproximadamente N / 2 mod N, obterá uma linha muito desfocada (2 pixels de largura e meia intensidade). Isso pode parecer muito ruim e, com a gama não linear, resultará em diferenças de intensidade. (Idealmente, toda a reamostragem deve ocorrer com gama corrigida para uma escala de intensidade linear, mas na prática quase ninguém faz isso porque é muito caro.)

Se você quiser melhorar isso, primeiro aceite o fato de que é impossível reduzir a desfocagem em alguns casos; portanto, a única maneira de obter uma saída uniforme envolve aumentar a desfocagem. A maneira ideal é usar um kernel gaussiano com raio maior que N / 2, em vez de uma função step, como a função de convolução com a imagem de origem. Uma maneira barata de abordar uma aproximação, no entanto, se você já possui a implementação da média da área N por N, é apenas aplicar uma convolução de desfoque (1 / 4,1 / 2,1 / 4) na redução da amostra resultante imagem.

R .. GitHub PARE DE AJUDAR O GELO
fonte