Es el wiki de la comunidad, por lo que puedes arreglar esta publicación terrible.
Grrr, no LaTeX. :) Creo que tendré que hacerlo lo mejor que pueda.
Definición:
Tenemos una imagen (PNG u otro formato sin pérdida *) llamada A de tamaño A x por A y . Nuestro objetivo es escalarlo en p = 50% .
Image ( "array") B será una versión "directamente a escala" de A . Tendrá B s = 1 número de pasos.
A = B B s = B 1
Image ( "array") C será un "incrementalmente escalado" versión de A . Tendrá C s = 2 número de pasos.
A ≅ C C s = C 2
Lo divertido:
A = B 1 = B 0 × p
C 1 = C 0 × p 1 ÷ C s
A ≅ C 2 = C 1 × p 1 ÷ C s
¿Ves esos poderes fraccionales? Teóricamente degradarán la calidad con imágenes ráster (los rásteres dentro de los vectores dependen de la implementación). ¿Cuánto cuesta? Lo resolveremos a continuación ...
Lo bueno:
C e = 0 si p 1 ÷ C s ∈ ℤ
C e = C s si p 1 ÷ C s ∉ ℤ
Donde e representa el error máximo (peor de los casos), debido a errores de redondeo de enteros.
Ahora, todo depende del algoritmo de reducción de escala (Supermuestreo, Bicubic, muestreo de Lanczos, Vecino más cercano, etc.).
Si estamos utilizando el vecino más cercano (el peor algoritmo para cualquier cosa de cualquier calidad), el "verdadero error máximo" ( C t ) será igual a C e . Si estamos usando alguno de los otros algoritmos, se complica, pero no será tan malo. (Si quieres una explicación técnica sobre por qué no será tan malo como el vecino más cercano, no puedo darte una porque es solo una suposición. NOTA: ¡Hola, matemáticos! ¡Arreglen esto!)
Ama a tu prójimo:
Hagamos una "matriz" de imágenes D con D x = 100 , D y = 100 y D s = 10 . p sigue siendo el mismo: p = 50% .
Algoritmo de vecino más cercano (terrible definición, lo sé):
N (I, p) = mergeXYDuplicates (floorAllImageXYs (I x, y × p), I) , donde solo se multiplican los x, y ; no sus valores de color (RGB)! Sé que realmente no puedes hacer eso en matemáticas, y esta es exactamente la razón por la que no soy EL LEGENDARIO MATEMÁTICO de la profecía.
( mergeXYDuplicates () mantiene solo los "elementos" x, y más inferiores a la izquierda / más a la izquierda en la imagen original I para todos los duplicados que encuentra, y descarta el resto).
Tomemos un píxel aleatorio: D 0 39,23 . Luego aplique D n + 1 = N (D n , p 1 ÷ D s ) = N (D n , ~ 93.3%) una y otra vez.
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)
Si hiciéramos una escala simple solo una vez, tendríamos:
b 1 = piso ((39,23) × 50%) = piso ((19.5,11.5)) = (19,11)
Comparemos b y c :
b 1 = (19,11)
c 10 = (15,8)
¡Eso es un error de (4,3) píxeles! Probemos esto con los píxeles finales (99,99) y tengamos en cuenta el tamaño real en el error. No volveré a hacer todos los cálculos aquí, pero te diré que se convierte en (46,46) , un error de (3,3) de lo que debería ser, (49,49) .
Combinemos estos resultados con el original: el "error real" es (1,0) . Imagínese si esto sucede con cada píxel ... puede terminar haciendo una diferencia. Hmm ... Bueno, probablemente haya un mejor ejemplo. :)
Conclusión:
Si su imagen es originalmente de gran tamaño, en realidad no importará, a menos que haga varias escalas descendentes (consulte "Ejemplo del mundo real" a continuación).
Empeora en un máximo de un píxel por paso incremental (hacia abajo) en el vecino más cercano. Si hace diez escalas, su imagen se degradará ligeramente en calidad.
Ejemplo del mundo real:
(Haga clic en las miniaturas para ampliarla).
Reducido en un 1% de forma incremental usando Supermuestreo:

Como puede ver, el Supermuestreo lo "difumina" si se aplica varias veces. Esto es "bueno" si está haciendo una reducción de escala. Esto es malo si lo estás haciendo de forma incremental.
* Según el editor y el formato, esto podría marcar la diferencia, por lo que lo mantengo simple y lo considero sin pérdidas.
(100%-75%)*(100%-75%) != 50%. Pero creo que sé lo que quieres decir, y la respuesta a eso es "no", y realmente no podrás notar la diferencia, si es que hay alguna.