Você está na página 1de 15

UNIVERSIDADE TECNOLGICA FEDERAL DO PARAN

PROGRAMA DE PS-GRADUAO EM ENGENHARIA ELTRICA E


INFORMTICA INDUSTRIAL

REDES NEURAIS ARTIFICIAIS

DIOGO WACHTEL GRANADO

SISTEMA DE RECONHECIMENTO DE CARACTERES MANUSCRITOS

CURITIBA
2015

DIOGO WACHTEL GRANADO

SISTEMA DE RECONHECIMENTO DE CARACTERES MANUSCRITOS

Relatrio de projeto apresentado


disciplina de Redes Neurais Artificiais do
Programa
de
Ps-Graduao
em
Engenharia
Eltrica
e
Informtica
Industrial da Universidade Tecnolgica
Federal do Paran, como requisito parcial
para a aprovao na disciplina.

CURITIBA
2015

Sumrio
1.

Introduo................................................................................................ 4

2.

Objetivos.................................................................................................. 5

3.

Desenvolvimento..................................................................................... 6
3.1.

Processamento da Imagem...............................................................6

3.1.1.

Pr-processamento de Imagem...................................................6

3.1.2.

Extrao imagem......................................................................11

3.2.

Treinamento da rede Neural............................................................12

3.2.1.
3.3.

Inicializando a rede neural........................................................12

Verificao do Resultado..................................................................13

4.

Concluso.............................................................................................. 14

5.

Bibliografia............................................................................................. 15

1. Introduo
O reconhecimento do de caracteres escritos a mo, conhecida como uma das
primeiras aplicaes de redes neurais artificiais, em que simula o reconhecimento
humana em uma rede artificial. Existem varias dificuldades ao reconhecer caracteres
de um documento digitalizado, Mtodos clssicos de reconhecimento no so
suficientes pois a escrita tem alguns padres particulares, como por exemplo, o
mesmo caractere possui tamanho e estilo diferentes at mesmo para a mesma
pessoa, a imagem suscetvel a rudos, no ha regra definida para padro de
escrita, essas regras devem ser deduzidas eucaristicamente. Mesmo com todas
estas dificuldades o sistema de viso humano excelente para identificao de
caracteres, pois consegue se adaptar as mnima mudanas e erros, consegue
aprender por experincia e rapidamente novos padres.

2. Objetivos
O Reconhecimento ticos de caracteres(OCR), para ser utilizado, primeiramente
deve-se preparar o a material a ser lido, utilizando scanner pticos ou at leitores
mais especficos, para que este possa ser lido com um bitmap, para que possa ser
entendido pelos softwares, estes por sua vez, precisam processar a imagem para
determinar em qual rea existe texto, para ento terminar quais letras esto escritas.
Sistemas antigos analisavam estas imagens, com um banco de dados com fontes
especficas, este sistema de reconhecimento apresentava muito erros, de falta de
acurcia.
Nos sistemas novos de OCR, a construo do algoritmo composto de redes
neurais para analisar as bordas, a descontinuidade entre os caracteres e o plano de
fundo que a imagem se encontra. Permitindo que irregularidades como diferenas
de impresso, no influenciem muito no resultado, resultando em uma leitura
confivel.
Entretanto, apesar dos softwares OCR conseguirem reconhecer uma alta gama de
variedade de fontes, o manuscrito ainda um problema. Para resolverem este
problema mais potente a rede neural deve ser implementada.
As redes neurais podem ser usadas,caso possuam um mnimo quantidades de
dados para treinamento e aprendizado. O conjunto de dados o mais importante
quando uma nova rede criada, caso contrrio a rede ser ineficaz. Tambm o
pr-processamento importante pois necessrio que os caracteres analisados
sejam corretamente inseridos, caso contrrio pode-se pegar dados errneos para o
treinamento e analise.
O objetivo deste trabalho identificar corretamente caracteres escritos a mo. Devese construir corretamente a rede neural e treinar propriamente. O programa a ser
desenvolvido deve extrair de uma imagem o mapa de caracteres para o treinamento,
aps o processo automtico da imagem, o mapa de caracteres deve ser utilizado
para treinar a rede neural. O programa ser escrito em linguagem MATLAB.

3. Desenvolvimento
O projeto de reconhecimento de caracteres escritos a mo, foi desenvolvido com o
Neural Network, dividido em duas partes, o pr-processamento de imagem, extrao
e reconhecimento do caractere.

3.1.

Processamento da Imagem

3.1.1. Pr-processamento de Imagem


A imagem deve ser lida, convertida para escala de cinza e ento binarizada.

Figura 1: Original

I = imread('Amostra3.bmp');
imshow(I);

Figura 2 Escala Cinza

Igray = rgb2gray(I);
imshow(Igray)

Figura 3 Binarizada

Ibw = im2bw(Igray,graythresh(Igray));
imshow(Ibw)

Aps a imagem ser convertida em binria, pode-se ento aplicar tratamentos para
delimitar e identificar melhor cada posio do caractere.

Figura 4 Identificacao das bordas

Iedge = edge(uint8(Ibw));
imshow(Iedge)

Figura 5 Preenchimento entre bordas

Iedge2 = imdilate(Iedge, se);

imshow(Iedge2);

Figura 6 Preenchimento da imagem

