Vous êtes sur la page 1sur 3

Sistemas de Visión Artificial

Alumno: Garrido Castañeda Sergio Isahí. Grupo: 4MV4

Ejercicio Segmentación de Color.

El ejercicio propuesto en clase consistió en realizar la segmentación de los colores RGB, CMY y blanco de una
imagen mediante la definición de distancia Euclidiana.

Desarrollo
Partiendo de la definición de la distancia Euclidiana para la segmentación de color, se tiene que nos permite
conocer la cercanía de cada pixel de la imagen a un valor deseado que en el caso de una imagen es a un color
deseado. La fórmula de la distancia Euclidiana es la siguiente.

Explicación del algoritmo


El algoritmo para la segmentación de color de una imagen se explica a continuación:
Primero se carga la imagen a la cual se le realizará la segmentación y a su vez se obtienen sus componentes RGB
y las dimensiones de las mismas. Posteriormente se realiza un ciclo for anidado el cual nos permite leer pixel por
pixel a la imagen. Con lo cual posteriormente se calcula la distancia que existe entre cada pixel de la imagen y los
colores RGB, CMY y blanco, haciendo uso de la formula anterior.
Una vez obtenida la distancia de cada pixel de la imagen entre cada uno de los colores, se procede a calcular a
que color se encuentra más cerca cada pixel, esto se realizó calculando el mínimo entre las distancias de cada
pixel a cada color.
Ahora, una vez que se calculó la menor distancia se procedió a seleccionar cada pixel de la imagen de acuerdo a
su similitud a cada color mediante condicionales if, para posteriormente desplegar una imagen para cada
segmentación de color utilizando los valores de la imagen original y así poder apreciar los rangos de colores
relacionados a cada color de los modelos RGB, CMY y blanco.

Código.
El código del algoritmo anteriormente explicado se muestra a continuación
clc
close all
clear all
I=imread('C:\Users\SergioIsahí\Pictures\c1.png');
[m n c]=size(I);
Idouble=double(I);
for i=1:m
for j=1:n
DRed=((255-Idouble(i,j,1))^2+(0-Idouble(i,j,2))^2+(0-Idouble(i,j,3))^2)^.5;
DGreen=((0-Idouble(i,j,1))^2+(255-Idouble(i,j,2))^2+(0-Idouble(i,j,3))^2)^.5;
DBlue=((0-Idouble(i,j,1))^2+(0-Idouble(i,j,2))^2+(255-Idouble(i,j,3))^2)^.5;
DCyan=((Idouble(i,j,1))^2+(255-Idouble(i,j,2))^2+(255-Idouble(i,j,3))^2)^.5;
DMagenta=((255-Idouble(i,j,1))^2+(Idouble(i,j,2))^2+(255-Idouble(i,j,3))^2)^.5;
DYellow=((255-Idouble(i,j,1))^2+(255-Idouble(i,j,2))^2+(Idouble(i,j,3))^2)^.5;
DWhite=((255-Idouble(i,j,1))^2+(255-Idouble(i,j,2))^2+(255-Idouble(i,j,3))^2)^.5;
DBlack=((Idouble(i,j,1))^2+(Idouble(i,j,2))^2+(Idouble(i,j,3))^2)^.5;
minimo=min([DRed,DGreen,DBlue,DCyan,DMagenta,DYellow,DWhite,DBlack]);
maximo=max([DRed,DGreen,DBlue,DCyan,DMagenta,DYellow,DWhite,DBlack]);
if minimo==DRed
Idouble(i,j,1)=255;Idouble(i,j,2)=0;Idouble(i,j,3)=0;
elseif minimo==DGreen
Idouble(i,j,1)=0; Idouble(i,j,2)=255; Idouble(i,j,3)=0;
elseif minimo==DBlue
Idouble(i,j,1)=0; Idouble(i,j,2)=0; Idouble(i,j,3)=255;
elseif minimo==DCyan
Sistemas de Visión Artificial
Alumno: Garrido Castañeda Sergio Isahí. Grupo: 4MV4

Idouble(i,j,1)=0; Idouble(i,j,2)=255; Idouble(i,j,3)=255;


