You are on page 1of 9

OBJETIVOS Aplicar los conceptos aprendidos en clase sobre imgenes a color y tcnicas de segmentacin.

Aplicar los mtodos de distancia euclidiana y mximos y mnimos para segmentar un objeto especifico de una imagen a color. Practicar en la Herramienta Matlab los conocimientos adquiridos en clase

ROCEDIMIENTO En el software Matlab se implemento el respectivo cdigo para llevar a cabo la segmentacin de un objeto perteneciente a una imagen a color. Cdigo: %adquirimos imagen IM=imread('tws.jpg'); figure;subplot(2,2,1);imshow(IM);title('Original'); [nf nc c]=size(IM); %Tomamos 15 muestras representativas : ROI=[]; for f=1:15 [x y]=ginput(1); x=round(x); y=round(y); color=[IM(y,x,1) IM(y,x,2) IM(y,x,3)]; ROI=[ROI; color]; end; ROI=double(ROI); mapROI=ROI/255; R=1:15; R=[R;R;R;R;R;R;R;R;R;R;R;R;R;R;R]; subplot(2,2,3);imshow(R,mapROI);title('Muestras Representativas'); %Aplicamso Distancia euclidiana , usando la funcion Deucl, cuyos argumentos son los %componentes de lamediay los componentes del pixel de la imagenque vamos recorriendo : rgbmedio=[mean(ROI(:,1)); mean(ROI(:,2)); mean(ROI(:,3))]; IM2=IM; for f=1:nf for c=1:nc z=[IM(f,c,1); IM(f,c,2); IM(f,c,3)];

d2=Deucl(z,rgbmedio); if d2>0.18%quiere decir que el pixel no pertenece al objeto (muestras) IM2(f,c,:)=[0 0 0]; else IM2(f,c,:)=[255 255 255];%si la distancia es menor, quiere decir que el pixelsi pertenece %IM2(f,c,:)=IM(f,c,:); %no comentar esta linea si se desa obtener el objeto segmentado en %color original y no blanco end; end; end; subplot(2,2,2);imshow(IM2); title('Filtro con distancia'); %Aplicamos min max rgbmax=[max(ROI(:,1)); max(ROI(:,2)); max(ROI(:,3))];%valores maximos de las muestras %tomadas para cada plano R-G-B rgbmin=[min(ROI(:,1)); min(ROI(:,2)); min(ROI(:,3))];%valores minimos de las muestras %tomadas para cada plano R-G-B IM3=IM; %Recorremos la imagen for f=1:nf for c=1:nc %Si el pixel que recorremos se encuentra en el rango de maximos y minimos de cada plano % RGB, pertenece al objeto y ponemos cada componente en 255 para resaltar el objeto en %blanco if(rgbmin(1,1)<IM(f,c,1) & IM(f,c,1)<rgbmax(1,1) & rgbmin(2,1)<IM(f,c,2) & IM(f,c,2)<rgbmax(2,1) & rgbmin(3,1)<IM(f,c,3) & IM(f,c,3)<rgbmax(3,1)) IM3(f,c,:)=[255 255 255]; %SI esta fuera de rango, el pixel se pone a 0 (cada plano RGB), de tal forma que se vea %negro.

else IM3(f,c,:)=[0 0 0]; end; end; end; subplot(2,2,4);imshow(IM3);title('Filtro con Max-Min'); El codigo de la funcion Deucl que calcula la distancia euclidiana es el siguiente: function d2=Deucl(z,a) z=double(z)./255;%convertimos a double para las operaciones necesarias. a=double(a)./255; a1=(z(1,1)-a(1,1))^2;a2=(z(2,1)-a(2,1))^2;a3=(z(3,1)-a(3,1))^2; d2=sqrt(a1+a2+a3);%aplicando Distancia euclidiana.

RESULTADOS La imagen original es la siguiente:

You might also like