viernes, 30 de diciembre de 2011

Conceptos básicos de extracción de características de una foto usando Matlab

Adjunto el código de un fichero *.m de matlab para detectar en un fichero de imagen dónde están los círculos.

Guardar con el nombre, p.ej.    DetecCir.m y ejecutar en Matlab. El fichero que se evalúa es el indicado abajo en rojo, cuya foto es ésta.





Contenido el fichero           DetecCir.m

%Ejemplo que usa la "Image Processing Toolbox" de Matlab para buscar círculos en una foto


%Para ver cómo se ve la excentricidad usar fichero formas.jpg
%Para buscar círculos usar fichero formas2.jpg


close all
image=imread('c:\formas2.jpg');     % Lee el fichero y lo carga en la variable ? image
img=im2bw(image);               % Binariza la imagen y la guarda en la variable ? img
imshow(img);                    % Muestra la imagenen binaria de la variable img en la pantalla
[label num] = bwlabel(img,8);   %Etiqueta los objetos encontrados en la variable img con área > de 8 pixeles
impixelregion %Muestra el tool con el que se puede ver el valor de cada pixel
graindata=regionprops(label,'all');
for i=1:num    
if  graindata(i).Eccentricity < 0.5 %Excentricidad > 0 implica que la forma se aleja de ser redonda. 
        found=i;
        area=graindata(found).Area;
        radius=sqrt(area/pi);
        radius=1.2*radius;
        centroid=graindata(found).Centroid;
t=0:pi/20:2*pi;
x=centroid(1)+radius*cos(t);  
y=centroid(2)+radius*sin(t);
hold on;
        plot(x,y);
end
end




Resultadio:



If you did like this project you can donate some cents of Bitcoins SV in the following address.
1sAZQMy5Ci1G88CmbucFJDsF7TxeXAcko
or bitcoin cash in the address:
qzmjpeqrlgd3flltpavm9t2xh0nz8y97mggajvvqnv
thanks😊

1 comentario:

  1. eres bn chido gracias, con esto terminare mi proyecto de la escuela :D

    ResponderEliminar