Está en la página 1de 11

UNIVERSIDAD POLITCNICA DE MADRID

DEPARTAMENTO DE ELECTRNICA, AUTOMTICA INDUSTRIAL E INFORMTICA

Prcticas de Robtica y Visin Artificial Prctica 5

Prcticas de Segmentacin de las imgenes

5.2

Tcnicas de segmentacin de imgenes

5 5.1 5.2 5.3

TCNICAS DE SEGMENTACIN DE LAS IMGENES ...............................................3 TRANSFORMADAS DE HOUGH............................................................................................3 UMBRALIZACIN ................................................................................................................6 SEGMENTACIN ORIENTADO A LAS REGIONES ................................................................8 5.3.1 TCNICAS DE DIVISIN Y FUSIN (SPLIT & MERGE) Y RBOLES CUATERNARIOS (QUADTREE) ....................................................................................................9

Departamento de Electrnica, Automtica e Informtica Industrial Escuela Universitaria de Ingeniera Tcnica Industrial

Tcnicas de segmentacin de imgenes

5.3

Tcnicas de segmentacin de las imgenes

En esta prctica se tratar de experimentar con las tcnicas clsicas de segmentacin de imgenes empleando Image Procesing Toolbox de Matlab. Segmentar es dividir la imagen en regiones con inters; crear una descripcin visual de nivel medio. La prctica se inicializar exponiendo la tcnica basadas en las transformadas de Hough para lneas rectas y crculos. Luego se emplearn las tcnicas de umbralizacin combinadas con el procesamiento morfolgico y la extraccin de las caractersticas de los objetos segmentados. Y para acabar, se usarn los mtodos de crecimiento de regiones y algoritmos basados en tcnicas de dividir y fusionar (split & merge), empleando rboles cuaternarios (quadtree).

5.1 Transformadas de Hough


Las transformadas de Hough determinan la localizacin de curvas parametrizadas dentro de una imagen. En este caso se emplearn para la localizacin de lneas rectas y crculos. La entrada a este algoritmo es una imagen binarizada, donde se ha etiquetado los pxeles representantes de los bordes con el nivel 1 y al fondo se le coloca con nivel 0. Para esta prctica se he elegido el detector de Canny. Sitese en el directorio de /Segmentacion/Houhg, cargue la imagen de los cables de un telefrico y aplique el detector de Canny: >> imgEnt=imread('cables_gris.bmp');imshow(imgEnt);pause; >> imgBorde=edge(imgEnt,'canny');imshow(imgBorde);
Departamento de Electrnica, Automtica e Informtica Industrial Escuela Universitaria de Ingeniera Tcnica Industrial

5.4

Tcnicas de segmentacin de imgenes

Vare los parmetros del detector de Canny para mejorar los resultados de etiquetacin de los bordes. Considrese que slo se desea determinar las lneas de gran extensin. El siguiente paso ser preparar el espacio paramtrico y aplicar posteriormente la transformacin: >>theta = 0:180; >>[acum,rho] = radon(imgBorde,theta); >>imagesc(theta,rho,acum), colorbar; >>xlabel ('theta (grados)'), ylabel ('rho (pixeles desde el centro)') >>title('Espacio de lneas'); Una vez realizada la transformacin, la seleccin de las rectas depender del umbral colocado en las votaciones. La transformada de Hough hace del espacio paramtrico una rejilla de votaciones; por cada pxel seleccionado da unos votos a cada celda elegida segn la variacin del ngulo de la normal de la recta, . Slo se considerarn aquellas rectas que superen ese umbral que sern las que se representen: >> [x,y] = find(acum>100); >>hold on; plot(theta(y),rho(x),'*r');hold off; >>t = -theta(y')*pi/180;pause; >>lineas = [cos(t)' sin(t)' -rho(x)]; >>cy = size(imgEnt,1)/2-1; >>cx = size(imgEnt,2)/2-1; >>lineas(:,3) = lineas(:,3) - lineas(:,1)*cx - lineas(:,2)*cy; >>imshow(imgEnt); >>draw_lines(lineas); Haga una funcin en Matlab donde pueda decirle el nombre del fichero de la imagen, los parmetros del operador de Canny y el umbral de las votaciones. Aplquelo sobre la imagen circuit.tif. Para una mejor comprensin de las transformadas de Hough utilice la funcin demo cvproj :
1

Funciones extradas de Simon Fraser University, Burnaby, BC V5A 1S6,

Canada
Departamento de Electrnica, Automtica e Informtica Industrial Escuela Universitaria de Ingeniera Tcnica Industrial

Tcnicas de segmentacin de imgenes

5.5

La siguiente tarea es emplear la transformada de Hough para localizar crculos. Utilice la funcin de houghcircle2 sobre la imagen coins.png. Mida cuantos pxeles es el radio de las monedas y determine el centro de cada una de ellas.

Amin Sarafraz, University of Tehran, Iran.


Departamento de Electrnica, Automtica e Informtica Industrial Escuela Universitaria de Ingeniera Tcnica Industrial

5.6

Tcnicas de segmentacin de imgenes

Resolucin Matlab >>imgEnt = imread('coins.png');radioMoneda = 30; >>[y0,x0,Accumulator]=houghcircle(edge(imgEnt,'canny'),radioMoneda,4) >>UmbralVotaciones = 45; [x,y]=find(Accumulator>UmbralVotaciones); >>imshow(imgEnt);hold on; >>for i=1:size(x,1) dibujarCirculos(radioMoneda,y(i),x(i)); >>end;hold off

5.2 Umbralizacin
La umbralizacin es una tcnica de segmentacin ampliamente utilizada en la industria. Se trata de definir un umbral, de forma que separe los objetos de inters respecto del fondo. Para su aplicacin se exige una clara diferencia entre los objetos y el fondo de la escena. La tcnica ms utilizada es la segmentacin por anlisis del histograma. Cuando ste presenta dos picos y en entre ambos hay un valle, el umbral quedar fijado por la posicin del valle. Los pxeles de los objetos se les aginar 1 y al fondo 0, quedando binarizada la imagen. En esta prctica, se emplear el mtodo de Otsu para la deteccin del umbral. La escena ser una imagen de microscopa. Se trata de determinar cuntas clulas hay en la imagen. Cambie al directorio /Segmentacion/Umbralizacion y haga las siguientes instrucciones: >>imgEnt = imread('n1.bmp');imshow(imgEnt);pause;
Departamento de Electrnica, Automtica e Informtica Industrial Escuela Universitaria de Ingeniera Tcnica Industrial

Tcnicas de segmentacin de imgenes

5.7

>>imhist(imgEnt);nivel = graythresh(imgEnt);pause >>imgBW = im2bw(imgEnt,nivel); >>imshow(imgBW); Ejecute la aplicacin winumb.exe. Visualize la imagen de las clulas y haga una tabla entre los distinto mtodos de obtencin del umbral y el nivel dado. Posteriormente, elija cual es el mejor mtodo.

Mtodo Otsu Varianza continua ...

Umbral

Observaciones

Sin embargo, esta etapa de umbralizacin no completa la interpretacin final de la imagen. El objetivo es contar cuntas clulas hay en ella. Se precisa de una etapa de postprocesamiento. En este caso, se va a emplear tcnicas de procesamiento morfolgico. Obsrvese que las clulas tienen una forma de tipo ovoide y que ocupa un rea de cientos de pxeles contiguos. Para la eliminacin del ruido generado por la umbralizacin se proceder a aplicar un filtrado morfolgico tipo opening: >>se = strel('disk',10); >>imgObj = imopen(imgBW,se); >>imshow([imgBW,imgObj]); Decantado los objetos de la imagen se proceder a etiquetarlos. Esta operacin tiene como finalidad asignar un nmero de 1 hasta L, siendo L el nmero de objetos en la
Departamento de Electrnica, Automtica e Informtica Industrial Escuela Universitaria de Ingeniera Tcnica Industrial

5.8

Tcnicas de segmentacin de imgenes

imagen para su posterior extraccin de sus caractersticas. Se rastrea la imagen y se le coloca una etiqueta buscando la conectividad del objeto: >>imgEtiq = bwlabel(imgObj); >>imshow(label2rgb(imgEtiq)); Cuando la imagen est etiquetada se puede extraer las caractersticas del objeto. En este caso, slo se va a capturar el rea, el centroide y el eje mayor y menor de cada objeto en la imagen: >>datos = regionprops(imgEtiq,'Area','Centroid',... 'MajorAxisLength','MinorAxisLength'); >>matrizSal=[]; >>for i=1:size(datos,1) matrizSal = [matrizSal;datos(i).Area,datos(i).Centroid]; end >>matrizSal

5.3 Segmentacin orientada a las regiones


Las tcnicas de segmentacin orientadas a las regiones tienen su base en las reglas de similitud y en la conectividad de los pxeles. Las regiones se forman mediante pxeles que tengan conectividad y presenten alguna propiedad de similitud y discrepancia respecto al resto de los pxeles que no pertenecen a la regin. La primera tcnica a experimentar se basa en el crecimiento de regiones. Se elige un pxel semilla de la regin a obtener y se le aplica a sus vecinos la regla de similitud. Aquellos pxeles que cumplan se aadirn a la regin creciente. Sobre estos nuevos pxeles aadidos se volver aplicar la regla de similitud a sus vecinos. El algoritmo parar cuando los pxeles vecinos a la regin creciente no cumplan el criterio de similitud. Para su estudio dirigirse al directorio /Segmentacin/Crecimiento. Se cargar la imagen, se realizar un suavizado previo y se buscar la semilla adecuada. La regla de similitud empleada se basa en que la diferencia del nivel de gris del pxel a estudiar y el brillo de la regin creciente sea menor a un determinado umbral. Vase la segmentacin de los ventrculos del cerebro: >>imgEnt = imread('brain.png'); >>im1=imfilter(imgEnt,fspecial('gaussian')); >>%Ventrculo semila 116, 82 >>%Solo izquierdo >>imgBW1 = regionGrowing(im1, 116, 82, 10); >>%Los dos >>imgBW2 = regionGrowing(im1, 116, 82, 20); Localice las semillas adecuadas y el umbral necesario para determinar el hueso, el tejido blando y el tejido duro. Los resultados de la segmentacin deben de ser los indicados en la figura:

Departamento de Electrnica, Automtica e Informtica Industrial Escuela Universitaria de Ingeniera Tcnica Industrial

Tcnicas de segmentacin de imgenes

5.9

5.3.1 Tcnicas de divisin y fusin (split & merge) y rboles cuaternarios (quadtree) En vez de emplear semillas para el crecimiento de regiones, se pasa a la descomposicin de la imagen en regiones arbitrarias, de forma que si la regin es muy discrepante con algn tipo de regla se dividir, en caso contrario, buscar fusionarse con regiones adyacentes. Para la particin de la imagen en regiones arbitraria se suele emplear rboles cuaternarios. Se toma la imagen y se divide en cuatro rectngulos iguales. Se analiza cada regin, si sta es muy discrepante se vuelve a dividir en otras cuatro, generando un rbol cuaternario. Utilice la demo qtdemo para entender mejor los rboles cuaternarios.

La segmentacin de divisin y fusin de regiones analiza cada subregin generada por el rbol cuaternario, el cual ha dividido la imagen en regiones homogneas a diversas resoluciones. Sitese en el directorio /Segmentacin/Descomposicion:
Departamento de Electrnica, Automtica e Informtica Industrial Escuela Universitaria de Ingeniera Tcnica Industrial

5.10

Tcnicas de segmentacin de imgenes

>>imgEnt = imread('liftingbody.png'); >>im1=imfilter(imgEnt,fspecial('gaussian')); >>imgDescomp = qtdecomp(im1,.27); >>imgDivision = imgEnt; >>for dim = [128 64 32 16 8 4 2 1] [valores,fila,columna] = qtgetblk(im1, imgDescomp, dim); if (~isempty(valores)) doublesum = sum(sum(valores,1,'double'),2); end imgDivision = qtsetblk(imgDivision, imgDescomp, ... dim, doublesum ./ dim^2); end >>imshow([imgEnt,uint8(imgDivision)]); Una vez dividido la imagen se proceder a la fusin de regiones adyacentes empleando tcnicas de crecimiento de regiones: >>[m n] = size(imgEnt); >>D = logical(zeros(m, n,'uint8')); >>imgSegm = zeros(m, n); >>x=1;y=1; >>imgDivision=double(imgDivision); >>i=1; while( size(x,1) ~= 0) imCond = (imgDivision > (imgDivision(x(1),y(1))-20))... & (imgDivision < (imgDivision(x(1),y(1))+20)); imCond = imCond & (~D); im1 = regionGrowing2(imgDivision, x(1), y(1), 20,imCond); imgSegm(im1)=i; i = i +1; D = D | im1; [x,y]= find(D == 0); end >>imgEtiq = label2rgb(imgSegm); >>imshow(imgEtiq); Los resultados de la segmentacin se visualizan sobre la imagen de entrada: >>borde =edge(imgSegm,'canny'); >>imshow(ImagResMarcado(imgEnt,borde));

Departamento de Electrnica, Automtica e Informtica Industrial Escuela Universitaria de Ingeniera Tcnica Industrial

Tcnicas de segmentacin de imgenes

5.11

Departamento de Electrnica, Automtica e Informtica Industrial Escuela Universitaria de Ingeniera Tcnica Industrial

También podría gustarte