Vous êtes sur la page 1sur 9

PROCESAMIENTO DIGITAL EN MATLAB

1. OBJETIVO Estimar el valor aproximado de los pixeles de fondo. Visualizar la aproximacin del fondo como una superficie. Crear una imagen con un fondo uniforme. Crear la versin binaria de una imagen. Determinar el nmero de objetos en una imagen. Mostrar la matriz de nivel como una imagen indexada de pseudocolor. 2. PROCEDIMIENTO a) Leer y mostrar una imagen Lea y muestre la imagen rice.png I=imread('D:\matlab2008\imagenes\rice.png'); % Lee la imagen que usaremos de la carpeta donde este guardada % Muestra la imagen leda

imshow(I)

b) Estimar los pixeles de fondo En la imagen de muestra. La iluminacin del fondo es ms brillante en el centro que en la parte inferior. En este paso, el ejemplo utiliza una operacin de apertura morfolgica para estimar la iluminacin del fondo. Una apertura es una erosin seguida de una dilatacin, usando el mismo elemento de estructuracin para ambas operaciones, La abertura morfolgica tiene el efecto de remover objetos que no pueden contener totalmente el elemento de estructuracin.

background=imopen(I,strel('disk',15));

%Abre morfolgicamente una imagen con una estructura morfolgica en forma de disco de radio 15 % Muestra la imagen

imshow(background)

Como se ve se extrajo el fondo de la imagen eliminando todos los dems objetos donde se ve en que partes es mas claro y obscuro el fondo. c) Vista de la aproximacin de fondo como una superficie Utilice el comando surf para crear una exhibicin superficial del fondo de la aproximacin del fondo. El comando surf crea superficies paramtricas coloreadas que el permiten visualizar las funciones matemticas sobre una regin rectangular. La funcin surf requiere datos de clase doble, sin embargo, entonces primero necesita convertir el fondo usando el comando doubl. figure, surf(double(background(1:8:end,1:8:end))),zlim([0 255]); set(gca,'ydir','reverse');

250 200 150 100 50 0 0 10 20 30 40 0 10 30 20 40

Se vera solo 1 de 8 pixeles en cada direccin; de otro modo el diagrama superficial seria demasiado denso. Tambin se fijara la escala del grafico para acoplar mejor el rango de la data uint8 e invierte el y-axis de la exhibicin para proporcionar una vista mejor de la data(los pixeles en la base de la imagen aparecen en el frente del diagrama superficial). En la exhibicin superficial, [0,0] representa el origen o la esquina superior izquierda de la imagen. La parte mas alta de la curva indica que los valores mas altos del pixel del fondo ocurren cerca de las filas medias de la imagen. Los valores de pixel ms bajos ocurren en la base de la imagen y son representados en el diagrama superficial por la parte mas baja de la curva. d) Crear una imagen con fondo uniforme Para crear un fondo ms uniforme, substraer el fondo de la imagen, background, de la imagen original, I. I2=imsubtract(I,background); En las operaciones matemticas del MATLAB, la substraccin es solo soportada por data de clase doble, debes usar el comando imsubtract. IMSUBTRACT: Restar dos imgenes o restar lo constante de la imagen.

Z = IMSUBTRACT (X, Y) Resta cada elemento en la matriz Y del elemento correspondiente de la matriz X y devuelve la diferencia en el elemento correspondiente de la matriz de salida Z. La matriz de salida, Z, tiene

el mismo tamao y clase como X a menos que X es lgico, en cuyo caso Z es doble. Muestra la imagen con su fondo mas uniforme. figure, imshow(I2)

e) Ajuste del contraste en la imagen procesada. Luego de la substraccin, la imagen tiene un fondo uniforme pero ahora esta muy oscuro. Use imadjust, para ajustar el contraste de la imagen. I3=imadjust(I2,[0 0.4],[]); G = IMADJUST(I,[LOW_IN; HIGH_IN],[LOW_OUT; HIGH_OUT],GAMMA) Imadjust incrementa el contraste de la imagen mediante la saturacin del 1% de los datos en ambas intensidades, bajos y altos de I2 y mediantes estrechar los valores de la intensidad para llenar el rango dinmico de uint8. Muestra la imagen con ajuste de contraste I3. figure, imshow(I3)

Los parmetros que afectan a la imagen son los de entrada, de salida y el tipo de curva que relaciona a las dos imgenes la de entrada u salida. Parmetros de la funcin imadjust G = IMADJUST(I,[LOW_IN; HIGH_IN],[LOW_OUT; HIGH_OUT],GAMMA) [LOW_IN; HIGH_IN] : Parmetros de entrada, mapea los valores de intensidad de la imagen I a nuevos valores en G de manera que los valores entre LOW_IN y HIGH_IN se mapean en los valores entre LOW_OUT y HIGH_OUT. Los valores por debajo LOW_IN y por encima de HIGH_IN se recortan, es decir, por debajo de los valores LOW_IN mapea a LOW_OUT, y los de arriba HIGH_IN mapa para HIGH_OUT. Puede utilizar un matriz vaca ([]) para [LOW_IN; HIGH_IN] o para [LOW_OUT; HIGH_OUT] para especificar el valor predeterminado de [0 1]. [LOW_OUT; HIGH_OUT] : Parmetros de salida, donde se mapean los valores de [LOW_IN; HIGH_IN]. GAMMA: especifica la forma de la curva que describe la relacin entre los valores de I y G. Si gamma es menor que 1, el mapeo es inclina hacia los valores de salida altos (ms brillante). Si GAMMA es mayor que 1, el mapeo se inclinan hacia los valores ms bajos de salida (ms oscuro). Si omite el argumento, el valor predeterminado de gamma es 1 (aplicacin lineal). f) Crear una versin binaria de la imagen Crear una versin binaria de la imagen mediante el uso del umbral. level=graythresh(I3); bw=im2bw(I3,level); umbralizacin. figure, imshow(bw) %Convierte la imagen I3 a blanco y negro %Convierte la imagen a imagen binaria por

