É um wiki da comunidade, para que você possa consertar este post terrível.
Grrr, sem LaTeX. :) Acho que vou ter que fazer o melhor que puder.
Definição:
Temos uma imagem (PNG ou outro formato sem perdas *) chamada A do tamanho A x por A y . Nosso objetivo é escalá-lo em p = 50% .
Imagem ( "array") B será uma versão "diretamente escalado" de A . Ele terá B s = 1 número de etapas.
A = B B s = B 1
Imagem ( "array") C será uma "forma incremental escalado" versão do A . Ele terá C s = 2 número de etapas.
A ≅ C C s = C 2
O material divertido:
A = B 1 = B 0 × p
C 1 = C 0 × p 1 ÷ C s
A ≅ C 2 = C 1 × p 1 ÷ C s
Você vê esses poderes fracionários? Teoricamente, eles degradam a qualidade com imagens raster (rasters dentro de vetores dependem da implementação). Quanto? Vamos descobrir isso a seguir ...
As coisas boas:
C e = 0 se p 1 ÷ C s ∈ ℤ
C e = C s se p 1 ÷ C s ∉ ℤ
Onde e representa o erro máximo (pior cenário), devido a erros de arredondamento de número inteiro.
Agora, tudo depende do algoritmo de redução de escala (Super Sampling, Bicubic, Lanczos, Lanczos, Nearest Neighbor, etc).
Se estivermos usando o vizinho mais próximo (o pior algoritmo para qualquer coisa de qualquer qualidade), o "erro máximo verdadeiro" ( C t ) será igual a C e . Se estamos usando qualquer um dos outros algoritmos, fica complicado, mas não será tão ruim assim. (Se você quiser uma explicação técnica sobre por que não será tão ruim quanto o vizinho mais próximo, não posso lhe dar uma causa, é apenas um palpite. NOTA: Ei matemáticos! Corrija isso!)
Ame o seu próximo:
Vamos fazer um "array" de imagens D com D x = 100 , D y = 100 , e D s = 10 . p ainda é o mesmo: p = 50% .
Algoritmo de vizinho mais próximo (definição terrível, eu sei):
N (I, p) = mesclarXYDuplicados (floorAllImageXYs (I x, y × p), I) , onde apenas o próprio x, y está sendo multiplicado; não seus valores de cores (RGB)! Eu sei que você realmente não pode fazer isso em matemática, e é exatamente por isso que eu não sou O MATEMÁTICO LEGENDÁRIO da profecia.
( mergeXYDuplicates () mantém apenas os " x " elementos mais à esquerda / mais à esquerda na imagem original I para todas as duplicatas que encontrar e descarta o resto.)
Vamos pegar um pixel aleatório: D 0 39,23 . Em seguida, aplique D n + 1 = N (D n , p 1 ÷ D s ) = N (D n , ~ 93,3%) repetidamente.
c n + 1 = piso (c n × ~ 93,3%)
c 1 = piso ((39,23) × ~ 93,3%) = piso ((36.3,21.4)) = (36,21)
c 2 = piso ((36,21) × ~ 93,3%) = (33,19)
c 3 = (30,17)
c 4 = (27,15)
c 5 = (25,13)
c 6 = (23,12)
c 7 = (21,11)
c 8 = (19,10)
c 9 = (17,9)
c 10 = (15,8)
Se reduzíssemos apenas uma vez, teríamos:
b 1 = piso ((39,23) × 50%) = piso ((19,5,11,5)) = (19,11)
Vamos comparar b e c :
b 1 = (19,11)
c 10 = (15,8)
Isso é um erro de (4,3) pixels! Vamos tentar isso com os pixels finais (99,99) e considerar o tamanho real do erro. Não vou fazer toda a matemática aqui novamente, mas vou lhe dizer que se torna (46,46) , um erro de (3,3) do que deveria ser (49,49) .
Vamos combinar estes resultados com o original: o "erro real" é (1,0) . Imagine se isso acontecer com todos os pixels ... pode acabar fazendo a diferença. Hmm ... Bem, provavelmente há um exemplo melhor. :)
Conclusão:
Se sua imagem é originalmente de tamanho grande, isso realmente não importa, a menos que você faça várias escalas inferiores (consulte "Exemplo do mundo real" abaixo).
Piora no máximo um pixel por etapa incremental (para baixo) no vizinho mais próximo. Se você fizer dez escalas inferiores, sua imagem será levemente degradada em qualidade.
Exemplo do mundo real:
(Clique nas miniaturas para ampliá-la.)
Reduzido em 1% incrementalmente usando Super Sampling:
Como você pode ver, a Super Sampling "desfoca" se aplicada várias vezes. Isso é "bom" se você estiver fazendo um downscale. Isso é ruim se você estiver fazendo isso de forma incremental.
* Dependendo do editor e do formato, isso pode fazer a diferença, por isso estou simplificando e chamando de sem perdas.
(100%-75%)*(100%-75%) != 50%
. Mas acredito que sei o que você quer dizer, e a resposta para isso é "não", e você realmente não será capaz de dizer a diferença, se houver.