elseif minimo==DMagenta
Idouble(i,j,1)=255; Idouble(i,j,2)=0; Idouble(i,j,3)=255;
elseif minimo==DYellow
Idouble(i,j,1)=255; Idouble(i,j,2)=255; Idouble(i,j,3)=0;
elseif minimo==DWhite
Idouble(i,j,1)=255; Idouble(i,j,2)=255; Idouble(i,j,3)=255;
else
Idouble(i,j,1)=0; Idouble(i,j,2)=0; Idouble(i,j,3)=0;
end
if Idouble(i,j,1)==255 && Idouble(i,j,2)==0 && Idouble(i,j,3)==0
Ired(i,j,1)=I(i,j,1); Ired(i,j,2)=I(i,j,2); Ired(i,j,3)=I(i,j,3);
else
Ired(i,j,1)=0; Ired(i,j,2)=0; Ired(i,j,3)=0;
end
if Idouble(i,j,1)==0 && Idouble(i,j,2)==255 && Idouble(i,j,3)==0
Igreen(i,j,1)=I(i,j,1); Igreen(i,j,2)=I(i,j,2); Igreen(i,j,3)=I(i,j,3);
else
Igreen(i,j,1)=0; Igreen(i,j,2)=0; Igreen(i,j,3)=0;
end
if Idouble(i,j,1)==0 && Idouble(i,j,2)==0 && Idouble(i,j,3)==255
Iblue(i,j,1)=I(i,j,1); Iblue(i,j,2)=I(i,j,2); Iblue(i,j,3)=I(i,j,3);
else
Iblue(i,j,1)=0; Iblue(i,j,2)=0; Iblue(i,j,3)=0;
end
if Idouble(i,j,1)==0 && Idouble(i,j,2)==255 && Idouble(i,j,3)==255
Icyan(i,j,1)=I(i,j,1); Icyan(i,j,2)=I(i,j,2); Icyan(i,j,3)=I(i,j,3);
else
Icyan(i,j,1)=0; Icyan(i,j,2)=0; Icyan(i,j,3)=0;
end
if Idouble(i,j,1)==255 && Idouble(i,j,2)==0 && Idouble(i,j,3)==255
Imagenta(i,j,1)=I(i,j,1);Imagenta(i,j,2)=I(i,j,2);
magenta(i,j,3)=I(i,j,3);
else
Imagenta(i,j,1)=0;Imagenta(i,j,2)=0;Imagenta(i,j,3)=0;
end
if Idouble(i,j,1)==255 && Idouble(i,j,2)==255 && Idouble(i,j,3)==0
Iyellow(i,j,1)=I(i,j,1);Iyellow(i,j,2)=I(i,j,2);
Iyellow(i,j,3)=I(i,j,3);
else
Iyellow(i,j,1)=0;Iyellow(i,j,2)=0;Iyellow(i,j,3)=0;
end
if Idouble(i,j,1)==255 && Idouble(i,j,2)==255 && Idouble(i,j,3)==255
Iwhite(i,j,1)=I(i,j,1);Iwhite(i,j,2)=I(i,j,2); Iwhite(i,j,3)=I(i,j,3);
else
Iwhite(i,j,1)=0; Iwhite(i,j,2)=0; Iwhite(i,j,3)=0;
end
end
end
Ired8bits=uint8(Ired);
Igreen8bits=uint8(Igreen);
Iblue8bits=uint8(Iblue);
Icyan8bits=uint8(Icyan);
Imagenta8bits=uint8(Imagenta);
Iyellow8bits=uint8(Iyellow);
Iwhite8bits=uint8(Iwhite);
Sistemas de Visión Artificial
Alumno: Garrido Castañeda Sergio Isahí. Grupo: 4MV4

subplot(2,4,1);imshow(I);title('Original');
subplot(2,4,2);imshow(Ired8bits);title('Rojo');
subplot(2,4,3);imshow(Igreen8bits);title('Verde');
subplot(2,4,4);imshow(Iblue8bits);title('Azul');
subplot(2,4,5);imshow(Icyan8bits);title('Cyan');
subplot(2,4,6);imshow(Imagenta8bits);title('Magenta');
subplot(2,4,7);imshow(Iyellow8bits);title('Amarillo');
subplot(2,4,8);imshow(Iwhite8bits);title('Blanco');

Resultados.
A continuación se muestran las imágenes resultantes de cada segmentación.
Se puede apreciar claramente que cada pixel de la imagen se relaciona únicamente a una segmentación de
acuerdo a la similardad que cuenta con el color a segmentar.

Vous aimerez peut-être aussi