% Muestra la imagen

GRAYTHRESH: calcula un umbral global que puede ser utiliza para convertir una imagen de intensidad en una imagen binaria con IM2BW con valor de intensidad normalizada que se encuentra en el intervalo [0, 1]. GRAYTHRESH utiliza el mtodo de Otsu, que elige el umbral para minimizar la varianza intraclase de los pxeles con umbral de blanco y negro. IM2BW: produce imgenes binarias de intensidad indexada, o imgenes RGB. Para hacer esto, convierte la imagen de entrada a formato de escala de grises y posteriormente, convierte esta imagen en escala de grises a binario por umbralizacin. La salida binaria imagen BW tiene valores de 1 (blanco) para todos los pxeles de la imagen de entrada con una luminancia mayor que el nivel y 0 (negro) para todos los otros pxeles. (Tenga en cuenta que se especifica el nivel en el intervalo [0,1], independientemente de la clase de la imagen de entrada). g) Determine el numero de objetos de una imagen Luego de convertir la imagen binaria, puede usar el comando bwlabel para determinar el numero de granos de arroz en la imagen, numobjetcs. [labeled,numObjects]=bwlabel(bw,4); bwlabel etiqueta los componentes conectados en 2-D de la imagen binaria. [L, NUM] = bwlabel (BN, n) devuelve en NUM el nmero de objetos N puede tener un valor cualquiera 4 o 8, donde 4 especifica 4 conectados a objetos y 8 especfica 8-objetos conectados, si el argumento se omite, el valor predeterminado es 8. Los pxeles de la etiqueta 1 constituyen un objeto, los pxeles marcados 2 constituyen un segundo objeto, y as sucesivamente. La precisin de los resultados depende de un nmero de factores:

El tamao de los objetos. Si es que los objetos se estn tocando en ese caso son puestos en un nivel como si fueran un objeto. La precisin del fondo aproximado. La conectividad seleccionada. El parmetro 4, en el comando significa que los pixeles deben tocarse a lo largo de un vrtice para ser considerados conectados.

>> numObjects numObjects = 101 h) Examinar la matriz de nivel Para entender mejor a la matriz de nivel devuelta por el comando bwlabel, este paso explora los valores de pixel en la imagen. Hay varias formas de conseguir una vista closeup de los valores de pixel. Por ejemplo, puedes usar imcrop para seleccionar una porcin de la imagen. Otra forma es usar la herramienta pixel regin para examinar los valores de pixel. Muestra la matriz de nivel usando imshow. figure, imshow(labeled) figure, imtool(labeled)

i)

Mostrar la matriz de nivel como una matriz indexada de pseudocolor

Una buena forma de visualizar la matriz de nivel es displayar la imagen como una imagen indexada de pseodocolor. En la imagen de pseudocolor, el numero que identifica cada objeto en la matriz de nivel mapea a un color diferente en la matriz asociada del mapa de colores. Los colores en la imagen hace ms sencillo distinguir los objetos. Para ver un matriz de nivel de esta manera use el comando label2rgb. pseudo_color=label2rgb(labeled,@spring,'c','shuffle'); imshow(pseudo_color);

RGB = LABEL2RGB(L, MAP, ZEROCOLOR, ORDER) MAP puede ser una matriz n x 3 de mapa de colores, una cadena que contiene el nombre de una funcin de mapa de colores (como el 'jet' o 'gris') o una funcin manejable de una funcin de mapa de colores (por ejemplo, @jet o @gris). ZEROCOLOR puede ser un RGB triple, o uno de los siguientes: 'y' (amarillo), 'm', (magenta), 'c' (cian), 'r' (rojo), 'g' (verde), 'b' (azul), 'w' (blanco), o 'k' (negro). Si no se especifica ZEROCOLOR, [1 1 1] se utiliza como valor predeterminado. ORDER es 'noshuffle' (por defecto), entonces los colores del mapa de colores se asignan a la matriz de etiqueta regiones en orden numrico. Si el orden es 'shuffle', entonces los colores del mapa de colores los seudo-aleatorio. j) Measure object properties in the image El comando regionprops mide propiedades de objetos y regiones en una imagen y los objetos retorna en una estructura de vector. Cuando se aplica a una imagen con componentes con niveles, crea un elemento de estructura para cada componente. Crear una estructura contenido algunas propiedades bsicas por niveles. graindata = 101x1 struct array with fields:

rea Centroid BoundingBox STATS = REGIONPROPS (L, PROPIEDADES) mide un conjunto de propiedades para cada una de las regiones marcadas en la etiqueta de la matriz L. Los elementos positivos enteros de L corresponden a regiones diferentes. Por ejemplo, el conjunto de elementos de L igual a 1 corresponde a la regin 1, el conjunto de elementos de L igual a 2 corresponde a la regin 2, y as sucesivamente. STATS es una gran estructura de longitud max (L (:)). Los campos de la matriz de estructura diferente denotar propiedades de cada regin, segn se especifica en PROPIEDADES. L puede ser multidimensional.

Las medidas que tiene la propiedad basic son: rea: determina el rea del elemento que se busca. Centro: Nos da la ubicacin en coordenadas por medio de una matriz del centro de la ubicacin del elemento. Borde: Nos da el valor de cuanto mide el borde del elemento.

Ejemplo: >> graindata(51) ans = Area: 140 Centroid: [114.5000 15.4500] BoundingBox: [107.5000 4.5000 13 20]

Vous aimerez peut-être aussi