Robótica: Reconhecimento de Padrões

  • 971 views
Uploaded on

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, …

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.

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
971
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
37
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 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