2.1.2 Efectos: Negativo, Umbral, Posterización,...


Existen gran cantidad de efectos muy conocidos que simplemente están basados en sencillas operaciones sobre las intensidades de los pixels que forman la imagen. A continuación describiremos algunos de los más comunes de los cuales vimos ya la función de transferencia en Ejemplos de funciones de transferencia y el estudiante puede remitirse a dicho apartado si quiere ver las funciones de transferencia de estos efectos.

Negativo

Este efecto consigue hallar, como su nombre dice, el negativo de una imagen. Lo que obtenemos es laimagen tal y como aparece en los carretes de fotos cuando se revelan (no en el papel, sino en la película). El efecto de negativo ya ha sido comentado cuando se trató el tema de las modificaciones de histograma. Allí se indicaba que existían formas más eficientes de implementar ciertos procesados.

Para el caso del negativo solo es necesario aplicar la siguiente operación sobre cada uno de los pixels de nuestra imagen en escala de grises:

nuevo_pixel=255-viejo_pixel

Como se puede comprobar si el pixel tenía el valor 0 (negro) su nuevo valor pasaría a ser 255 (blanco) y de forma análoga un valor 255 (blanco) se convertiría en el valor 0.

Umbral ó Threshold

Threshold podría ser traducido como umbral. Este efecto convierte una imagen en tonos de gris en una imagen bicolor (blanco y negro), asignando el valor 255 (blanco) a los valores de pixel por encima de un cierto umbral, el cual es un parámetro, o 0 si está por debajo de este. La operación a realizar es la siguiente:

si (viejo_pixel>umbral)

sino

Posterización o Cuantificación de niveles de gris

La posterización consiste en reducir la profundidad de color, eliminando los bits menos significativos de cada pixel. Lo que hacemos es cuantificar los niveles de gris. Se ve claramente que la función de transferencia es un función de cuantificación. Es en sí una primera aproximación a la segmentación de imagen. Al igual que con el threshold tenemos un parámetro que nos indica el número de nivel al que queremos reducir la imagen, en general una potencia de 2 para que la implementación sea más sencilla. Un pseudocódigo que implementa la posterización sería:

nuevo_pixel = viejo_pixel & máscara

Dónde el parámetro máscara es una potencia de 2 a la que se suma la unidad. Así 1 reduce la imagen a 128 tonos, 3 a 64, y 7 la reduciría a 2, el tono 0 y el tono 127. Evidentemente si se desea cualquier otro valor de niveles de gris se puede siempre acudir a la función de transferencia, pero el algoritmo es menos eficiente y más complejo. El applet que veremos al final del tema muestra cualquier valor de cuantificación, dejamos en manos del lector la creación de una algoritmo.

Corrección Gamma

En un monitor o en un televisor, la señal que le entra es un voltaje que en la pantalla del tubo de rayos catódicos se transforma en luz que nosotros vemos. Todo sería correcto si la luz emitida fuera directamente proporcional al voltaje que lellega, pero en muchos casos no ocurre esto, sino que la relación es aproximadamente cuadrática. La relación no lineal entre luz emitida y tensión de entrada se puede expresar:

siendo B la luz, V la tensión '^' signo de potencia y gamma un factor de descompensación y que produce esta no linealidad. Algunos valores típicos de gamma según el tubo de rayos catódicos son 1.7, 2.8 y también los hay de valor 1 que no producen esta alteración.

La corrección gamma lo que hace es elevar la señal al exponente 1/gamma para compensar el efecto comentado anteriormente.

Existen otros muchos efectos de este tipo y otros muchos pueden ser inventados, sobre todo si no se busca una utilidad práctica de los mismos sino únicamente un utilidad estética, así que se trata de un interesante campo de experimentación. La forma más facil de jugar con nuevos efectos es aplicando diferentes funciones de transferencia a las imágenes.