Matlab - Color medio de las imagenes

 
Vista:

Color medio de las imagenes

Publicado por Carlos (1 intervención) el 24/11/2012 19:35:14
Buenas tardes, tengo una consulta sobre matlab. El tema es el siguiente:
Tengo 10 siluetas de maquinas de taladrar cada una pintada de un color. Tengo q saber en cada pixel cuantos taladros comparten dicho pixel y el color medio de ellos. Es decir si en el pixel 200,200 coinciden dos taladros (uno negro y uno blanco) quiero que en la matriz que yo genere el pixel 200,200 sea gris. He conseguido contabilizar los taladros que comparten un mismo pixel pero no consigo que la media me salga. Creo que es por tema de definición de variables. Coloco aquí el código del programa (es muy sencillo):

archi=dir('*.bmp')
for i=1:length(archi)

name=archi(i).name;
pos=strfind(name,'.bmp');

if i==1
A=imread(name,'BMP');
A_nombre=archi(1).name;
end
if i==2

B=imread(name,'BMP');
B_nombre=archi(2).name;
end
if i==3
C=imread(name,'BMP');
C_nombre=archi(3).name;
end
if i==4
D=imread(name,'BMP');
D_nombre=archi(4).name;
end
if i==5
E=imread(name,'BMP');
E_nombre=archi(5).name;
end
if i==6
F=imread(name,'BMP');
F_nombre=archi(6).name;
end
if i==7
G=imread(name,'BMP');
G_nombre=archi(7).name;
end
if i==8
H=imread(name,'BMP');
H_nombre=archi(8).name;
end
if i==9
I=imread(name,'BMP');
I_nombre=archi(9).name;
end
if i==10
J=imread(name,'BMP');
J_nombre=archi(10).name;
end

%clear M
end


contabilidad = zeros (615,800);
suma = zeros( [615,800,3], 'double');
media = zeros ([615,800,3], 'unit8');


%COMPARACION DE MATRICES
for i=1:615
for j=1:800
if (A(i,j,1)==255)
if (A(i,j,2)==255)
if (A(i,j,3)==255)
contabilidad (i,j) = contabilidad (i,j)+0;
else
contabilidad(i,j) = contabilidad(i,j)+1;
suma(i,j) = suma(i,j)+ A(i,j);

end
else
contabilidad(i,j) = contabilidad(i,j)+1;
suma(i,j) = suma(i,j)+ A(i,j);

end
else
contabilidad(i,j) = contabilidad(i,j)+1;
suma(i,j) = suma(i,j)+ A(i,j);

end

if (B(i,j,1)==255)
if (B(i,j,2)==255)
if (B(i,j,3)==255)
contabilidad (i,j) = contabilidad (i,j)+0;
else
contabilidad(i,j) = contabilidad(i,j)+1;
suma(i,j) = suma(i,j)+ B(i,j);

end
else
contabilidad(i,j) = contabilidad(i,j)+1;
suma(i,j) = suma(i,j)+ B(i,j);
end
else
contabilidad(i,j) = contabilidad(i,j)+1;
suma(i,j) = suma(i,j)+ B(i,j);

end

if (C(i,j,1)==255)
if (C(i,j,2)==255)
if (C(i,j,3)==255)
contabilidad (i,j) = contabilidad (i,j)+0;
else
contabilidad(i,j) = contabilidad(i,j)+1;
suma(i,j) = suma(i,j)+ C(i,j);

end
else
contabilidad(i,j) = contabilidad(i,j)+1;
suma(i,j) = suma(i,j)+ C(i,j);

end
else
contabilidad(i,j) = contabilidad(i,j)+1;
suma(i,j) = suma(i,j)+ C(i,j);

end

if (D(i,j,1)==255)
if (D(i,j,2)==255)
if (D(i,j,3)==255)
contabilidad (i,j) = contabilidad (i,j)+0;
else
contabilidad(i,j) = contabilidad(i,j)+1;
suma(i,j) = suma(i,j)+ D(i,j);
end
else
contabilidad(i,j) = contabilidad(i,j)+1;
suma(i,j) = suma(i,j)+ D(i,j);

