Skip to main content

Command Palette

Search for a command to run...

Transformación de imágenes a Pixel Art mediante procesamiento digital

Updated
8 min read
Transformación de imágenes a Pixel Art mediante procesamiento digital

El pixel art es un estilo de arte digital que ha ganado gran popularidad en los últimos años, especialmente en la industria de los videojuegos, donde ha surgido un género completo que adopta esta estética para evocar la apariencia de los arcades clásicos y las consolas de 8 bits, en los cuales este estilo tuvo su origen. En aquella época, las limitaciones gráficas imponían fuertes restricciones: las consolas solo podían manejar paletas de colores reducidas y trabajar con resoluciones muy bajas, lo que hacia que cada píxel y color debieran elegirse con cuidado para construir escenas y personajes.

Lo que en su momento fue una imposición técnica terminó definiendo una estética completa que hoy es recuperada de forma intencional en numerosos videojuegos. Como en cualquier otra disciplina artística, crear pixel art de calidad exige tiempo, intención y cuidado. Cada píxel cuenta, y cada color debe elegirse estratégica para que la escena funcione.

Sin embargo, en ocasiones lo que se busca es simplemente aplicar un estilo pixel art a una imagen de forma rápida. para ello, existen numerosas páginas web que ofrecen transformaciones automáticas. El problema es que la mayoría de estas herramientas se limitan a aplicar reducciones de resolución (downsampling) seguidas de una cuantización de color básica. El resultado suele ser pobre: pérdida de estructura, colores mal distribuidos y una estética que no logra capturar realmente la esencia del pixel art.

En el otro extremo se están las alternativas basadas en IA generativa, que pueden producir imágenes bien estilizadas, pero estas soluciones suelen ser difíciles de controlar, además de que no siempre permiten preservar la estructura original de la imagen de forma precisa y es una opcion muy costosa.

Si se busca algo más que un simple efecto pixelado, es necearia una tecnica más rigurosa. En el trabajo Pixelated Image Abstraction se propone tratar la generación de pixel art como un problema de optimización estructurada, donde la segmentación de la imagen y la construcción de la paleta de colores se determinan de forma conjunta y no por separada.


Por qué el enfoque tradicional no es suficiente

Supongamos que queremos convertir una imagen de alta resolución en:

  • una imagen de salida muy pequeña (por ejemplo 64×64),

  • con una paleta limitada a (K) colores.

El enfoque básico sería:

  1. Reducir resolución (downsampling).

  2. Aplicar cuantización de color.

El problema es que ambos procesos se realizan de forma independiente. La reducción espacial ignora qué colores serán importantes, y la cuantización ignora cómo están organizadas espacialmente las regiones, dando como resultado una imagen pixelada sin estructura.

trasformacion a pixel art

El método descrito en el paper propone algo diferente:

Optimizar simultáneamente cómo se agrupan los píxeles y qué colores representarán esos grupos.


Formulación del problema

Sea:

$$I \in \mathbb{R}^{w_{in} \times h_{in}}$$

la imagen de entrada, y

$$O \in \mathbb{R}^{w_{out} \times h_{out}}$$

la imagen de salida.

Definimos:

  • $M$ = \(w_{in} \cdot h_{in}\) píxeles originales

  • $N$ = \(w_{out} \cdot h_{out}\) superpíxeles \(s_j\),

  • una paleta con $K$ colores \(c_k\) .

El objetivo es encontrar:

  • una partición del espacio en $N$ superpíxeles,

  • una paleta de $K$ colores,

  • una asignación probabilística entre superpíxeles y colores,

En lugar de resolver ambos problemas por separado, se aproxima la minimización de una energía libre del tipo:

$$F = E - T S$$

donde:

  • $E$ mide el error de reconstrucción cromática,

  • $S$ es la entropía de las asignaciones,

  • $T$ es una temperatura que controla el grado de suavidad de las decisiones.

Cuando la temperatura es alta, el sistema favorece asignaciones suaves y globales, si la temperatura disminuye, las decisiones se vuelven más rígidas y estructuradas.


Pseudocodigo del algoritmo

El método alterna entre refinamiento espacial y refinamiento cromático:

Inicializar grilla regular de superpíxeles
Refinar superpíxeles (SLIC local)
Aplicar suavizado bilateral sobre la grilla reducida
Inicializar paleta con un solo color
Calcular temperatura inicial T

mientras T > T_final:
    Asignación suave de colores (MCDA)
    Actualizar paleta
    Refinar segmentación espacial
    Suavizar centros (Laplacian)
    Expandir paleta si corresponde
    Reducir temperatura

La clave es que la segmentación depende de los colores actuales, y la paleta depende de los superpíxeles actuales.


Segmentación mediante superpíxeles

Se utiliza una variante local de SLIC trabajando en el espacio:

