robótica: reconhecimento de padrões

43
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 [email protected] Rafael de Almeida Lial [email protected] Belo Horizonte Novembro / 2011

Upload: rafael-lial

Post on 05-Dec-2014

1.285 views

Category:

Technology


7 download

DESCRIPTION

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.

TRANSCRIPT

Page 1: Robótica: Reconhecimento de Padrões

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 – [email protected]

Rafael de Almeida Lial – [email protected]

Belo Horizonte

Novembro / 2011

Page 2: Robótica: Reconhecimento de Padrões

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, com objetivo de

apresentar um software para

reconhecimento de padrões

geométricos, a partir de uma imagem.

Belo Horizonte

Novembro / 2011

Page 3: Robótica: Reconhecimento de Padrões

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 pentagon, or

hexagon, or heptagon, or octagon, as shape of the objects , and then the main

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

pixels.

Keywords: recognition, image and properties.

Page 4: Robótica: Reconhecimento de Padrões

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

Page 5: Robótica: Reconhecimento de Padrões

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

Page 6: Robótica: Reconhecimento de Padrões

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

Page 7: Robótica: Reconhecimento de Padrões

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

Page 8: Robótica: Reconhecimento de Padrões

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.

Page 9: Robótica: Reconhecimento de Padrões

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.

Page 10: Robótica: Reconhecimento de Padrões

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.

Page 11: Robótica: Reconhecimento de Padrões

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.

Page 12: Robótica: Reconhecimento de Padrões

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 de

processamento de imagem que possui internamente ao software, 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

Page 13: Robótica: Reconhecimento de Padrões

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.

Page 14: Robótica: Reconhecimento de Padrões

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.

Page 15: Robótica: Reconhecimento de Padrões

15

Figura 03 – Fluxograma do programa

Page 16: Robótica: Reconhecimento de Padrões

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.

Page 17: Robótica: Reconhecimento de Padrões

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

Page 18: Robótica: Reconhecimento de Padrões

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

Page 19: Robótica: Reconhecimento de Padrões

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

Page 20: Robótica: Reconhecimento de Padrões

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.

Page 21: Robótica: Reconhecimento de Padrões

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

Page 22: Robótica: Reconhecimento de Padrões

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');

Page 23: Robótica: Reconhecimento de Padrões

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

Page 24: Robótica: Reconhecimento de Padrões

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

Page 25: Robótica: Reconhecimento de Padrões

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',...

Page 26: Robótica: Reconhecimento de Padrões

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

Page 27: Robótica: Reconhecimento de Padrões

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.

Page 28: Robótica: Reconhecimento de Padrões

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.

Page 29: Robótica: Reconhecimento de Padrões

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

Page 30: Robótica: Reconhecimento de Padrões

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.

Page 31: Robótica: Reconhecimento de Padrões

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.

Page 32: Robótica: Reconhecimento de Padrões

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.

Page 33: Robótica: Reconhecimento de Padrões

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.

Page 34: Robótica: Reconhecimento de Padrões

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.

Page 35: Robótica: Reconhecimento de Padrões

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

Page 36: Robótica: Reconhecimento de Padrões

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

Page 37: Robótica: Reconhecimento de Padrões

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%.

Page 38: Robótica: Reconhecimento de Padrões

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

Page 39: Robótica: Reconhecimento de Padrões

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%.

Page 40: Robótica: Reconhecimento de Padrões

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.

Page 41: Robótica: Reconhecimento de Padrões

41

8. Referências Bibliográficas

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

Reconhecimento de Padrões. Universidade Federal de Campina Grande,

Departamento de Sistemas e Computação. Disponível 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.

Page 42: Robótica: Reconhecimento de Padrões

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.

Page 43: Robótica: Reconhecimento de Padrões

43