miércoles, 18 de noviembre de 2009

OPERACIONES MORFOLOGICAS Y CONECTIVIDAD




































Operaciones morfológicas y conectividad

Las operaciones morfológicas aplican un elemento estructural a la imagen de entrada, sin cambiar el tamaño de la imagen de salida. Las operaciones morfológicas más comunes son la dilatación y la erosión. En una operación morfológica, el valor de cada píxel en la imagen de salida depende del valor de ese píxel en la imagen de entrada y su relación con la vecindad. Seleccionando el tamaño y forma de la vecindad (definido a través de un elemento estructural) se puede crear una operación morfológica, que altera el valor del píxel en la imagen de salida.

Dilatación y erosiónLa dilatación se basa en aumentar el nivel de los valores de los píxeles en el entorno de los objetos presentes en la imagen. La erosión se basa en reducir el nivel de los píxeles del entorno de un objeto. El número de píxeles a los que se aumenta o reduce el nivel depende del tamaño y forma del elemento estructural usado para procesar la imagen. La dilatación y la erosión expande y contrae la imagen.Para calcular la dilatación se superpone el píxel central del elemento estructural a cada píxel de la imagen de entrada, entonces el píxel de la imagen de entrada se altera en función de los valores de los píxeles del entorno, definidos por el elemento estructural. El valor del píxel de salida será el máximo entre todos los píxeles presentes en la vecindad.
Un ejemplo de aplicación de un elemento estructural se muestra a continuación
















Debido a que en el entorno definido por el elemento estructural cuadrado es de 3x3, el máximo valor es 1 en esa vecindad (en azul, parte superior izquierda de la primera matriz), entonces por este valor se sustituye el píxel central (en rojo, tercera matriz). Nótese que el anterior criterio puede utilizarse en imágenes definidas por escala de grises, como se muestra a continuación.














Un programa en Matlab que desarrolla el anterior ejemplo es:% Imagen de entradaI=[0 0 0 0 0 0 0; 0 0 0 0 0 0 0; 0 0 15 27 8 0 0; 0 0 100 95 1 0 0; 0 0 125 30 2 0 0; 0 0 0 0 0 0 0; 0 0 0 0 0 0 0];% Elemento estructuralEle=strel('square',3);% Se aplica la dilataciónI1=imdilate(I, Ele);% Matriz resultante>> I1I1 =0 0 0 0 0 0 00 15 27 27 27 8 00 100 100 100 95 8 00 125 125 125 95 8 00 125 125 125 95 2 00 125 125 125 30 2 00 0 0 0 0 0 0Los pixeles del contorno de la imagen son tratados de forma semejante a los filtros espaciales. En el caso de la dilatación, el valor de los píxeles de relleno se definen como el mínimo valor que admite el formato de dato para representar los píxeles de la imagen original, con lo que se garantiza que se sustituyan los píxeles del contorno con el máximo valor de la vecindad definida por el elemento estructural. Lo anterior se puede apreciar cuando se aplica la opción “full” a la función “imdilate”.Como se ha expuesto previamente, el elemento estructural define la forma y el tamaño de la vecindad del píxel que será analizado, para posteriormente alterar su valor. Está definida por una matriz formada por ceros y unos de forma y tamaño arbitrario en la cual las posiciones donde está el uno define la vecindad. La matriz que define el elemento estructural tiene un tamaño muy inferior al tamaño de la matriz original que define la imagen a la que modificará.Para determinar el origen del elemento estructural (que es equivalente al píxel que será modificado en la vecindad) se aplica la ecuación:
Centro = (tamaño+1)/2;

Por ejemplo, para el elemento estructural cuadrado de tamaño 3x3 el centro será:Centro = (3+1 x 3+1)/2 = 2 x 2

tal y como se muestra en la siguiente figura.











Si la matriz no es cuadrada, se redondea entonces hacia el entero más próximo hacia menos infinito.

A pesar de que el cuadrado de [3, 3] es el elemento estructural más generalmente usado, se pueden utilizar otros elementos estructurales, como los que se muestran a continuación.






ALos pasos para aplicar la dilatación son:
1.- Seleccionar el píxel de la imagen original a tratar.
2.- Buscar el mayor de los píxeles de la vecindad, incluído el central, definidos por la forma y tamaño del elemento estructural.
3.- Sustituir el valor del píxel por el máximo valor.

Los anteriores pasos se ejecutan para todos los píxeles de la imagen.

La erosión reduce el nivel de los píxeles del entorno de un objeto, para ello selecciona el mínimo valor de la vecindad del punto a tratar (en vez del máximo, como cuando se aplica la dilatación). Por ejemplo

1
1
1
1
1
1
1
1
0
Imagen de entrada
1
1
1
1
1
1
1
1
1
Elemento estructural
1
1
1
1
0
1
1
1
0
Imagen de salida

Como se puede apreciar, se ha sustituído el píxel central por el mínimo valor de los píxeles de la imagen original definidos por la vecindad contenida en el elemento estructural. El programa que se muestra a continuación realiza la erosión de un grupo de píxeles
% Imagen de entradaI=[0 0 0 0 0 0 0; 0 0 0 0 0 0 0; 0 0 15 27 8 0 0; 0 0 100 95 1 0 0; 0 0 125 30 2 0 0; 0 0 0 0 0 0 0; 0 0 0 0 0 0 0];% Elemento estructuralEle=strel('square',3);% Se aplica la erosiónI2=imerode(I, Ele);% Matriz resultante>> I2I2 =0 0 0 0 0 0 00 0 0 0 0 0 00 0 0 0 0 0 00 0 0 1 0 0 00 0 0 0 0 0 00 0 0 0 0 0 00 0 0 0 0 0 0