$$(L, a, b, x, y)$$

donde:

  • $L,a,b$ es el espacio de color perceptual LAB,

  • $x,y$ son coordenadas espaciales.

La distancia combinada utilizada es:

$$D = |c_i - c_j|^2 + \frac{m}{S^2}|x_i - x_j|^2$$

donde:

  • \(c_i\) es el color LAB del píxel,

  • \(c_j\) es el color actual del superpíxel,

  • $m$ controla regularidad espacial,

  • $S$ es el tamaño esperado del superpíxel.

A diferencia de versiones simplificadas, aquí el color del superpíxel se mantiene como la media real de sus píxeles asignados. La coherencia con la paleta se logra a través del acoplamiento iterativo, no forzando directamente el color de la paleta en la segmentación.


Regularización geométrica y cromática

Después de cada actualización espacial, se aplica un suavizado laplaciano sobre la grilla de centros:

$$x_j \leftarrow x_j + \alpha (\text{promedio vecinos} - x_j)$$

Este término actúa como una regularización geométrica explícita que penaliza deformaciones abruptas y mantiene coherencia estructural.

Antes del proceso de annealing se aplica además un filtro bilateral sobre la imagen reducida. Esto reduce variaciones cromáticas de alta frecuencia preservando bordes, lo que estabiliza la estimación posterior y evita divisiones espurias en la paleta.


Optimización cromática con Deterministic Annealing

El sistema comienza con un único color.

La temperatura inicial se fija en función del mayor eigenvalor de la matriz de covarianza de los superpíxeles:

\(\lambda_{max}\)​ Este valor marca el punto de inestabilidad del cluster único. Por encima de esta temperatura, una sola representación es estable. Al descender por debajo de ella, el sistema puede bifurcarse naturalmente.

Esto es lo que permite que la paleta crezca de forma progresiva y estructurada.


Optimización cromática mediante deterministic annealing

La asignación entre superpíxeles y colores se modelan probabilísticamente:

$$P(c_k \mid s_j)=\frac{ \exp\left( -\frac{| m_j - c_k |^2}{T} \right) }{ \sum_{l} \exp\left( -\frac{| m_j - c_l |^2}{T} \right) }$$

Cuando T es alta, las asignaciones son suaves y globales.
A medida que el sistema se enfría, la entropía pierde peso y el error domina, produciendo decisiones más definidas.

La actualización de cada color se realiza mediante promedio ponderado:

$$c_k=\frac{ \sum_{j} m_j , P(c_k \mid s_j) }{ \sum_{j} P(c_k \mid s_j) }$$

En el límite \(T \to 0\) el comportamiento converge hacia k-means, pero con una trayectoria mucho más estable.


Crecimiento progresivo de la paleta

Cuando la temperatura disminuye y un cluster presenta alta varianza interna, se divide utilizando análisis PCA:

$$\begin{aligned} c_1 &= \mu + \epsilon v \ c_2 &= \mu - \epsilon v \end{aligned}$$

donde v es el eigenvector principal de la covarianza. De esta manera, la paleta captura primero la estructura global y luego los detalles finos.


Reconstrucción final

Una vez que la temperatura alcanza \(T_{final}\):

  • Cada superpíxel se asigna al color más probable.

  • Se reconstruye directamente la imagen reducida \(w_{out} \times h_{out}\)

  • Se convierte de LAB a RGB.

No hay interpolación ni reescalado posterior. Cada superpíxel corresponde exactamente a un píxel final.


Resultados

Conclusion

Esta técnica ofrece mejores resultados cuando lo que se busca es mantener la estructura de la escena y obtener una representación más fiel a la estética del pixel art. Al tratar de manera conjunta la segmentación y la paleta, el resultado es más estable y coherente.

Sin embargo, si el objetivo es alcanzar un resultado verdaderamente artístico, el proceso no termina aquí. Siempre será necesario dedicar tiempo a la corrección de detalles, ajustar colores o redefinir pequeñas áreas para lograr una escena más expresiva, esta técnica no sustituye el trabajo del artista, pero sí puede proporcionar un excelente punto de partida: un boceto inicial sobre el cual comenzar a construir una escena pixel art.

Además, el enfoque podría extenderse aún más. Por ejemplo, podría adaptarse para trabajar en video o implementarse como un shader en un entorno de videojuegos, . No obstante, esto implicaría nuevos desafíos. La elección del número de clusters, por ejemplo, depende en gran medida de la variabilidad cromática de la imagen, y seleccionar un valor inadecuado puede provocar pérdida de información importante. A esto se suma que, al tratarse de un algoritmo iterativo, los tiempos de ejecución pueden convertirse en un cuello de botella, especialmente en aplicaciones en tiempo real.

https://github.com/Nobody-1321/PixelOps