SlideShare una empresa de Scribd logo
1 de 43
Descargar para leer sin conexión
1

PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS
CURSO: ENGENHARIA MECÂNICA ÊNFASE EM MECATRÔNICA
MATÉRIA: ROBÓTICA
PROFESSOR: DENÍLSON LAUDARES RODRIGUES

Reconhecimento de Padrões
Relatório Final

Jackson Junio Pereira Tironi – pepeutironi@yahoo.com.br
Rafael de Almeida Lial – rafael_lial@hotmail.com

Belo Horizonte
Novembro / 2011
2

Jackson Junio Pereira Tironi
Rafael de Almeida Lial

Reconhecimento de Padrões
Relatório Final

Trabalho referente à disciplina de
Robótica do curso de Engenharia
Mecânica

ênfase

Mecatrônica

da

Pontifícia Universidade Católica de
Minas

Gerais,

apresentar

um

reconhecimento

com

objetivo

software
de

de
para

padrões

geométricos, a partir de uma imagem.

Belo Horizonte
Novembro / 2011
3

Resumo

Esse trabalho concentra-se no projeto de um programa para reconhecimento de
padrões geométricos, onde objetos de uma imagem são binarizados, classificados como
círculo, ou quadrilátero, ou quadrado, ou pentágono, ou hexágono, ou heptágono, ou
octágono, conforme formato dos objetos, e depois são calculadas as propriedades principais
como a área, perímetro, comprimento do maior eixo e comprimento do menor eixo em
pixels.

Palavras-chave: reconhecimento, imagem e propriedades.

Abstract

This work focuses on designing a program for geometric pattern recognition, where
objects in an image is binarized, classified as a circle or square, or
hexagon, or heptagon, or octagon, as shape

of

the objects , and

pentagon, or
then the main

properties are calculated as area, perimeter, major diameter and length of the minor axis in
pixels.

Keywords: recognition, image and properties.
4

Lista de figuras

Figura 1: Vizinhança de Moore para um pixel.......................................................11
Figura 2: Diagrama de blocos do programa .........................................................13
Figura 3: Fluxograma do programa........................................................................15
Figura 4: Ajuste das elipses para classificação....................................................16
Figura 5: Aquisição de imagem..............................................................................18
Figura 6: Conversão da imagem para cinza..........................................................19
Figura 7: Conversão da imagem para preto e branco (Binarização)..................20
Figura 8: Classificação dos Objetos na imagem..................................................22
Figura 9: Exibição da área dos objetos da imagem.............................................23
Figura 10: Exibição do perímetro dos objetos da imagem..................................25
Figura 11: Exibição do comprimento do maior eixo............................................26
Figura 12: Exibição do comprimento do maior eixo............................................27
Figura 13: Iniciação do programa..........................................................................28
Figura 14: Etapa de binarização da imagem.........................................................29
Figura 15: Importação da imagem para reconhecimento....................................29
Figura 16: Exibição dos resultados.......................................................................30
Figura 17: Análise do círculo ................................................................................31
Figura 18: Análise do quadrilátero........................................................................32
Figura 19: Elipse circunscrita no quadrado.........................................................32
Figura 20: Comprimento do lado do quadrado....................................................33
Figura 21: Análise do triângulo.............................................................................34
5

Figura 22: Elipse no triângulo................................................................................34
Figura 23: Comprimento da base e da altura do triângulo..................................35
Figura 24: Lados do triângulo................................................................................35
Figura 25: Análise de polígonos............................................................................36
Figura 26: Análise do pentágono regular..............................................................36
Figura 27: Comprimento da base e altura do pentágono....................................37
Figura 28: Parâmetros para cálculo.......................................................................37
Figura 29: Análise do hexágono regular...............................................................38
Figura 30: Comprimento da altura do hexágono..................................................38
Figura 31: Parâmetros para cálculo do hexágono...............................................38
6

Sumário

1. Introdução ....................................................................................................... 08
2. Definição ......................................................................................................... 09
2.1. Objetivo .................................................................................................... 09
2.2. Missão ....................................................................................................... 09
3. Revisão Bibliográfica ................................................................................... 09
3.1. Fundamentos do reconhecimento de Padrões .....................................09
3.1.1. Segmentação .................................................................................10
3.1.2. Detecção de Regiões ....................................................................11
3.1.3. Classificação .................................................................................12
4. Necessidades Básicas ..................................................................................12
5. Desenvolvimento ..........................................................................................12
5.1. Diagrama de Blocos do Software ..........................................................12
5.2. Lógica do Algoritmo do Software ..........................................................14
5.3. Metodologia .............................................................................................17
5.3.1. Aquisição da Imagem .................................................................18
5.3.2. Converter a imagem para escala de cinza ................................18
5.3.3. Converter a imagem para preto e branco .................................19
5.3.4. Encontrar os contornos da Imagem .........................................20
5.3.5. Classificação da imagem ............................................................21
5.3.6. Exibição das propriedades da imagem .....................................22
5.3.6.1. Exibição da Área ..............................................................22
7

5.3.6.2. Exibição do Perímetro .....................................................24
5.3.6.3. Exibição do Comprimento do Maior Eixo ......................25
5.3.6.4. Exibição do Comprimento do Menor Eixo......................26
5.3.6.5. Seleção de objeto específico ...........................................27
5.4. Interface com o Usuário ........................................................................28
6.

Análise de reconhecimento experimental .................................................30

7.

Conclusão .....................................................................................................40

8.

Referências Bibliográficas...........................................................................41
8

1. Introdução

O reconhecimento de padrões é uma técnica usada diariamente cujo objetivo
principal é classificar informações (padrões) baseadas ou em conhecimento a priori
ou em informações estatísticas extraídas dos padrões. Assim o estudo sobre esse
assunto é de grande importância a habilidade de reconhecer formas, tons de sons,
aparências, variações de estado, etc.
Pode-se dizer então, que padrões são os meios pelos quais o mundo é
interpretado e, a partir dessa interpretação, elaboram-se atitudes e decisões. A
grande dificuldade encontrada é a de desenvolver máquinas que tenham tais
comportamentos interpretativos.
Este projeto tem como finalidade o reconhecimento de padrões geométricos,
onde uma imagem digital captada por meio de câmera, scanner ou qualquer método
de obtenção digital, será formada por objetos de formas padrões como triângulo,
quadrado, quadrilátero, pentágono, hexágono, heptágono, octógono ou círculo, onde
essas formas serão reconhecidas e classificadas conforme suas propriedades e
características.
Para o reconhecimento dos padrões, é utilizado o software MatLab, onde um
algoritmo foi implementado e são feitas as rotinas e funções de aquisição da imagem
(fotografia de objeto ou forma geométrica desenhada), conversão da imagem para
escala de cinza, conversão da imagem para preto e branco (binarização da
imagem), avaliação das dimensões e propriedades das formas geométricas
(encontrar os contornos na imagem), classificação da imagem de acordo com suas
características geométricas e exibição do resultado.
O programa faz a identificação e classificação de formas geométricas de uma
imagem, pórem não identifica as propriedades como a área, o perímetro, o
comprimento do maior eixo e o comprimento do menor eixo dos objetos e também
não possui uma função de seleção desses objetos, baseada em uma propriedade
específicada pelo usuário.
9

2. Definição
2.1. Objetivo
O objetivo desse projeto é implementar o algoritmo do programa principal,
incrementando funções onde teremos as propriedades de área, perímetro,
comprimento do maior eixo e o comprimento do menor eixo dos objetos a serem
reconhecidos na imagem. Também irá ser incrementado um função para selecionar
o objeto baseado nessas propriedades que teremos.

2.2. Missão
A missão desse projeto é ter um reconhecimento de padrões mais otimizado,
onde reconhece, classifica e mensura as propriedades dos objetos de uma figura e
seleção de um desses objetos conforme específicas propriedades, com isso existirá
incontáveis aplicações em engenharia, como mapeamentos de áreas, seleções de
peças, sistemas de posicionamento globais (GPS) e outras.

3. Revisão Bibliográfica
3.1. Fundamentos do Reconhecimento de Padrões
As técnicas de reconhecimento de padrões são usadas para classificar ou
descrever padrões ou objetos através de um conjunto de propriedades ou
características, com o objetivo de construção de máquinas ou dispositivos capazes
de apresentar características semelhantes às dos seres humanos em reconhecerem
padrões.
Segundo Tou e Gonzales (1981) os padrões são as propriedades que
possibilitam o agrupamento de objetos semelhantes dentro de uma determinada
classe ou categoria, mediante a interpretação de dados de entrada, que permitam a
extração das características relevantes desses objetos. E entende-se por classe de
um padrão um conjunto de atributos comuns aos objetos de estudo.
10

O reconhecimento de padrões é então definido como o procedimento em que
existe uma busca da identificação de certas características nos dados da imagem de
entrada para comparação as características conhecidas e sua próxima classificação
dentro de categorias. Isso ocorre de forma que o grau de associação seja maior
entre características de mesma categoria e menor entre as categorias de
características diferentes.
Os dados da imagem de entrada são medidos por algoritmos e selecionados
segundo o conteúdo de informações relevantes para a decisão, e passam por um
processo de redução de sua dimensionalidade para que possam ser usados pelo
classificador, que o designará à classe que melhor o represente.
No caso do reconhecimento de padrões em imagens, utilizado em visão
computacional, o processo consiste basicamente no pré-processemento e
minimização de ruído, segmentação e extração de características, e no
reconhecimento e classificação das mesmas.

3.1.1. Segmentação
Geralmente o primeiro passo no processo de análise de imagem é a
segmentação, que consiste em dividir uma imagem em regiões ou objetos que a
constitui, segundo algum critério, ou seja, a segmentação deve parar no momento
em que o objeto desejado da imagem for isolado.
Frequentemente, o resultado obtido no processo de segmentação não é uma
imagem, mas um conjunto de regiões/objetos que serão utilizados para extração de
informações. Desta forma a precisão da fase de segmentação determina o sucesso
ou insucesso dos procedimentos de análise de imagem por computador
(GONZALEZ & WOODS, 2001).
Podem ser aplicadas técnicas de detecção de linhas, círculos, e outras formas
utilizando

funções

matemáticas

aplicadas

por

meio

da

transformada

Hough.Detecção de bordas na figura, cujo algoritmo mais difundido é o Detector de
bordas de Canny, ou detecção de regiões, que foi o método escolhido nesse
trabalho para realizar a segmentação da imagem, através do Algoritmo da
Vizinhança de Moore.
11