end
else
contabilidad(i,j) = contabilidad(i,j)+1;
suma(i,j) = suma(i,j)+ D(i,j);

end

if (E(i,j,1)==255)
if (E(i,j,2)==255)
if (E(i,j,3)==255)
contabilidad (i,j) = contabilidad (i,j)+0;
else
contabilidad(i,j) = contabilidad(i,j)+1;
suma(i,j) = suma(i,j)+ E(i,j);

end
else
contabilidad(i,j) = contabilidad(i,j)+1;
suma(i,j) = suma(i,j)+ E(i,j);

end
else
contabilidad(i,j) = contabilidad(i,j)+1;
suma(i,j) = suma(i,j)+ E(i,j);
end

if (F(i,j,1)==255)
if (F(i,j,2)==255)
if (F(i,j,3)==255)
contabilidad (i,j) = contabilidad (i,j)+0;
else
contabilidad(i,j) = contabilidad(i,j)+1;
suma(i,j) = suma(i,j)+ F(i,j);

end
else
contabilidad(i,j) = contabilidad(i,j)+1;
suma(i,j) = suma(i,j)+ F(i,j);

end
else
contabilidad(i,j) = contabilidad(i,j)+1;
suma(i,j) = suma(i,j)+ F(i,j);

end

if (G(i,j,1)==255)
if (G(i,j,2)==255)
if (G(i,j,3)==255)
contabilidad (i,j) = contabilidad (i,j)+0;
else
contabilidad(i,j) = contabilidad(i,j)+1;
suma(i,j) = suma(i,j)+ G(i,j);

end
else
contabilidad(i,j) = contabilidad(i,j)+1;
suma(i,j) = suma(i,j)+ G(i,j);

end
else
contabilidad(i,j) = contabilidad(i,j)+1;
suma(i,j) = suma(i,j)+ G(i,j);

end

if (H(i,j,1)==255)
if (H(i,j,2)==255)
if (H(i,j,3)==255)
contabilidad (i,j) = contabilidad (i,j)+0;
else
contabilidad(i,j) = contabilidad(i,j)+1;
suma(i,j) = suma(i,j)+ H(i,j);

end
else
contabilidad(i,j) = contabilidad(i,j)+1;
suma(i,j) = suma(i,j)+ H(i,j);

end
else
contabilidad(i,j) = contabilidad(i,j)+1;
suma(i,j) = suma(i,j,1)+ H(i,j);

end

if (I(i,j,1)==255)
if (I(i,j,2)==255)
if (I(i,j,3)==255)
contabilidad (i,j) = contabilidad (i,j)+0;
else
contabilidad(i,j) = contabilidad(i,j)+1;
suma(i,j) = suma(i,j)+ I(i,j);

end
else
contabilidad(i,j) = contabilidad(i,j)+1;
suma(i,j) = suma(i,j)+ I(i,j);

end
else
contabilidad(i,j) = contabilidad(i,j)+1;
suma(i,j) = suma(i,j)+ I(i,j);

end

if (J(i,j,1)==255)
if (J(i,j,2)==255)
if (J(i,j,3)==255)
contabilidad (i,j) = contabilidad (i,j)+0;
else
contabilidad(i,j) = contabilidad(i,j)+1;
suma(i,j) = suma(i,j)+ J(i,j);

end
else
contabilidad(i,j) = contabilidad(i,j)+1;
suma(i,j) = suma(i,j)+ J(i,j);

end
else
contabilidad(i,j) = contabilidad(i,j)+1;
suma(i,j) = suma(i,j)+ J(i,j);

end
end
end

%CALCULO DE LA MEDIA
for i=1:615
for j=1:800
media(i,j)=suma(i,j)/contabilidad(i,j);

end

end


Espero que me podáis ayudar. Muchas gracias,
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder