Showing posts with label imágenes en color y en tonos de grises. Show all posts
Showing posts with label imágenes en color y en tonos de grises. Show all posts

Tuesday, March 11, 2025

Posterizar una imagen


El algoritmo para posterizar una imagen significa reducir el número de colores en la imagen, creando un efecto de "póster" con transiciones de color planas en lugar de degradados suaves. El algoritmo básico de posterización se realiza de la siguiente manera:

  • Decidir cuántos colores se quieren tener en la imagen posterizada. Por ejemplo, se pueden elegir 4, 8, 16, etcétera.
  • Dividir entonces el rango de colores, esto es, dividir el rango de valores de cada canal de color (rojo, verde y azul) en el número de niveles deseado. Por ejemplo, si tienes 8 niveles, el rango de 0-255 se dividirá en 8 intervalos iguales.
  • Asignar nuevos valores de color: Para cada píxel de la imagen original, determina en qué intervalo cae el valor de cada canal de color. Luego, asigna a ese píxel el valor central del intervalo correspondiente.

Si tomamos, por ejemplo, tener cuatro colores (o niveles): 

  • Si el valor de un canal está entre 0-63, se asigna 31.
  • Si está entre 64-127, se asigna 95.
  • Si está entre 128-191, se asigna 159.
  • Si está entre 192-255, se asigna 223.

La fórmula para cada RGB es:

  •       R := round(((R div Factor) + 0.5) * Factor);
  •       G := round(((G div Factor) + 0.5) * Factor);
  •       B := round(((B div Factor) + 0.5) * Factor);

Donde el "factor" es un valor que va de 2 a 256.

El lector cuidadoso notará que la variable Factor se divide y luego se multiplica, lo cual es equivalente a no hacer nada (multiplicar por 1). Sin embargo, la división es entera, lo que deja los valores decimales fuera. Por ejemplo, si tomamos un valor blanco (255). Al dividirlo por 64 (sólo 4 valores), obtendremos 3.984375. Si quitamos los decimales, tendremos (3 + 0.5) * 64 = 224.

Veamos esto con cuatro imágenes, con 4, 8, 16, y 32 colores.


2 niveles (izquierda) y 4 niveles (derecha)




8 niveles (izquierda) y 16 niveles (derecha)



Imagen original (en tonos de gris)

También se puede hacer en color, donde puede verse un resultado interesante:


4 niveles (izquierda) y la imagen original en color (derecha)