3.1.2. Detecção de Regiões
A Vizinhança de Moore identifica regiões contínuas na imagem, esse algoritmo
é empregado em recursos como a Magic Wand do Photoshop.
Para o entendimento do algoritmo é util apresentar o conceito da Vizinhança de
Moore de um pixel. A Vizinhança de um pixel P, é dada pelo conjunto dos 8 pixels
que possuem um vértice ou lado com comum com o primeiro, como mostrado na
Figura 01 abaixo.

Figura 01 – Vizinhança de Moore para um pixel

O algoritmo da Vizinhança de Moore, é um algoritmo simples que consiste em,
considerando um pixel que se sabe pertencer ao contorno de um objeto, fazer uma
pesquisa aos pixels vizinhos. Esta pesquisa é realizada a partir do pixel de onde se
chegou ao pixel considerado e no sentido dos ponteiros do relógio.
Seguindo a representação e notação da Figura 01, PS é o pixel que foi
pesquisado antes de se chegar a P, pixel que constitui o contorno da imagem,
portanto sabe-se que P8 não faz parte do contorno ou que já foi processado.
De seguida são pesquisados os pixels P1 a P7, parando se algum for detectado
como pertencendo à imagem (contorno). Para o novo ponto encontrado repete-se
este processo, tendo em conta o pixel pesquisado anteriormente.
Por exemplo, se o ponto encontrado como constituinte do contorno for P2, este
será o próximo P e P1 será o próximo OS.
12

3.1.3. Classificação
Após a extração das características e avaliação das propriedades encontradas
inicia-se a classificação do objeto, que são procedimentos que possibilitem a
identificação e classificação do objeto em uma determinada classe. Intuitivamente,
uma classe contém objetos similares, ao passo que objetos de classes diferentes
são dissimilares.
Os métodos de classificação sem dividem em dois tipos principais: os
supervisionados e os não supervisionados. Sendo que o primeiro, por sua vez,
também se subdivide em dois: Métodos Clássicos e Métodos Contextuais. Os
métodos não supervisionados dividem as classes automaticamente e em sua
maioria baseiam-se no Princípio de Fisher. Alguns métodos podem ser baseados
também em funções discriminantes matemáticas, como por exemplo a Teoria dos
Grafos, dentre outras.
Os métodos supervisionados são mais precisas por levarem em consideração
informações fornecidas pelo usuário, a verdade terrestre ou mapa de referência.
Baseiam-se, além de funções discriminantes, na teoria de Bayes e requerem alguns
conhecimentos prévios das classes.

4. Necessidades básicas
Para realização desse projeto, será necessário a utilização do software
MatLab e de estudos sobre suas funções, juntamente com o toolbox
processamento de imagem que possui internamente ao software,

de

referências

bibliográficas como livros, artigos, dissertações e teses sobre reconhecimento de
padrões e processamento digital de imagens, e principalmente a orientação do
professor Denílson.

5. Desenvolvimento

5.1. Diagrama de Blocos do Software
13

Figura 02 – Diagrama de blocos do programa

O primeiro passo no processo é a aquisição da imagem isto é, adquirir uma
imagem digital. Para fazer isso, necessitamos de um sensor para imageamento e a
capacidade de digitalizar o sinal produzido pelo sensor. O sensor poderia ser uma
câmera de TV monocromática ou colorida, o sensor de imageamento poderia
também ser uma câmera de varredura por linha que produza uma única linha de
imagem por vez.
Após a obtenção de uma imagem digital, o próximo passo trata de binarizar
aquela imagem. A função chave da binarização é melhorar a imagem de forma a
aumentar as chances para o sucesso dos processos seguintes.
O próximo estágio trata da segmentação que divide uma imagem de entrada em
partes ou objetos constituintes. Em geral, a segmentação automática é uma das
tarefas mais difíceis no processamento de imagens digitais. No caso de
reconhecimento de padrões, o papel básico da segmentação é extrair objetos
individuais do fundo da imagem.
O processo de avaliação das dimensões, também chamado seleção de
características, procura extrair características que resultem em alguma informação
quantitativa de interesse ou que sejam básicas para discriminação entre classes de
objetos.
14

O estágio que envolve reconhecimento e classificação, é o processo onde o
reconhecimento atribui um rótulo a um objeto, baseado na informação fornecida pelo
seu descritor e a classificação envolve a atribuição de significado a um conjunto de
objetos reconhecidos.
Após o reconhecimento e classificação, vem a etapa de exibição das
propriedades dos objetos da imagem, onde aparece a área (mm²), o perímetro
(mm), o comprimento do eixo maior (mm) e o comprimento do eixo menor (mm),
onde é exibido ao lado do objeto.
Por último é feita a seleção de objetos com propriedades específicas,
definidas pelo usuário, onde esses objetos selecionados terá uma cor diferente,
onde é facilmente identificados

5.2. Lógica do Algoritmo do Software
A lógica de classificação do projeto é apresentado no fluxograma na figura 03
abaixo, onde existem 8 classes nas quais são enquadarados os objetos: círculos,
triângulo, quadrados e assim por diante aé polígonos de 8 lados, e uma última
classe para objetos desconhecidos, além da classificação, possui a exibição das
propriedades e a seleção da imagem por uma propriedade específica definida pelo
usuário.
15

Figura 03 – Fluxograma do programa
16

O primeiro teste é realizado para identificar o número de vértices da forma, o
software identifica até oito vértices distintos. Caso o número de lado seja igual a oito,
é realizado um teste para checar se o maior eixo da figura é igual ao diâmetro
equivalente de um círculo, caso positivo a forma é classificada como círculo, do
contrário é iniciado um case para verificar o número de vértices.
O case verifica o número de vértices e classifica a figura de acordo com esse
número, já que o número de lados é coincidente com o número de vértice, se a
figura possuir 3 vértices pode-se afirmar que trata-se de um triângulo.
O único caso particular é quando existem quatro vértices, nesse caso é
checado se o maior eixo é igual ao menor eixo da figura, caso positivo trata-se de
um quadrado, senão, de um quadrilátero qualquer.
O maior e menor eixo referidos anteriormente trata-se na verdade do maior e
menor eixo de uma elipse ajustada a forma. Esse elipse possui os mesmos
momentos de segunda ordem da área da figura. Essa dado é retornado pelo campo
MajorAxis da função regionprops, pertencente ao Image Processing Toolbox do
Matlab. É mostrado na figura 04 a seguir um exemplo do ajuste das elipses.

Figura 04 - Ajuste das elipses para classificação

Se o objeto não se enquadrar em nenhum dos casos anteriores ele será
classificado como desconhecido. Isso somente deveria ocorrer em para polígonos
que possuem mais de oito lados ou em casos de falha na contagem dos vértices.
17

O reconhecimento e a classificação do objeto é plotado sobre a figura. Para
minimizar a poluição da imagem ao invés do nome é indicado apenas o número de
lados da figura, sendo que em caso de triângulos e quadrados é indicado o símbolo
da figura ao lado do numero de lados. No caso de círculos o resultado é indicado
apenas simbolicamente.
Após a classificação é exibido as principais propriedades do objeto, onde
mostra a propriedade da área do objeto, as outras propriedades estão sendo
implementadas e posteriormente serão exibidas na figura.

5.3. Metodologia
O algoritmo do programa é desenvolvido seguindo as linhas gerais da visão
computacional: pré-processamento, segmentação e classificação. Com a aplicação
de uma abordagem bem específica ao problema em questão, como são mostradas
abaixo:
1º- Aquisição da imagem (fotografia de objeto ou forma geométrica desenhada)
2º- Converter a imagem para escala cinza
3º - Converter a imagem para preto e branco (binarização da imagem)
4º - Encontrar os contornos definidos na imagem
5º - Avaliar suas dimensões e propriedades
6º- Fazer classificação da imagem
7º-Exibir as propriedades das imagens

 Área


Perímetro

 Comprimento do Maior Eixo
 Comprimento do Menor Eixo
8º - Selecionar imagem a partir de uma propriedade específica
9º- Exibição do resultado
18

O procedimento utilizado no algoritmo é listado abaixo, junto com o código do
programa.

5.3.1. Aquisição da Imagem
A imagem a ser trabalhada poderá ser qualquer forma de imagem captada por
meio de câmera, scanner ou qualquer método de obtenção digital, porém
inicialmente foi utilizada imagem sintética com extensão *.bmp contendo formatos
geométricos básicos, com intenção de minimizar a entrada de ruído no software. E
então ela é importada no programa, como é mostrado na figura 05 abaixo.
%1 - Aquisição da Imagem
[filename, pathname] = uigetfile({'*.bmp'},'Abrir arquivo de imagem');
%realiza a leitura da imagem em RGB
img_col = imread(fullfile(pathname,filename),'bmp'); %recebe imagem lida
[img_cin,ptb,props] = converter(hObject, eventdata, handles, img_col,
level_bin); %chama função que trata imagem
axes(handles.axes1),imshow(img_col); %exibe a imagem lida

Figura 05 – Aquisição de imagem

5.3.2. Converter a imagem para escala de cinza
Obter a imagem em tons de cinza é importante para as etapas de simplificação
da imagem seguintes, como a aplicação do threshold. Os valores RGB dos pixels da
imagem são convertidos para tons de cinza, em uma escala de 0 a 255 (8 bits). Essa
foi a única etapa na fase de pré-processamento, uma vez que as imagens tratadas
19

são sintéticas e portanto não apresentam ruído, essa conversão para cinza é
mostrado na figura 06 abaixo.
%2 - Converter a imagem para escala de cinza
img_cin = rgb2gray(img_col); %converte a imagem para tons de cinza
axes(handles.axes2),imshow(img_cin); %exibe a imagem convertida para escala
de cinza

Figura 06 – Conversão da imagem para cinza

5.3.3. Converter a imagem para preto e branco
Com a imagem em tons de cinza, com o intuito de simplificação da imagem, foi
aplicado o Threshold. Com isso ocorrerá a binarização da figura, onde todos os
pixels com luminosidade acima de um valor escolhido são setados para 1 (branco) e
abaixo, para 0 (preto). Como limiar foi utilizado o valor médio dos tons de cinza
encontrados na figura, essa etapa é mostrada na figura 07 a seguir.
%3 - Converter a imagem para preto e branco (binarização)
%calcula o valor do limiar global
%normalizado a ser usado no
ptb = im2bw(img_col, level_bin); %binarização da imagem
ptb = ~ ptb; %inversão da imagem
axes(handles.axes3),imshow(ptb); %exibe a imagem binarizada
20

Figura 07 – Conversão da imagem para preto e branco (Binarização)

5.3.4. Encontrar os contornos na Imagem