Nótese que todos los elementos de la matriz I tienen en una vecindad definida por el elemento estructurante cuadrado de tamaño 3x3 al menos un cero, excepto el elemento central (95), que ha sido sustituido por 1 (el menor valor del entorno).

Apertura y cerraduraLas operaciones de dilatación y erosión se combinan para formar diferentes métodos de procesar la imagen. Por ejemplo, uno de ellos es la apertura de una imagen, que es la realización de una erosión seguida de una dilatación utilizando el mismo elemento estructural en ambas operaciones. Este método se aplica cuando se desea eliminar los pequeños objetos y mantener el tamaño en los grandes (eliminar ruído). A continuación se muestra como realizar la apertura
% Se define el elemento estructuralee=strel('diamond', 2);
% Se aplica la erosiónI1=imerode(I,ee);
% Seguida de la dilataciónI2=imdilate(I1,ee);Lo anterior es equivalente a:ee=strel('diamond', 2);I2=imopen(I,ee);

La operación de cerradura de una imagen se realiza cuando se aplica la dilatación y posteriormente la erosión (contrario a la apertura). Este proceso se caracteriza por rellenar huecos y conectar objetos que están próximos entre sí. A continuación se muestra como realizar la cerradura
% Se define el elemento estructuralee=strel('diamond', 3);
% Se aplica la dilataciónI1=imdilate(I,ee);
% Seguida de la erosiónI2=imerode(I1,ee);Lo anterior es equivalente a:ee=strel('diamond', 3);I2=imclose(I,ee);

Transformada de ganancia o pérdida (Hit or Miss)Es una herramienta que permite detectar determinadas formas en un grupo de píxeles de la imagen. Se define como la operación AND de una imagen (A), erosionada con un elemento estructural (B1) y el complemento de la imagen, erosionada con otro elemento estructural (B2), ello es:


La anterior expresión se puede interpretar como que esta transformación la constituyen el conjunto de puntos en los que coincide B1 en A y B2 en el complemento de A simultáneamente. Por ejemplo, para detectar el punto superior izquierdo de una imagen se pueden definir los siguientes elementos estructurales>> b1=strel([0 0 0; 0 1 1; 0 1 0])b1 =0 0 00 1 10 1 0>> b2=strel([1 1 1; 1 0 0; 1 0 0])b2 =1 1 11 0 01 0 0Si la imagen a la que se pretende detectar la esquina superior izquierda se define por.




Si se aplica la erosión utilizando b1, resulta:>> c1=imerode(a, b1)

Si se interceptan ambas se obtiene el resultado final>> c3=c1&c2


Basado en lo anterior se podría, por ejemplo, detectar los píxeles de todas las esquinas, rotando 90 grados los elementos estructurales tres veces y aplicando el OR entre las cuatro imágenes resultantes. Los elementos estructurales para detectar las cuatro esquinas se resumen en la siguiente tabla.




Este método puede aplicarse en la detección de otras formas, redefiniendo los elementos estructurales.

Vecindades de un píxel
Define la relación entre determinado píxel y su entorno. Existen tres tipos fundamentales de vecindad.

martes, 17 de noviembre de 2009

MODELO DE COLOR HSV

Modelo de color HSV
De Wikipedia, la enciclopedia libre
Saltar a navegación, búsqueda
«HSV» redirige aquí. Para otras acepciones, véase HSV (desambiguación).

Espacio de color HSV como una rueda de color.
El modelo HSV (del inglés Hue, Saturation, Value – Tonalidad, Saturación, Valor), también llamado HSB (Hue, Saturation, Brightness – Tonalidad, Saturación, Brillo), define un modelo de color en términos de sus componentes constituyentes en coordenadas cilíndricas:
Tonalidad, el tipo de color (como rojo, azul o amarillo). Se representa como un grado de ángulo cuyos valores posibles van de 0 a 360° (aunque para algunas aplicaciones se normalizan del 0 al 100%). Cada valor corresponde a un color. Ejemplos: 0 es rojo, 60 es amarillo y 120 es verde.
Saturación. Se representa como la distancia al eje de brillo negro-blanco. Los valores posibles van del 0 al 100%. A este parámetro también se le suele llamar "pureza" por la analogía con la pureza de excitación y la pureza colorimétrica de la colorimetría. Cuanto menor sea la saturación de un color, mayor tonalidad grisácea habrá y más decolorado estará. Por eso es útil definir la insaturación como la inversa cualitativa de la saturación.
Valor del color, el brillo del color. Representa la altura en el eje blanco-negro. Los valores posibles van del 0 al 100%. 0 siempre es negro. Dependiendo de la saturación, 100 podría ser blanco o un color más o menos saturado.
El modelo HSV fue creado en 1978 por Alvy Ray Smith. Se trata de una transformación no lineal del espacio de color RGB, y se puede usar en progresiones de color. Nótese que HSV es lo mismo que HSB pero no que HSL o HSI.

Cono de colores del espacio HSV
Es común , que deseemos elegir un color adecuado para alguna de nuestras aplicaciones, cuando es así resulta muy útil usar la ruleta de color HSV. En ella la tonalidad se representa por una región circular; un región triangular separada, puede ser usada para representar la saturación y el valor del color. Normalmente, el eje vertical del triángulo denota la saturación, mientras que el eje horizontal corresponde al valor del color. De este modo, un color puede ser elegido al tomar primero la tonalidad de un región circular, y después seleccionar la saturación y el valor del color deseados de la región triangular.

Transformación RGB a HSV [editar]
Sea MAX el valor máximo de los componentes (R, G, B), y MIN el valor mínimo de esos mismo valores, los componentes del espacio HSV se pueden calcular como:
Transformación HSV a RGB [editar]