Thursday, September 13, 2012

Más sobre semitonos



El 14 de marzo de este año, hablé de un programa que escribí de semitonos. Basado en lo que en realidad es la ditherización, logré hacer que mi programa filtrara una imagen de manera que pudiese ser desplegada como si tuviese menos colores, o tonos de gris. Sin embargo, la ditherización es un tema que ha sido más que usado, particularmente por la industria editorial.

El problema surge cuando uno despliega una imagen  (blanco & negro o color), en un dispositivo que da una resolución determinada (digamos, unos 1800x1200 pixeles, con 16 millones de colores). Evidentemente si quiero que dicha imagen pase a ser impresa a un dispositivo que sólo despliega los valores blanco y negro, debo hacer algo para representar los tonos de gris que simplemente no tengo. Esto es lo que se llaman semitonos y la idea es combinar puntos blancos con negros para formar el punto de un gris determinado. Cabe decir que no estamos mezclando -digamos- pigmento blanco con negro, sino que ponemos un punto negro sobre fondo blanco. Para que dé el tono correcto, una idea fue poner una imagen de un punto grande, negro, un circulote pues, sobre un cuadro blanco de 270 pixeles cuadrados. Fui reduciendo de 30 en 30 pixeles y acomodaba el resultado en el mismo cuadrado blanco de 270 pixeles. Así, hasta lograr hacer un punto de 30x03 pixeles. Acto seguido creé un cuadro blanco sin punto negro en el centro. Logré así 10 imágenes que representan un tono de gris, y el ojo humano es quien no dará esos tonos que en realidad no existen.


(el cuadro blanco representa un cuadrado de 270x270 pixeles sin punto negro)

Una vez hecho esto, procedí como en otros casos:

  1. 1. Cargué una imagen a memoria
  2. 2. La pasé a tonos de grises (si es de color)
  3. 3. Cuadriculo la imagen
  4. 4. Tomo un cuadro de la región, calculo el gris promedio y pongo alguno de los puntos de las imágenes de los semitonos. Estas imágenes son 10, las cuales van, desde muy oscuro a muy claro. Si el tono de gris está en un valor que va de 0 a 255, entonces tenemos que por cada cuadro de un tono de gris, este debe caer en un intervalo que va de 25 en 25 tonos de gris.
  5. 5. Una vez seleccionado la imagen del semitono, sigo con la siguiente región y repito el paso 4
  6. 6. Al terminar con la imagen, con otro programa construyo la imagen generada por el programa de semitonos.


He aquí un ejemplo hecho con Lenna, la imagen que por tradición se usa en la ciencia del procesamiento de imágenes. Más información sobre esta mujer y de dónde salió la imagen, puede verse en el enlace que puse al principio de este artículo.

Imagen original:

Imagen procesada: 

He aquí parte de la imagen aumentada:

Esta es la tecnica que se usó por muchos años en los periódicos, los cuales tenían una resolución de salida mucho más pobre que la mayoría de la resolución que las fotografías podían dar.

A quien le interese este programa, que es completamente gratuito, pídamelo por correo a morsa@la-morsa.com.

2 comments:

Diego said...

sería posible que en vez de una salida a html, tuviera salida a raster o jpg?

Morsa said...

Diego, el sistema cre ados archivos, uno html y otro txt. En la opción de soporte puede decirle que ejecute el creador de imágenesd y te pedirá la carpeta en donde están las gráficas que se usasron (los puntos de varios tamaños, que se instalaron en la carpeta de sdemitonos). Le dices que use esa carpeta. Después le pides generar el mosaico y te pedirá el archivo de texto. Entonces creará la iamgen para guardarla como jpg.