Para a segmentação da imagem foram testadas duas técnicas, a detecção de
contornos de Canny, e a detecção de regiões através da Vizinhança de Moore. Foi
escolhido para a implementação, uma função do Image Processing Toolbox do
Matlab, que implementa um algoritmo do traçado da Vizinhança de Moore, por ter
apresentado melhores resultados em relação ao Canny.
Através desse procedimento foram identificadas e enumeradas as regiões
contínuas na figura, que são retornados na forma de uma matriz contendo as
coordenadas de cada pixel que delimita cada região.
%4 - Encontrar os contornos definidos na imagem
[B,L] = bwboundaries(ptb); %realiza a segmentação da imagem, e traça
%o contorno de regiões contínuas identificadas através de matrizes
%indexadas contendo as coordenadas dos pontos do contorno de cada %região.
21

5.3.5. Classificação da imagem
A partir da relação entre essas propriedades foi implementada uma lógica que
fará a classificação da forma em uma das classes pré-definidas e o nome da forma
geométrica será exibido, essa etapa é mostrada na figura 08 abaixo.

%5 – Classificação das figuras
% Classificação
%------------------------------------------------------------------%Verifica se o objeto tem 8 vertices e seu maior eixo é igual ao
%diamtro equivalente de um círculo.
if nvertices(i) == 8 && ((props(i).EquivDiameter props(i).MajorAxisLength) <0.01)
plot(handles.axes4,centroid(1),centroid(2),'wO'); %círculo
%plota um círculo no centroide da região
else % se não for o de um círculo, plota no numero de lado na figura
text(centroid(1)+10,centroid(2),num2str(nvertices(i)),'color','white');
switch nvertices(i) %verifica o numero de lados e plota o resultado
case 6
text(centroid(1),centroid(2),'Hex','color','w');
case 5
text(centroid(1),centroid(2),'Pent','color','w');
case 4
if abs(props(i).MajorAxisLength - props(i).MinorAxisLength) < 2
plot(handles.axes4,centroid(1),centroid(2),'wS'); %quadrado
%plota um quadrado no centroide da região
end
case 3
plot(handles.axes4,centroid(1),centroid(2),'w^'); %triangulo
otherwise
22

plot(handles.axes4,centroid(1),centroid(2),'r*'); %desconhecido
%plota um * no centroide
end
end
end
return

Figura 08 – Classificação dos Objetos na imagem

5.3.6. Exibição das propriedades da imagem

5.3.6.1. Exibição da Área

A partir da matriz gerada na etapa anterior é então levantada, a propriedade
geométrica da área, como é mostrado na figura 09 abaixo.

%6 – Exibição da Área
stats = regionprops(L,'Area');
23

for k = 1:length(B)
% obtem (X,Y) do contorno k
boundary = B{k};
% A área do contorno k
area = stats(k).Area;
area_string = sprintf('%.0f px',area);
text(boundary(1,2)+5,boundary(1,1)+13,area_string,...
'Color','white',...
'FontSize',8,...
'FontWeight','bold',...
'BackgroundColor','black',...
'FontName','Times');
end

Figura 09 – Exibição da área dos objetos da imagem
24

5.3.6.2. Exibição do Perímetro
Igualmente o perímetro é calculado, utilizando a função regionprops, como
mostrado no código a seguir e na figura 10 abaixo.
%7 – Exibição do Perímetro
stats = regionprops(L,'Perimeter');
for k = 1:length(B)
% obtem (X,Y) do contorno k
boundary = B{k};
% A área do contorno k
Perimetro = stats(k).Perimeter;
Perimetro_string = sprintf('%.0f px',perimetro);
text(boundary(1,2)+5,boundary(1,1)+13,area_string,...
'Color','white',...
'FontSize',8,...
'FontWeight','bold',...
'BackgroundColor','black',...
'FontName','Times');
end
25

Figura 10 – Exibição do perímetro dos objetos da imagem

2.5.6.3. Exibição do Comprimento do Maior Eixo

Igualmente o comprimento do maior eixo do objeto é calculado, utilizando a
função regionprops, como mostrado no código abaixo e na figura 11.
%8 – Exibição do Comprimento do maior eixo
stats = regionprops(L,'MajorAxisLength');
for k = 1:length(B)
% obtem (X,Y) do contorno k
boundary = B{k};
% O comprimento do eixo maior do contorno k
Maior_eixo = stats(k).MajorAxisLength;
maior_string = sprintf('%.0f px',maior_eixo);
text(boundary(1,2)+5,boundary(1,1)+13,maior_string,...
'Color','white',...
26

'FontSize',8,...
'FontWeight','bold',...
'BackgroundColor','black',...
'FontName','Times');
end

Figura 11 – Exibição do comprimento do maior eixo

2.5.6.4. Exibição do Comprimento do Menor Eixo
Igualmente o comprimento do menor eixo do objeto na imagem é calculado,
utilizando a função regionprops, como mostrado no código abaixo e na figura 12.
%8 – Exibição do Perímetro
stats = regionprops(L,'MinorAxisLength');
for k = 1:length(B)
% obtem (X,Y) do contorno k
boundary = B{k};
% O comprimento do menor eixo do contorno k
27

menor_eixo = stats(k).MinorAxisLength;
menor_string = sprintf('%.0f px',menor_eixo);
text(boundary(1,2)+5,boundary(1,1)+13,menor_string,...
'Color','white',...
'FontSize',8,...
'FontWeight','bold',...
'BackgroundColor','black',...
'FontName','Times');
end

Figura 12 – Exibição do comprimento do menor eixo

2.5.6.5. Seleção de objeto específico

Após a etapa de exibição das propriedades dos objetos das figuras, será feito a
seleção do objetos que tenham uma propriedade específica definida pelo usuário,
onde esses objetos serão destacados com uma cor diferente para serem facilmente
identificados.
28

Infelizmente não foi possível implementar essa função por erros de códigos que
não se encaixavam no programa principal

5.4. Interface com o Usuário
Foi criado uma interface para que o usuário carregue a imagem, no qual tenha
objetos a serem reconhecidos pelo programa.
Primeiramente o programa é aberto e possui o botão iniciar, que fica no centro
na parte inferior da interface, como é mostrado na figura 14 abaixo.

Figura 13: Iniciação do programa

Quando selecionado o botão de iniciar, o programa pede para o usuário
digitar o valor de binarização que varia entre 0 a 1, onde o valor próximo a 0
reconhece figuras mais claras, ou seja, objetos com cores próximas ao branco, já o
valor próximo a 1, reconhece figuras mais escuras, ou seja, objetos com cores
próximas ao preto. Um valor ideial a usar é o 0.8, essa etapa é mostrada na figura
14 abaixo.
29

Figura 14: Etapa de binarização da imagem

Depois de digitado o valor para binarização, é aberto uma pasta para que o
usuário faça a importação da imagem para o reconhecimento dos objetos que
contém na figura, conforme é mostrado na figura 15 abaixo.

Figura 15: Importação da imagem para reconhecimento
30

Após selecionar a imagem, automaticamente o algoritmo é compilado e na
primeira janela exibe a imagem original selecionada, na segunda janela abaixo da
primeira exibe a imagem convertida para cinza, na terceira janela exibe a imagem
binarizada (em preto e branco), na quarta janela exibe os padrões geométricos
reconhecidos com sua respectivas classificações e na quinta e última janela é
mostrado

as

propriedades

dos

objetos

na

imagem,

que

infelizmente,

por

incompatibilidade do código implementado com o programa fonte principal, as funções
desenvolvidas não compilavam todas juntas em uma mesma interface gráfica, com isso
cada propriedade tem que ser calculada separadamente.

Figura 16: Exibição dos resultados

6. Análise de reconhecimento experimental
Analisando o reconhecimento de padrões na imagem experimentada, é
possível verificar que os valores da área e do perímetro não são totalmente exatos,
tomando como exemplo o círculo como mostrado na figura 17 abaixo, vamos
verificar a exatidão do programa.
31

Figura 17: Análise do círculo

Pelos dados apresentados, esse círculo possui o comprimento do eixo maior igual
ao comprimento do eixo menor, no qual esse valor é o diâmetro do círculo, que foi
calculado no programa sendo 95 px (d = 95 px).
Assim calculando a área pela equação básica temos:

.:.

.:.

O programa de reconhecimento de padrões calculou a área com um valor de A =
7.045 px², o que dá um erro entre o valor real e o valor calculado pelo programa de
0,61%
Calculando o perímetro pelo equação básica temos:

.:.

.:.

O programa de reconhecimento de padrões calculou o perímetro com um valor
de P = 313 px, o que dá um erro entre o valor real e o valor calculado pelo programa
de 4,88%.
Tomando o quadrílatero da imagem, como indicado na figura 18 abaixo, foi
feito a análise do reconhecimento.
32

Figura 18: Análise do quadrilátero

Como o comprimento do eixo e o comprimento do menor eixo são medidos a
partir dos eixos de uma elipse circuinstrita no quadrilátero, como mostrado na figura
19 abaixo, essas medidas, não são necessáriamente o comprimento do lado do
quadrilátero e sim uma aproximação, nesse caso o quadrilátero tem o comprimento
do maior eixo igual ao comprimento do menor eixo, ou seja, esse quadrilátero é um
quadrado, onde a medida é de 150 px.

Figura 19: Elipse circunscrita no quadrado

Utilizando um software para calcular o comprimento do lado do quadrado é de
130 px, conforme figura 20 abaixo.
33

Figura 20: Comprimento do lado do quadrado

Observando essa diferença de valores temos, calculamos o erro do comprimento
do lado real da imagem com o comprimento do eixo da elipse que circuninstrita o
quadrado é de 15,38%.
Assim calculando a área pela equação básica temos:

.:.

.:.

O programa de reconhecimento de padrões calculou a área com um valor de A =
16.889 px², o que dá um erro entre o valor real e o valor calculado pelo programa de
0,065%
Calculando o perímetro pelo equação básica temos:

.:.

.:.

O programa de reconhecimento de padrões calculou o perímetro com um valor de P =
515 px, o que dá um erro entre o valor real e o valor calculado pelo programa de 0,97%.

Tomando o triângulo da imagem, como indicado na figura 21 abaixo, foi feito a
análise do reconhecimento.
34

Figura 21: Análise do triângulo

A partir da elipse, como mostrado na figura 22 abaixo, o comprimento do maior
eixo calculado pelo programa foi de 101px, e o comprimento do menor eixo foi de 98
px.

Figura 22: Elipse no triângulo

Utilizando um software para calcular o comprimento da base e a altura do
triângulo, obtivemos o valor de 120 px e 110 px, respectivamente , conforme
mostrado na figura 23 abaixo.
35

Figura 23: Comprimento da base e da altura do triângulo

Observando essas diferenças de valores, calculamos o erro do comprimento da
base real comparado com o comprimento do maior eixo, cujo erro foi de 14,17% e a
altura real comparado com o comprimento do eixo menor teve um erro de 10,91%.
Assim calculando a área pela equação básica temos:

A=

.:.

A=

.:.

O programa de reconhecimento de padrões calculou a área com um valor de A =
6.419 px², o que dá um erro entre o valor real e o valor calculado pelo programa de
2,74%
Para cálculo real do perímetro consideramos os lados do triângulo, como
mostrado na figura 24 abaixo,

Figura 24: Lados do triângulo
36

Calculando o perímetro pelo equação básica temos, sendo o triângulo equilátero
temos a = b =c = 120px, assim temos:

.:.

.:.

O programa de reconhecimento de padrões calculou o perímetro com um valor de
P = 379 px, o que dá um erro entre o valor real e o valor calculado pelo programa de
5,28%.
Analisando outra imagem onde os objetos para reconhecimento de padrões são
polígonos regulares, como pentágono, hexágono, heptágono e octágono, como
mostrado na figura 25 abaixo, é possível verificar que os valores da área e do
perímetro apresentam um erro consideravelmente pequeno, onde essa analise do
erro é apresentada abaixo.

Figura 25: Análise de polígonos

Tomando como exemplo o pentágono regular, como mostrado na figura 26
abaixo, vamos verificar a exatidão do programa.

Figura 26: Análise do pentágono regular
37

Utilizando um software para calcular o comprimento da base e a altura do
pentágono, obtivemos o valor de 50 px e 84 px, respectivamente , conforme
mostrado na figura 27 abaixo.

Figura 27: Comprimento da base e da altura do pentágono

Assim calculando a área do pentágono regular pela equação básica temos:

Figura 28: Parâmetros para cálculos

.:.

A=

.:.

A=

O programa de reconhecimento de padrões calculou a área com um valor de A =
5.095 px², o que dá um erro entre o valor real e o valor calculado pelo programa de
2,95%
Calculando o perímetro pelo equação básica temos,

.:.

.:.

O programa de reconhecimento de padrões calculou o perímetro com um valor de
P = 281 px, o que dá um erro entre o valor real e o valor calculado pelo programa de
11,03%.
38

Tomando o hexágono regular, como mostrado na figura 29 abaixo, fazendo a
análise.

Figura 29: Análise do hexágono regular

Utilizando um software para calcular a altura do hexágono, obtivemos o valor de
90 px, respectivamente , conforme mostrado na figura 30 abaixo.

Figura 30: Comprimento da altura do hexágono

Assim calculando a área do hexágono regular, pelos parâmetros da figura 31
abaixo, temos:

Figura 31: Parâmetros para cálculo do hexágono
39

.:.

.:.

A=

.:.

.:.

A=

O programa de reconhecimento de padrões calculou a área com um valor de A =
7.170 px², o que dá um erro entre o valor real e o valor calculado pelo programa de
2,09%
Calculando o perímetro pelo equação básica temos,

.:.

.:.

O programa de reconhecimento de padrões calculou o perímetro com um valor
de P = 328 px, o que dá um erro entre o valor real e o valor calculado pelo programa
de 4,88%.
40

7.Conclusão

Assim após implementação do programa para reconhecimento de padrões, foi
verificado que o programa reconhece as imagens perfeitamente, sendo elas um
círculo, um quadrado, um quadrilátero, um triângulo, um pentágono, um hexágono,
um heptágono ou um octágono. Também foi apresentado na análise de dados que
as propriedades de área, perímetro, comprimento de maior eixo e comprimento de
menor eixo, possuem um pequeno erro quando comparados com cálculos por
equações reais. Isso demonstra que as funções para cálculo das propriedades do
programa são eficazes, pórem não foi possível colocar todas as propriedades em
uma mesma interface gráfica, aparentemente causada pela difícil implementação do
código da função de converter e da função principal main. Separadamente é
possível compilar todas funções para cálculo das propriedades da imagem, contudo
o próximo objetivo para esse projeto de reconhecimento de padrões, poderia ser
colocar essas funções de propriedades na mesma interface gráfica e implementar a
função de seleção do objeto específico.
41

8. Referências Bibliográficas

FRED, Ana. – Aula - “Reconhecimento de Padrões”. Introdução ao

[1]

Reconhecimento

de

Departamento

de

Padrões.

Universidade

Sistemas

e

Federal

de

Computação.

Campina
Disponível

Grande,
em:

<http://www.dsc.ufcg.edu.br/~joseana/RP_1_Introducao.pdf>
[2] GHUNEIM, Abeer George. “Contour Tracing”, 2000. Disponível em:
<http://www.imageprocessingbook.com/DIP2E/dip2e_downloads/tutorials/contour_tra
cing_Abeer_George_Ghuneim/index.html >
[3] GONZALEZ, R. C., R. E. Woods, and S. L. Eddins, “Digital Image Processing
Using MATLAB”, New Jersey, Pearson Prentice Hall, 2004
[4] MASCARENHAS, N. D. A. “Breve Introdução ao Reconhecimento Estatístico
de Padrões”. 39ª Reunião Anual da SBPC. 1987.

[5]

OTSU, N., Livro - "A Threshold Selection Method from Gray-Level

Histograms" IEEE Transactions on Systems, Man, and Cybernetics, Vol. 9, No. 1,
1979, pp. 62-66
[6] PERELMUTER, G., Carrera, E. V., Vellasco, M., Pacheco, A. “Reconhecimento
de Imagens Bidimensionais Utilizando Redes Neurais Artificiais.” Anais do VII
SIBGRAPI, p. 197-203, 1995.

[7]

PRADO, A. Jr., Elfes, A. Monografia - “Um Projeto em Reconhecimento de

Padrões de Forma.” Monografia de Graduação, ITA, São José dos Campos, SP,
1975.
42

[9]

STEINER, M. T. A. Tese – “Uma Metodologia para o Reconhecimento de

Padrões Multivariados com Resposta Dicotômica.” Tese de Doutorado.
Florianópolis-SC, 1995.

[10]

TAGLIAFERRO, Fátima Aparecida, “TÉCNICAS DE RECONHECIMENTO

AUTOMATIZADO DE PADRÕES BASEADOS EM IMAGENS DIGITAIS”, 2007
[11]

TODESCO, J. L. Tese - “Reconhecimento de Padrões usando Rede Neuronal

Artificial com uma Função de Base Radial: uma aplicação na classificação de
cromossomos humanos.” Tese de Doutorado. Florianópolis-SC, 1995.
43

Más contenido relacionado

Similar a PUC-MG Reconhecimento Padrões

Segmentação de imagens de Arte Rupestre utilizando o Sistema de Coordenadas E...
Segmentação de imagens de Arte Rupestre utilizando o Sistema de Coordenadas E...Segmentação de imagens de Arte Rupestre utilizando o Sistema de Coordenadas E...
Segmentação de imagens de Arte Rupestre utilizando o Sistema de Coordenadas E...Francisco Gerson A de Meneses
 
Dissertation: Genetic Algorithms as a pre processing strategy for imbalanced ...
Dissertation: Genetic Algorithms as a pre processing strategy for imbalanced ...Dissertation: Genetic Algorithms as a pre processing strategy for imbalanced ...
Dissertation: Genetic Algorithms as a pre processing strategy for imbalanced ...marcelobeckmann
 
Plano de projeto: Bichos do Campus na Web
Plano de projeto: Bichos do Campus na WebPlano de projeto: Bichos do Campus na Web
Plano de projeto: Bichos do Campus na WebJorge Roberto
 
Minha Tese de Doutorado
Minha Tese de DoutoradoMinha Tese de Doutorado
Minha Tese de DoutoradoCarlos Campani
 
Melhoria Do Sistema De ApuraçãO De Custo De Uma GráFica De MéDio Porte Atravé...
Melhoria Do Sistema De ApuraçãO De Custo De Uma GráFica De MéDio Porte Atravé...Melhoria Do Sistema De ApuraçãO De Custo De Uma GráFica De MéDio Porte Atravé...
Melhoria Do Sistema De ApuraçãO De Custo De Uma GráFica De MéDio Porte Atravé...FGermanio
 
Desenvolvimento de-robo-movel (1)
Desenvolvimento de-robo-movel (1)Desenvolvimento de-robo-movel (1)
Desenvolvimento de-robo-movel (1)Levi Germano
 
Plano de Projeto - Grupo Ajax
Plano de Projeto - Grupo AjaxPlano de Projeto - Grupo Ajax
Plano de Projeto - Grupo AjaxPre Amadeus
 
Conceitos básicos de Software R
Conceitos básicos de Software RConceitos básicos de Software R
Conceitos básicos de Software RThais Amaral
 
Avaliação de Topologias de Redes Neurais Artificiais para Previsão do Consumo ...
Avaliação de Topologias de Redes Neurais Artificiais para Previsão do Consumo ...Avaliação de Topologias de Redes Neurais Artificiais para Previsão do Consumo ...
Avaliação de Topologias de Redes Neurais Artificiais para Previsão do Consumo ...Giovani Barili
 

Similar a PUC-MG Reconhecimento Padrões (20)

Segmentação de imagens de Arte Rupestre utilizando o Sistema de Coordenadas E...
Segmentação de imagens de Arte Rupestre utilizando o Sistema de Coordenadas E...Segmentação de imagens de Arte Rupestre utilizando o Sistema de Coordenadas E...
Segmentação de imagens de Arte Rupestre utilizando o Sistema de Coordenadas E...
 
Dissertation: Genetic Algorithms as a pre processing strategy for imbalanced ...
Dissertation: Genetic Algorithms as a pre processing strategy for imbalanced ...Dissertation: Genetic Algorithms as a pre processing strategy for imbalanced ...
Dissertation: Genetic Algorithms as a pre processing strategy for imbalanced ...
 
tg
tgtg
tg
 
Apostila winplot
Apostila winplotApostila winplot
Apostila winplot
 
Plano de projeto: Bichos do Campus na Web
Plano de projeto: Bichos do Campus na WebPlano de projeto: Bichos do Campus na Web
Plano de projeto: Bichos do Campus na Web
 
Minha Tese de Doutorado
Minha Tese de DoutoradoMinha Tese de Doutorado
Minha Tese de Doutorado
 
Condo master
Condo masterCondo master
Condo master
 
Melhoria Do Sistema De ApuraçãO De Custo De Uma GráFica De MéDio Porte Atravé...
Melhoria Do Sistema De ApuraçãO De Custo De Uma GráFica De MéDio Porte Atravé...Melhoria Do Sistema De ApuraçãO De Custo De Uma GráFica De MéDio Porte Atravé...
Melhoria Do Sistema De ApuraçãO De Custo De Uma GráFica De MéDio Porte Atravé...
 
TG KickGames
TG KickGamesTG KickGames
TG KickGames
 
monografia_andre_paro
monografia_andre_paromonografia_andre_paro
monografia_andre_paro
 
relatorio-pibiti-2012-william-soares
relatorio-pibiti-2012-william-soaresrelatorio-pibiti-2012-william-soares
relatorio-pibiti-2012-william-soares
 
Desenvolvimento de-robo-movel (1)
Desenvolvimento de-robo-movel (1)Desenvolvimento de-robo-movel (1)
Desenvolvimento de-robo-movel (1)
 
Apostila Java2D (correta)
Apostila Java2D (correta)Apostila Java2D (correta)
Apostila Java2D (correta)
 
2014 Monografia Final
2014 Monografia Final2014 Monografia Final
2014 Monografia Final
 
ink2canvas
ink2canvasink2canvas
ink2canvas
 
Plano de Projeto - Grupo Ajax
Plano de Projeto - Grupo AjaxPlano de Projeto - Grupo Ajax
Plano de Projeto - Grupo Ajax
 
Conceitos básicos de Software R
Conceitos básicos de Software RConceitos básicos de Software R
Conceitos básicos de Software R
 
Curso estatistica descritiva no r
Curso   estatistica descritiva no rCurso   estatistica descritiva no r
Curso estatistica descritiva no r
 
PDI - Notas De Aula
PDI - Notas De AulaPDI - Notas De Aula
PDI - Notas De Aula
 
Avaliação de Topologias de Redes Neurais Artificiais para Previsão do Consumo ...
Avaliação de Topologias de Redes Neurais Artificiais para Previsão do Consumo ...Avaliação de Topologias de Redes Neurais Artificiais para Previsão do Consumo ...
Avaliação de Topologias de Redes Neurais Artificiais para Previsão do Consumo ...
 

Más de Rafael Lial

Automação industrial: Encoder - Transdutor de posição angular
Automação industrial:  Encoder - Transdutor de posição angularAutomação industrial:  Encoder - Transdutor de posição angular
Automação industrial: Encoder - Transdutor de posição angularRafael Lial
 
Fabricação de uma peça real utilizando CNC e o código G
Fabricação de uma peça real utilizando CNC e o código GFabricação de uma peça real utilizando CNC e o código G
Fabricação de uma peça real utilizando CNC e o código GRafael Lial
 
Processos de fabricação: Estudo avançados sobre a prototipagem rápida
Processos de fabricação: Estudo avançados sobre a prototipagem rápidaProcessos de fabricação: Estudo avançados sobre a prototipagem rápida
Processos de fabricação: Estudo avançados sobre a prototipagem rápidaRafael Lial
 
Artigo elementos finitos-modelagem e análise de predio industrial
Artigo elementos finitos-modelagem e análise de predio industrialArtigo elementos finitos-modelagem e análise de predio industrial
Artigo elementos finitos-modelagem e análise de predio industrialRafael Lial
 
Elementos Finitos: Análise do Rotor de uma Turbina
Elementos Finitos: Análise do Rotor de uma TurbinaElementos Finitos: Análise do Rotor de uma Turbina
Elementos Finitos: Análise do Rotor de uma TurbinaRafael Lial
 
Braço mecânico controlado pela diferença de potencial ocular
Braço mecânico controlado pela diferença de potencial ocularBraço mecânico controlado pela diferença de potencial ocular
Braço mecânico controlado pela diferença de potencial ocularRafael Lial
 
Artigo gestão-em-liderança-de-equipes
Artigo gestão-em-liderança-de-equipesArtigo gestão-em-liderança-de-equipes
Artigo gestão-em-liderança-de-equipesRafael Lial
 

Más de Rafael Lial (7)

Automação industrial: Encoder - Transdutor de posição angular
Automação industrial:  Encoder - Transdutor de posição angularAutomação industrial:  Encoder - Transdutor de posição angular
Automação industrial: Encoder - Transdutor de posição angular
 
Fabricação de uma peça real utilizando CNC e o código G
Fabricação de uma peça real utilizando CNC e o código GFabricação de uma peça real utilizando CNC e o código G
Fabricação de uma peça real utilizando CNC e o código G
 
Processos de fabricação: Estudo avançados sobre a prototipagem rápida
Processos de fabricação: Estudo avançados sobre a prototipagem rápidaProcessos de fabricação: Estudo avançados sobre a prototipagem rápida
Processos de fabricação: Estudo avançados sobre a prototipagem rápida
 
Artigo elementos finitos-modelagem e análise de predio industrial
Artigo elementos finitos-modelagem e análise de predio industrialArtigo elementos finitos-modelagem e análise de predio industrial
Artigo elementos finitos-modelagem e análise de predio industrial
 
Elementos Finitos: Análise do Rotor de uma Turbina
Elementos Finitos: Análise do Rotor de uma TurbinaElementos Finitos: Análise do Rotor de uma Turbina
Elementos Finitos: Análise do Rotor de uma Turbina
 
Braço mecânico controlado pela diferença de potencial ocular
Braço mecânico controlado pela diferença de potencial ocularBraço mecânico controlado pela diferença de potencial ocular
Braço mecânico controlado pela diferença de potencial ocular
 
Artigo gestão-em-liderança-de-equipes
Artigo gestão-em-liderança-de-equipesArtigo gestão-em-liderança-de-equipes
Artigo gestão-em-liderança-de-equipes
 

PUC-MG Reconhecimento Padrões

  • 1. 1 PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS CURSO: ENGENHARIA MECÂNICA ÊNFASE EM MECATRÔNICA MATÉRIA: ROBÓTICA PROFESSOR: DENÍLSON LAUDARES RODRIGUES Reconhecimento de Padrões Relatório Final Jackson Junio Pereira Tironi – pepeutironi@yahoo.com.br Rafael de Almeida Lial – rafael_lial@hotmail.com Belo Horizonte Novembro / 2011
  • 2. 2 Jackson Junio Pereira Tironi Rafael de Almeida Lial Reconhecimento de Padrões Relatório Final Trabalho referente à disciplina de Robótica do curso de Engenharia Mecânica ênfase Mecatrônica da Pontifícia Universidade Católica de Minas Gerais, apresentar um reconhecimento com objetivo software de de para padrões geométricos, a partir de uma imagem. Belo Horizonte Novembro / 2011
  • 3. 3 Resumo Esse trabalho concentra-se no projeto de um programa para reconhecimento de padrões geométricos, onde objetos de uma imagem são binarizados, classificados como círculo, ou quadrilátero, ou quadrado, ou pentágono, ou hexágono, ou heptágono, ou octágono, conforme formato dos objetos, e depois são calculadas as propriedades principais como a área, perímetro, comprimento do maior eixo e comprimento do menor eixo em pixels. Palavras-chave: reconhecimento, imagem e propriedades. Abstract This work focuses on designing a program for geometric pattern recognition, where objects in an image is binarized, classified as a circle or square, or hexagon, or heptagon, or octagon, as shape of the objects , and pentagon, or then the main properties are calculated as area, perimeter, major diameter and length of the minor axis in pixels. Keywords: recognition, image and properties.
  • 4. 4 Lista de figuras Figura 1: Vizinhança de Moore para um pixel.......................................................11 Figura 2: Diagrama de blocos do programa .........................................................13 Figura 3: Fluxograma do programa........................................................................15 Figura 4: Ajuste das elipses para classificação....................................................16 Figura 5: Aquisição de imagem..............................................................................18 Figura 6: Conversão da imagem para cinza..........................................................19 Figura 7: Conversão da imagem para preto e branco (Binarização)..................20 Figura 8: Classificação dos Objetos na imagem..................................................22 Figura 9: Exibição da área dos objetos da imagem.............................................23 Figura 10: Exibição do perímetro dos objetos da imagem..................................25 Figura 11: Exibição do comprimento do maior eixo............................................26 Figura 12: Exibição do comprimento do maior eixo............................................27 Figura 13: Iniciação do programa..........................................................................28 Figura 14: Etapa de binarização da imagem.........................................................29 Figura 15: Importação da imagem para reconhecimento....................................29 Figura 16: Exibição dos resultados.......................................................................30 Figura 17: Análise do círculo ................................................................................31 Figura 18: Análise do quadrilátero........................................................................32 Figura 19: Elipse circunscrita no quadrado.........................................................32 Figura 20: Comprimento do lado do quadrado....................................................33 Figura 21: Análise do triângulo.............................................................................34
  • 5. 5 Figura 22: Elipse no triângulo................................................................................34 Figura 23: Comprimento da base e da altura do triângulo..................................35 Figura 24: Lados do triângulo................................................................................35 Figura 25: Análise de polígonos............................................................................36 Figura 26: Análise do pentágono regular..............................................................36 Figura 27: Comprimento da base e altura do pentágono....................................37 Figura 28: Parâmetros para cálculo.......................................................................37 Figura 29: Análise do hexágono regular...............................................................38 Figura 30: Comprimento da altura do hexágono..................................................38 Figura 31: Parâmetros para cálculo do hexágono...............................................38
  • 6. 6 Sumário 1. Introdução ....................................................................................................... 08 2. Definição ......................................................................................................... 09 2.1. Objetivo .................................................................................................... 09 2.2. Missão ....................................................................................................... 09 3. Revisão Bibliográfica ................................................................................... 09 3.1. Fundamentos do reconhecimento de Padrões .....................................09 3.1.1. Segmentação .................................................................................10 3.1.2. Detecção de Regiões ....................................................................11 3.1.3. Classificação .................................................................................12 4. Necessidades Básicas ..................................................................................12 5. Desenvolvimento ..........................................................................................12 5.1. Diagrama de Blocos do Software ..........................................................12 5.2. Lógica do Algoritmo do Software ..........................................................14 5.3. Metodologia .............................................................................................17 5.3.1. Aquisição da Imagem .................................................................18 5.3.2. Converter a imagem para escala de cinza ................................18 5.3.3. Converter a imagem para preto e branco .................................19 5.3.4. Encontrar os contornos da Imagem .........................................20 5.3.5. Classificação da imagem ............................................................21 5.3.6. Exibição das propriedades da imagem .....................................22 5.3.6.1. Exibição da Área ..............................................................22
  • 7. 7 5.3.6.2. Exibição do Perímetro .....................................................24 5.3.6.3. Exibição do Comprimento do Maior Eixo ......................25 5.3.6.4. Exibição do Comprimento do Menor Eixo......................26 5.3.6.5. Seleção de objeto específico ...........................................27 5.4. Interface com o Usuário ........................................................................28 6. Análise de reconhecimento experimental .................................................30 7. Conclusão .....................................................................................................40 8. Referências Bibliográficas...........................................................................41
  • 8. 8 1. Introdução O reconhecimento de padrões é uma técnica usada diariamente cujo objetivo principal é classificar informações (padrões) baseadas ou em conhecimento a priori ou em informações estatísticas extraídas dos padrões. Assim o estudo sobre esse assunto é de grande importância a habilidade de reconhecer formas, tons de sons, aparências, variações de estado, etc. Pode-se dizer então, que padrões são os meios pelos quais o mundo é interpretado e, a partir dessa interpretação, elaboram-se atitudes e decisões. A grande dificuldade encontrada é a de desenvolver máquinas que tenham tais comportamentos interpretativos. Este projeto tem como finalidade o reconhecimento de padrões geométricos, onde uma imagem digital captada por meio de câmera, scanner ou qualquer método de obtenção digital, será formada por objetos de formas padrões como triângulo, quadrado, quadrilátero, pentágono, hexágono, heptágono, octógono ou círculo, onde essas formas serão reconhecidas e classificadas conforme suas propriedades e características. Para o reconhecimento dos padrões, é utilizado o software MatLab, onde um algoritmo foi implementado e são feitas as rotinas e funções de aquisição da imagem (fotografia de objeto ou forma geométrica desenhada), conversão da imagem para escala de cinza, conversão da imagem para preto e branco (binarização da imagem), avaliação das dimensões e propriedades das formas geométricas (encontrar os contornos na imagem), classificação da imagem de acordo com suas características geométricas e exibição do resultado. O programa faz a identificação e classificação de formas geométricas de uma imagem, pórem não identifica as propriedades como a área, o perímetro, o comprimento do maior eixo e o comprimento do menor eixo dos objetos e também não possui uma função de seleção desses objetos, baseada em uma propriedade específicada pelo usuário.
  • 9. 9 2. Definição 2.1. Objetivo O objetivo desse projeto é implementar o algoritmo do programa principal, incrementando funções onde teremos as propriedades de área, perímetro, comprimento do maior eixo e o comprimento do menor eixo dos objetos a serem reconhecidos na imagem. Também irá ser incrementado um função para selecionar o objeto baseado nessas propriedades que teremos. 2.2. Missão A missão desse projeto é ter um reconhecimento de padrões mais otimizado, onde reconhece, classifica e mensura as propriedades dos objetos de uma figura e seleção de um desses objetos conforme específicas propriedades, com isso existirá incontáveis aplicações em engenharia, como mapeamentos de áreas, seleções de peças, sistemas de posicionamento globais (GPS) e outras. 3. Revisão Bibliográfica 3.1. Fundamentos do Reconhecimento de Padrões As técnicas de reconhecimento de padrões são usadas para classificar ou descrever padrões ou objetos através de um conjunto de propriedades ou características, com o objetivo de construção de máquinas ou dispositivos capazes de apresentar características semelhantes às dos seres humanos em reconhecerem padrões. Segundo Tou e Gonzales (1981) os padrões são as propriedades que possibilitam o agrupamento de objetos semelhantes dentro de uma determinada classe ou categoria, mediante a interpretação de dados de entrada, que permitam a extração das características relevantes desses objetos. E entende-se por classe de um padrão um conjunto de atributos comuns aos objetos de estudo.
  • 10. 10 O reconhecimento de padrões é então definido como o procedimento em que existe uma busca da identificação de certas características nos dados da imagem de entrada para comparação as características conhecidas e sua próxima classificação dentro de categorias. Isso ocorre de forma que o grau de associação seja maior entre características de mesma categoria e menor entre as categorias de características diferentes. Os dados da imagem de entrada são medidos por algoritmos e selecionados segundo o conteúdo de informações relevantes para a decisão, e passam por um processo de redução de sua dimensionalidade para que possam ser usados pelo classificador, que o designará à classe que melhor o represente. No caso do reconhecimento de padrões em imagens, utilizado em visão computacional, o processo consiste basicamente no pré-processemento e minimização de ruído, segmentação e extração de características, e no reconhecimento e classificação das mesmas. 3.1.1. Segmentação Geralmente o primeiro passo no processo de análise de imagem é a segmentação, que consiste em dividir uma imagem em regiões ou objetos que a constitui, segundo algum critério, ou seja, a segmentação deve parar no momento em que o objeto desejado da imagem for isolado. Frequentemente, o resultado obtido no processo de segmentação não é uma imagem, mas um conjunto de regiões/objetos que serão utilizados para extração de informações. Desta forma a precisão da fase de segmentação determina o sucesso ou insucesso dos procedimentos de análise de imagem por computador (GONZALEZ & WOODS, 2001). Podem ser aplicadas técnicas de detecção de linhas, círculos, e outras formas utilizando funções matemáticas aplicadas por meio da transformada Hough.Detecção de bordas na figura, cujo algoritmo mais difundido é o Detector de bordas de Canny, ou detecção de regiões, que foi o método escolhido nesse trabalho para realizar a segmentação da imagem, através do Algoritmo da Vizinhança de Moore.
  • 11. 11 3.1.2. Detecção de Regiões A Vizinhança de Moore identifica regiões contínuas na imagem, esse algoritmo é empregado em recursos como a Magic Wand do Photoshop. Para o entendimento do algoritmo é util apresentar o conceito da Vizinhança de Moore de um pixel. A Vizinhança de um pixel P, é dada pelo conjunto dos 8 pixels que possuem um vértice ou lado com comum com o primeiro, como mostrado na Figura 01 abaixo. Figura 01 – Vizinhança de Moore para um pixel O algoritmo da Vizinhança de Moore, é um algoritmo simples que consiste em, considerando um pixel que se sabe pertencer ao contorno de um objeto, fazer uma pesquisa aos pixels vizinhos. Esta pesquisa é realizada a partir do pixel de onde se chegou ao pixel considerado e no sentido dos ponteiros do relógio. Seguindo a representação e notação da Figura 01, PS é o pixel que foi pesquisado antes de se chegar a P, pixel que constitui o contorno da imagem, portanto sabe-se que P8 não faz parte do contorno ou que já foi processado. De seguida são pesquisados os pixels P1 a P7, parando se algum for detectado como pertencendo à imagem (contorno). Para o novo ponto encontrado repete-se este processo, tendo em conta o pixel pesquisado anteriormente. Por exemplo, se o ponto encontrado como constituinte do contorno for P2, este será o próximo P e P1 será o próximo OS.
  • 12. 12 3.1.3. Classificação Após a extração das características e avaliação das propriedades encontradas inicia-se a classificação do objeto, que são procedimentos que possibilitem a identificação e classificação do objeto em uma determinada classe. Intuitivamente, uma classe contém objetos similares, ao passo que objetos de classes diferentes são dissimilares. Os métodos de classificação sem dividem em dois tipos principais: os supervisionados e os não supervisionados. Sendo que o primeiro, por sua vez, também se subdivide em dois: Métodos Clássicos e Métodos Contextuais. Os métodos não supervisionados dividem as classes automaticamente e em sua maioria baseiam-se no Princípio de Fisher. Alguns métodos podem ser baseados também em funções discriminantes matemáticas, como por exemplo a Teoria dos Grafos, dentre outras. Os métodos supervisionados são mais precisas por levarem em consideração informações fornecidas pelo usuário, a verdade terrestre ou mapa de referência. Baseiam-se, além de funções discriminantes, na teoria de Bayes e requerem alguns conhecimentos prévios das classes. 4. Necessidades básicas Para realização desse projeto, será necessário a utilização do software MatLab e de estudos sobre suas funções, juntamente com o toolbox processamento de imagem que possui internamente ao software, de referências bibliográficas como livros, artigos, dissertações e teses sobre reconhecimento de padrões e processamento digital de imagens, e principalmente a orientação do professor Denílson. 5. Desenvolvimento 5.1. Diagrama de Blocos do Software
  • 13. 13 Figura 02 – Diagrama de blocos do programa O primeiro passo no processo é a aquisição da imagem isto é, adquirir uma imagem digital. Para fazer isso, necessitamos de um sensor para imageamento e a capacidade de digitalizar o sinal produzido pelo sensor. O sensor poderia ser uma câmera de TV monocromática ou colorida, o sensor de imageamento poderia também ser uma câmera de varredura por linha que produza uma única linha de imagem por vez. Após a obtenção de uma imagem digital, o próximo passo trata de binarizar aquela imagem. A função chave da binarização é melhorar a imagem de forma a aumentar as chances para o sucesso dos processos seguintes. O próximo estágio trata da segmentação que divide uma imagem de entrada em partes ou objetos constituintes. Em geral, a segmentação automática é uma das tarefas mais difíceis no processamento de imagens digitais. No caso de reconhecimento de padrões, o papel básico da segmentação é extrair objetos individuais do fundo da imagem. O processo de avaliação das dimensões, também chamado seleção de características, procura extrair características que resultem em alguma informação quantitativa de interesse ou que sejam básicas para discriminação entre classes de objetos.
  • 14. 14 O estágio que envolve reconhecimento e classificação, é o processo onde o reconhecimento atribui um rótulo a um objeto, baseado na informação fornecida pelo seu descritor e a classificação envolve a atribuição de significado a um conjunto de objetos reconhecidos. Após o reconhecimento e classificação, vem a etapa de exibição das propriedades dos objetos da imagem, onde aparece a área (mm²), o perímetro (mm), o comprimento do eixo maior (mm) e o comprimento do eixo menor (mm), onde é exibido ao lado do objeto. Por último é feita a seleção de objetos com propriedades específicas, definidas pelo usuário, onde esses objetos selecionados terá uma cor diferente, onde é facilmente identificados 5.2. Lógica do Algoritmo do Software A lógica de classificação do projeto é apresentado no fluxograma na figura 03 abaixo, onde existem 8 classes nas quais são enquadarados os objetos: círculos, triângulo, quadrados e assim por diante aé polígonos de 8 lados, e uma última classe para objetos desconhecidos, além da classificação, possui a exibição das propriedades e a seleção da imagem por uma propriedade específica definida pelo usuário.
  • 15. 15 Figura 03 – Fluxograma do programa
  • 16. 16 O primeiro teste é realizado para identificar o número de vértices da forma, o software identifica até oito vértices distintos. Caso o número de lado seja igual a oito, é realizado um teste para checar se o maior eixo da figura é igual ao diâmetro equivalente de um círculo, caso positivo a forma é classificada como círculo, do contrário é iniciado um case para verificar o número de vértices. O case verifica o número de vértices e classifica a figura de acordo com esse número, já que o número de lados é coincidente com o número de vértice, se a figura possuir 3 vértices pode-se afirmar que trata-se de um triângulo. O único caso particular é quando existem quatro vértices, nesse caso é checado se o maior eixo é igual ao menor eixo da figura, caso positivo trata-se de um quadrado, senão, de um quadrilátero qualquer. O maior e menor eixo referidos anteriormente trata-se na verdade do maior e menor eixo de uma elipse ajustada a forma. Esse elipse possui os mesmos momentos de segunda ordem da área da figura. Essa dado é retornado pelo campo MajorAxis da função regionprops, pertencente ao Image Processing Toolbox do Matlab. É mostrado na figura 04 a seguir um exemplo do ajuste das elipses. Figura 04 - Ajuste das elipses para classificação Se o objeto não se enquadrar em nenhum dos casos anteriores ele será classificado como desconhecido. Isso somente deveria ocorrer em para polígonos que possuem mais de oito lados ou em casos de falha na contagem dos vértices.
  • 17. 17 O reconhecimento e a classificação do objeto é plotado sobre a figura. Para minimizar a poluição da imagem ao invés do nome é indicado apenas o número de lados da figura, sendo que em caso de triângulos e quadrados é indicado o símbolo da figura ao lado do numero de lados. No caso de círculos o resultado é indicado apenas simbolicamente. Após a classificação é exibido as principais propriedades do objeto, onde mostra a propriedade da área do objeto, as outras propriedades estão sendo implementadas e posteriormente serão exibidas na figura. 5.3. Metodologia O algoritmo do programa é desenvolvido seguindo as linhas gerais da visão computacional: pré-processamento, segmentação e classificação. Com a aplicação de uma abordagem bem específica ao problema em questão, como são mostradas abaixo: 1º- Aquisição da imagem (fotografia de objeto ou forma geométrica desenhada) 2º- Converter a imagem para escala cinza 3º - Converter a imagem para preto e branco (binarização da imagem) 4º - Encontrar os contornos definidos na imagem 5º - Avaliar suas dimensões e propriedades 6º- Fazer classificação da imagem 7º-Exibir as propriedades das imagens  Área  Perímetro  Comprimento do Maior Eixo  Comprimento do Menor Eixo 8º - Selecionar imagem a partir de uma propriedade específica 9º- Exibição do resultado
  • 18. 18 O procedimento utilizado no algoritmo é listado abaixo, junto com o código do programa. 5.3.1. Aquisição da Imagem A imagem a ser trabalhada poderá ser qualquer forma de imagem captada por meio de câmera, scanner ou qualquer método de obtenção digital, porém inicialmente foi utilizada imagem sintética com extensão *.bmp contendo formatos geométricos básicos, com intenção de minimizar a entrada de ruído no software. E então ela é importada no programa, como é mostrado na figura 05 abaixo. %1 - Aquisição da Imagem [filename, pathname] = uigetfile({'*.bmp'},'Abrir arquivo de imagem'); %realiza a leitura da imagem em RGB img_col = imread(fullfile(pathname,filename),'bmp'); %recebe imagem lida [img_cin,ptb,props] = converter(hObject, eventdata, handles, img_col, level_bin); %chama função que trata imagem axes(handles.axes1),imshow(img_col); %exibe a imagem lida Figura 05 – Aquisição de imagem 5.3.2. Converter a imagem para escala de cinza Obter a imagem em tons de cinza é importante para as etapas de simplificação da imagem seguintes, como a aplicação do threshold. Os valores RGB dos pixels da imagem são convertidos para tons de cinza, em uma escala de 0 a 255 (8 bits). Essa foi a única etapa na fase de pré-processamento, uma vez que as imagens tratadas
  • 19. 19 são sintéticas e portanto não apresentam ruído, essa conversão para cinza é mostrado na figura 06 abaixo. %2 - Converter a imagem para escala de cinza img_cin = rgb2gray(img_col); %converte a imagem para tons de cinza axes(handles.axes2),imshow(img_cin); %exibe a imagem convertida para escala de cinza Figura 06 – Conversão da imagem para cinza 5.3.3. Converter a imagem para preto e branco Com a imagem em tons de cinza, com o intuito de simplificação da imagem, foi aplicado o Threshold. Com isso ocorrerá a binarização da figura, onde todos os pixels com luminosidade acima de um valor escolhido são setados para 1 (branco) e abaixo, para 0 (preto). Como limiar foi utilizado o valor médio dos tons de cinza encontrados na figura, essa etapa é mostrada na figura 07 a seguir. %3 - Converter a imagem para preto e branco (binarização) %calcula o valor do limiar global %normalizado a ser usado no ptb = im2bw(img_col, level_bin); %binarização da imagem ptb = ~ ptb; %inversão da imagem axes(handles.axes3),imshow(ptb); %exibe a imagem binarizada
  • 20. 20 Figura 07 – Conversão da imagem para preto e branco (Binarização) 5.3.4. Encontrar os contornos na Imagem Para a segmentação da imagem foram testadas duas técnicas, a detecção de contornos de Canny, e a detecção de regiões através da Vizinhança de Moore. Foi escolhido para a implementação, uma função do Image Processing Toolbox do Matlab, que implementa um algoritmo do traçado da Vizinhança de Moore, por ter apresentado melhores resultados em relação ao Canny. Através desse procedimento foram identificadas e enumeradas as regiões contínuas na figura, que são retornados na forma de uma matriz contendo as coordenadas de cada pixel que delimita cada região. %4 - Encontrar os contornos definidos na imagem [B,L] = bwboundaries(ptb); %realiza a segmentação da imagem, e traça %o contorno de regiões contínuas identificadas através de matrizes %indexadas contendo as coordenadas dos pontos do contorno de cada %região.
  • 21. 21 5.3.5. Classificação da imagem A partir da relação entre essas propriedades foi implementada uma lógica que fará a classificação da forma em uma das classes pré-definidas e o nome da forma geométrica será exibido, essa etapa é mostrada na figura 08 abaixo. %5 – Classificação das figuras % Classificação %------------------------------------------------------------------%Verifica se o objeto tem 8 vertices e seu maior eixo é igual ao %diamtro equivalente de um círculo. if nvertices(i) == 8 && ((props(i).EquivDiameter props(i).MajorAxisLength) <0.01) plot(handles.axes4,centroid(1),centroid(2),'wO'); %círculo %plota um círculo no centroide da região else % se não for o de um círculo, plota no numero de lado na figura text(centroid(1)+10,centroid(2),num2str(nvertices(i)),'color','white'); switch nvertices(i) %verifica o numero de lados e plota o resultado case 6 text(centroid(1),centroid(2),'Hex','color','w'); case 5 text(centroid(1),centroid(2),'Pent','color','w'); case 4 if abs(props(i).MajorAxisLength - props(i).MinorAxisLength) < 2 plot(handles.axes4,centroid(1),centroid(2),'wS'); %quadrado %plota um quadrado no centroide da região end case 3 plot(handles.axes4,centroid(1),centroid(2),'w^'); %triangulo otherwise
  • 22. 22 plot(handles.axes4,centroid(1),centroid(2),'r*'); %desconhecido %plota um * no centroide end end end return Figura 08 – Classificação dos Objetos na imagem 5.3.6. Exibição das propriedades da imagem 5.3.6.1. Exibição da Área A partir da matriz gerada na etapa anterior é então levantada, a propriedade geométrica da área, como é mostrado na figura 09 abaixo. %6 – Exibição da Área stats = regionprops(L,'Area');
  • 23. 23 for k = 1:length(B) % obtem (X,Y) do contorno k boundary = B{k}; % A área do contorno k area = stats(k).Area; area_string = sprintf('%.0f px',area); text(boundary(1,2)+5,boundary(1,1)+13,area_string,... 'Color','white',... 'FontSize',8,... 'FontWeight','bold',... 'BackgroundColor','black',... 'FontName','Times'); end Figura 09 – Exibição da área dos objetos da imagem
  • 24. 24 5.3.6.2. Exibição do Perímetro Igualmente o perímetro é calculado, utilizando a função regionprops, como mostrado no código a seguir e na figura 10 abaixo. %7 – Exibição do Perímetro stats = regionprops(L,'Perimeter'); for k = 1:length(B) % obtem (X,Y) do contorno k boundary = B{k}; % A área do contorno k Perimetro = stats(k).Perimeter; Perimetro_string = sprintf('%.0f px',perimetro); text(boundary(1,2)+5,boundary(1,1)+13,area_string,... 'Color','white',... 'FontSize',8,... 'FontWeight','bold',... 'BackgroundColor','black',... 'FontName','Times'); end
  • 25. 25 Figura 10 – Exibição do perímetro dos objetos da imagem 2.5.6.3. Exibição do Comprimento do Maior Eixo Igualmente o comprimento do maior eixo do objeto é calculado, utilizando a função regionprops, como mostrado no código abaixo e na figura 11. %8 – Exibição do Comprimento do maior eixo stats = regionprops(L,'MajorAxisLength'); for k = 1:length(B) % obtem (X,Y) do contorno k boundary = B{k}; % O comprimento do eixo maior do contorno k Maior_eixo = stats(k).MajorAxisLength; maior_string = sprintf('%.0f px',maior_eixo); text(boundary(1,2)+5,boundary(1,1)+13,maior_string,... 'Color','white',...
  • 26. 26 'FontSize',8,... 'FontWeight','bold',... 'BackgroundColor','black',... 'FontName','Times'); end Figura 11 – Exibição do comprimento do maior eixo 2.5.6.4. Exibição do Comprimento do Menor Eixo Igualmente o comprimento do menor eixo do objeto na imagem é calculado, utilizando a função regionprops, como mostrado no código abaixo e na figura 12. %8 – Exibição do Perímetro stats = regionprops(L,'MinorAxisLength'); for k = 1:length(B) % obtem (X,Y) do contorno k boundary = B{k}; % O comprimento do menor eixo do contorno k
  • 27. 27 menor_eixo = stats(k).MinorAxisLength; menor_string = sprintf('%.0f px',menor_eixo); text(boundary(1,2)+5,boundary(1,1)+13,menor_string,... 'Color','white',... 'FontSize',8,... 'FontWeight','bold',... 'BackgroundColor','black',... 'FontName','Times'); end Figura 12 – Exibição do comprimento do menor eixo 2.5.6.5. Seleção de objeto específico Após a etapa de exibição das propriedades dos objetos das figuras, será feito a seleção do objetos que tenham uma propriedade específica definida pelo usuário, onde esses objetos serão destacados com uma cor diferente para serem facilmente identificados.
  • 28. 28 Infelizmente não foi possível implementar essa função por erros de códigos que não se encaixavam no programa principal 5.4. Interface com o Usuário Foi criado uma interface para que o usuário carregue a imagem, no qual tenha objetos a serem reconhecidos pelo programa. Primeiramente o programa é aberto e possui o botão iniciar, que fica no centro na parte inferior da interface, como é mostrado na figura 14 abaixo. Figura 13: Iniciação do programa Quando selecionado o botão de iniciar, o programa pede para o usuário digitar o valor de binarização que varia entre 0 a 1, onde o valor próximo a 0 reconhece figuras mais claras, ou seja, objetos com cores próximas ao branco, já o valor próximo a 1, reconhece figuras mais escuras, ou seja, objetos com cores próximas ao preto. Um valor ideial a usar é o 0.8, essa etapa é mostrada na figura 14 abaixo.
  • 29. 29 Figura 14: Etapa de binarização da imagem Depois de digitado o valor para binarização, é aberto uma pasta para que o usuário faça a importação da imagem para o reconhecimento dos objetos que contém na figura, conforme é mostrado na figura 15 abaixo. Figura 15: Importação da imagem para reconhecimento
  • 30. 30 Após selecionar a imagem, automaticamente o algoritmo é compilado e na primeira janela exibe a imagem original selecionada, na segunda janela abaixo da primeira exibe a imagem convertida para cinza, na terceira janela exibe a imagem binarizada (em preto e branco), na quarta janela exibe os padrões geométricos reconhecidos com sua respectivas classificações e na quinta e última janela é mostrado as propriedades dos objetos na imagem, que infelizmente, por incompatibilidade do código implementado com o programa fonte principal, as funções desenvolvidas não compilavam todas juntas em uma mesma interface gráfica, com isso cada propriedade tem que ser calculada separadamente. Figura 16: Exibição dos resultados 6. Análise de reconhecimento experimental Analisando o reconhecimento de padrões na imagem experimentada, é possível verificar que os valores da área e do perímetro não são totalmente exatos, tomando como exemplo o círculo como mostrado na figura 17 abaixo, vamos verificar a exatidão do programa.
  • 31. 31 Figura 17: Análise do círculo Pelos dados apresentados, esse círculo possui o comprimento do eixo maior igual ao comprimento do eixo menor, no qual esse valor é o diâmetro do círculo, que foi calculado no programa sendo 95 px (d = 95 px). Assim calculando a área pela equação básica temos: .:. .:. O programa de reconhecimento de padrões calculou a área com um valor de A = 7.045 px², o que dá um erro entre o valor real e o valor calculado pelo programa de 0,61% Calculando o perímetro pelo equação básica temos: .:. .:. O programa de reconhecimento de padrões calculou o perímetro com um valor de P = 313 px, o que dá um erro entre o valor real e o valor calculado pelo programa de 4,88%. Tomando o quadrílatero da imagem, como indicado na figura 18 abaixo, foi feito a análise do reconhecimento.
  • 32. 32 Figura 18: Análise do quadrilátero Como o comprimento do eixo e o comprimento do menor eixo são medidos a partir dos eixos de uma elipse circuinstrita no quadrilátero, como mostrado na figura 19 abaixo, essas medidas, não são necessáriamente o comprimento do lado do quadrilátero e sim uma aproximação, nesse caso o quadrilátero tem o comprimento do maior eixo igual ao comprimento do menor eixo, ou seja, esse quadrilátero é um quadrado, onde a medida é de 150 px. Figura 19: Elipse circunscrita no quadrado Utilizando um software para calcular o comprimento do lado do quadrado é de 130 px, conforme figura 20 abaixo.
  • 33. 33 Figura 20: Comprimento do lado do quadrado Observando essa diferença de valores temos, calculamos o erro do comprimento do lado real da imagem com o comprimento do eixo da elipse que circuninstrita o quadrado é de 15,38%. Assim calculando a área pela equação básica temos: .:. .:. O programa de reconhecimento de padrões calculou a área com um valor de A = 16.889 px², o que dá um erro entre o valor real e o valor calculado pelo programa de 0,065% Calculando o perímetro pelo equação básica temos: .:. .:. O programa de reconhecimento de padrões calculou o perímetro com um valor de P = 515 px, o que dá um erro entre o valor real e o valor calculado pelo programa de 0,97%. Tomando o triângulo da imagem, como indicado na figura 21 abaixo, foi feito a análise do reconhecimento.
  • 34. 34 Figura 21: Análise do triângulo A partir da elipse, como mostrado na figura 22 abaixo, o comprimento do maior eixo calculado pelo programa foi de 101px, e o comprimento do menor eixo foi de 98 px. Figura 22: Elipse no triângulo Utilizando um software para calcular o comprimento da base e a altura do triângulo, obtivemos o valor de 120 px e 110 px, respectivamente , conforme mostrado na figura 23 abaixo.
  • 35. 35 Figura 23: Comprimento da base e da altura do triângulo Observando essas diferenças de valores, calculamos o erro do comprimento da base real comparado com o comprimento do maior eixo, cujo erro foi de 14,17% e a altura real comparado com o comprimento do eixo menor teve um erro de 10,91%. Assim calculando a área pela equação básica temos: A= .:. A= .:. O programa de reconhecimento de padrões calculou a área com um valor de A = 6.419 px², o que dá um erro entre o valor real e o valor calculado pelo programa de 2,74% Para cálculo real do perímetro consideramos os lados do triângulo, como mostrado na figura 24 abaixo, Figura 24: Lados do triângulo
  • 36. 36 Calculando o perímetro pelo equação básica temos, sendo o triângulo equilátero temos a = b =c = 120px, assim temos: .:. .:. O programa de reconhecimento de padrões calculou o perímetro com um valor de P = 379 px, o que dá um erro entre o valor real e o valor calculado pelo programa de 5,28%. Analisando outra imagem onde os objetos para reconhecimento de padrões são polígonos regulares, como pentágono, hexágono, heptágono e octágono, como mostrado na figura 25 abaixo, é possível verificar que os valores da área e do perímetro apresentam um erro consideravelmente pequeno, onde essa analise do erro é apresentada abaixo. Figura 25: Análise de polígonos Tomando como exemplo o pentágono regular, como mostrado na figura 26 abaixo, vamos verificar a exatidão do programa. Figura 26: Análise do pentágono regular
  • 37. 37 Utilizando um software para calcular o comprimento da base e a altura do pentágono, obtivemos o valor de 50 px e 84 px, respectivamente , conforme mostrado na figura 27 abaixo. Figura 27: Comprimento da base e da altura do pentágono Assim calculando a área do pentágono regular pela equação básica temos: Figura 28: Parâmetros para cálculos .:. A= .:. A= O programa de reconhecimento de padrões calculou a área com um valor de A = 5.095 px², o que dá um erro entre o valor real e o valor calculado pelo programa de 2,95% Calculando o perímetro pelo equação básica temos, .:. .:. O programa de reconhecimento de padrões calculou o perímetro com um valor de P = 281 px, o que dá um erro entre o valor real e o valor calculado pelo programa de 11,03%.
  • 38. 38 Tomando o hexágono regular, como mostrado na figura 29 abaixo, fazendo a análise. Figura 29: Análise do hexágono regular Utilizando um software para calcular a altura do hexágono, obtivemos o valor de 90 px, respectivamente , conforme mostrado na figura 30 abaixo. Figura 30: Comprimento da altura do hexágono Assim calculando a área do hexágono regular, pelos parâmetros da figura 31 abaixo, temos: Figura 31: Parâmetros para cálculo do hexágono
  • 39. 39 .:. .:. A= .:. .:. A= O programa de reconhecimento de padrões calculou a área com um valor de A = 7.170 px², o que dá um erro entre o valor real e o valor calculado pelo programa de 2,09% Calculando o perímetro pelo equação básica temos, .:. .:. O programa de reconhecimento de padrões calculou o perímetro com um valor de P = 328 px, o que dá um erro entre o valor real e o valor calculado pelo programa de 4,88%.
  • 40. 40 7.Conclusão Assim após implementação do programa para reconhecimento de padrões, foi verificado que o programa reconhece as imagens perfeitamente, sendo elas um círculo, um quadrado, um quadrilátero, um triângulo, um pentágono, um hexágono, um heptágono ou um octágono. Também foi apresentado na análise de dados que as propriedades de área, perímetro, comprimento de maior eixo e comprimento de menor eixo, possuem um pequeno erro quando comparados com cálculos por equações reais. Isso demonstra que as funções para cálculo das propriedades do programa são eficazes, pórem não foi possível colocar todas as propriedades em uma mesma interface gráfica, aparentemente causada pela difícil implementação do código da função de converter e da função principal main. Separadamente é possível compilar todas funções para cálculo das propriedades da imagem, contudo o próximo objetivo para esse projeto de reconhecimento de padrões, poderia ser colocar essas funções de propriedades na mesma interface gráfica e implementar a função de seleção do objeto específico.
  • 41. 41 8. Referências Bibliográficas FRED, Ana. – Aula - “Reconhecimento de Padrões”. Introdução ao [1] Reconhecimento de Departamento de Padrões. Universidade Sistemas e Federal de Computação. Campina Disponível Grande, em: <http://www.dsc.ufcg.edu.br/~joseana/RP_1_Introducao.pdf> [2] GHUNEIM, Abeer George. “Contour Tracing”, 2000. Disponível em: <http://www.imageprocessingbook.com/DIP2E/dip2e_downloads/tutorials/contour_tra cing_Abeer_George_Ghuneim/index.html > [3] GONZALEZ, R. C., R. E. Woods, and S. L. Eddins, “Digital Image Processing Using MATLAB”, New Jersey, Pearson Prentice Hall, 2004 [4] MASCARENHAS, N. D. A. “Breve Introdução ao Reconhecimento Estatístico de Padrões”. 39ª Reunião Anual da SBPC. 1987. [5] OTSU, N., Livro - "A Threshold Selection Method from Gray-Level Histograms" IEEE Transactions on Systems, Man, and Cybernetics, Vol. 9, No. 1, 1979, pp. 62-66 [6] PERELMUTER, G., Carrera, E. V., Vellasco, M., Pacheco, A. “Reconhecimento de Imagens Bidimensionais Utilizando Redes Neurais Artificiais.” Anais do VII SIBGRAPI, p. 197-203, 1995. [7] PRADO, A. Jr., Elfes, A. Monografia - “Um Projeto em Reconhecimento de Padrões de Forma.” Monografia de Graduação, ITA, São José dos Campos, SP, 1975.
  • 42. 42 [9] STEINER, M. T. A. Tese – “Uma Metodologia para o Reconhecimento de Padrões Multivariados com Resposta Dicotômica.” Tese de Doutorado. Florianópolis-SC, 1995. [10] TAGLIAFERRO, Fátima Aparecida, “TÉCNICAS DE RECONHECIMENTO AUTOMATIZADO DE PADRÕES BASEADOS EM IMAGENS DIGITAIS”, 2007 [11] TODESCO, J. L. Tese - “Reconhecimento de Padrões usando Rede Neuronal Artificial com uma Função de Base Radial: uma aplicação na classificação de cromossomos humanos.” Tese de Doutorado. Florianópolis-SC, 1995.
  • 43. 43