Implementações técnicas de upscaling

15

Então, eu vi bicúbico e fractal listado como métodos de escalonamento de fotos. Quais são os detalhes técnicos por trás de como eles funcionam e por que / quando um é melhor que o outro?

rfusca
fonte
upsize: bilinear; downsize: lanczos 3.

Respostas:

15

Primeiro, a ampliação da imagem envolve separar os pixels por um valor fixo e preencher o espaço entre os pixels vizinhos anteriormente com conteúdo semelhante. Isso pode ser feito através da fabricação básica de pixels (filtragem bicúbica) ou por meios mais complexos, como converter a imagem em uma representação vetorial e dimensionar no espaço vetorial.

A filtragem bicúbica, juntamente com a filtragem bilinear, usa uma curva de função relativamente simples para misturar as cores dos pixels vizinhos ao ampliar uma imagem. Bilinear usa uma curva de função linear, enquanto Bicubic usa uma curva de função spline cúbica (cspline). A filtragem bicúbica geralmente produz resultados mais suaves, no entanto, ambos os algoritmos acabam misturando os valores dos pixels vizinhos por meio de uma curva de função para "preencher as lacunas" ao ampliar uma imagem. Deve-se notar que a escala bicúbica geralmente é sem perdas, pois apenas o espaço entre os pixels originais é realmente gerado. Dependendo das nuances de implementações específicas, os pixels originais podem mudar um pouco, no entanto, na maioria dos casos, os dados originais são preservados e novos dados são fabricados para serem preenchidos à medida que a imagem é ampliada.

A abordagem fractal ao dimensionamento de imagens adota uma abordagem totalmente diferente. Algoritmos mais complexos são empregados para analisar o conteúdo de uma imagem, identificar bordas e "objetos" e, finalmente, converter a imagem em um formato vetorial fractal. Depois que a imagem é vetorizada, ela pode ser dimensionada "sem perdas" no espaço vetorial e, em seguida, renderizada novamente em um tamanho maior. Os algoritmos de fractal, como os Fractals genuínos, usam um algoritmo de vetor fractal para dimensionar uma imagem, mantendo bordas nítidas e suaves. Essa abordagem é útil quando sua imagem possui inicialmente bordas nítidas e reconhecíveis como um fator-chave, e é importante manter a nitidez nítida nessas bordas.

Além disso, os Fractals genuínos tentam manter os detalhes não extremos através do conceito de "auto-similaridade", preservando os detalhes considerando o conteúdo da imagem como sendo fractal por natureza e reproduzindo o conteúdo não extremos a partir de algoritmos fractal. Isso tem o benefício presumido de, em vez de simplesmente fabricar informações de pixels vizinhos, um novo conteúdo pode ser gerado a partir de padrões compostos por muitos pixels. Essa abordagem pode funcionar muito bem quando aumenta em cerca de 200%, no entanto, a natureza fundamental do vetor se torna mais aparente ao dimensionar para tamanhos maiores. Também deve ser observado que esse método de dimensionamento não apresenta perdas e alguns detalhes finos de pixels podem ser descartados à medida que o algoritmo tenta encontrar fractalpadrões que podem ser replicados. O upscaling extremo pode resultar em replicação visível do padrão, e os detalhes das bordas finas podem ser eliminados no esforço de manter bordas nítidas e suaves em todos os tamanhos de imagem.

O BenVista também fornece um algoritmo proprietário chamado S-Spline. Há pouca informação sobre as especificidades desse algoritmo, no entanto, parece outro algoritmo baseado em curva de função. A escala do S-Spline Max no PhotoZoom Pro, como os Fractals genuínos, faz um excelente trabalho mantendo a definição da borda. Esse algoritmo também é capaz de escalar para cerca de 200% ou mais, no entanto, empurrá-lo muito mais resulta em degradação e suavização visíveis de detalhes que não são da borda. Parece que o compromisso geral nos algoritmos de dimensionamento é a definição máxima de borda ou a preservação máxima de detalhes. Também deve ser observado que a maioria dos algoritmos de dimensionamento de terceiros, incluindo Fractals genuínos e BenVista PhotoZoom Pro, aplica automaticamente uma máscara de nitidez à imagem final por padrão.

É possível usar o bicúbico de maneira iterativa. O ponto crucial da escala bicúbica é que ela fabrica mais informações quanto maior a escala, com o custo final da nitidez. Ao realizar o dimensionamento bicúbico em incrementos de 3-5%, você preserva muito mais detalhes originais ou quase originais e fabrica muito menos da imagem em cada etapa. Os resultados finais de uma escala bicúbica iterativa (ou escalonada) podem manter uma definição de borda consideravelmente maior, sem perder detalhes finos. O custo, no entanto, é muito maior investimento pessoal em dimensionamento, pois, no momento, não há aplicativos pré-fabricados que farão isso por você. Você precisa calcular manualmente a nova largura e altura da imagem em cada etapa, multiplicando a largura ou a altura anterior pela sua porcentagem de escala e conectando esse número ao seu programa de edição de imagens ' s ferramenta de escala bicúbica. Os resultados finais podem ser excelentes e tão nítidos quanto uma imagem bicíclica com mascaramento nítido. Os limites de quanto maior você pode dimensionar uma imagem sem prejuízo visível é muito maior do que outros algoritmos, pelo menos 400%, possivelmente mais.

jrista
fonte
Hmm. Seria muito fácil para o script-se que a escala bicubic iterativo como um script GIMP, ou uma ação photoshop ....
mattdm
Eu tentei como uma ação de photoshop, no entanto, não tive sucesso, pois exigia informações de computação. Eu realmente não faço muito script com o Photoshop, então não tenho certeza se ele suporta funções matemáticas ou script.
jrista
2
+1 Uau, resposta detalhada fantástica. Eu pensei que era uma pergunta chata até ler sua resposta.
fmark
Acabei de testar o rezising múltiplo no Paint.net, mas os resultados não foram os indicados nesta resposta; a imagem redimensionada várias vezes resultou tão desfocada quanto a mesma imagem redefinida apenas uma vez. Tentei com a mesma imagem redimensionando para 200% e iterativo 104% a cada vez até atingir aproximadamente as mesmas dimensões de pixel.
precisa
11
Se você quiser um exemplo de bicubic iterativo feito em uma imagem que beneficiaram do método, olhar para a minha análise aqui: emprical Estudo: Extremo upscaling digitais
jrista