Ifill= imfill(Iedge2,'holes');
imshow(Ifill)

Pode-se agora verificar em quais posies e possvel encontrar um caractere.

Figura 7: Posicoes que exitem caracteres

Iprops = regionprops(Ilabel);
Ibox = [Iprops.BoundingBox];
imshow(I)
hold on;
Ibox = reshape(Ibox,[4 60]);
for cnt = 1:60
rectangle('position',Ibox(:,cnt),'edgecolor','r');
end

3.1.2. Extrao imagem


As imagens devem ser extradas para ter reduzidas ao tamanho de suas bordas, a
otimizao da imagem feita levando em considerao em qual regio possui maior
concentrao de bit uns, ou seja onde a imagem de concentra, a partir desta rea a
imagem analisada at encontra ou uma coluna ou linha completa de bits zeros.

Figura 8: Otimizao da imagem

Ic = [Iprops.Centroid];
Ic = reshape(Ic,[2 60]);
Ic = Ic';
Ic(:,3) = (mean(Ic.^2,2)).^(1/2);
Ic(:,4) = 1:60;

Aps a otimizao a imagem novamente redimensionada em uma matriz 5x7 para


atender os paramentros da rede neural.

Figura 9 Caracter redimensionado

bw_7050=imresize(bw2,[70,50]);
for cnt=1:7
for cnt2=1:5
Atemp=sum(bw_7050((cnt*10-9:cnt*10),(cnt2*10-9:cnt2*10)));
lett((cnt-1)*5+cnt2)=sum(Atemp);
end
end
lett=((100-lett)/100);
lett=lett';

3.2.
Treinamento da rede Neural
3.2.1. Inicializando a rede neural
A rede neural criada, ser composta de 5 conjuntos de caracteres para treinar a rede neural,
sero dez caracteres cada conjunto. Com ajuda da toolbox do Matlab Neural Network
Training definimos e criamos a rede neural. Devido a natureza do problema,foi utilizado a
rede neural multi nivel perceptron, MLP.

Figura 10:Treinamento

P = out(:,1:50);
T = [eye(10) eye(10) eye(10) eye(10) eye(10) ];
Ptest = out(:,51:60);
alphabet = P;
targets = T;
[R,Q] = size(alphabet);
[S2,Q] = size(targets);
S1 = 10;
net = newff(minmax(alphabet),[S1 S2],{'logsig' 'logsig'},'traingdx');
net.LW{2,1} = net.LW{2,1}*0.01;
net.b{2} = net.b{2}*0.01;
net.performFcn = 'sse';
net.trainParam.goal = 0.001;
net.trainParam.show = 20;
net.trainParam.epochs = 50000;
net.trainParam.mc = 0.95;
P = alphabet;
T = targets;
[net,tr] = train(net,P,T);

3.3.

Verificao do Resultado

Podemos simular a rede neural para verificar o funcionamento da rede, foi


anasilado a sequencia de 1 a 9 entao 0. Pode-se confirmar que o resultado foi
satisfatrio.

Figura 11:Simulao

Ptest = out(:,1:10);
[a,b]=max(sim(net,Ptest));
disp(b)

4. Concluso
A Rede neural artificial utilizada foi a Multilayer Perceptron com duas camadas
ocultas de 35, e 10 neuronios como rede neural. O programa foi todo construido
em MATLAB o que facilitou e muito a contruo e teste do programa.
O reconhecimento da caracteres manustritos um problema complexo, sem
soluo trivial. A principal dificuldade foi encontrar alguma base de dados para
que se possa fazer provar a rede neural. Existem diversos banco de dados,
porm no h muitoa informao de como foi feito a formatao e
processamento dessas imagens, que um fator muito importante para que se
possa aplicar a rede neural artificial. Devido a essa dificuldade elaborei meu
prprio banco de dados de caracteres. O resultado final pode-se provar que a
rede neural artifical realmente funciona com uma taxa baixa de erro, porm
devido a pequena amostra, qualquer erro na escrita algum caracter como por
exemplo o 8, pode-se verificar que a taxa de erro maior, ainda que mesmo a
quantidade de caracteres possvel seja baixa. Para se obter um resultado muito
satisfatrio foi necessrio copiar cada caracter e verifica se houve alguma
imperfeio durante a digitalizao.

5. Bibliografia
[1] Simon Haykin, Neural Networks: A comprehensive foundation, 2nd
Edition, Prentice Hall, 1998.
[2] Character Recognition, disponvel em:
< http://www.mathworks.com/help/nnet/examples/characterrecognition.html> acesso em 10/02/2015.
[3] A Matlab Project in Optical Character Recognition (OCR)
< http://www.ele.uri.edu/~hansenj/projects/ele585/OCR/OCR.pdf> acesso
em 05/02/2015.
[4] Applying Neural Networks to Character Recognition
< http://www.ccs.neu.edu/home/feneric/charrecnn.html> acesso em
10/01/2015.
[5] A. Rajavelu , M. T. Musavi and M. V Shirvaikar "A Neural Network
Approach to Character Recognition", Neural Networks, vol. 2, pp.387
-393 1989.
[6] Araokar, Shashank, Visual Character Recognition using Artificial Neural
Networks, CoRR, Vol abs/cs/0505016, 2005