Monday, May 19, 2008

Oleo Digital

Una característica de las imágenes en la computadora es que son digitales, es decir, hechas de dígitos. Cada dígito representa un punto en la pantalla, y normalmente el valor que vemos corresponde al color que ese punto tiene en la imagen. De esta manera, las fotografías digitales (ya sean escaneadas o tomadas con alguna cámara digital), son en realidad una matriz cuadrada de pixeles (puntos en la pantalla), que bien puede ser en color o en blanco y negro.

En la medida en que la tecnología ha progresado, hemos pasado de imágenes de 256 colores a las que nos pueden mostrar alrededor 16 millones de colores. Actualmente, cualquier tarjeta de video que se precie de serlo muestra los tres componentes de color R(ed - rojo), G(reen - verde) y B(lue - azul) en cada pixel, el cual puede ser un valor entre 0 y 255. De esta manera, 256 x 256 x 256 nos da 16,777,216 posibles colores. Cabe señalar que el ojo humano no puede ver semejante espectro de colores, pero es un hecho que la computadora puede desplegarlos.

Ahora bien, cada fotografía digital es en realidad una aproximación sobre lo que se fotografía tomando una cámara analógica, es decir, una que tenga filme. Por ello mismo, "el grano" de la cámara digital es la precisión con la cual puede distinguir los detalles. Por ello vemos que hay cámaras digitales de 4, 8, 10 o más megapixeles (estas últimas son para los profesionales probablemente). De hecho, tampoco ya el ojo humano no distingue entre, digamos, 8 y 10 megapixeles. De esta manera, la resolución de las imágenes ha crecido y con ello la necesidad de usar cada vez más bytes en los archivos y memorias donde se guarda.

Con el advenimiento de la tecnología digital de imágenes y su gran aceptación en el mercado, estmos viendo desaparecer las cámaras analógicas y los filmes. Se acabó el revelado y los costos asociados a esto.Además, con la generación de imágenes digitales, también nació la posibilidad de post procesarlas para generar efectos en ellas. Photoshop, por ejemplo, es uno de los programas más populares para manipulación digital de imágenes.


Filtros Digitales

La manipulación de una imagen digital se denomina genéricamente como un "filtro", el cual convierte una imagen en alguna otra cosa. Existen filtros que son reversibles, mientras que también los hay aquellos que no lo son. Ded acuerdo a las necesidades, se pueden tener diversos filtros o transformaciones que pueden aplicarse a una imagen incluso ya filtrada. Los resultados suelen ser sorprendentes.

Muchos filtros gráficos, sino es que todos, se consideran transformaciones grráficas basadas en una matriz llamada también "convolución" (no se asuste por la palabra, es sólo un término que da precisión a todo esto). Estas convoluciones es el procesar segmentos de la imagen a partir de una submatriz (que puede ser de 3x3, 4x4, 5x5, etc.) de pixeles, que va recorriendo la imagen completa. El resultado final convierte la imagen original en alguna otra cosa. Existen filtros para reconocer bordes, para quitar ruido, para meter ruido, para hacer más precisa una imagen, para hacerla menos precisa, para deformarla, etc. Las aplicaciones son infinitas.

El filtro Oleo Digital

En el libro Beyond Photography (The Digital Darkroom), de Gerard J. Holzmann, que trabajó algunos anos en los Laboratorios Bell (http://www.spinroot.com/pico/a4.pdf), el autor nos habla de cómo alterar imágenes. Ahí presenta la fotografía de Dennis Ritchie (uno de los inventores del lenguaje C), y al procesarla la convierte en la misma imagen, pero como si fuese pintada al oleo. De acuerdo al autor, lo que hace es esto: "Para cada punto en la imagen, un programa calcula el histograma de los 36 bordes del derredor [del punto de interés] y se asigna el valor [al propio punto de interés] el valor que contenga la mayor frecuencia. El resultado es casi una pintura al óleo".

Puse manos a la obra y diseñé mi primer programa que ejecuta este tipo de filtro. Al principio cometí el error de pintar la imagen filtradas sobre la imagen original y el resultado simplemente era muy pobre. De pronto entendí el error y es un instante se solucionaron los problemas que iba teniendo. Decidí, sin embargo, no usar 36 puntos, sino 49, para que así en mi matriz de convolución tenga un punto central en [4,4]. Con una convolución par no se puede tener un punto central.

Este programa funciona solamente con imágenes en blanco y negro (tonos de grises), pues en imágenes de tonos de gris sólo se tienen 256 tonos y además, las componentes RGB de cada pixel tienen el mismo valor, es decir, R=B=G, lo cual hace sencillo el encontrar el histograma de frecuencias cuando solamente se tienen 256 posibles tonos. Ya estoy, sin embargo, trabajando sobre la versión en color, que debe dar aún más espectacularidad al filtro mismo.

Cómo se usa el programa

El sistema permite cargar imágenes JPEG y BMP. En el menú de Archivo podrá leer la imagen que quiere procesar. Al cargarla a memoria, ésta debe desplegarse en ambas imágenes del programa. Use entonces la opción de Procesar y observará ante sus ojos el trabajo del filtro. Una vez terminado esto, puede guardar la imagen procesada (como JPG o JPEG). Y eso es todo.

Comparando resultados

En el libro mencionado, el autor pone la imagen de Dennis Ritchie procesada (además de la original). He aquí la imagen que el autor da (a la izquierda) y la procesada con mi programa (a la derecha). Recuérdese que mi matriz de convolución es de 7x7 mientras que la que usa el autor es de 6x6. ¿Cuál le parece mejor?


A quien le interese este programa, puede pedírmelo a morsa@la-morsa.com y se lo enviaré sin costo alguno a su cuenta de correo.

No comments: