segmentaciÓn de imÁgenes por niveles de grises y etiquetado de imÁgenes binarias

14

Click here to load reader

Upload: yeimy-quevedo

Post on 22-Jul-2015

2.816 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: SEGMENTACIÓN DE IMÁGENES POR NIVELES DE GRISES Y ETIQUETADO DE IMÁGENES BINARIAS

7/13/2019 SEGMENTACIÓN DE IMÁGENES POR NIVELES DE GRISES Y ETIQUETADO DE IMÁGENES BINARIAS

http://slidepdf.com/reader/full/segmentacion-de-imagenes-por-niveles-de-grises-y-etiquetado-de-imagenes-binarias 1/14

 LABORATORIO NO 2. SEGMENTACIÓN DE IMÁGENES POR NIVELES DE

GRISES Y ETIQUETADO DE IMÁGENES BINARIAS

FACULTAD DE CIENCIAS BÁSICAS E INGENIERÍAVISIÓN ARTIFICIAL

OCTUBRE 11 DE 2009

INTRODUCCIÓN

El problema general de la segmentación de imágenes consiste en localizar losdiferentes objetos que están presentes en una imagen. En un sistema de visiónartificial genérico, la fase de segmentación se encuadra entre las fasesde preprocesamiento , en la que las imágenes son sometidas a diferentesoperaciones de filtrado que ayuden a mejorar la calidad de la imagen o adestacar los objetos que posteriormente queremos segmentar, y lade identificación o reconocimiento de los objetos , que es en la fase en la que sereconocen y etiquetan los distintos objetos de la imagen.

La técnica utilizada en este laboratorio de visión artificial es la segmentación de

una imagen por niveles de grises, consiste en la división de la imagen enregiones con características similares. Cada una de las regiones de interés(que comparten ciertas propiedades) se denomina objeto.

El resultado obtenido de la segmentación es la separación de objetos que haydentro de la imagen.

Page 2: SEGMENTACIÓN DE IMÁGENES POR NIVELES DE GRISES Y ETIQUETADO DE IMÁGENES BINARIAS

7/13/2019 SEGMENTACIÓN DE IMÁGENES POR NIVELES DE GRISES Y ETIQUETADO DE IMÁGENES BINARIAS

http://slidepdf.com/reader/full/segmentacion-de-imagenes-por-niveles-de-grises-y-etiquetado-de-imagenes-binarias 2/14

MARCO TEORICO

La segmentación de una imagen implica la detección, mediante procedimientosde etiquetado deterministas o estocásticos, de los contornos o regiones de la

imagen, basándose en la información de intensidad o/y la información espacial.

Existen diferentes métodos de segmentación que pueden utilizarse y cada tipoo familia normalmente se asocia a un tipo de problema a resolver. En este casoaplicamos métodos de segmentación con los que se obtienen muy buenosresultados.

Antes de segmentar es preciso definir qué objetos interesa determinar, tras lasegmentación es posible realizar operaciones de filtrado (a nivel de objetos),así como determinar características que permitan clasificar los objetos.

Una buena segmentación es difícil de evaluar.Fundamentalmente, lo que se busca es que diferentes objetos tengan valores

claramente diferentes de la(s) característica(s) discriminante(s).

  SEGMENTACIÓN BASADA EN CARACTERÍSTICAS

SEGMENTACIÓN POR NIVELES DE GRIS

Utiliza como característica solamente la luminancia de cada píxel. Útil sidistintos objetos se corresponden con niveles de gris diferentes. El nivel de grisdetermina alguna propiedad física en una imágen específica de una aplicación(Rayos X, RMN, bandas en satélite, etc)

Técnicas de operaciones puntuales (ej: doble umbralización)

Técnicas de clasificación basada en amplitud ->imagen binaria

Page 3: SEGMENTACIÓN DE IMÁGENES POR NIVELES DE GRISES Y ETIQUETADO DE IMÁGENES BINARIAS

7/13/2019 SEGMENTACIÓN DE IMÁGENES POR NIVELES DE GRISES Y ETIQUETADO DE IMÁGENES BINARIAS

http://slidepdf.com/reader/full/segmentacion-de-imagenes-por-niveles-de-grises-y-etiquetado-de-imagenes-binarias 3/14

Matlab utiliza esta función para realizar este tipo de segmentación

Matlab: J=roicolor(I,low, high); ‘J’ es una imagen binaria 

En el caso ideal en que el objeto posea un rango estrecho de niveles de gris

frente a un fondo uniforme, podemos establecer un nivel de gris intermedio(umbral) para separar objeto y fondo.Para separar por umbral, es útil recurrir alhistograma.

  Umbralización:

Método automático para separar objeto del fondo: Otsu

Cálculo del histograma de gris Cálculo iterativo de media y varianzaHipótesis de umbral Udivide el histograma en dos partes y se calcula media y varianza para cada

parte iterativamente cambiando U.

MATLAB utiliza la siguiente función para realizar la umbralizacion de unaimagen:

Matlab: level= graythresh(I); %utilizael método de OtsuBW=im2bw(I,level)

La determinación del umbral óptimo para una imagen dada es un factor críticode la segmentación.

Page 4: SEGMENTACIÓN DE IMÁGENES POR NIVELES DE GRISES Y ETIQUETADO DE IMÁGENES BINARIAS

7/13/2019 SEGMENTACIÓN DE IMÁGENES POR NIVELES DE GRISES Y ETIQUETADO DE IMÁGENES BINARIAS

http://slidepdf.com/reader/full/segmentacion-de-imagenes-por-niveles-de-grises-y-etiquetado-de-imagenes-binarias 4/14

  ETIQUETADO DE UNA IMAGEN BINARIA

La Etiqueta: Es el número que identifica a cada píxel, indicando a qué objetopertenece.

Suponiendo dos niveles:

Nivel 1 (primer plano)Nivel 0 (fondo)

El etiquetado consiste en identificar grupos conexos de píxeles de primer plano,asignándole a cada uno de ellos una etiqueta diferente.

Matlab: L=bwlabel(I,N); N= 4 ó 8

El algoritmo de etiquetación recibe como entrada correspondiente a los objetos

a identificar cada uno de los píxeles de la imagen, en donde cada etiquetaidentifica el objeto al cual dicho pixel pertenece.

Fig. 1. Proceso de etiquetación, entradas y salidas del algoritmo

Podemos observar un diagrama que representa imagen binarizada donde elvalor de PIXEL_NO_ACTIVO. La salida es una matriz de etiquetas queidentifica pixel.

La entrada será una imagen binaria con múltiples regiones y la salida unaimagen etiquetada (se representará en una imagen de nivel de gris procurandoque los valores estén lo suficientemente separados para una correctavisualización).

Page 5: SEGMENTACIÓN DE IMÁGENES POR NIVELES DE GRISES Y ETIQUETADO DE IMÁGENES BINARIAS

7/13/2019 SEGMENTACIÓN DE IMÁGENES POR NIVELES DE GRISES Y ETIQUETADO DE IMÁGENES BINARIAS

http://slidepdf.com/reader/full/segmentacion-de-imagenes-por-niveles-de-grises-y-etiquetado-de-imagenes-binarias 5/14

LABORATORIO NO 2. SEGMENTACIÓN DE IMÁGENES POR NIVELES DEGRISES Y ETIQUETADO DE IMÁGENES BINARIAS

Objetivos:

Realizar etiquetado y segmentación de imágenes utilizando funciones deMATLAB.

Comprender el proceso de segmentación y etiquetado de una imagenbinaria para separar objetos individualmente del fondo.

REALIZACIÓN DE LA PRÁCTICA DE LABORATORIO

Segmentación y etiquetado para imagen de un solo color:

1. Se elaboro una imagen .bmp para realizar la práctica de segmentación através de MATLAB. 

2. A través de una función creada en MATLAB se extrajo individualmente elcuadro de composición y la imagen deseada. 

3. En la ventana de comandos de MATLAB se ingresó los siguiente:

>> I=imread(‘1.bmp');%se cargo la imagen a utilizar%

>> figure,imshow(I);

Imagen A. imagen original a segmentar.

>> Y=rgb2gray(I); % se transformo la imagen de RGB a escala de grises%>> figure,imshow(Y);

Page 6: SEGMENTACIÓN DE IMÁGENES POR NIVELES DE GRISES Y ETIQUETADO DE IMÁGENES BINARIAS

7/13/2019 SEGMENTACIÓN DE IMÁGENES POR NIVELES DE GRISES Y ETIQUETADO DE IMÁGENES BINARIAS

http://slidepdf.com/reader/full/segmentacion-de-imagenes-por-niveles-de-grises-y-etiquetado-de-imagenes-binarias 6/14

>> impixelinfo %muestra la información de los píxeles coordenadas x e y delpixel y su valor%

Imagen B. imagen aplicándole escala de grises.

>>Bw=im2bw(Y,75/255);%binarizacion de la imagen%

>> figure,imshow(Bw);>> impixelinfo

Imagen C. imagen después de la binarizacion

Page 7: SEGMENTACIÓN DE IMÁGENES POR NIVELES DE GRISES Y ETIQUETADO DE IMÁGENES BINARIAS

7/13/2019 SEGMENTACIÓN DE IMÁGENES POR NIVELES DE GRISES Y ETIQUETADO DE IMÁGENES BINARIAS

http://slidepdf.com/reader/full/segmentacion-de-imagenes-por-niveles-de-grises-y-etiquetado-de-imagenes-binarias 7/14

L=bwlabel(Bw,8);%se etiquetan las figures, asi no todas qeudan con el mismovalor de pixel%

>> figure,imshow(L)

>> impixelinfo;>> rect=roicolor(L,1,1); % extrae el circulo%

>> figure,imshow(rect)

Imagen D. imagen del rectángulo

triangulo=roicolor(L,2,2); % extrae el triangulo %

>> figure,imshow(triangulo)

Imagen E. imagen del triangulo

Page 8: SEGMENTACIÓN DE IMÁGENES POR NIVELES DE GRISES Y ETIQUETADO DE IMÁGENES BINARIAS

7/13/2019 SEGMENTACIÓN DE IMÁGENES POR NIVELES DE GRISES Y ETIQUETADO DE IMÁGENES BINARIAS

http://slidepdf.com/reader/full/segmentacion-de-imagenes-por-niveles-de-grises-y-etiquetado-de-imagenes-binarias 8/14

circulo=roicolor(L,3,3); % extrae el rectángulo %

figure,imshow(circulo)

Imagen F. imagen del circulo

figura=recorrer(cir,1);

Hace el llamado a la funcion recorrer tomando como parametros la imaginen

segmentada y como el objeto toma valores de 1 y el fondo es cero port almotive es que el Segundo parametro es el numero 1.

Imagen G. imagen del circulo

Page 9: SEGMENTACIÓN DE IMÁGENES POR NIVELES DE GRISES Y ETIQUETADO DE IMÁGENES BINARIAS

7/13/2019 SEGMENTACIÓN DE IMÁGENES POR NIVELES DE GRISES Y ETIQUETADO DE IMÁGENES BINARIAS

http://slidepdf.com/reader/full/segmentacion-de-imagenes-por-niveles-de-grises-y-etiquetado-de-imagenes-binarias 9/14

>> figura=recorrer(rec,1);

Imagen H. imagen del rectángulo

>> figura=recorrer(triangulo,1);

Imagen I. imagen del triangulo

NOTA: adjunto en “imagen 1 comandos de MATLAB.doc “podrá copiar loscomandos dentro de la ventana de MATLAB para ver los resultados obtenidosen este laboratorio.

Segmentación y etiquetado para imagen de varios colores:

1. Se elaboro una imagen .bmp para realizar la práctica de segmentación através de MATLAB. 

2. A través de una función creada en MATLAB se extrajo individualmente elcuadro de composición y la imagen deseada. 

3. En la ventana de comandos de MATLAB se ingresó los siguiente:

Page 10: SEGMENTACIÓN DE IMÁGENES POR NIVELES DE GRISES Y ETIQUETADO DE IMÁGENES BINARIAS

7/13/2019 SEGMENTACIÓN DE IMÁGENES POR NIVELES DE GRISES Y ETIQUETADO DE IMÁGENES BINARIAS

http://slidepdf.com/reader/full/segmentacion-de-imagenes-por-niveles-de-grises-y-etiquetado-de-imagenes-binarias 10/14

>> I=imread('2.bmp');%se cargo la imagen a utilizar%>> figure,imshow(I);

Y=rgb2gray(I); % se transformo la imagen de RGB a escala de grises%figure,imshow(Y);impixelinfo %muestra la información de los píxeles coordenadas x e y del pixelysu valor%

Page 11: SEGMENTACIÓN DE IMÁGENES POR NIVELES DE GRISES Y ETIQUETADO DE IMÁGENES BINARIAS

7/13/2019 SEGMENTACIÓN DE IMÁGENES POR NIVELES DE GRISES Y ETIQUETADO DE IMÁGENES BINARIAS

http://slidepdf.com/reader/full/segmentacion-de-imagenes-por-niveles-de-grises-y-etiquetado-de-imagenes-binarias 11/14

>> cir=roicolor( Y,76,76);>> figure,imshow(cir);

>> rect=roicolor( Y,150,150);>> figure,imshow(rect);

>> tria=roicolor( Y,179,179);>> figure,imshow(tria);

Page 12: SEGMENTACIÓN DE IMÁGENES POR NIVELES DE GRISES Y ETIQUETADO DE IMÁGENES BINARIAS

7/13/2019 SEGMENTACIÓN DE IMÁGENES POR NIVELES DE GRISES Y ETIQUETADO DE IMÁGENES BINARIAS

http://slidepdf.com/reader/full/segmentacion-de-imagenes-por-niveles-de-grises-y-etiquetado-de-imagenes-binarias 12/14

 

>> figura=recorrer(cir,1);

>> figura=recorrer(rect,1);>> figura=recorrer(tria,1);

NOTA: adjunto en “imagen 2 comandos de MATLAB.doc “podrá copiar loscomandos dentro de la ventana de MATLAB para ver los resultados obtenidosen este laboratorio.

Page 13: SEGMENTACIÓN DE IMÁGENES POR NIVELES DE GRISES Y ETIQUETADO DE IMÁGENES BINARIAS

7/13/2019 SEGMENTACIÓN DE IMÁGENES POR NIVELES DE GRISES Y ETIQUETADO DE IMÁGENES BINARIAS

http://slidepdf.com/reader/full/segmentacion-de-imagenes-por-niveles-de-grises-y-etiquetado-de-imagenes-binarias 13/14

Función creada en MATLAB para recortar la imagen y sustraer el elementodeseado:

function J=recorrer(ime,opc)

[f c]=size(ime);der=c;izq=1;sup=f;inf=1;

for y=1:f;

for x=1:c;if ime(y,x)==opc

%se recorre la imagen en busca de %cada pixel que este más arriba, %el más abajo, el mas a la 

%izquierda y el mas a la %derecha.del objeto...... if der>x % 

der=x;end if izq<x

izq=x;end if sup>y

sup=y;end if inf<y

inf=y;end 

end 

end 

end  %se crea un na imagen o matriz con las dimensiones del objetoobtenidas anteriormente.... 

xx=inf-sup;yy=der-izq;J=zeros(yy,xx);x1=1;y1=1;for y=sup:inf

for x=der:izqJ(y1,x1)=ime(y,x); %se recore solo el objeto contenido en la imagen y se

pasa a la imagen nueva.. quedando contenido solo el objeto deseado..x1=x1+1;

end x1=1;y1=y1+1;

end 

figure,imshow(J); %se mustra la imagen resultado... end 

Page 14: SEGMENTACIÓN DE IMÁGENES POR NIVELES DE GRISES Y ETIQUETADO DE IMÁGENES BINARIAS

7/13/2019 SEGMENTACIÓN DE IMÁGENES POR NIVELES DE GRISES Y ETIQUETADO DE IMÁGENES BINARIAS

http://slidepdf.com/reader/full/segmentacion-de-imagenes-por-niveles-de-grises-y-etiquetado-de-imagenes-binarias 14/14

CONCLUSIONES

Si analizamos los resultados obtenidos se puede mencionar que el algoritmo desegmentación basado en etiquetación de píxeles propuesto resulta muy

efectivo en condiciones en las cuales sabemos que los objetos a segmentar noestán juntos en la escena.

El algoritmo propuesto se basa en el hecho de que los objetos a identificar enla imagen no están juntos tal y como sucede en los dos primeros experimentosque hemos realizado. En el tercer experimento podemos observar claramentela deficiencia de nuestro algoritmo.

WEBGRAFIA

1. http://www.microbotica.es/h1/doku.php?id=vision:segmentacion 2. http://cmm.ensmp.fr/~angulo/publicat/AnguloSerra_CyS_05.pdf 3. http://www.gts.tsc.uvigo.es/pi/Analisis%20de%20imagenes.pdf 4. http://translate.google.com.co/translate?hl=es&sl=en&u=http://www.math

works.com/access/helpdesk/help/toolbox/images/impixelinfo.html&ei=Xf3RStbUNNyutgedxKz6Aw&sa=X&oi=translate&resnum=1&ct=result&ved=0CAwQ7gEwAA&prev=/search%3Fq%3Dimpixelinfo%2Bmatlab%26hl%3Des%26rlz%3D1C1GGLS_esCO338CO338 

5. http://blog.espol.edu.ec/gluzardo/files/2009/04/merge_labeling.pdf