Algoritmos de escalado de pixel art

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 29 de abril de 2016; las comprobaciones requieren 7 ediciones .

Los algoritmos de escalado de gráficos de píxeles  son algoritmos de escalado de imágenes digitales diseñados específicamente para aumentar la calidad de los gráficos de baja resolución . A diferencia de los algoritmos de escalado tradicionales, ofrecen una imagen menos borrosa.

Razones para

Hay dos algoritmos estándar de escalado de imágenes, interpolación bilineal y bicúbica . Dado que las coordenadas de color del píxel actual generalmente se calculan interpolando cuatro vecinos, la imagen procesada es borrosa. Si bien esto es aceptable para imágenes a todo color, el uso de la interpolación tiende a reducir el contraste (nitidez de los bordes) y, por lo tanto, este método produce resultados deficientes en imágenes indexadas por paleta.

El método del vecino más cercano conserva los bordes nítidos, pero introduce un alias en la imagen (en particular, las líneas diagonales se asemejan a una "escalera" de cuadrados). Por lo tanto, el algoritmo ideal para ampliar pixel art debe interpolar áreas de tono continuo, conservar la nitidez de las líneas horizontales y verticales y suavizar (anti-aliasing) líneas y curvas diagonales. Se han hecho varios intentos para resolver este problema.

Eficiencia

Dado que el área principal de aplicación de estos algoritmos son los emuladores de consolas antiguas y juegos de DOS, muchos de ellos están diseñados para mostrar una imagen que cambia dinámicamente en tiempo real (con una resolución de imagen de entrada suficientemente baja).

Muchos algoritmos solo funcionan con ampliaciones de números enteros: 2x, 3x y 4x.

Algoritmos

EPX/Scale2x/AdvMAME2x

EPX ("Eric's Pixel eXpansion") es un algoritmo desarrollado por Eric Johnston de LucasArts alrededor de 1992 [1] mientras migraba el motor SCUMM de la PC de IBM (resolución de 320 × 200, 256 colores) a las primeras computadoras de color Macintosh . era aproximadamente el doble de alto [2] .

El algoritmo funciona así:

A --\ 1 2 CEC --/ 3 4 D Si C==A => 1=A Si A==B => 2=B Si B==D => 4=D Si D==C => 3=C Si 3 o más píxeles de A, B, C, D son iguales: 1=P, 2=P, 3=P, 4=P

Las implementaciones posteriores de este algoritmo (como AdvMAME2x y Scale2x, desarrolladas alrededor de 2001) tienen una implementación diferente (más eficiente) pero funcionalmente idéntica:

A --\ 1 2 CEC --/ 3 4 D 1=P; 2=P; 3=P; 4=P; Si C==A y C!=D y A!=B => 1=A Si A==B y A!=C y B!=D => 2=B Si B==D y B!=A y D!=C => 4=D Si D==C y D!=B y C!=A => 3=C

AdvMAME4x/Scale4x es solo EPX aplicado dos veces.

Scale3x/AdvMAME3x

El algoritmo AdvMAME3x/Scale3x no es lo mismo que EPX, pero son bastante similares entre sí:

ABC --\ 1 2 3 DEF > 4 5 6 GHI --/ 7 8 9 1=E; 2=E; 3=E; 4=E; 5=E; 6=E; 7=E; 8=E; 9=E; Si D==B y D!=H y B!=F => 1=D Si (D==B y D!=H y B!=F y E!=C) o (B==F y B!=D y F!=H y E!=A) => 2=B Si B==F y B!=D y F!=H => 3=F Si (H==D y H!=F y D!=B y E!=A) o (D==B y D!=H y B!=F y E!=G) => 4=D 5=mi Si (B==F y B!=D y F!=H y E!=I) o (F==H y F!=B y H!=D y E!=C) => 6=F Si H==D y H!=F y D!=B => 7=D Si (F==H y F!=B y H!=D y E!=G) o (H==D y H!=F y D!=B y E!=I) => 8=H Si F==H y F!=B y H!=D => 9=F

Águila

Eagle funciona de la siguiente manera: por cada píxel de entrada, se generan 4 píxeles de salida, inicialmente los colores de los cuatro se establecen en el color del píxel escaneado actual (exactamente igual que en el vecino más cercano), luego los píxeles de la parte superior y izquierda se escanean si son del mismo color (los tres), luego pintamos el píxel superior izquierdo en este color, realizamos acciones similares para los cuatro píxeles y seguimos [3]

.

