All pastes #739170 Raw Edit

Unnamed

public text v1 · immutable
·published 2007-10-16 22:36 UTC
rendered paste body
La monocromatización es un problema interesante, vinculado en esencia a otras técnicas de reconocimiento de imágenes: se trata de eliminar parte de la información (el color) reduciendo así su complejidad para hacer más abordable su análisis. En el caso que nos concierne, simplificamos la implementación de los algoritmos de detección de bordes mediante la monocromatización previa de los archivos de entrada.

Un archivo de imagen común suele estar compuesto por tres componentes de rojo, verde y azul (la base RGB, por sus iniciales en inglés). Las transformaciones utilizadas para eliminar el color consistieron en tomar el promedio de los valores de los componentes, o tomar el máximo de los tres. Es sencillo encontrar ejemplos donde estas aproximaciones no son efectivas.

En particular el ejemplo presentado a continuación no es monocromatizado de forma conveniente y por lo tanto sus bordes no son detectados por el algoritmo de detección. Si se usan colores puros como azul (0000FF), rojo (FF0000) y amarillo (FFFF00) se pueden forzar situaciones en las que los elementos de la figura desaparecen después de la monocromatización.

Respecto del algoritmo de monocromatización por máximo, los 3 colores presentados se representan de la misma manera en la versión monocromática de la imagen. Al obtenerse una imagen monocromática de color gris uniforme, el algoritmo no puede detectar bordes de ningún tipo.

Para la misma imagen, el algoritmo de monocromatización por promedio ofrece un resultado un poco más apropiado ya que solo pierde una de las dos figuras, y en general es una opción más razonable para imágenes de todo tipo. Eventualmente, la introducción de coeficientes para ponderar la importancia de uno u otro canal en el resultado de la monocromatización de un pixel,  puede mejorar aún más el realismo de la imagen obtenida. En particular se suele otorgar más importancia al canal verde de la imagen original, ya que mucha de la percepción de luminancia en el ojo humano se relaciona con ese canal. A modo ilustrativo, se presenta a continuación una imagen similar a la descripta previamente, y que también presenta problemas para el algoritmo de monocromatización por promedio.


[[imagen]]

Esta imagen presenta los 3 colores primarios en forma prácticamente pura. El rectángulo amarillo se compone del 100$%$ del canal rojo y del verde, el fondo rojo del 100$%$ del canal rojo únicamente, al igual que el círculo azul que se representa análogamente con ese canal. Al promediar, resulta que el fondo rojo se representa de la misma manera que el círculo azul, con lo cual se funde en el mismo y el algoritmo de detección de bordes no puede detectarlo. Esto constituye un problema significativo, ya que no se trata de elementos sutilmente distintos, sino de una fuerte diferencia de tonalidad que el algoritmo es incapaz de procesar.

Posibles mejoras podrían haber sido procesar los 3 canales por separado, considerando a cada uno como una imagen en blanco y negro, y luego sumando los resultados para obtener la imagen final. Esto mejora la detección, básicamente porque aprovecha parte de la información de color para realizar la detección, antes de que ésta se descarte. Sin embargo, en imágenes fotográficas o de naturaleza más aleatoria, este método también incrementa mucho el ruido. Además, también es posible construir imágenes patológicas donde el método propuesto no funciona bien.

\newpage

[[otraimagen]

En general el problema está en hallar una función inyectiva de 24 bits en 8, lo cual es matemáticamente imposible, pero con un algoritmo más evolucionado se puede hallar la manera de preservar los bordes de la imagen a color en una imagen monocromática no necesariamente fotorealista.

2) Algoritmos de detección de bordes

Los algoritmos implementados fueron los conocidos como Roberts, Prewitt y Sobel. El primero utiliza un kernel de convolución de 2x2 para aproximar el gradiente de la función valor en un punto de la imagen. Los otro dos realizan la misma aproximación utilizando un kernel de 3x3, con diferentes coeficientes. En los 3 casos se realiza una pasada en sentido horizontal y otra en sentido vertical, intentando así detectar bordes en todas las direcciones.

En general y como era de esperarse, su comportamiento es satisfactorio y encuentran los bordes más evidentes de la imagen sin problemas. Esto se observa claramente en la imagen de polígonos simples, que son detectados sin ninguna imprecisión. La imagen fotográfica de Lenna introduce además una buena porción de ruido, particularmente en zonas de alta frecuencia espacial como puede ser el pelo.

Un detalle a recalcar es que el algoritmo de Roberts produce valores menores  que los demás al buscar bordes en una misma imagen. Por ejemplo, un borde que Prewitt y Sobel marcan con el valor 255, solo es marcado como 150 por el algoritmo de Roberts. Esta cuestión se puede resolver aplicando una multiplicación por un coeficiente apropiado que equipare las sensibilidades de los 3 métodos. Sin embargo, esto resultaría en aún más ruido añadido para Roberts, poniéndolo en desventaja frente a los otros algoritmos que en general producen un resultado más limpio.

Por otra parte, y a costa del incremento de ruido, Roberts produce indudablemente una mayor resolución en la detección. Esto se debe a que su kernel es más pequeño y por tanto puede observar detalles más finos en la imagen. Esto se observa claramente en la imagen de polígonos simples (figura 22).