Reconocimiento de caracteres con PML

 Blog By Heiler Alexander salguero Vargas


Para este proyecto el profesor nos brindó gran parte del código por no decir que todo.

principalmente se usó la función "imread" de Matlab para leer las imágenes 2D 

(imágenes modificadas por mi con el fin de validar que tan efectiva es la red neuronal)


luego se redujeron a un tamaño estándar para todas las letras. luego se usa un ciclo "for" para recorrer las posiciones y cuando el numero el menor que cierta tonalidad RGB toma un valor de 1 sino entonces toma valor de -1 a esto se le llama binarizar la imagen. 

luego se aplican las funciones newff de Matlab para las redes neuronales (neuronas, margen de error, iteraciones, etc...)

una vez realizado todo solo queda poner a prueba y las conclusiones que se logran son:

en "E","F" en 9 de 10 la respuesta fue correcta.

en "G" en 8 de 10 respuestas fue correcta

en "H" en 7 de 10 respuestas fue correcta






código

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%se leen las letras
E = imread("E.JPG");
F = imread("F.JPG");
G = imread("G.JPG");
H = imread("H.JPG");
%se reduce el tamaño normalizando
E1=imresize(E,[30,40]);
F1=imresize(F,[30,40]);
G1=imresize(G,[30,40]);
H1=imresize(H,[30,40]);
%se accede a la capa 1 de cada letra
ER=E1(:,:,1);
FR=F1(:,:,1);
GR=G1(:,:,1);
HR=H1(:,:,1);
%se asigna espacios a los vectores
VE=1:1200;
VF=1:1200;
VG=1:1200;
VH=1:1200;
EB=ER;
FB=FR;
GB=GR;
HB=HR;
%se binariza las letras
cont=1;
for f=1:30
for c=1:40
if(ER(f,c)<160)
EB(f,c)=1;
else
EB(f,c)=-1;
end
VE(cont)=EB(f,c);
cont=cont+1;
end
end
cont=1;
for f=1:30
for c=1:40
if(FR(f,c)<160)
FB(f,c)=1;
else
FB(f,c)=-1;
end
VF(cont)=FB(f,c);
cont=cont+1;
end
end
cont=1;
for f=1:30
for c=1:40
if(GR(f,c)<160)
GB(f,c)=1;
else
GB(f,c)=-1;
end
VG(cont)=GB(f,c);
cont=cont+1;
end
end
cont=1;
for f=1:30
for c=1:40
if(HR(f,c)<160)
HB(f,c)=1;
else
HB(f,c)=-1;
end
VH(cont)=HB(f,c);
cont=cont+1;
end
end
%se implemente codigo newff
p=[VE;VF;VG;VH];
p=transpose(p);
Target=[1 0 0 0;0 1 0 0;0 0 1 0;0 0 0 1];
limites=minmax(p);
net=newff(limites,[5,4],{'logsig','logsig'},'traingd');
net=init(net);
net.trainParam.show = 50;
net.trainParam.lr = 0.2;
net.trainParam.epochs = 10000000;
net.trainParam.goal = 1e-3;
[net,tr]=train(net,p,Target);
XM1=imread("H9.JPG");
X1=imresize(XM1,[30,40]);
XR=X1(:,:,1);
VX=1:1200;
XB=XR;
cont=1;
for f=1:30
for c=1:40
if(XR(f,c)<160)
XB(f,c)=1;
else
XB(f,c)=-1;
end
VX(cont)=XB(f,c);
cont=cont+1;
end
end
vec=transpose(VX);
y=sim(net,vec);
y=compet(y);
[i, j]=find(y==max(max((y))));
if(i==1)
i=69;
end
if(i==2)
i=70;
end
if(i==3)
i=71;
end
if(i==4)
i=72;
end
Respuesta=char(i);

Comentarios

Entradas populares de este blog