Primero: |Luego: . . . --\ CC |ETU --\ 1 2 . C. --/ CC |VCW --/ 3 4 . . . |XYZ | Si V==S==T => 1=S | Si T==U==W => 2=U | Si V==X==Y => 3=X | Si W==Z==Y => 4=Z

Por lo tanto, un solo píxel negro sobre un fondo blanco se disolverá al aplicar este algoritmo. Este error se ha solucionado en los algoritmos 2xSaI y HQ3x.

2xSaI

2xSaI, (escala e interpolación 2x) es una mejora del algoritmo Eagle. Fue desarrollado por Derek Liauw Kie Fa, también conocido como Kreed, originalmente para su uso en emuladores, donde todavía es un algoritmo bastante popular. Muchos emuladores populares como ZSNES , Jnes , DOSBox y VisualBoyAdvance admiten este algoritmo de salida.

Kreed ha publicado los códigos fuente del algoritmo [1] bajo la licencia GPL , es decir, puede usarse libremente para cualquier propósito estipulado por la licencia. Para usar el algoritmo en productos no GPL, el desarrollador tendría que reescribirlo sin usar el código escrito por Kreed.

Super 2xSaI y Super Eagle

Las implementaciones ligeramente modificadas se denominan "Super 2xSaI", "2xSaI" y "Super Eagle".

Super Eagle escrito por Kreed, similar a 2XSaI, pero la salida es una mezcla más fuerte de colores de píxeles (fusión).

Super 2xSaI está escrito por Kreed, un filtro para suavizar gráficos, pero con una mezcla más fuerte que Super Eagle.

La familia hq n x

Maxim Stepin desarrolló los algoritmos hq2x, hq3x y hq4x para aumentos en proporciones de 2:1, 3:1 y 4:1, respectivamente. El color de cada píxel se compara con ocho vecinos, los vecinos se marcan como cercanos y lejanos, luego se usa una tabla generada previamente para encontrar la relación de valores requerida para cada uno de los 4, 9 o 16 píxeles de salida. El algoritmo hq3x suaviza perfectamente las líneas diagonales con una pendiente de ±1:2, ±1:1 y ±2:1 (siempre que no haya suavizado en la entrada del algoritmo); las líneas con un factor de pendiente diferente se representarán como líneas discontinuas desde las diagonales anteriores. Las curvas pronunciadas se suavizan bien. A diferencia de 2xSaI, el suavizado se aplica a la salida [4] .

hq n x fue diseñado originalmente para el emulador de Super Nintendo, ZSNES .

El algoritmo de Kopf-Lishchinsky

El algoritmo fue desarrollado en 2011 y presentado en SIGGRAPH 2011 [5] . Convierte una imagen de píxeles con pocos colores en forma de vector. Sin embargo, si la imagen tiene suavizado, los resultados son peores.

Aplicación en emuladores de videoconsolas

En ordenadores suficientemente rápidos, estos algoritmos permiten implementar la salida de una imagen escalada, lo que es aceptable en términos de velocidad para aplicaciones en tiempo real, en particular, juegos de ordenador. Los algoritmos altamente optimizados brindan una imagen clara y nítida con un desenfoque mínimo. Se han implementado algoritmos de escalado de gráficos de píxeles para una variedad de emuladores, motores de juegos 2D y motores de juegos remasterizados, como AdvanceMAME , DOSBox y ScummVM . Fueron muy aclamados por los jugadores que comenzaron a rehacer juegos escritos en los años 80 y 90. Estos filtros se utilizan actualmente (2013) en emuladores comerciales de Xbox Live , Virtual Console y PSN para hacer que los juegos clásicos de baja resolución se vean mejor en pantallas de alta resolución. Dichos juegos incluyen Sonic's Ultimate Genesis Collection , Castlevania: The Dracula X Chronicles , Castlevania: Symphony of the Night y Akumajō Dracula X Chi no Rondo .

Notas

  1. Indiana Jones y el destino de la Atlántida (captura de pantalla PNG). Archivado desde el original el 11 de abril de 2012.
  2. Thomas, Kas Fast Blit Strategies: Guía del programador de Mac (1999). Archivado desde el original el 11 de abril de 2012.
  3. Águila (idea) . Todo2 (18 de enero de 2007). Archivado desde el original el 11 de abril de 2012.
  4. Stepin, Filtro de aumento Maxim hq3x . Consultado el 3 de julio de 2007. Archivado desde el original el 8 de febrero de 2008.
  5. Despixelización de Pixel Art . Fecha de acceso: 26 de marzo de 2012. Archivado desde el original el 1 de septiembre de 2015.

Enlaces