RECONHECIMENTO DE OBJETOS EM IMAGENS   POR MEIO DO CONTORNO, Notas de estudo de Geodésia e Cartografia
leandro-luiz-s-de-franca-7
leandro-luiz-s-de-franca-7

RECONHECIMENTO DE OBJETOS EM IMAGENS POR MEIO DO CONTORNO, Notas de estudo de Geodésia e Cartografia

76 páginas
49Números de download
1000+Número de visitas
Descrição
Técnica para reconhecimento de caracteres em imagens (OCR) com a utilização de Chain Codes.
40 pontos
Pontos de download necessários para baixar
este documento
Baixar o documento
Pré-visualização3 páginas / 76
Esta é apenas uma pré-visualização
3 mostrados em 76 páginas
Esta é apenas uma pré-visualização
3 mostrados em 76 páginas
Esta é apenas uma pré-visualização
3 mostrados em 76 páginas
Esta é apenas uma pré-visualização
3 mostrados em 76 páginas

MINISTÉRIO DA DEFESA

EXÉRCITO BRASILEIRO

DEPARTAMENTO DE CIÊNCIA E TECNOLOGIA

INSTITUTO MILITAR DE ENGENHARIA

( Real Academia de Artilharia, Fortificação e Desenho, 1792 )

CURSO DE GRADUAÇÃO EM ENGENHARIA CARTOGRÁFICA

LEANDRO LUIZ SILVA DE FRANÇA

EDUARDO JOSÉ DA SILVA JUNIOR

RECONHECIMENTO DE OBJETOS EM IMAGENS

POR MEIO DO CONTORNO:

Proposta de um método baseado no Código da Cadeia e estudo de caso para reconhecimento de caracteres utilizados na Cartografia

Rio de Janeiro

2014

INSTITUTO MILITAR DE ENGENHARIA

1º TEN LEANDRO LUIZ SILVA DE FRANÇA

ALU EDUARDO JOSÉ DA SILVA JUNIOR

RECONHECIMENTO DE OBJETOS EM IMAGENS

POR MEIO DO CONTORNO:

Proposta de um método baseado no Código da Cadeia e estudo de caso para reconhecimento de caracteres utilizados na Cartografia

Trabalho de Iniciação à Pesquisa apresentado ao Curso de Graduação em Engenharia Cartográfica do Instituto Militar de Engenharia, para a obtenção de grau na Verificação Final (VF) de 2014.

Orientador: TC Carlos Frederico de Sá Volotão, D. Sc.

Rio de Janeiro

2014

2

INSTITUTO MILITAR DE ENGENHARIA

1º TEN LEANDRO LUIZ SILVA DE FRANÇA

ALU EDUARDO JOSÉ DA SILVA JUNIOR

RECONHECIMENTO DE OBJETOS EM IMAGENS

POR MEIO DO CONTORNO:

Proposta de um método baseado no Código da Cadeia e estudo de caso para reconhecimento de caracteres utilizados na Cartografia

Projeto de Iniciação à Pesquisa apresentada ao Curso de Graduação em

Engenharia Cartográfica do Instituto Militar de Engenharia, como requisito parcial

para a obtenção de grau na Verificação Final (VF).

Orientador: TC Carlos Frederico de Sá Volotão, D. Sc. Aprovado em 2014 pela seguinte Banca Examinadora:

_____________________________________________

Luiz Felipe Coutinho Ferreira da Silva, D.E.

_____________________________________________ TC Vagner Braga Nunes Coelho, D.Sc.

_____________________________________________ TC Carlos CESAR Gomes São Braz, M.C.

Rio de Janeiro

2014

3

RESUMO

Os métodos de reconhecimento de padrões buscam sempre concentrar esforços

nos modos de classificação de formas dos objetos presentes na imagem. A

representação de uma forma pode ser obtida através de seus contornos usando-se

uma técnica chamada de Código da Cadeia. Esta técnica permite representar o

contorno da borda de um objeto por meio de uma assinatura da forma que consiste

em uma sequência de direções do pixel anterior para o próximo pixel, utilizando-se

como código os algarismos de 0 a 7. Uma maneira de se classificar a forma de um

objeto é a comparação de sua assinatura com as assinaturas-padrão de diferentes

formas obtidas previamente para servir de modelos. Esta comparação pode ser

realizada através de diversas técnicas como, por exemplo, o cálculo da norma da

diferença entre as assinaturas. Este trabalho visa mostrar que a utilização do Código

da Cadeia para representação do contorno de caracteres ou símbolos presentes em

um mapa possibilita o reconhecimento automático dos mesmos. Para demonstrar a

exiquibilidade desta abordagem procurou-se aplicar este método a caracteres

existentes em uma carta topográfica no formato matricial (raster).

Palavras Chave: análise de forma, Código da Cadeia, assinatura da forma, classificação de formas.

4

ABSTRACT

The pattern’s recognition methods always seek to focus the efforts on the objects

shape’s classification in the images. Shape representation can be obtained using a

technique called Chain Code that uses the objects boundary. This technique allows

representing the object’s edge using a shape signature which is a direction sequence

from the previous pixels to the next one, number from 0 to 7 are used as codes. One

way to classify the shape of an object is to compare your signature with the

signatures of different standard forms previously obtained to serve as models. This

comparison can be done using various techniques, for instance, calculating the

difference norm between the signatures. This work aims to show that using Chain

Code to represent the boundary of character or symbol in map allows automatic

recognition. To demonstrate the feasibility of this approach we attempted to apply

this method to existing characters in a topographic map in raster format.

Key words: Shape analysis, Chain Code, shape signature, shape classification

5

LISTA DE ILUSTRAÇÕES

Figura 1.1 Caracteres em um mapa.......................................................................... 12

Figura 2.1 Regiões de borda..................................................................................... 14

Figura 2.2 Vizinhança 8............................................................................................. 15

Figura 2.3 Relação das direções com o círculo trigonométrico................................ 15

Figura 2.4 Perseguição de borda e representação do Código da Cadeia................ 16

Figura 2.5 Cálculo da assinatura pela distância euclidiana...................................... 17

Figura 2.6 Cálculo da assinatura utilizando o Código da Cadeia.............................. 18

Figura 2.7 Reamostragem em imagens.................................................................... 20

Figura 2.8 Interpolação pelo Vizinho Mais Próximo.................................................. 20

Figura 2.9 Interpolação Bilinear................................................................................. 21

Figura 2.10 Limiarização........................................................................................... 22

Figura 2.11 Objetos com diferentes níveis de cinza................................................. 23

Figura 2.12 Histograma da figura 2.11...................................................................... 23

Figura 3.1 Valores do incremento k para cada situação da direção preferencial..... 26

Figura 3.2 Execução detalhada do algoritmo de perseguição de borda e

representação pelas direções congruentes.............................................................. 28

Figura 3.3 Pixels de fundo da imagem verificados no processo de perseguição de

borda......................................................................................................................... 29

Figura 3.4 Pixels da borda externa do objeto e suas respectivas assinaturas......... 30

Figura 4.1 Imagem A e perseguição de borda usando o Código da Cadeia............ 33

Figura 4.2 Imagem B e perseguição de borda usando o Código da Cadeia............ 33

Figura 4.3 Imagem C e perseguição de borda usando o Código da Cadeia............ 34

Figura 4.4 Imagem A e perseguição de borda utilizando a técnica das direções

congruentes............................................................................................................... 35

6

Figura 4.5 Imagem B e perseguição de borda utilizando a técnica das direções

congruentes............................................................................................................... 35

Figura 4.6 Imagem C e perseguição de borda utilizando a técnica das direções

congruentes............................................................................................................... 36

Figura 4.7 Gráfico das Assinaturas de A, B e C utilizando o Código da Cadeia....... 37

Figura 4.8 Gráfico das Assinaturas de A, B e C utilizando as direções

congruentes............................................................................................................... 37

Figura 4.9 Menor distância angular entre duas direções.......................................... 37

Figura 4.10 Imagens do mesmo objeto rotacionado em 90º..................................... 38

Figura 5.1 Critério para escolha da fonte Arial para geração dos modelos de

comparação............................................................................................................... 41

Figura 5.2 Modelos para comparação e suas variações de rotação......................... 42

Figura 5.3 Modelos para comparação e suas variações de escala.......................... 43

Figura 5.4 Normalização de uma assinatura maior para uma menor....................... 45

Figura 5.5 Normalização de uma assinatura menor para uma maior....................... 45

Figura 6.1 a 6.23 Taxa de acertos utilizando os métodos ....................................... 55

7

LISTA DE TABELAS

Tabela 4.1 Cálculo da norma 1 entre A, B e C representadas pelo Código da

Cadeia....................................................................................................................... 34

Tabela 4.2 Cálculo da norma 1 entre A, B e C representadas pelas direções

congruentes............................................................................................................... 36

Tabela 6.1 Tempo médio de perseguição de borda e representação pelo Código da

Cadeia de Freeman (Algoritmo 1 e 2)....................................................................... 47

Tabela 6.2 Tempo médio de perseguição de borda e representação pelas direções

congruentes (Algoritmo 5)......................................................................................... 48

Tabela 6.3 Razão entre os tempos da Tabela 6.1 e Tabela 6.2 por caractere......... 49

Tabela 6.4 Comparação pela norma 1 entre as assinaturas-padrão representadas

pelas direções congruentes....................................................................................... 50

Tabela 6.5 Comparação pela soma das mínimas distâncias angulares entre as

assinaturas-padrão representadas pelo Código da Cadeia...................................... 51

Tabela 6.6 Verificação da eficácia dos métodos de reconhecimento....................... 52

8

SUMÁRIO

LISTA DE ILUSTRAÇÕES ......................................................................................... 5

LISTA DE TABELAS ................................................................................................. 7

1 INTRODUÇÃO ..................................................................................................... 9 1.1 Contextualização .................................................................................................. 9 1.2 Objetivo .............................................................................................................. 10 1.3 Justificativa ......................................................................................................... 11 1.4 Organização ....................................................................................................... 12

2 FUNDAMENTAÇÃO TEÓRICA ......................................................................... 13 2.1. Borda ................................................................................................................. 13 2.2. Código da Cadeia .............................................................................................. 14 2.3. Assinatura .......................................................................................................... 16 2.4. Norma 1 ............................................................................................................. 17 2.5. Reamostragem em imagens .............................................................................. 18 2.5.1 Interpolação pelo Vizinho Mais Próximo .......................................................... 19 2.5.2 Interpolação Bilinear ........................................................................................ 20 2.6. Limiarização ...................................................................................................... 21

3 REPRESENTAÇÃO DE FORMAS PELAS DIREÇÕES CONGRUENTES ....... 24 3.1. Considerações sobre o método das direções congruentes ............................... 28

4 ANTECEDENTES DO PROBLEMA................................................................... 31 4.1. A Norma 1 para comparação entre assinaturas ............................................... 31 4.2. Soma das mínimas distâncias angulares ......................................................... 36 4.3. Operações de rotação do Código da Cadeia .................................................... 37

5 METODOLOGIA E PROCEDIMENTOS ............................................................. 39

6 RESULTADOS E ANÁLISE DOS DADOS ........................................................ 46 6.1. Primeira etapa de resultados ............................................................................. 46 6.2. Segunda etapa de resultados ............................................................................ 49 6.3. Terceira etapa de resultados ............................................................................. 50 6.4. Análise dos resultados...................................................................................... 52

7 CONCLUSÃO .................................................................................................... 66

REFERÊNCIAS BIBLIOGRÁFICAS ........................................................................ 67

APÊNDICES ........................................................................................................... 679

9

1 INTRODUÇÃO

1.1 Contextualização

A maioria das atividades humanas e a interação com meio ambiente é

realizada por meio visual, mais precisamente por meio da captura de ondas

eletromagnéticas e subsequente processamento pelo sistema da visão até a

interpretação dos sinais pelo cérebro. Dada a homogeneidade de cor e textura na

maioria dos elementos da natureza, passa-se a dar mais atenção às suas variações

entre os objetos, isto é, às fronteiras, delimitando regiões uniformes. De fato, a

variedade de geometrias de bordas dos objetos leva ao conceito de forma (COSTA

& CESAR, 2009).

A evolução das tecnologias na captura, processamento, análise e

classificação de formas tem permitido à humanidade a ampliação e automação dos

processos visuais e sua interpretação. Assim, a importância do tema está apoiada

nas oportunidades sem precedentes de aplicação destes novos recursos nas

diversas áreas do conhecimento.

Dentre as diversas áreas de aplicação, as técnicas de processamento de

imagens, assim como de análise de formas, podem ser empregadas em áreas

relevantes para Engenharia Cartográfica como, por exemplo, na análise de

fotografias aéreas ou imagens de satélite, assim como na área da cartografia

através da extração de feições cartográficas (estradas, rios, edificações, etc.), sem

contar com o seu emprego na área militar, podendo-se destacar a identificação e

rastreamento de alvos para lançamento de mísseis (PEDRINI & SCHWARTZ, 2008).

Existem diferentes abordagens para análise de formas e reconhecimento de

objetos em uma imagem digital, sendo elas pela cor, textura, contorno ou contexto

em que o objeto está inserido (VOLOTÃO et al, 2008). A presente pesquisa busca

tratar do tema sob a perspectiva da aplicação a contornos usando o Código da

Cadeia (FREEMAN, 1974) para representação das bordas de um objeto contido em

uma imagem digital através sua representação, sendo ela uma sequência de

direções do pixel anterior para o próximo pixel que vão de 0 a 7 (oito possibilidades)

que representam a assinatura da forma.

10

A classificação da forma de um objeto pode ser realizada por meio da

comparação entre a sua representação com a de uma forma conhecida (padrão).

Supõe-se que esta comparação pode ser executada através do cálculo da norma da

diferença entre as assinaturas. Entretanto, as perturbações e irregularidades

presentes na imagem causadas por variações de iluminação e ruído (GONZALEZ &

WOODS, 1993) podem ocasionar alterações indesejadas no cálculo da norma.

1.2 Objetivo

O objetivo geral deste trabalho é reconhecer objetos em imagens por meio do

contorno baseando-se no Código da Cadeia para o caso de caracteres utilizados na

Cartografia.

Os objetivos específicos são:

 Identificar um método de perseguição de borda e representação pelo Código

da Cadeia na literatura.

o Implementar e testar o algoritmo de detecção de borda apresentado na

literatura.

 Avaliar e propor modificação ou outro método.

o Implementar e testar o algoritmo de detecção de borda proposto neste

trabalho.

 Gerar imagens dos caracteres que servirão de modelo para comparação.

 Aplicar o algoritmo proposto a cada um dos modelos, gerando suas

assinaturas-padrão para futura comparação.

 Obter a representação do contorno de caracteres que se apresentam em uma

carta utilizando o algoritmo proposto e realizar seu reconhecimento através da

comparação e classificação em relação ao conjunto de assinaturas-padrão.

 Avaliar os resultados obtidos e esboçá-los através de um relatório para as

diferentes amostras.

11

1.3 Justificativa

As novas perspectivas de aplicação de um método baseado no código da

cadeia de Freeman, assim como outros métodos de detecção de borda permanecem

um ativo campo de pesquisa (SOLOMON & BRECKON, 2013).

Para a Cartografia, o reconhecimento e identificação de símbolos e

caracteres podem ser úteis no processo de vetorização de um mapa digital pelo fato

de permitir fazer distinção entre a representação das feições, símbolos e caracteres

empregados.

Existem diversas possibilidades de aplicação para o reconhecimento de

caracteres em mapa, como por exemplo, a possibilidade de associar o nome

reconhecido a uma feição e, desta forma, permitir a aquisição automática do seu

atributo. Uma situação interessante para um caso como este seria o reconhecimento

de todos os pontos de cotas em uma carta topográfica e suas respectivas altitudes.

Todavia, o processo de reconhecimento de caracteres em um mapa tem suas

peculiaridades, se comparado com a utilização de softwares Optical Character

Recognition (OCR) em uma imagem contendo somente texto, principalmente pelo

fato de todos os caracteres não estarem sistematicamente alinhados na imagem e

apresentarem variações de rotação e escala (Figura 1.1).

Figura 1.1 Caracteres em um mapa (ROBINSON et al,1995)

12

Pelos motivos mencionados anteriormente, a metodologia deste trabalho

busca direcionar esforços ao desenvolvimento de uma técnica de reconhecimento

da forma de caracteres presentes em um mapa considerando algumas das suas

peculiaridades como rotação, escala e sobreposição a fundo com diferentes níveis

de cinza e texturas, sabendo-se que são fatos pertinentes quando se trabalha com

mapas.

1.4 Organização

No segundo capítulo, será apresentado o referencial teórico da pesquisa,

destacando-se a abordagem sobre o Código da Cadeia de Freeman, a norma 1,

técnicas de reamostragem em imagens e o processo de segmentação por

limiarização, que são conceitos básicos para o desenvolvimento desta pesquisa.

O terceiro capítulo apresenta a proposta e desenvolvimento de uma técnica

alternativa de perseguição de borda e representação de formas, mostrando também

suas vantagens e desvantagens quando comparada à encontrada na literatura.

No quarto capítulo, é estudada uma situação em que a norma 1 não se

adéqua a comparação de formas utilizando o contorno do objeto representado pelo

Código da Cadeia. Na parte final do capítulo é apresentada mais uma forma de

comparação de assinaturas considerando algumas das variações de rotação do

objeto da imagem.

No quinto capítulo são apresentados detalhadamente a metodologia e os

procedimentos adotados para se verificar a eficácia e eficiência dos métodos

apresentados anteriormente.

O sexto capítulo é dedicado aos resultados e sua análise que permitirão

chegar a conclusões sobre a aplicabilidade dos métodos estudados.

No sétimo e último capítulo, expõe-se uma avaliação que busca destacar os

aspectos mais relevantes da pesquisa e sintetizar os resultados que comparam as

técnicas levantadas para identificação de formas, apresentando, também, outras

possibilidades de aplicação dos métodos pesquisados, pontos fortes e fracos de

cada caso e sugestões de oportunidades de melhoria.

13

2 FUNDAMENTAÇÃO TEÓRICA

Neste capítulo, será apresentada a base teórica necessária para o

desenvolvimento desta pesquisa, abordando conceitos fundamentais que auxiliarão

o entendimento do Código da Cadeia de Freeman, além das técnicas de geração de

uma assinatura da forma e um método de comparação entre elas.

2.1. Borda

Borda corresponde à região limite ou a fronteira entre duas regiões com

propriedades relativas distintas de nível de cinza (PEDRINI & SCHWARTZ, 2008).

X X X X

X Δ Δ Δ Δ X

X Δ Δ X

X Δ Δ X

X Δ Δ X

X Δ Δ Δ Δ X

X X X X

Na Figura 2.1, o objeto é caracterizado pela imagem cinza ao centro, já o

fundo ou background corresponde aos pixels brancos. Os pixels com X são

geralmente chamados de pixels da borda externa, assim como os pixels que estão

preenchidos com Δ podem ser denominados como pixels da borda interna.

Figura 2.1 Regiões de borda

14

2.2. Código da Cadeia

O Código da Cadeia, também conhecido como Freeman Chain Codes

(ROBINSON et al, 1995), é uma representação simples e popular, onde, ao invés do

contorno ser representado por uma série de coordenadas (x,y) , ele é representado

pelo seu ponto inicial e uma sequência de códigos numéricos que representam as

direções de um passo para o próximo ao longo do contorno.

Para entender esquematicamente o Código da Cadeia pode-se observar a

Figura 2.2, onde cada pixel tem oito vizinhos, que são numerados de 0 a 7, como é

indicado na figura.

3 2 1

4

0

5 6 7

Observa-se, também, que esses vizinhos são numerados no sentido anti-

horário, começando do vizinho da direita.

É interessante salientar que é possível associar a máscara de vizinhança 8 ao

círculo trigonométrico, apenas multiplicando seus valores por 4 . Como pode ser

verificado na Figura 2.3. Esse raciocínio pode ser usado no processo de

perseguição da borda para determinar os pixels da vizinhança conhecendo-se a sua

direção.

3 2 1

4

0

5 6 7

Figura 2.2 Vizinhança 8 (FREEMAN,1974)

Figura 2.3 Relação das direções com o círculo trigonométrico

4

a

2

a 3 4

a

5 4

a 3 2

a

7 4

a

0

15

Agora, referindo-se a Figura 2.4, observa-se um processo de perseguição de

borda para obtenção do Código da Cadeia. O pixel marcado pela letra P é o pixel

inicial do contorno, o próximo pixel vizinho no sentido anti-horário é o pixel de baixo.

Este processo é repetido até que todo o contorno seja percorrido, ou seja, até que o

pixel final seja igual ao inicial.

4 4 4 3

P

2

6

2

6

2

6

2

6

1

7 0 0 0

A representação do Código da Cadeia é dada pela sequência

000012223444456667.

Costa e Cesar (2009) apresentam os algoritmos 1 e 2 para obtenção do

Código da Cadeia de uma forma. O algoritmo 1 realiza uma varredura até achar o

primeiro pixel do objeto, quando obtido, realiza-se repetidamente a rotina do

algoritmo 2 para determinar os pixels seguintes da borda. A condição de parada é

quando o próximo pixel corresponde ao pixel inicial.

Algoritmo 1: Algoritmo de perseguição da borda externa de um objeto

Algoritmo (COSTA & CESAR, 2009) O que está sendo feito?

1. Ache E [1]

2. n  2

3. Seja prox_pixel o segundo pixel do

contorno;

4. Seja dcn a direção de E [1] para o próximo

pixel;

5. enquanto (prox_pixel  E [1]) faça

6. E [n]  prox_pixel

7. dpc  dcn

8. ACHE_PROX( E [n] , dpc ,prox_pixel, dcn)

9. n  n+1

- Varredura para determinar as coordenadas do pixel inicial da borda E[1]. - Faz n receber 2 e usa-se o mesmo raciocínio da função do Algoritmo 2 para determinar o 2º pixel (prox_pixel). - Determina a direção do pixel atual (1º pixel) para o próximo (2º pixel). - Enquanto o próximo pixel não é diferente do 1º pixel da cadeia realizar a rotina: - Faz E[n] receber o pixel n - Faz a direção do pixel anterior para o atual RR receber a direção do atual para o próximo - Chama a função do Algoritmo 2 que retornará os valores do próximo pixel e a direção do pixel atual para o próximo.

Figura 2.4 Perseguição de borda e representação do Código da Cadeia

16

Algoritmo 2: Algoritmo da função para achar o próximo pixel

Algoritmo (COSTA & CESAR, 2009) O que está sendo feito?

ACHE_PROX ( Pc, , dpc , Pn, dcn)

1. dcp  INVERT(dpc)

2. para r  0 até 6 faça

3. dE MOD ( dcp + r ,8)

4. dI  MOD ( dcp + r +1, 8)

5. PE  VIZINHO ( Pc, dE)

6. PI  VIZINHO ( Pc, dI)

7. se (SE_FUNDO(PE) e SE_OBJETO(PI)) então

8. Pn  PE

9. dcn  dE

- Função ACHE_PROX retorna o valor do próximo pixel da cadeia e a direção do pixel atual para o próximo. - A função INVERT retorna a direção oposta a de entrada. Ou seja, para 0,1,2,3,4,5,6,7 retorna 4,5,6,7,0,1,2,3, respectivamente. - Fazendo o incremento r variar de 0 a 6, realiza-se a varredura para determinar o próximo pixel da borda. - dE é a direção do pixel externo e dI corresponde ao interno. PE e PI são os pixels externo e interno. - A função MOD retorna o resto da divisão, neste caso por 8. - A função VIZINHO retorna as coordenadas dos pixels da vizinhança do pixel atual para a direção dada. - Para cada iteração é analisado se PE é fundo (igual a 1) e PI é objeto (igual a 0). Se as condições são atendidas, então o próximo pixel Pn recebe PE e dcn recebe dE.

2.3. Assinatura

Uma assinatura é uma representação unidimensional da borda de um objeto

(PEDRINI & SCHWARTZ, 2008). Em outras palavras, uma assinatura de uma forma

é uma função real ou complexa da representação em 1D de uma forma em 2D

(VOLOTÃO et al, 2008).

Na Figura 2.5, pode-se obter uma assinatura através da função r(i), onde r

corresponde à distância euclidiana entre o centro do pixel da borda (vermelho) e o

centróide do objeto (centro do pixel verde), onde i é ordem do pixel que vai do 1º

pixel (i=1) ao último pixel (i=24).

r

Figura 2.5 Cálculo da assinatura pela distância euclidiana: (a) Processo de determinação da

assinatura; (b) Representação gráfica da assinatura.

(a) (b)

17

Na Figura 2.6, pode ser observada outra maneira de se obter uma assinatura.

Neste caso, está sendo empregado o Código da Cadeia de Freeman. Os valores de

f(i) correspondem às direções do pixel anterior para o próximo pixel. Seguindo no

sentido anti-horário, a primeira direção corresponde à direção do primeiro pixel

(vermelho) para o segundo pixel da borda, ou seja, o valor de f(1) = 6 e assim

sucessivamente.

4 4 4 4 3

5 2

6 2

6 2

6 2

6 1

7 0 0 0 0

Como pode ser observado nos exemplos acima, existem várias maneiras de

expressar uma assinatura. Isto vai depender de qual propriedade da forma se

busque evidenciar ou manter invariante em suas operações. As principais

propriedades invariantes da forma, segundo Otterloo (1988) são: translação, escala

e rotação.

2.4. Norma 1

A norma 1, também chamada de norma da soma por Alves (1997) ou norma

Manhattan por Ghosh e Deguchi (2008) é definida por Apostol (1988), como

1 21 1

| | | | ... | | n

n

i

s s s s

   

(2.1)

Figura 2.6 Cálculo da assinatura utilizando o Código da Cadeia: (a) Processo de perseguição de

borda; (b) Representação gráfica da assinatura.

(a) (b)

18

Sejam 1 2( , , , )na a a a  e 1 2( , , , )nb b b b  as assinaturas de dois objetos.

Como se deseja calcular a norma 1 de a-b, então:

1 1 2 21 1

| | | | ... | | n

n n

i

a b a b a b a b

       

Sendo a a assinatura do contorno de uma forma que se deseja classificar e

b uma das assinaturas do conjunto de treinamento. A forma associada à assinatura

a será classificada como um tipo da forma associada à assinatura de b quando a

norma 1 for mínima.

A norma 1 pode ser adotada para determinar, de forma geral, o quão próximo

(ou afastado) estão estes vetores.

Ela é preferencialmente usada em relação às outras normas quando se

deseja obter maior eficiência computacional, pois realiza operações de ordem de

complexidade O(n).

No entanto, a norma 1 atribui o mesmo peso a cada uma de suas parcelas,

diferentemente das normas de ordem superior que dão maior peso às parcelas que

possuem maior valor à medida que a ordem aumenta. Desta forma, as normas de

ordem superior a 1 evidenciam as maiores diferenças entre os atributos das

assinaturas.

2.5. Reamostragem em imagens

A interpolação é uma ferramenta largamente utilizada no redimensionamento,

rotação e correções geométricas em uma imagem. As técnicas de interpolação são

conhecidas como métodos de reamostragem (GONZALEZ & WOODS, 1993).

Nos métodos de reamostragem, quando os níveis de cinza da imagem

reamostrada são definidos pelos níveis de cinza da imagem original, ocorre o que

comumente chamamos de mapeamento inverso (MENEZES & ALMEIDA, 2012).

A Figura 2.7, apresentada em Brito e Coelho (2007), exemplifica esse

processo de mapeamento inverso. Na figura, a grade de pixel da imagem original

está representada em linhas contínuas e a grade de pixel da imagem corrigida em

linhas tracejadas. O pixel destacado na imagem original (coluna 430, linha 289) pode

(2.2)

19

influenciar os níveis de cinza de, pelo menos, os quatro pixels vizinhos da imagem

retificada (colunas 427 e 428 e linhas 288 e 289). O problema da reamostragem se

resume em determinar quais e como estes pixels vizinhos deverão assumir o valor

de brilho do pixel em destaque, na imagem original.

Existem diversos métodos utilizados para interpolação em processos de

reamostragem, sendo os mais conhecidos: vizinho mais próximo, bilinear e bicúbico.

Neste trabalho, serão apresentadas a interpolação pelo vizinho mais próximo

e a interpolação bilinear, visto que seus conceitos podem ser aplicados no processo

de comparação entre assinaturas.

2.5.1 Interpolação pelo Vizinho Mais Próximo

Na interpolação pelo vizinho mais próximo, o valor de intensidade f(x’,y’)

atribuido ao pixel (x’,y’) na imagem reamostrada terá o mesmo valor de intensidade

f(x,y) do pixel que estiver mais próxima da posição ocupada pelo pixel (x,y) na

imagem original (PEDRINI & SCHWARTZ, 2008).

Na Figura 2.8, são exibidas quatro situações onde o ponto (xp,yp), resultante

do mapeamento inverso de (x’,y’), pode ser situado considerando os centros dos

pixels da imagem original.

(x,y) (x+1,y)

(x,y+1) (x+1,y+1)

(xp,y p)

(x,y) (x+1,y)

(x,y+1) (x+1,y+1)

(xp,y p)

(x,y) (x+1,y)

(x,y+1) (x+1,y+1)

(xp,y p)

(x,y) (x+1,y)

(x,y+1) (x+1,y+1)

(xp,y p)

Figura 2.7 Reamostragem em imagens (COELHO; BRITO, 2007)

Figura 2.8 Interpolação pelo Vizinho Mais Próximo

20

A interpolação dos valores de intensidade pode ser expressa

matematicamente como

( , ), 0,5 0,5

( 1, ), 0,5 0,5 ( ', ')

( , 1), 0,5 0,5

( 1, 1), 0,5 0,5

f x y para dx e dy

f x y para dx e dy f x y

f x y para dx e dy

f x y para dx e dy

  

    

       

em que dx e dy correspondem às distâncias nas direções x e y, respectivamente,

entre os pontos (xp,yp) e (x,y), ou seja, as partes fracionárias do ponto (xp,yp).

p

p

dx x x

dy y y

 

 

A equação (2.4) pode ser reescrita como

( ', ') [ ( ), ( )]p pf x y f round x round y

Em que round é uma função que aproxima um número para seu valor inteiro

mais próximo.

2.5.2 Interpolação Bilinear

A interpolação bilinear, segundo (PEDRINI & SCHWARTZ, 2008), utiliza uma

média ponderada de distância dos quatro pixels vizinhos mais próximos para

determinar a intensidade de cada pixel (x’,y’) na imagem transformada, como mostra

na Figura 2.9.

O valor de intensidade no pixel (x’,y’) é dado pela equação (2.6), onde os

valores de dx e dy podem ser determinados pelas equações dadas em (2.4).

( ', ') (1 )(1 ) ( , ) (1 ) ( 1, ) (1 ) ( , 1) ( 1, 1)f x y dx dy f x y dx dy f x y dx dy f x y dx dy f x y           

(x,y) (x+1,y)

(x,y+1) (x+1,y+1)

(xp,y p)

dx

dy

(2.3)

(2.4)

(2.5)

Figura 2.9 Interpolação Bilinear

(2.6)

21

A interpolação bilinear causa um efeito de suavização na transição entre os

diferentes níveis de cinza vizinhos, diferentemente da interpolação pelo vizinho mais

próximo que adota apenas o nível de cinza do pixel mais próximo de (xp,yp).

2.6. Limiarização

A forma mais simples, útil e, geralmente, a mais adotada para segmentação

de imagens é baseada em limiarização (COSTA & CESAR, 2009). Esta

transformação produz uma imagem binária a partir de uma imagem em escala de

cinza ou em cores: valores de pixels são limitados a 1 ou 0 dependendo se seu valor

de nível de cinza está acima ou abaixo do valor de limiar adotado (SOLOMON &

BRECKON, 2013), como ilustrado na Figura 2.10.

Figura 2.10 Limiarização: (a) Imagem original; (b) Imagem em níveis de cinza (NC); (c) Imagem com

limiar NC= 20; (d) Imagem com limiar NC=127. (DSG,1993)

(a) (b)

(c) (d)

22

O processo de limiarização é apresentado, resumidamente, através do

Algoritmo 3, onde os dados de entrada são a imagem e o valor do limiar

conpreendido entre 0 e 255 (imagens de 8 bits). O dado de saída corresponde a

uma imagem binária.

Algoritmo 3: Limiarização

Algoritmo (COSTA & CESAR, 2009) O que está sendo feito? 1. para cada pixel da imagem faça 2. se (valor_pixel < limiar) então

3. pixel  0 4. caso contrário

5. pixel  1

- Percorrendo todos os pixels da imagem - Se o valor do pixel é menor que o valor adotado como limiar, então - o pixel é objeto (neste caso, cor preta) - caso contrário, o pixel é fundo (cor branca)

Quando existem mais de um objeto com diferentes níveis de cinza (Figura

2.11), eles podem ser discriminados analisando o intervalo de valores de nível de

cinza ao qual estão inseridos. Este intervalo é facilmente observado através do

histograma presente na Figura 2.11.

Para a situação apresentada do histograma da Figura 2.10, o processo de

limiarização é realizado utilizando o Algoritmo 4 separadamente para cada objeto.

Figura 2.12 Histograma da figura 2.11

Figura 2.11 Objetos com diferentes níveis de cinza

23

Algoritmo 4: Limiarização por intervalo de nível de cinza

Código (COSTA & CESAR, 2009) O que está sendo feito? 1. para cada pixel da imagem faça 2. se (valor_pixel > limiar1 e valor_pixel < limiar2) então

3. pixel  0 4. caso contrário

5. pixel  1

- Percorrendo todos os pixels da imagem - Se o valor do pixel está inserido no intervalo entre limiar1 e limiar2, então - o pixel é objeto (neste caso, cor preta) - caso contrário, o pixel é fundo (cor branca)

24

3 REPRESENTAÇÃO DE FORMAS PELAS DIREÇÕES CONGRUENTES

Dois números ,a b   são congruentes de módulo n , se a b é múltiplo

de n . Ou seja, moda b n (MAIER, 2005).

Para este trabalho o valor de n corresponde a 8, ou seja uma volta completa

na máscara de Freeman para vizinhança 8. Logo, por exemplo, o valor 1 e 9 são

congruentes, ou seja, referem-se à mesma direção.

O método de representação da forma de um contorno pelas direções

congruentes é uma alternativa ao Código da Cadeia que está limitado a representar

as direções apenas com valores de 0 a 7.

Este método de representação está relacionado à nova técnica de

perseguição da borda do contorno de um objeto desenvolvida neste trabalho. Esta

técnica é explicada nos passos a seguir:

 Primeiramente, realiza-se uma varredura na imagem e a detecção do

primeiro pixel da borda do objeto.

 Logo em seguida, é estabelecida a direção preferencial 0 (zero) para

baixo (pode ser arbitrado qualquer outro valor para esta direção)

 A partir deste momento realiza-se iterativamente a detecção dos pixels

da borda, seguindo o procedimento descrito abaixo, até que o último

pixel seja igual ao primeiro.

o Adota-se inicialmente o incremento k igual a 1. Este valor de k irá

variar seguindo a sequência {1,-1,2,-2,3,-3,4,-4} para cada par

consecutivo de pixels vizinhos ao pixel atual obedecendo um

movimento pendular (Figura 3.1).

o Analisam-se os pares de pixels da vizinhança do pixel atual, sendo

eles denominados de pixel externo (PE) e de pixel interno (PI).

o Para cada valor de k será testada a condição de que PE seja fundo

(igual a 1) e PI seja figura (igual a 0), caso ocorra, então:

 A nova direção preferencial será a direção do pixel atual

para PE. Ou seja, o valor da direção preferencial mais o

valor do incremento k.

 O novo pixel atual será PE

25

O Algoritmo 5, desenvolvido neste trabalho, materializa o que foi abordado

sobre esta técnica de perseguição de borda e representação pelas direções

congruentes, apresentando claramente todos os detalhes matemáticos necessários

para sua execução.

O dado de entrada do Algoritmo 5 é uma imagem binária contendo o objeto

que se deseja reconhecer e os dados de saída são uma assinatura (vetor contendo

as direções) e um vetor contendo as coordenadas dos pixels da borda.

Algoritmo 5: Perseguição de borda e representação pelas direções congruentes

Algoritmo O que está sendo feito? 1. img  imagem binária

2. Definir: figura  0 e fundo  1

3. x  número de linhas da imagem

4. y  número de colunas da imagem

- Recebendo a imagem binária, definindo o que é figura e fundo e determinando as dimensões da imagem (número de linhas e colunas)

6. para i  0 até (x-1) faça

7. para j  0 até (y-2) faça 8. se (img[ i , j ] == fundo e img[ i , j +1 ] == figura) então

10. E[1]  [ i , j ] 11. parar 12. fim 13. fim

- Varredura para determinar o 1º pixel da borda (mais acima e mais a esquerda do objeto). - Percorre toda linha, comparando pares consecutivos de pixels, depois segue para linha seguinte. - Se no par de pixels o primeiro for fundo e o segundo for figura, então: - O vetor de coordenadas dos pixels E[n] é preenchido com o primeiro pixel da borda E[1]

13. Definir: pref  0, n  0 e PE  [-1,-1] 14. enquanto (PE!=E[1]) faça

15. k  1

16. para t  1 até 8 faça

Pref é a direção preferencial, n é a ordem do pixel da borda e PE, neste caso, tem o papel de pixel atual, adota-se [-1,-1] diferente de E[1] para poder entrar na iteração. - Enquanto pixel atual é diferente do pixel inicial,

Figura 3.1 Valores do incremento k para cada situação da direção preferencial

26

17. se k > 0 então

18. dir_E  pref + k – k/abs(k)

19. dir_I  pref + k 20. caso contrário

21. dir_E  pref + k

22. dir_I  pref + k – k/abs(k) 23. fim

24. PE  E[n] + [sign(cos(dir_E * pi/4)) , sign(sen(dir_E * pi/4))]

25. PI  E[n] + [sign(cos(dir_E * pi/4)) , sign(sen(dir_E * pi/4))] 26. se ( img[PE] == fundo e img[PI] == figura ) então

27. ASS[n]  dir_E

28. n  n + 1

39. E[n]  PE

30. pref  dir_E 32. parar 33. caso contrário 34. se k > 0 então

35. k  -1 * k 36. caso contrário

37. k  abs (k) +1 38. fim 39. fim 40. fim 41. fim

faz-se k=1 e testam-se os pares de pixels partindo dos mais próximos da direção preferencial para os mais afastados, inicialmente no sentido anti-horário da direção preferencial (k > 0) e depois no sentido horário (k < 0), seguindo-se a sequência {1,-1,2,-2,3,-3,4,-4}. - Ocorre também a alternância do PE (pixel externo) e PI (pixel interno) de acordo com o sinal de k, onde dir_E é a direção do pixel externo e dir_I é a direção do pixel interno. - A função sign(x) retorna 1, se x>0, -1 se x<0 e 0 se x=0. - Se a imagem na posição PE for fundo e na posição PI for figura, então:

 O valor da assinatura na posição n (ASS [n]) é preenchido com dir_E (direção do pixel atual para o próximo pixel).

 Valor de n é incrementado em uma unidade.

 O vetor de coordenadas dos pixels E[n] é preenchido com as coordenadas de PE.

 A direção preferencial passa a ser dir_E. - Se a condição acima não ocorre, então o novo valor de k é calculado, obedecendo sua sequência {1,-1,2,-2,3,-3,...}. - a função abs() retorna o módulo (valor absoluto) de um número.

Para exemplificar toda a sequência apresentada para perseguição de borda e

representação pelas direções congruentes, a Figura 3.2 apresenta detalhadamente

o caminho percorrido para sua execução.

0

0

0

0

0

0

E[1] = [2,1] pref = 0 k = +1 PE = [3,1] PI = [3,2]

pref = 0 k = +1 PE = [4,1] PI = [4,2]

pref = 0 k = +1 PE = [5,1] PI = [5,2]

ASS[1] = 0 E[2] = [3,1] pref = 0

ASS[2] = 0 E[3] = [4,1] pref = 0

ASS[3] = 0 E[4] = [5,1] pref = 0

27

0

0

0

0

0

0

0

1

1

0

0

0

1 2 2

0

0

0

1 2 2 2

pref = 0 k = +1, -1, +2 PE = [6,1], [6,0], [6,2] PI = [6,2], [6,1], [5,2]

pref = 1 k = +1, -1, +2 PE = [7,3], [7,2] , [6,3] PI = [6,3], [7,3] , [5,3]

pref = 2 k = +1 PE = [6,4] PI = [5,4]

pref = 2 k = +1, -1, +2 PE = [6,5],[7,5],[5,5] PI = [5,5],[6,5],[5,4]

ASS[4] = 1 E[5] = [6,2] pref = 1

ASS[5] = 2 E[6] = [6,3] pref = 2

ASS[6] = 2 E[7] = [6,4] pref = 2

ASS[7] = 3 E[8] = [5,5] pref = 3

0

0 3

0 3

1 2 2

0 5

0 5

0 3

1 2 2

0

0 6 6 5

0 3

1 2 2

4

0 4

0 6 5

0 3

1 2 2

pref = 3 k = +1, -1, +2, -2, +3 PE = [4,6],[5,6],[4,5],[4,5],[4,4] PI = [4,5],[4,6],[4,4],[4,6],[5,4]

pref = 5 k = +1, -1, +2 PE = [3,3],[3,3],[4,3] PI = [4,3],[3,4],[5,3]

pref = 6 k = +1, -1, +2, -2 PE=[4,2],[3,2],[5,2],[3,3] PI=[5,2],[4,2],[5,3],[3,2]

pref = 4 k = +1 PE = [2,3] PI = [2,2]

ASS[8] = 5 E[9] = [4,4] pref = 5

ASS[9] = 6 E[10] = [4,3] pref = 6

ASS[10] = 4 E[11] = [3,3] pref = 4

ASS[11] = 4 E[12] = [2,3] pref = 4

4

4

0 4

0 6 5

0 3

1 2 2

5

5

4

0 4

0 6 5

0 3

1 2 2

5

7 4

0 4

0 6 5

0 3

1 2 2

pref = 4 k = +1, -1, +2 PE = [1,3],[1,3],[1,2] PI = [1,2],[1,4],[2,2]

pref = 5 k = +1, -1, +2, -2, +3 PE = [0,1],[0,1],[1,1],[0,2],[2,1] PI = [1,1],[0,2],[2,1],[0,3],[2,2]

E[14] = E[1] = [2,1]

Assinatura: 0001223564457 ASS[12] = 5 E[13] = [1,2] pref = 5

ASS[13] = 7 E[14] = [2,1] pref = 7

Figura 3.2 Execução detalhada do algoritmo de perseguição de borda e representação pelas

direções congruentes.

28

3.1. Considerações sobre o método das direções congruentes

Serão apresentadas cinco vantagens para a utilização do método proposto

neste trabalho e uma desvantagem. Elas serão abordadas sucintamente a seguir.

Primeiramente, a perseguição de borda utilizando o algoritmo 5 requer

praticamente uma “linha” de pixels em torno do objeto, diferentemente do que ocorre

quando se utiliza o Algoritmo 1 e 2 de Costa e Cesar (2009) que necessita de 2

“linhas” de pixels, como pode ser observado na Figura 3.3.

Na Figura 3.3, os pixels representados pela cor amarela são os pixels que

foram verificados no processo de perseguição de borda. Essa propriedade se torna

útil quando se deseja reconhecer objetos que estejam separados apenas por uma

linha de pixels de fundo. Com o Algoritmo de Costa e Cesar (2009), isto não é

possível de se realizar.

Outra vantagem é o menor tempo de processamento do Algoritmo 5, devido

ao fato de se necessitar verificar menos pixels que estão na vizinhança do contorno

do objeto, além de, por utilizar a representação pelas direções congruentes, não ser

preciso utilizar a função mod dentro de cada iteração, como é feito nos Algoritmos 1

e 2.

A próxima vantagem é a maior “penetração” que a perseguição de borda do

Algoritmo 5 possui em relação ou outro método, como pode ser percebido na Figura

3.4.

Figura 3.3 Pixels de fundo da imagem verificados no processo de perseguição de borda:

(a) utilizando os Algoritmos 1 e 2; (b) Utilizando o Algoritmo 5

(a) (b)

29

Na Figura 3.4, os pixels em verde são os pixels da borda externa obtidos

pelos dois métodos para o mesmo objeto.

4 4 3

6 6 5

5 1

7 3

6 3

0 6 5;2

6 1

0 3

6 3

0 6 5;2

6 1

0 3

7 0 0

1 2 2

A assinatura gerada no caso da Figura 3.4(b) possui 4 elementos a mais do

que para o caso (a), o que permite se obter a borda completa do objeto e ter mais

informação para futura comparação.

A utilização da técnica de representação pelas direções congruente possui

também a vantagem de se gerar uma assinatura com uma faixa de valores maior, ou

seja, não ter seus valores apenas limitados ao intervalo de 0 a 7.

Como consequência, valores extremos da assinatura também podem servir

como índice de comparação, por exemplo, quando o valor máximo da assinatura é

maior que 8, indica que se deu mais de uma volta em torno da direção preferencial

inicial. Embora esta propriedade aparente ser útil, ela não será explorada neste

trabalho.

A última vantagem constatada é a possibilidade de se gerar o código da

cadeia a partir da assinatura representada pelas direções congruentes.

Para se efetuar esta operação, pode ser realizado o seguinte procedimento:

mod( 6 , 8 )código assinatura 

onde assinatura é o vetor contendo as direções dadas pelas direções congruentes e,

para todas as direções da assinatura, é adicionado o valor 6 a cada um dos

elementos do vetor (ou seja uma rotação de 270º), sendo, em seguida, aplicada a

função mod que retorna o resto da divisão por 8, para este caso.

(a) (b)

Figura 3.4 Pixels da borda externa do objeto e suas respectivas assinaturas: (a) utilizando os

Algoritmos 1 e 2; (b) Utilizando o Algoritmo 5

(3.1)

30

Uma desvantagem é a inviabilidade de utilização da assinatura representada

pelas direções congruentes na comparação entre assinaturas de imagens

rotacionadas empregando-se o cálculo da norma de suas diferenças.

Assim, supõe-se que sua aplicação seria mais recomendada no

reconhecimento de caracteres que estão dispostos em uma direção conhecida,

como por exemplo, em um texto comum ou no reconhecimento da placa de um

automóvel.

31

4 ANTECEDENTES DO PROBLEMA

Inicialmente, este capítulo considerará as implicações de utilização da norma

1 para comparação entre objetos utilizando a representação da forma pelo Código

da Cadeia e pelas direções congruentes.

Na parte final deste capítulo, será apresentada outra técnica de comparação

entre assinaturas denominada, neste trabalho, de soma das mínimas distâncias

angulares. Também serão abordadas duas operações que permitem a comparação

entre assinaturas de imagens rotacionadas.

4.1. A Norma 1 para comparação entre assinaturas

A utilização da norma 1 para comparação de assinaturas utilizando apenas o

código da cadeia de Freeman pode não ser eficaz para comparação de formas, por

exemplo, no caso de regiões com cisalhamento ou efeito de escada podem existem

muitas variações de 0 para 7, assim como de 7 para 0 (Figuras 4.1 e 4.2) e, em

algumas ocasiões, as assinaturas não casam perfeitamente na fase de comparação.

Deste modo, a norma calculada poderá sofrer influência da adição de muitos valores

altos nas somas dos módulos das diferenças, por exemplo, |0-7| e |7-0|.

Para compreensão das figuras exibidas neste capítulo, deve-se considerar

que, inicialmente, a varredura para determinar o primeiro pixel do contorno do objeto

é realizada da esquerda para direita e de cima para baixo, a partir do primeiro pixel

da imagem, percorrendo cada linha e comparando pares consecutivos de pixels das

colunas. Quando encontrado o primeiro pixel da borda, então se segue o processo

de perseguição de borda utilizada pelos algoritmos, obtendo-se, assim, a assinatura

da forma.

Pode ser observado, também, que os objetos presentes nas imagens A e B

(Figuras 4.1 e 4.2) são bastante semelhantes. A diferença da imagem A para a

imagem B é somente uma coluna de pixels a mais na parte direita e a menos na

esquerda do objeto.

32

Analisando visualmente estas imagens (imagens A e B), pode-se claramente

afirmar que elas possuem formas muito semelhantes e poderiam ser classificadas

como do mesmo tipo.

IMAGEM A

4 4 4 4 4 4 4 4 4 4 4 4 3

i 2 4²

6 2

6 2

6 2

6 2

6 2

7 0 2

7 0 2

7 0 2

7 0 2

7 0 1

7 0 0

IMAGEM B

4 4 4 4 4 4 4 4 4 4 4 4 3

i 2 4²

6 2

6 2

6 2

6 2

6 2

7 0 0 2

7 0 2

7 0 2

7 0 2

7 0 1

7 0

Figura 4.1 Imagem A e perseguição de borda usando o Código da Cadeia

Figura 4.2 Imagem B e perseguição de borda usando o Código da Cadeia

33

Agora, analisando outra imagem C (Figura 4.3), com uma forma bem diferente

que as anteriores e comparando as normas 1 entre suas assinaturas, cujo cálculo

pode ser visto na Tabela 4.1, verifica-se que, utilizando o menor valor da norma 1

para comparação, a forma da imagem A estaria mais próxima da forma da imagem

C, quando comparada a da imagem B.

IMAGEM C

4 4 4 4 4 4 4 4 4 4 4 4 3

4² 4² i 1 4²

5 1

5 2

5 3

5 3

5 1

7 0 1

7 0 1 0

7 0 1

7 0 1 0

7 0 1

7

A 6 6 6 6 6 7 0 7 0 7 0 7 0 7 0 7 0 0 1 2 2 2 2 2 2 2 2 2 2 3 4 4 4 4 4 4 4 4 4 4 4 4 5 B 6 6 6 6 6 7 0 0 7 0 7 0 7 0 7 0 7 0 1 2 2 2 2 2 2 2 2 2 2 3 4 4 4 4 4 4 4 4 4 4 4 4 5 C 5 5 5 5 5 7 0 7 0 7 0 7 0 7 0 7 1 1 0 1 1 0 1 1 3 3 2 1 1 3 4 4 4 4 4 4 4 4 4 4 4 4 5

|A-B| 0 0 0 0 0 0 0 7 7 7 7 7 7 7 7 7 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |A-C| 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 2 1 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |B-C| 1 1 1 1 1 0 0 7 7 7 7 7 7 7 7 7 6 1 1 1 1 2 1 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ||A-B||170

||A-C||118

||B-C||186

Logo, fica evidente que a utilização da norma 1 entre as assinaturas

representadas pelo Código da Cadeia de Freeman não são seguramente eficazes

para comparação e reconhecimento de formas.

No entanto, utilizando o algoritmo de perseguição de borda proposto neste

trabalho e a sua representação de formas pelas direções congruentes nas mesmas

Figura 4.3 Imagem C e perseguição de borda usando o Código da Cadeia

Tabela 4.1 Cálculo da norma 1 entre A, B e C representadas pelo Código da Cadeia

34

imagens A, B e C (Figuras 4.4, 4.5 e 4.6), chega-se a melhores resultados, como

pode ser visto na Tabela 4.2.

IMAGEM A

6 6 6 6 6 6 6 6 6 6 6 6 5

i 4 4²

0 4

0 4

0 4

0 4

0 4

1 2 4

1 2 4

1 2 4

1 2 4

1 2 3

1 2 2

IMAGEM B

6 6 6 6 6 6 6 6 6 6 6 6 5

i 4

0² 0 4 0²

0 4

0 4

0 4

0 4

1 2 2 4

1 2 4

1 2 4

1 2 4

1 2 3

1 2

Figura 4.4 Imagem A e perseguição de borda utilizando a técnica das direções congruentes

Figura 4.5 Imagem B e perseguição de borda utilizando a técnica das direções congruentes

35

IMAGEM C

6 6 6 6 6 6 6 6 6 6 6 6 5

i

3 3²

-1

3

-1

4

-1

5

-1

5

-1

3

1 2

3

1 2

3 2

1 2

3

1 2

3 2

1 2

3

1

A 0 0 0 0 0 1 2 1 2 1 2 1 2 1 2 1 2 2 3 4 4 4 4 4 4 4 4 4 4 5 6 6 6 6 6 6 6 6 6 6 6 6 7 B 0 0 0 0 0 1 2 2 1 2 1 2 1 2 1 2 1 2 3 4 4 4 4 4 4 4 4 4 4 5 6 6 6 6 6 6 6 6 6 6 6 6 7

C -1 -1 -1 -1 -1 1 2 1 2 1 2 1 2 1 2 1 3 3 2 3 3 2 3 3 5 5 4 3 3 5 6 6 6 6 6 6 6 6 6 6 6 6 7 |A-B| 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

|A-C| 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 2 1 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |B-C| 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 2 1 1 1 1 2 1 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0

||A-B||110

||A-C||118

||B-C||128

De acordo com a Tabela 4.2, a norma 1 entre as assinaturas dos objetos das

imagens A e B possui menor valor, ou seja, suas formas são mais próximas quando

comparado com a forma do objeto da imagem C.

As Figuras 4.7 e 4.8 representam graficamente as assinaturas de A, B e C no

primeiro e segundo caso, respectivamente. Observa-se que as grandes variações de

0 para 7, na Figura 4.7, passam a ser pequenas variações de 1 para 2, como

observado na Figura 4.8. Baseado neste fato, pode-se deduzir que a utilização da

norma 1 para comparação de assinaturas de formas quando elas forem

representadas pelas direções congruentes é mais confiável.

Figura 4.6 Imagem C e perseguição de borda utilizando a técnica das direções congruentes

Tabela 4.2 Cálculo da norma 1 entre A, B e C representadas pelas direções congruentes

36

4.2. Soma das mínimas distâncias angulares

Neste trabalho, uma distância angular entre duas direções é definida como a

diferença angular de uma direção em relação à outra. A mínima distância

corresponde ao menor valor positivo das distâncias angulares, como pode ser

verificado na Figura 4.9.

Figura 4.8 Gráfico das Assinaturas de A, B e C utilizando as direções congruentes

Figura 4.7 Gráfico das Assinaturas de A, B e C utilizando o Código da Cadeia

Figura 4.9 Menor distância angular entre duas direções

37

Logo, para duas direções, por exemplo, 6 e 0, a menor distância angular

corresponde a 2, ou seja 90º.

Trabalhando-se com o Código da Cadeia a soma das menores distâncias

angulares entre os elementos de seu código pode ser determinado pelo Algoritmo 6.

Algoritmo 6: Cálculo da soma das mínimas distâncias angulares entre dois códigos

Algoritmo O que está sendo feito? 1. a  código 1

2. b  código 2

1. para i  0 até numel (a) - 1 faça

3. x  max ( a[ i ] , b[ i ] )

4. y  min ( a[ i ] , b[ i ] )

5. dist [ i ]  min ( x – y , 8 – ( x – y) ) 6. fim

7. soma  sum (dist)

- Recebe em a e b os vetores dos códigos 1 e 2, respectivamente,

sendo ambos com o mesmo número de elementos. - Realiza iteração para cada par de elementos do código, calculando: - O valor máximo entre eles. - O valor mínimo entre eles.

- Menor distância angular entre eles, armazenando no vetor dist[].

- Calcula-se a soma dos elementos do vetor dist.

4.3. Operações de rotação do Código da Cadeia

Existem duas operações de rotação do Código da Cadeia que podem ser

realizadas no processo de comparação entre assinaturas.

A primeira é a alternância do sequenciada dos valores dos códigos. Por

exemplo, um código { 6 6 7 1 2 2 3 5 } pode ser também expresso como { 5 6 6 7 1 2

2 3 }, { 3 5 6 6 7 1 2 2 }, { 2 3 5 6 6 7 1 2 }, ..., visto que os valores do código não se

alteram independentemente de onde se inicia o processo de perseguição de borda.

A segunda é a adição de um valor de rotação a todos os elementos da

cadeia. Por exemplo, o código { 6 6 7 1 2 2 3 5 } rotacionado de 90° fica { 0 0 1 3 4 4

5 7 }, pois se adiciona 2 a todos os seus valores e aplica-se a função mod.

Munido dos conceitos apresentados acima, é possível comparar duas

imagens com o mesmo objeto, sendo que, na segunda imagem, o objeto está

rotacionado de 90º, como é exibido na Figura 4.10.

3

5

2

4 4 3

6

2

5

1

6

1

7 0 0

7

Figura 4.10 Imagens do mesmo objeto rotacionado em 90º: (a) imagem original; (b) imagem

rotacionada em 90º.

(b) (a)

38

O código da imagem (a) { 6 6 7 1 2 2 3 5 } e da imagem (b) { 7 0 0 1 3 4 4 5 }

podem ser comparados utilizando-se o Algoritmo 7 que aplica as duas operações de

rotação.

Algoritmo 7: Determinação do menor valor da soma das mínimas distâncias

angulares entre dois códigos considerando as possibilidades de rotação

Algoritmo O que está sendo feito? 1. a  código 1

2. b  código 2

3. dup  cat ( a , a )

4. para i  0 até numel (a) -1 faça

5. ext  dup[ i : (i + numel (a) - 1)]

6. para j  0 até 7 faça

7. rot  mod( b + j , 8 )

8. M [ i , j ]  smda (ext , rot )

9. fim

6. fim

7. dif  min (M)

- Recebe em a e b os vetores dos códigos 1 e 2, respectivamente, sendo ambos com o mesmo número de elementos. - O vetor dup é a concatenação do vetor a com ele mesmo. - Realiza iteração pelo número vezes igual ao número de elementos do código, calculando:

- O vetor ext é um extrato do vetor dup com as mesmas dimensões de a. Ele extrai de dup os elementos a partir do do elemento de ordem i.

- Realiza iteração para 8 testes de rotação (45º): - O vetor rot sofre uma rotação de j. - A matriz M armazena a soma das mínimas distâncias angulares (Algoritmo 6) entre ext e rot.

- Calcula-se o valor mínimo de M.

Para o caso da comparação entre (a) e (b), utilizando o Algoritmo 7, resulta na

matriz M.

8 16 24 28 24 16 8 4

8 8 16 24 24 24 16 8

8 4 8 16 24 28 24 16

16 8 0 8 16 24 32 24

24 16 8 4 8 16 24 28

24 24 16 8 8 8 16 24

24 28 24 16 8 4 8 16

16 24 32 24 16 8 0 8

M

                        

Fica evidente que existem dois valores de mínimo, correspondentes as

rotações de 90º e 270º, onde o objeto da imagem (b) se torna exatamente idêntico

ao da imagem (a).

(4.1)

39

5 METODOLOGIA E PROCEDIMENTOS

O problema formulado nesta pesquisa é o seguinte: Como utilizar o Código da

Cadeia para reconhecer caracteres em um mapa?

Partimos da hipótese de que se obtendo a borda externa do contorno de um

objeto representado pelo Código da Cadeia é possível reconhecê-lo a partir de sua

comparação com um grupo de modelos.

Logo, esta pesquisa busca trabalhar com a variável imagem, restringindo-se a

imagens binárias de objetos presentes em um mapa digital na forma matricial

(raster). Nas condições de que nestas imagens estejam bem caracterizadas as

regiões de figura e fundo. Em outras palavras, é necessário que haja a possibilidade

de extração da borda externa do objeto.

Pretende-se, especificamente, reconhecer caracteres que possuam as

variações de rotação e escala que geralmente se apresentam em mapas.

Com o propósito de operacionalizar esta pesquisa, foram adotados os

procedimentos metodológicos descritos a seguir.

Primeiramente, realizou-se uma pesquisa bibliográfica, com vistas a investigar

na literatura o estofo teórico necessário sobre a técnica de representação do

contorno de formas utilizando o Código da Cadeia (Freeman,1974). A principal fonte

de pesquisa foi Costa e Cesar (2009) que ensinam um método de perseguição de

borda (apresentado neste trabalho na Seção 2.2).

Em seguida, foi possível constatar que a comparação de formas pela norma 1

utilizando-se da representação da forma com o Código da Cadeia não é a mais

adequada devido aos problemas levantados na Seção 4.1. Esta constatação nos

levou a pensar em uma nova forma de representação que faz uso das direções

congruentes às direções da máscara de Freeman, além de seu algoritmo de

perseguição de borda.

Uma das contribuições desta pesquisa foi a proposta e o desenvolvimento do

Algoritmo 5 para perseguição de borda e representação pelas direções congruentes

que, de acordo com a Seção 3.1, pode apresentar melhores resultados quando

comparado à utilização do algoritmo da literatura. Por isso, ele passou a ser utilizado

também para geração do Código da Cadeia, utilizando-se a equação (3.1).

40

Outra contribuição foi a apresentação dos Algoritmos 6 e 7 que permitem a

comparação entre as assinaturas de caracteres rotacionados em uma imagem pela

soma das mínimas distâncias angulares (Seção 4.2).

A segunda etapa desta pesquisa focou-se na implementação e validação do

algoritmo de perseguição de borda e representação pelo Código da Cadeia. A

implementação foi realizada na linguagem M do MatLab e está diponível no

Apêndice A. A validação deste algoritmo foi realizada aplicando-o nas imagens

binárias A, B e C (Figuras 4.1, 4.2 e 4.3), sendo os resultado apresentados pela

máquina exatamente iguais aos feitos manualmente.

O mesmo procedimento foi adotado para o algoritmo proposto nesta pesquisa

cuja implementação está no Apêndice B e sua validação sucedeu da forma prevista

para as imagens A, B e C.

A terceira etapa deste trabalho visou à geração de modelos para comparação.

Esses modelos, neste caso, correspondem aos caracteres de uma imagem digital

com a sua tipologia obedecendo às especificações de fontes do Manual de

Convenções Cartográficas T34-700 (2002).

A Figura 5.1 é um extrato da carta topográfica da Baía de Guanabara

1:50.000 (DSG, 1993). A fonte escolhida para geração dos modelos foi a Arial e com

uma altura de 18 px. Estes parâmetros foram simplesmente adotados pelo fato de se

buscar aplicar os algoritmos estudados na identificação de caracteres com as

mesmas características das palavras “Praia Vermelha”.

As Figuras 5.2 e 5.3 apresentam as imagens contendo os três primeiros

caracteres alfanuméricos dos que foram utilizados nesta pesquisa e algumas de

suas variações de rotação e escala. Os modelos para comparação correspondem ao

primeiro grupo de caracteres (sem rotação e escala a 100%).

Figura 5.1 Critério para escolha da fonte Arial para geração dos modelos de comparação

41

Foi adotado o formato PNG para as imagens das Figuras 5.2 e 5.3, sendo

elas geradas no editor de imagens Inkscape. O processo de limiarização contou com

um valor de limiar igual a 127, equivalente ao valor central de níveis de cinza de uma

imagem de 8 bits. Este processo foi realizado no Matlab utilizando o Algoritmo 3.

Figura 5.2 Modelos para comparação e suas variações de rotação

42

A quarta etapa restringe-se a gerar as assinaturas dos modelos (assinaturas-

padrão), ou seja, executar os Algoritmo 1 e 2 (Apêndice A) e o Algoritmo 5

(Apêndice B) a cada um dos caracteres. Em cada caso, as assinaturas serão

armazenadas em uma estrutura com o campo “caractere” de variáveis do tipo char e

outro campo “assinatura” de que recebe o vetor de inteiros da assinatura do

caractere respectivo. A implementação deste procedimento está no Apêndice C.

O código do Apêndice C também determinado o tempo de processamento

que as duas técnicas levam para percorrer a borda de cada caractere, utilizando as

funções tic e toc da linguagem M.

As medições do tempo de processamento foram repetidas por 100 vezes na

perseguição de borda de cada caractere, com intuito de calcular o tempo médio e

desvio-padrão em cada caso. Sendo a finalidade principal comparar a eficiência

relativa entre eles. Os resultados serão apresentados na Seção 6.1.

A quinta e última fase corresponde à comparação das assinaturas-padrão

com elas mesmas e com as assinaturas dos caracteres com variação de rotação e

de escala, tendo como objetivo verificar a eficácia dos métodos de comparação

(norma 1 e soma das mínimas distâncias angulares) no reconhecimento dos

caracteres.

Figura 5.3 Modelos para comparação e suas variações de escala

43

No processo de classificação, um objeto será classificado como um tipo de

caractere quando sua assinatura comparada à assinatura-padrão do caractere

resultar no menor valor da norma 1 ou soma das mínimas distâncias angulares.

Para as assinaturas com número de elementos diferentes será utilizado o

processo de normalização, que faz com que uma delas tenha a mesma dimensão da

outra, a fim de permitir sua comparação.

No processo de normalização é necessário que se utilize um tipo de

interpolação como, por exemplo, as apresentadas na Seção 2.5. No caso deste

trabalho, a assinatura da forma pode ser idealizada como uma imagem contendo

uma linha de pixels, como vista na Figura 5.4.

AFigura 5.4 explana o processo de normalização de uma assinatura e

apresenta os resultados utilizando a interpolação pelo vizinho mais próximo e a

interpolação bilinear.

Seja Xg a posição do centro do pixel na assinatura maior e Xp a posição do

centro do pixel na assinatura menor. Onde numel(G) e numel(P) são os números de

elementos das assinaturas maior e menor, respectivamente. Os valores de Xc, que

serão usados na interpolação, são dados por:

( ) ( 0,5) 0,5

( )

numel G Xc Xp

numel P    

quando há a transformação de uma assinatura de um tamanho maior para um

menor. Semelhantemente,

( ) ( 0,5) 0,5

( )

numel P Xc Xg

numel G    

quando ocorre o inverso.

Na Figura 5.4, é possível observar um exemplo de normalização de uma

assinatura a que possui 16 elementos para uma assinatura b com 8 elementos. Os

resultados são apresentados tanto utilizando a interpolação pelo vizinho mais

próximo quanto a interpolação bilinear.

No caso da interpolação do vizinho mais próximo, os valores da assinatura b

são determinados a partir da assinatura de a do seguinte modo:

[ '] [ ( )]b x a round Xc

(5.1)

(5.2)

(5.3)

44

Onde x’ corresponde aos valores das posições dos elementos da assinatura

b , ou seja, são os valores Xp ou Xg, para cada caso. A função round realiza o

arredondamento pra o inteiro mais próximo.

Na interpolação bilinear, os valores de b são determinados por

( )dx Xc floor Xc 

[ '] (1 ) [ ( )] [ ( )]b x dx a floor Xc dx a ceil Xc    

onde as funções floor e ceil correspondem aos arredondamentos para o inteiro

imediatamente inferior e superior, respectivamente.

A Figura 5.5 mostra outro exemplo em que ocorre o contrário, ou seja, a

normalização de uma assinatura a que possui 8 elementos para uma assinatura b

com 16 elementos.

(5.4)

(5.5)

Figura 5.4 Normalização de uma assinatura maior para uma menor

Figura 5.5 Normalização de uma assinatura menor para uma maior

45

Neste trabalho, o processo de normalização utilizou a interpolação pelo

vizinho mais próximo principalmente fato de possuir uma melhor eficiência

computacional, visto que ocorre apenas uma operação de arredondamento, além de

permitir trabalhar apenas com valores inteiros nos elementos das assinaturas,

acarretando, na maioria dos casos, em melhores resultados no cálculo da norma 1.

O processo de comparação e obtenção dos resultados para classificação está

implementado no Apêndice D, onde ocorre a comparação das assinaturas-padrão

com elas mesmas e no Apêndice E para comparação das assinaturas-padrão com

as assinaturas dos caracteres com variações de rotação e escala.

46

6 RESULTADOS E ANÁLISE DOS DADOS

Existem três etapas de resultados. A primeira corresponde à determinação do

tempo de processamento na obtenção das assinaturas para cada caractere

utilizando os Algoritmos 1 e 2 (Código da Cadeia) e empregando o Algoritmo 5

(direções congruentes). Estes resultados visam apenas provar a maior eficiência do

Algoritmo 5 (desenvolvido nesta pesquisa) na perseguição de borda e obtenção da

assinatura da forma.

A segunda etapa de resultados apresenta a comparação das assinaturas-

padrão com elas mesmas. Este passo é importante, pois é uma maneira de

validação dos métodos de comparação.

A terceira etapa de resultados consiste na comparação e classificação dos

caracteres com variações de escala e rotação com o conjunto de assinaturas-

padrão.

6.1. Primeira etapa de resultados

As Tabelas 6.1 e 6.2 apresentam como resultados a média dos tempos de

processamento em milissegundos para se obter a assinatura de cada caractere

empregando os algoritmos de perseguição de borda e representação pelo Código da

Cadeia de Freeman e direções congruentes, respectivamente.

O erro estimado para o valor da média também foi calculado em um intervalo

de confiança de 99% de uma amostra de 100 valores de tempo de execução por

caractere.

Caractere Média Erro Caractere Média Erro Caractere Média Erro

A 17,18 0,32 a 16,11 0,10 0 14,79 0,11

B 17,11 0,31 b 16,87 0,12 1 13,35 0,20

C 22,29 0,30 c 15,84 0,20 2 19,91 0,43

D 16,12 0,19 d 16,64 0,19 3 20,15 0,19

E 25,45 0,97 e 10,66 0,16 4 14,29 0,09

Tabela 6.1 Tempo médio de perseguição de borda e representação pelo Código

da Cadeia de Freeman (Algoritmo 1 e 2).

47

F 21,30 0,25 f 14,17 0,21 5 21,70 0,27

G 26,98 0,56 g 16,47 0,25 6 17,82 0,21

H 26,25 0,38 h 22,27 0,14 7 15,63 0,34

I 13,46 0,09 i 10,00 0,17 8 15,24 0,10

J 16,02 0,23 j 12,01 0,19 9 18,37 0,13

K 23,93 0,48 k 19,88 0,26 100

1

100

i

i

t

média  

100

s erro t 

L 16,20 0,31 l 13,02 0,19

M 32,92 0,42 m 26,68 0,74

N 26,30 0,38 n 19,31 0,36

O 15,77 0,23 o 12,32 0,18

P 16,76 0,21 p 17,10 0,12

Q 17,77 0,31 q 15,86 0,27

R 22,83 0,14 r 11,80 0,16

S 24,62 0,36 s 15,44 0,23

2,62641

. . 99%

. . 100 1

t

I C

G L

 

T 18,56 0,10 t 13,71 0,12

U 25,74 0,33 u 19,73 0,32

V 19,61 0,25 v 14,22 0,48

W 32,68 0,47 w 20,72 0,31

X 20,80 0,49 x 15,97 0,16

Y 17,25 0,46 y 18,25 0,27

Z 22,33 0,34 z 16,05 0,24

Caractere Média Erro Caractere Média Erro Caractere Média Erro

A 7,51 0,11 a 7,14 0,09 0 5,83 0,04

B 6,21 0,15 B 7,55 0,06 1 5,28 0,08

C 9,32 0,11 C 7,37 0,08 2 9,27 0,06

D 6,23 0,07 D 7,63 0,07 3 9,58 0,07

E 9,44 0,38 E 5,94 0,06 4 6,29 0,04

F 8,37 0,08 F 5,93 0,05 5 9,33 0,18

G 12,64 0,26 G 8,44 0,10 6 8,18 0,10

H 10,52 0,07 H 8,31 0,13 7 7,23 0,19

I 4,86 0,03 I 3,52 0,06 8 6,51 0,22

J 6,78 0,11 J 4,72 0,03 9 8,43 0,06

K 11,33 0,12 K 8,93 0,06 100

1

100

i

i

t

média  

100

s erro t 

L 6,69 0,08 l 4,88 0,08

M 12,96 0,14 m 9,93 0,08

N 11,34 0,16 n 8,52 0,09

O 5,63 0,07 o 4,67 0,04

P 5,90 0,04 p 7,48 0,12

Q 7,12 0,06 q 7,80 0,14

R 9,28 0,12 r 5,19 0,09

S 11,54 0,17 s 8,31 0,14

2,62641

. . 99%

. . 100 1

t

I C

G L

 

T 6,82 0,11 t 6,07 0,12

U 9,24 0,12 u 7,71 0,17

V 10,19 0,07 v 6,73 0,06

W 16,24 0,23 w 12,99 0,29

X 11,64 0,10 x 8,39 0,06

Y 8,06 0,20 y 8,69 0,08

Z 9,10 0,30 z 7,75 0,05

Tabela 6.2 Tempo médio de perseguição de borda e representação pelas

direções congruentes (Algoritmo 5).

48

A Tabela 6.3 apresenta a razão entre as médias dos tempos de execução dos

Algoritmos 1 e 2 e Algoritmo 5. Estes resultados são mais significativos, pois se

verifica a razão dos tempos de execução dos algoritmos na detecção de borda e

representação. Assim, independente da máquina que esteja executando os

algoritmos, estes resultados tendem a ser semelhantes quando a mesma amostra

for usada.

Caractere Razão Caractere Razão Caractere Razão

A 2,29 a 2,26 0 2,54

B 2,75 b 2,23 1 2,53

C 2,39 c 2,15 2 2,15

D 2,59 d 2,18 3 2,10

E 2,70 e 1,79 4 2,27

F 2,55 f 2,39 5 2,33

G 2,13 g 1,95 6 2,18

H 2,49 h 2,68 7 2,16

I 2,77 i 2,84 8 2,34

J 2,36 j 2,54 9 2,18

K 2,11 k 2,23

2,29r

L 2,42 l 2,67

M 2,54 m 2,69

N 2,32 n 2,27

O 2,80 o 2,64

P 2,84 p 2,29

Q 2,50 q 2,03

R 2,46 r 2,27

S 2,13 s 1,86

T 2,72 t 2,26

U 2,79 u 2,56

V 1,92 v 2,11

W 2,01 w 1,60

X 1,79 x 1,90

Y 2,14 y 2,10

Z 2,45 z 2,07

Onde r corresponde à razão do somatório de todos os tempos médios em

cada caso, isto é,

_

cod cadeia

dir congr

t r

t   

Tabela 6.3 Razão entre os tempos da Tab 6.1 e Tab 6.2 por caractere

(5.1)

49

6.2. Segunda etapa de resultados

Visando testar a eficácia na comparação e classificação de objetos em uma

imagem utilizando-se da técnica de comparação pela norma 1 e pela soma das

mínimas distâncias angulares foram testadas separadamente utilizando a

representação pelas direções congruentes e pelo Código da Cadeia,

respectivamente.

O grupo de caracteres modelos foi testado em si próprio gerando duas

matrizes de 62 x 62 para cada resultado utilizando a norma 1 e a soma das mínimas

distâncias angulares calculada entre suas assinaturas.

As Tabelas 6.3 e 6.4 apresentam os valores destas matrizes (resultados da

comparação entre as assinaturas). Observa-se que a sua diagonal principal tem

como resultado o valor zero, pois nela ocorre a comparação entre as mesmas

assinaturas do conjunto.

Devido à grande quantidade de resultados as Tabela 6.3 e 6.4 apresentam

apenas a comparação das assinaturas do alfabeto maiúsculo com os elementos do

conjunto.

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

A 0 48 106 48 112 82 166 125 52 60 114 50 158 143 45 44 50 72 129 77 128 90 221 85 60 94

B 48 0 90 17 104 54 150 87 31 61 78 33 158 116 33 24 26 45 116 39 120 80 167 62 53 53

C 106 90 0 92 118 86 65 155 83 127 132 74 242 171 92 97 77 114 127 102 116 114 206 110 108 95

D 48 17 92 0 106 59 158 84 28 54 81 37 154 110 30 24 30 55 115 37 119 80 163 62 51 60

E 112 104 118 106 0 102 120 157 126 160 156 109 205 163 124 94 120 103 154 129 120 117 215 147 120 135

F 82 54 86 59 102 0 133 116 71 110 86 54 240 139 78 77 60 47 159 77 110 89 190 65 101 51

G 166 150 65 158 120 133 0 190 146 204 175 114 276 193 157 155 133 162 177 169 120 141 189 168 161 149

H 125 87 155 84 157 116 190 0 100 131 40 109 169 46 113 114 102 85 161 118 134 119 170 80 109 134

I 52 31 83 28 126 71 146 100 0 34 87 30 172 102 28 44 36 72 92 48 121 87 179 70 64 66

J 60 61 127 54 160 110 204 131 34 0 118 62 198 148 44 58 62 90 74 82 170 124 247 102 88 111

K 114 78 132 81 156 86 175 40 87 118 0 88 172 65 105 106 84 75 155 101 116 109 160 50 104 105

L 50 33 74 37 109 54 114 109 30 62 88 0 200 124 48 57 36 70 116 64 82 61 152 70 60 51

M 158 158 242 154 205 240 276 169 172 198 172 200 0 179 166 127 180 195 242 162 239 222 138 196 177 233

N 143 116 171 110 163 139 193 46 102 148 65 124 179 0 125 144 120 114 162 138 133 112 180 96 106 156

O 45 33 92 30 124 78 157 113 28 44 105 48 166 125 0 34 29 66 101 56 147 99 200 84 68 80

P 44 24 97 24 94 77 155 114 44 58 106 57 127 144 34 0 44 66 137 35 120 85 165 83 47 78

Q 50 26 77 30 120 60 133 102 36 62 84 36 180 120 29 44 0 50 112 55 122 84 183 69 70 63

R 72 45 114 55 103 47 162 85 72 90 75 70 195 114 66 66 50 0 141 82 127 99 217 60 103 83

S 129 116 127 115 154 159 177 161 92 74 155 116 242 162 101 137 112 141 0 154 175 161 263 157 140 152

T 77 39 102 37 129 77 169 118 48 82 101 64 162 138 56 35 55 82 154 0 133 89 161 73 56 61

U 128 120 116 119 120 110 120 134 121 170 116 82 239 133 147 120 122 127 175 133 0 47 134 124 94 127

V 90 80 114 80 117 89 141 119 87 124 109 61 222 112 99 85 84 99 161 89 47 0 170 88 51 113

W 221 167 206 163 215 190 189 170 179 247 160 152 138 180 200 165 183 217 263 161 134 170 0 180 163 182

X 85 62 110 62 147 65 168 80 70 102 50 70 196 96 84 83 69 60 157 73 124 88 180 0 82 77

Y 60 53 108 51 120 101 161 109 64 88 104 60 177 106 68 47 70 103 140 56 94 51 163 82 0 109

Z 94 53 95 60 135 51 149 134 66 111 105 51 233 156 80 78 63 83 152 61 127 113 182 77 109 0

Tabela 6.4 Comparação pela norma 1 entre as assinaturas-padrão representadas

pelas direções congruentes.

50

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

A 0 38 75 34 94 54 106 75 50 46 78 43 138 99 41 35 36 40 97 47 60 32 130 71 32 66

B 38 0 80 13 102 52 116 59 29 43 56 33 148 78 19 24 22 45 90 35 90 62 138 54 47 53

C 75 80 0 74 80 66 59 99 83 54 95 60 126 111 82 71 69 64 107 84 38 66 128 90 73 87

D 34 13 74 0 100 53 118 64 26 38 65 37 146 84 14 24 16 49 91 37 85 60 140 60 43 58

E 94 102 80 100 0 70 68 107 106 94 102 101 81 107 104 78 88 81 110 103 98 95 85 109 88 99

F 54 52 66 53 70 0 81 62 71 64 70 50 134 75 60 49 54 39 83 57 74 61 130 62 63 51

G 106 116 59 118 68 81 0 106 122 96 111 102 134 111 125 101 109 92 109 111 70 93 135 118 99 101

H 75 59 99 64 107 62 106 0 88 87 40 71 167 34 81 76 68 57 57 58 98 95 156 76 91 40

I 50 29 83 26 106 71 122 88 0 30 78 30 156 93 28 26 36 68 83 34 95 69 143 65 54 66

J 46 43 54 38 94 64 96 87 30 0 82 36 134 97 40 36 48 56 73 34 59 49 128 73 48 73

K 78 56 95 65 102 70 111 40 78 82 0 74 150 51 75 76 66 51 69 57 100 89 137 42 80 55

L 43 33 60 37 101 50 102 71 30 36 74 0 150 82 42 29 36 52 85 30 56 44 133 70 48 49

M 138 148 126 146 81 134 134 167 156 134 150 150 0 173 154 127 148 125 176 158 137 146 32 160 123 159

N 99 78 111 84 107 75 111 34 93 97 51 82 173 0 95 88 92 76 56 76 115 106 162 78 106 28

O 41 19 82 14 104 60 125 81 28 40 75 42 154 95 0 30 21 54 99 42 95 66 141 62 54 64

P 35 24 71 24 78 49 101 76 26 36 76 29 127 88 30 0 33 48 87 33 83 50 121 65 33 60

Q 36 22 69 16 88 54 109 68 36 48 66 36 148 92 21 33 0 46 94 37 82 60 138 57 48 59

R 40 45 64 49 81 39 92 57 68 56 51 52 125 76 54 48 46 0 93 58 63 53 124 56 43 55

S 97 90 107 91 110 83 109 57 83 73 69 85 176 56 99 87 94 93 0 76 99 91 153 99 96 60

T 47 35 84 37 103 57 111 58 34 34 57 30 158 76 42 33 37 58 76 0 91 62 147 69 44 55

U 60 90 38 85 98 74 70 98 95 59 100 56 137 115 95 83 82 63 99 91 0 45 134 99 74 85

V 32 62 66 60 95 61 93 95 69 49 89 44 146 106 66 50 60 53 91 62 45 0 141 84 39 73

W 130 138 128 140 85 130 135 156 143 128 137 133 32 162 141 121 138 124 153 147 134 141 0 150 123 146

X 71 54 90 60 109 62 118 76 65 73 42 70 160 78 62 65 57 56 99 69 99 84 150 0 74 67

Y 32 47 73 43 88 63 99 91 54 48 80 48 123 106 54 33 48 43 96 44 74 39 123 74 0 79

Z 66 53 87 58 99 51 101 40 66 73 55 49 159 28 64 60 59 55 60 55 85 73 146 67 79 0

As matrizes completas de resultados estão disponíveis nos Apêndices F e G.

6.3. Terceira etapa de resultados

Esta etapa de resultados tem por finalidade verificar a eficácia dos métodos

no correto reconhecimento dos caracteres.

Os métodos serão testados para cada situação apresentada nas Figuras 5.2 e

5.3, onde os caracteres sofrem algumas alterações de rotação e escala.

A Tabela 6.4 é um exemplo de verificação de acertos, apresentando os três

melhores resultados para cada caractere testado e os seus correspondentes valores

de comparação. Neste caso, foram testadas todas as imagens dos caracteres

rotacionada em 10º.

Esta verificação também foi realizada para as imagens rotacionadas de - 90º

a 90º variando-se de 10º em 10º e para as transformações de escala de 50%, 75%,

125%, 150%, 175% e 200%. No entanto, as tabelas de resultados para cada uma

destas situações não serão apresentados devido à sua grande massa dados, sendo

seus resultados explorados na próxima seção deste capítulo.

Tabela 6.5 Comparação pela soma das mínimas distâncias angulares entre as

assinaturas-padrão representadas pelo Código da Cadeia.

51

Rotação 10°

Soma das Mínimas Distâncias Angulares (com Rotação) ______Direções Congruentes e Norma 1_________

SMDA SMDA SMDA Norma Norma Norma

A Y 24 A 25 P 25 A P 25 A 31 p 35

B B 13 D 14 O 19 B O 19 o 22 0 23

C C 25 c 31 U 39 C C 25 c 51 6 58

D D 13 O 17 B 18 D O 17 0 23 B 28

E E 19 m 38 F 78 E t 98 C 99 b 99

F F 15 g 38 9 41 F f 54 O 61 I 70

G G 37 C 54 E 64 G G 37 C 72 c 4

H H 20 N 37 z 44 H d 83 I 94 l 94

I I 8 l 8 i 10 I I 8 l 8 i 10

J J 11 r 26 j 29 J J 11 j 29 I 36

K K 30 z 46 X 52 K d 73 I 86 l 86

L L 8 7 25 P 29 L L 8 I 36 i 36

M M 35 W 45 w 49 M d 37 p 41 4 50

N N 27 z 32 Z 38 N I 90 l 90 d 93

O O 12 D 13 o 16 O O 12 0 19 o 24

P P 10 p 14 d 17 P o 28 i 29 r 29

Q o 18 Q 20 B 21 Q o 18 O 26 Q 26

R R 24 A 40 B 40 R A 40 P 42 p 45

S s 27 S 43 5 45 S S 43 5 49 2 72

T T 13 r 30 1 30 T 1 32 O 49 j 49

U U 23 u 30 n 37 U J 80 3 9 9 13

V V 29 v 33 n 35 V J 52 d 72 j 76

W w 47 W 50 M 52 W d 34 J 39 j 64

X X 30 x 34 d 48 X d 54 j 63 I 66

Y Y 15 A 32 d 33 Y d 33 4 47 j 56

Z Z 18 z 34 2 39 Z 1 53 S 71 j 74

a a 18 e 26 v 29 a J 38 a 40 1 41

b b 16 q 18 D 24 b b 16 D 24 B 31

c c 17 e 30 u 30 c c 17 e 32 6 43

d P 14 d 14 p 18 d d 18 j 24 I 25

e e 17 a 20 c 24 e e 17 c 24 r 35

f j 21 I 22 f 22 f I 22 l 22 j 25

g g 18 9 19 6 24 g 4 68 1 70 A 73

h h 19 V 41 n 41 h h 19 n 47 A 58

i i 6 I 8 j 8 i I 8 l 8 i 10

j I 11 l 11 i 12 j j 12 I 17 l 17

k k 25 8 42 B 43 k k 41 B 49 b 49

l I 7 l 7 i 8 l I 7 l 7 i 8

m m 23 E 38 G 72 m F 3 R 6 4 8

n n 20 u 26 c 34 n A 56 P 58 e 61

o o 7 O 14 0 14 o o 7 D 15 0 16

p d 12 p 14 P 16 p I 30 l 30 O 32

q b 14 q 15 o 28 q O 34 d 40 A 44

r r 8 j 12 i 13 r I 16 l 16 j 18

s s 18 z 37 5 37 s s 30 2 45 5 47

t t 13 i 22 I 23 t t 13 i 22 I 25

u n 23 u 23 c 26 u J 48 d 74 j 76

v v 20 V 29 a 30 v d 42 J 45 j 50

w w 39 p 64 d 66 w J 78 d 90 j 96

x x 25 X 32 d 34 x d 40 j 40 I 42

y y 22 Y 29 A 31 y d 55 J 66 4 72

z z 13 Z 25 d 35 z 2 35 8 37 s 38

0 0 12 D 13 o 13 0 0 12 i 18 8 18

Tabela 6.6 Verificação da eficácia dos métodos de reconhecimento

52

1 1 10 I 20 i 20 1 1 16 j 31 I 32

2 2 27 Z 35 z 35 2 2 29 a 47 j 50

3 3 20 C 40 9 40 3 3 40 9 52 a 60

4 4 14 D 25 i 26 4 4 16 o 26 0 26

5 5 21 s 39 z 45 5 3 78 9 78 1 79

6 6 17 9 20 g 25 6 6 23 L 38 f 42

7 L 15 7 17 1 25 7 1 27 j 38 I 40

8 0 16 8 16 o 17 8 o 17 0 18 8 18

9 9 12 6 15 g 23 9 g 23 9 26 1 42

6.4. Análise dos resultados

A Tabela 6.7 traz os índices de acerto ao utilizar-se do método da soma das

mínimas distâncias angulares e ao utilizar-se da norma unitária para a comparação

entre as assinaturas obtidas e as assinaturas padrão.

O índice de acerto do valor mínimo representa o acerto efetivo do método, ou

seja, quando o caractere foi identificado de maneira correta. Já índice de acerto

entre os 3 valores mínimos indica quando algum dos 3 valores mínimos encontrados

representava o caractere correto, por exemplo na Tabela 6.6 pode-se constatar que

o método das somas das mínimas distâncias angulares não identificou o caractere

“A” corretamente porém considerando os 3 valores mínimos o caractere “A” foi

identificado.

Analisando-se as seis primeiras linhas da Tabela 6.7, percebe-se que a

comparação das assinaturas obtidas ao padrão tem um melhor desempenho

utilizando-se o método da soma das mínimas distâncias angulares pois para o

método da soma das mínimas distâncias angulares a taxa média de acerto no valor

mínimo é de 76,34% e considerando-se os 3 valores mínimos a taxa média de

acerta passa a ser 92,74%, já na norma unitária as taxas médias de acerto para o

valor mínimo e para os 3 mínimos valores foram, respectivamente, 69,09% e

79,57%, logo a comparação pela soma das mínimas das distâncias angulares é

mais indicada quando os caracteres passaram apenas por uma mudança de escala.

Analisando-se os resultados da comparação dos caracteres que sofreram

rotação percebe-se que a comparação pela soma das mínimas distâncias angulares

é mais efetiva, pois utilizando-se o método da soma das mínimas distâncias

angulares pois para o método da soma das mínimas distâncias angulares a taxa

média de acerto no valor mínimo é de 79,79% e considerando-se os 3 valores

53

mínimos a taxa média de acerta passa a ser 95,64%, já na norma unitária as taxas

médias de acerto para o valor mínimo e para os 3 mínimos valores foram,

respectivamente, 28,84% e 41,08%, para calculara esses médias não foi

considerado a rotação a -50° pois as rotinas implementadas na pesquisa não

funcionaram para esse caso e necessitam de uma verificação do erro.

Com isso chega-se à conclusão de que a comparação pela soma das mínimas

distâncias angulares é melhor que o a comparação pela norma unitária.

Tabela 6.7 Índice de acerto dos métodos da soma das mínimas distâncias angulares

e da norma 1.

Soma das mínimas distâncias angulares

Norma 1

Índice de acerto

no valor mínimo

Índice de acerto entre os 3 menores

valores calculados

Índice de acerto no valor mínimo

Índice de acerto entre os 3 menores

valores calculados Escala 50% 48,39% 67,74% 40,32% 56,45% Escala 75% 74,19% 95,16% 82,26% 95,16% Escala 125% 79,03% 93,55% 38,71% 46,77% Escala 150% 83,87% 100,00% 88,71% 96,77% Escala 175% 87,10% 100,00% 82,26% 88,71% Escala 200% 85,48% 100,00% 82,26% 93,55% Rotação 10° 82,26% 98,39% 40,32% 50,00% Rotação 20° 77,42% 91,94% 33,87% 45,16% Rotação 30° 75,81% 90,32% 30,65% 40,32% Rotação 40° 80,65% 95,16% 16,13% 30,65% Rotação 50° 88,71% 98,39% 11,29% 24,19% Rotação 60° 79,03% 93,55% 8,06% 20,97% Rotação 70° 69,35% 91,94% 12,90% 19,35% Rotação 80° 82,26% 95,16% 12,90% 17,74% Rotação 90° 88,71% 100,00% 9,68% 17,74% Rotação -10° 83,87% 96,77% 90,32% 98,39% Rotação -20° 75,81% 96,77% 75,81% 93,55% Rotação -30° 77,42% 95,16% 72,58% 88,71% Rotação -40° 82,26% 96,77% 38,71% 70,97% Rotação -50° 0,00% 0,00% 0,00% 0,00% Rotação -60° 72,58% 95,16% 14,52% 33,87% Rotação -70° 70,97% 95,16% 4,84% 12,90% Rotação -80° 85,48% 96,77% 9,68% 16,13% Rotação -90° 83,87% 98,39% 8,06% 17,74%

54

Figura 6.1 Taxa de acerto – caracteres escala 50%

Figura 6.2 Taxa de acerto – caracteres escala 75%

48,39%

40,32%

67,74%

56,45%

0,00%

10,00%

20,00%

30,00%

40,00%

50,00%

60,00%

70,00%

80,00%

90,00%

100,00%

soma das mínimas distâncias angulares

norma1

Taxa de acerto - escala 50%

valor mínimo

3 menores valores

74,19%

82,26%

95,16% 95,16%

0,00%

10,00%

20,00%

30,00%

40,00%

50,00%

60,00%

70,00%

80,00%

90,00%

100,00%

soma das mínimas distâncias angulares

norma1

Taxa de acerto - escala 75%

valor mínimo

3 menores valores

55

Figura 6.3 Taxa de acerto – caracteres escala 125%

Figura 6.4 Taxa de acerto – caracteres escala 150%

79,03%

38,71%

93,55%

46,77%

0,00%

10,00%

20,00%

30,00%

40,00%

50,00%

60,00%

70,00%

80,00%

90,00%

100,00%

soma das mínimas distâncias angulares

norma1

Taxa de acerto - escala 125%

valor mínimo

3 menores valores

83,87% 88,71%

100,00% 96,77%

0,00%

10,00%

20,00%

30,00%

40,00%

50,00%

60,00%

70,00%

80,00%

90,00%

100,00%

soma das mínimas distâncias angulares

norma1

Taxa de acerto - escala 150%

valor mínimo

3 menores valores

56

Figura 6.5 Taxa de acerto – caracteres escala 175%

Figura 6.6 Taxa de acerto – caracteres escala 200%

87,10%

82,26%

100,00%

88,71%

0,00%

10,00%

20,00%

30,00%

40,00%

50,00%

60,00%

70,00%

80,00%

90,00%

100,00%

soma das mínimas distâncias angulares

norma1

Taxa de acerto - escala 175%

valor mínimo

3 menores valores

85,48% 82,26%

100,00%

93,55%

0,00%

10,00%

20,00%

30,00%

40,00%

50,00%

60,00%

70,00%

80,00%

90,00%

100,00%

soma das mínimas distâncias angulares

norma1

Taxa de acerto - escala 200%

valor mínimo

3 menores valores

57

Figura 6.7 Taxa de acerto – caracteres rotação 10°

Figura 6.8 Taxa de acerto – caracteres rotação 20°

82,26%

40,32%

98,39%

50,00%

0,00%

10,00%

20,00%

30,00%

40,00%

50,00%

60,00%

70,00%

80,00%

90,00%

100,00%

soma das mínimas distâncias angulares

norma1

Taxa de acerto - rotação 10°

valor mínimo

3 menores valores

77,42%

33,87%

91,94%

45,16%

0,00%

10,00%

20,00%

30,00%

40,00%

50,00%

60,00%

70,00%

80,00%

90,00%

100,00%

soma das mínimas distâncias angulares

norma1

Taxa de acerto - rotação 20°

valor mínimo

3 menores valores

58

Figura 6.9 Taxa de acerto – caracteres rotação 30°

Figura 6.10 Taxa de acerto – caracteres rotação 40°

75,81%

30,65%

90,32%

40,32%

0,00%

10,00%

20,00%

30,00%

40,00%

50,00%

60,00%

70,00%

80,00%

90,00%

100,00%

soma das mínimas distâncias angulares

norma1

Taxa de acerto - rotação 30°

valor mínimo

3 menores valores

80,65%

16,13%

95,16%

30,65%

0,00%

10,00%

20,00%

30,00%

40,00%

50,00%

60,00%

70,00%

80,00%

90,00%

100,00%

soma das mínimas distâncias angulares

norma1

Taxa de acerto - rotação 40°

valor mínimo

3 menores valores

59

Figura 6.11 Taxa de acerto – caracteres rotação 50°

Figura 6.12 Taxa de acerto – caracteres rotação 60°

88,71%

11,29%

98,39%

24,19%

0,00%

10,00%

20,00%

30,00%

40,00%

50,00%

60,00%

70,00%

80,00%

90,00%

100,00%

soma das mínimas distâncias angulares

norma1

Taxa de acerto - rotação 50°

valor mínimo

3 menores valores

79,03%

8,06%

93,55%

20,97%

0,00%

10,00%

20,00%

30,00%

40,00%

50,00%

60,00%

70,00%

80,00%

90,00%

100,00%

soma das mínimas distâncias angulares

norma1

Taxa de acerto - rotação 60°

valor mínimo

3 menores valores

60

Figura 6.13 Taxa de acerto – caracteres rotação 70°

Figura 6.14 Taxa de acerto – caracteres rotação 80°

69,35%

12,90%

91,94%

19,35%

0,00%

10,00%

20,00%

30,00%

40,00%

50,00%

60,00%

70,00%

80,00%

90,00%

100,00%

soma das mínimas distâncias angulares

norma1

Taxa de acerto - rotação 70°

valor mínimo

3 menores valores

82,26%

12,90%

95,16%

17,74%

0,00%

10,00%

20,00%

30,00%

40,00%

50,00%

60,00%

70,00%

80,00%

90,00%

100,00%

soma das mínimas distâncias angulares

norma1

Taxa de acerto - rotação 80°

valor mínimo

3 menores valores

61

Figura 6.15 Taxa de acerto – caracteres rotação 90°

Figura 6.16 Taxa de acerto – caracteres rotação -10°

88,71%

9,68%

100,00%

17,74%

0,00%

10,00%

20,00%

30,00%

40,00%

50,00%

60,00%

70,00%

80,00%

90,00%

100,00%

soma das mínimas distâncias angulares

norma1

Taxa de acerto - rotação 90°

valor mínimo

3 menores valores

83,87%

90,32%

96,77% 98,39%

0,00%

10,00%

20,00%

30,00%

40,00%

50,00%

60,00%

70,00%

80,00%

90,00%

100,00%

soma das mínimas distâncias angulares

norma1

Taxa de acerto - rotação - 10°

valor mínimo

3 menores valores

62

Figura 6.17Taxa de acerto – caracteres rotação - 20°

Figura 6.18 Taxa de acerto – caracteres rotação - 30°

75,81% 75,81%

96,77% 93,55%

0,00%

10,00%

20,00%

30,00%

40,00%

50,00%

60,00%

70,00%

80,00%

90,00%

100,00%

soma das mínimas distâncias angulares

norma1

Taxa de acerto - rotação - 20°

valor mínimo

3 menores valores

77,42% 72,58%

95,16%

88,71%

0,00%

10,00%

20,00%

30,00%

40,00%

50,00%

60,00%

70,00%

80,00%

90,00%

100,00%

soma das mínimas distâncias angulares

norma1

Taxa de acerto - rotação - 30°

valor mínimo

3 menores valores

63

Figura 6.19 Taxa de acerto – caracteres rotação - 40°

Figura 6.20 Taxa de acerto – caracteres rotação - 60°

82,26%

38,71%

96,77%

70,97%

0,00%

10,00%

20,00%

30,00%

40,00%

50,00%

60,00%

70,00%

80,00%

90,00%

100,00%

soma das mínimas distâncias angulares

norma1

Taxa de acerto - rotação - 40°

valor mínimo

3 menores valores

72,58%

14,52%

95,16%

33,87%

0,00%

10,00%

20,00%

30,00%

40,00%

50,00%

60,00%

70,00%

80,00%

90,00%

100,00%

soma das mínimas distâncias angulares

norma1

Taxa de acerto - rotação - 60°

valor mínimo

3 menores valores

64

Figura 6.21Taxa de acerto – caracteres rotação - 70°

Figura 6.22 Taxa de acerto – caracteres rotação - 80°

70,97%

4,84%

95,16%

12,90%

0,00%

10,00%

20,00%

30,00%

40,00%

50,00%

60,00%

70,00%

80,00%

90,00%

100,00%

soma das mínimas distâncias angulares

norma1

Taxa de acerto - rotação - 70°

valor mínimo

3 menores valores

85,48%

9,68%

96,77%

16,13%

0,00%

10,00%

20,00%

30,00%

40,00%

50,00%

60,00%

70,00%

80,00%

90,00%

100,00%

soma das mínimas distâncias angulares

norma1

Taxa de acerto - rotação - 80°

valor mínimo

3 menores valores

65

Figura 6.23 Taxa de acerto – caracteres rotação - 90°

83,87%

8,06%

98,39%

17,74%

0,00%

10,00%

20,00%

30,00%

40,00%

50,00%

60,00%

70,00%

80,00%

90,00%

100,00%

soma das mínimas distâncias angulares

norma1

Taxa de acerto - rotação - 90°

valor mínimo

3 menores valores

66

7 CONCLUSÃO

O reconhecimento de caracteres em mapas é um desafio para os métodos de

reconhecimento de caracteres convencionais que utilizam o alinhamento e

ordenação dos caracteres como princípio. Um método eficaz é de extrema

importância para o Exército Brasileiro, pois grande parte do seu acervo de cartas

topográficas encontra-se em formato raster. Neste trabalho buscou-se desenvolver

um método de reconhecimento de caracteres eficaz e robusto contra variações de

escala, rotação e imagens misturadas com caracteres.

Utilizou-se o Código da Cadeia como princípio para desenvolver o método

das direções congruentes que se mostrou mais eficaz na perseguição de borda no

que tange o tempo de execução dos algoritmos, como foi mostrado na seção 6.1 o

método das direções congruentes foi em média 2,23 mais rápido que o método

apresentado por Costa e Cesar (2009). Após obter as assinaturas padrão,

empregando-se o método das direções congruentes, utilizou-se as mesmas para

classificar caracteres que passaram por variações de escala e rotação. Como

métodos de comparação, utilizaram-se a norma unitária e a soma das mínimas

distâncias angulares. Na seção 6.4 mostrou-se que a comparação das assinaturas

pela soma das mínimas distâncias angulares é mais eficiente que a comparação

pela norma unitária tanto nos caracteres com variação de escala tanto quanto nos

caracteres rotacionados.

A taxa de acerto média da comparação da somas das mínimas distâncias

angulares é de 78,98%, ou seja, a cada 5 caracteres reconhecidos haverá 1 erro,

em média. Porém ao considerarmos os 3 mínimos valores encontrados a taxa de

acerto médio sobe para 94,88%. Logo a utilização apenas desse método não é

recomendada mas a utilização do mesmo como um limitador de decisões combinado

com outros índices é o ideal.

Para a continuação da pesquisa é necessário o desenvolvimento de novos

índices de comparação e o desenvolvimento de um método para determinar o

melhor fator de limiarização afim de maximizar a eliminação de ruídos e obter

caracteres melhores para a comparação.

67

REFERÊNCIAS BIBLIOGRÁFICAS

ALVES, Carlos J. S. Análise Numérica. Instituto Superior Técnico. Lisboa. 1997. Disponível em: < http://www.math.ist.utl.pt/~calves/courses/sis-lin/capii13.html>.

APOSTOL, Tom M. Cálculo I: Cálculo com funções de uma variável, com uma introdução à Álgebra Linear. Editorial Reverté. 1988.

COELHO, L; BRITO, J. Fotogrametria Digital. Universidade Estadual do Rio de Janeiro. Edtora UERJ. 2007.

COSTA, L.; CESAR, R. Shape Classification and Analysis: Theory and Practice. CRC Press. Second Edition. 2009.

DIRETORIA DO SERVIÇO GEOGRÁFICO. Baía de Guanabara: Folhas SF-23-Z-B- IV-4 e SF-23-Z-D-I-2. Disponível em: <http://www.geoportal.eb.mil.br/index.php>. 1993.

FREEMAN, H. Computer Processing of Line-drawing Images, Computer Surveys. 1974.

GHOSH, Pijush; DEGUSHI, Koichiro. Mathematics of Shape Description: A morphological approach to image processing and computer graphics. Wiley. Singapore. 2008.

GONZALEZ, R.; WOODS. R. E. Digital Image Processing. Addison – Wesley. 1993.

GONZALEZ, R.; WOODS, R. E.; EDDINS, S. Digital Image Processing using Matlab. Gatesmark Publishing. 2009.

MAIER, Rudolf R. Teoria dos Números: Texto de Aula. Universidade de Brasília. Departamento de Matemática. Versão Atualizada. 2005

MENEZES, Paulo; ALMEIDA, Tati. Introdução ao Processamento de Imagens de Sensoriamento Remoto. UnB. CNPq. Brasília. 2012.

MINISTÉRIO DA DEFESA. EXÉRCITO BRASILEIRO. T34-700: Convenções Cartográfica 2ª Parte. Normas para emprego de símbolos. 2ª Edição. 2002.

68

OTTERLOO, Petrus J. A contour-oriented approach to digital shape analysis. Thesis Delft. 1988.

PEDRINI, H.; SCHWARTZ, W. Análise de Imagens Digitais: Princípios, Algoritmos e Aplicações. São Paulo. Thomson Learning. 2008.

ROBINSON, A. et al. Elements of Cartography. 6th edition. New York. John Wiley & Sons Inc. 1995.

SOLOMON, Chris; BRECKON, Toby. Fundamentos de Processamento Digital de Imagens: uma abordagem prática com exemplos em Matlab. LTC. 2013.

VOLOTÃO, Carlos et al. Using Turning Functions to Refine Shapes. Object Modeling, Algorithms and Applications. Research Publishing Service. 2010.

69

APÊNDICE A – Perseguição de Borda e Geração de Assinatura utilizando o

Código da Cadeia em MatLab

%%%%%%%%%%%%%%%%%%%%%% FUNÇÃO FREEMANCHAINCODE %%%%%%%%%%%%%%%%%%%%%%%%%%%% % Implementada por: Leandro Luiz % ENTRADA: imagem binária (img) % SAÍDA: - Freeman Chain Code da Borda Externa (chcode) % - Tempo de processamento (t) % - Vetor com as coordenadas da borda do objeto (E) % DIREÇÕES(0=S; 1=SE; 2=E; 3=NE; 4=N; 5=NW; 6=W; 7=SW)

function[chcode, t , E]=freemanchaincode(img)

figura=0; %Branco é 1(um) e Preto é 0(Zero)

fundo=1;

sentinela=0;

% dimensões da imagem

x=size(img,1);

y=size(img,2);

% Determinando as coordenadas (x,y) do 1ºPixel do Objeto (MAIS ACIMA E MAIS A ESQUERDA)

for i=1:x

for j=1:(y-1)

PE=[i j]; % Coordenadas do pixel externo

PI=[i j+1]; % Coordenadas do pixel interno

% Condição para determinar o primeiro pixel da cadeia (plano de fundo e objeto)

% Sistema Levógiro da imagem (troca coluna por linha)

if(img(PE(2),PE(1))==fundo && (img(PI(2),PI(1))==figura))

sentinela=1;

E(1,1:2)=PE; % E é um vetor que receberá as coordenadas dos pixels da borda

break

end

end

if sentinela==1

break

end

end

tic

% Determinando o 2º pixel

n=2;

for k=6:10

dE=mod(k,8); % É a direção de E(1,1:2) para o próximo pixel

% PE e PI são 2 dois pixels consecutivos a serem testados

PE=[E(1,1)+sign(cosd(k*45)) E(1,2)+sign(sind(k*45))];

PI=[E(1,1)+sign(cosd((k+1)*45)) E(1,2)+sign(sind((k+1)*45))];

% Condição para determinar o próximo pixel da cadeia (plano de fundo e objeto)

if(img(PE(2),PE(1))==fundo && (img(PI(2),PI(1))==figura))

E(2,1:2)=PE;

d_cn=dE;

chcode(1,1)=dE; % Código de Cadeia

break

end

end

% PRÓXIMOS PIXELS DA CADEIA

while(norm(PE-E(1,1:2))~=0) % Condição de Parada (Chegar ao pixel inicial)

d_pc=d_cn;

% Aqui entra diretamente a função find_next

d_cp=mod((d_pc+4),8); % Corresponde a direção inversa (invert)

for r=0:6

dE=mod(d_cp+r,8);

% PE e PI são 2 dois pixels consecutivos a serem testados

PE=[E(n,1)+sign(cosd((d_cp+r)*45)) E(n,2)+sign(sind((d_cp+r)*45))];

PI=[E(n,1)+sign(cosd(((d_cp+r+1)*45))) E(n,2)+sign(sind((d_cp+r+1)*45))];

% Condição para determinar o próximo pixel da cadeia (plano de fundo e objeto)

if(img(PE(2),PE(1))==fundo && (img(PI(2),PI(1))==figura)&&(norm(PE-E(n-1,1:2))~=0))

n=n+1;

E(n,1:2)=PE;

d_cn=dE;

chcode(1,n-1)=dE;

break

end

end

end

t=toc;

end

70

APÊNDICE B – Perseguição de borda e geração de assinatura utilizando a

Representação pelas Direções Congruentes em MatLab

%%%%%%%%%%%%%%%%%%%%%% FUNÇÃO DIREÇÕES CONGRUENTES %%%%%%%%%%%%%%%%%%%%%%%%%%

% Desenvolvido por: Leandro Luiz

% ENTRADA: imagem binária

% SAÍDA: - Assinatura da forma pelo método das direções congruentes (ass)

% - Tempo de processamento (t)

% - Vetor contendo os pontos da borda (E)

% DIREÇÃO INICIAL = 0 (para baixo)

function[ass, t, E]=dir_congruentes(img)

figura=0; %Branco é 1(um) e Preto é 0(Zero)

fundo=1;

sentinela=0;

% dimensões da imagem

x=size(img,1); % número de linhas

y=size(img,2); % número de colunas

% Recebendo o as coordenadas (x,y) do 1ºPixel do Objeto (MAIS ACIMA E MAIS A ESQUERDA)

for i=1:x

for j=1:(y-1)

PE=[i j]; % Coordenadas do pixel externo

PI=[i j+1]; % Coordenadas do pixel interno

% Condição para determinar o primeiro pixel da cadeia (plano de fundo e objeto)

% Sistema Levógiro da imagem (troca coluna por linha)

if(img(PE(2),PE(1))==fundo && (img(PI(2),PI(1))==figura))

sentinela=1;

E(1,1:2)=PE; % E é um vetor que conterá todas as posições dos pixels da borda

break

end

end

if sentinela==1

break

end

end

tic

% PRÓXIMOS PIXELS DA CADEIA

% Valores iniciais

pref=0; % direção preferencial inicial

n = 1;

PE = [1.1, 1.1]; % Condição: PE tem que ser diferente do primeiro pixel da cadeia

while(norm(PE-E(1,1:2))~=0) % Condição de Parada (Chegar ao pixel inicial)

k=1; % valor inicial de k

for i=1:10 % Para as 8 possibilidades de k

if k>0

dir_E = pref + k -k/abs(k);

dir_I = pref + k;

else

dir_E = pref + k;

dir_I = pref + k -k/abs(k);

end

PE=[E(n,1)+sign(cosd(dir_E*45)) E(n,2)+sign(sind(dir_E*45))];

PI=[E(n,1)+sign(cosd(dir_I*45)) E(n,2)+sign(sind(dir_I*45))];

% Condição para determinar o próximo pixel da cadeia (plano de fundo e objeto)

if(img(PE(2),PE(1))==fundo && (img(PI(2),PI(1))==figura))

ass(1,n)=dir_E;

n=n+1;

E(n,1:2)=PE;

pref = dir_E;

break

else

if k>0

k=-1*k;

else

k = abs(k)+1;

end

end

end

end

t=toc;

end

71

APÊNDICE C – Determinação do tempo médio de processamento e obtenção das assinaturas dos caracteres

%%%%%%%%%%%%%%%%%%%%%%%%%%%% EXPERIMENTO 1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Implementado por: Leandro Luiz

% Geração de Estrutura com as assinaturas e o tempo de processamento por caractere

% Caracteres ALFABÉTICOS

caracteres={'A','B','C','D','E','F','G','H','I','J','K','L',’M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f','g','h',

'i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','0','1','2','3','4','5','6','7','8','9'};

% Structs com as assinaturas dos caracteres

% Utilizando o Código da Cadeia de Freeman

cod_cadeia = struct('caract',caracteres,'chcode',0,'tempo',0);

% Utilizando as direções congruentes

dir_congr = struct('caract',caracteres,'ass',0,'tempo',0);

% Alocando memória para a variavel tempo

tempo=zeros(1,100);

% Abrindo a imagem que contém todos os caracteres

img = imread(uigetfile());

% Obs.: Esta imagem deve ser binária e não conter os pingos no i e j (pois podem gerar problemas de identificação)

% Obtendo as Assinaturas e tempos de processamento das Letras Maiúsculas

for i=1:26

nome=char(i+64); % Para caracteres ASCII alfabéticos 65-90

% Abrindo imagem do respectivo ao caractere

beep

fprintf('Selecione o caractere %c na imagem\n',nome)

selc=imcrop(img);

% "Código da Cadeia de Freeman"

for k=1:100

[chcode t]=freemanchaincode(selc);

tempo(1,k)=t;

end

% Recebendo o vetor com os 100 tempos de processamento

cod_cadeia(i).tempo=tempo;

% Recebendo a código da cadeia associada a caractere

cod_cadeia(i).chcode=chcode;

% "Direções Congruentes"

for k=1:100

[ass t]=dir_congruentes(selc);

tempo(1,k)=t;

end

% Recebendo o vetor com os 100 tempos de processamento

dir_congr(i).tempo=tempo;

% Recebendo a código da cadeia associada a caractere

dir_congr(i).ass=ass;

clear nome chcode selc ass

end

for i=1:26

nome=char(i+96); % Para caracteres ASCII alfabéticos 96-122

% Abrindo imagem do respectivo ao caractere

beep

fprintf('Selecione o caractere %c na imagem',nome)

selc=imcrop(img);

% "Código da Cadeia de Freeman"

for k=1:100

[chcode t]=freemanchaincode(selc);

tempo(1,k)=t;

end

% Recebendo o vetor com os 100 tempos de processamento

cod_cadeia(i+26).tempo=tempo;

% Recebendo a código da cadeia associada a caractere

cod_cadeia(i+26).chcode=chcode;

% "Direções Congruentes"

for k=1:100

[ass t]=dir_congruentes(selc);

tempo(1,k)=t;

end

% Recebendo o vetor com os 100 tempos de processamento

dir_congr(i+26).tempo=tempo;

% Recebendo a código da cadeia associada a caractere

dir_congr(i+26).ass=ass;

clear nome chcode selc ass

end

for i=1:10

nome=char(i+47); % Para caracteres ASCII numéricos 48-57

% Abrindo imagem do respectivo ao caractere

beep

fprintf('Selecione o caractere %c na imagem',nome)

selc=imcrop(img);

% "Código da Cadeia de Freeman"

for k=1:100

[chcode t]=freemanchaincode(selc);

tempo(1,k)=t;

end

% Recebendo o vetor com os 100 tempos de processamento

cod_cadeia(i+52).tempo=tempo;

% Recebendo a código da cadeia associada a caractere

cod_cadeia(i+52).chcode=chcode;

% "Direções Congruentes"

for k=1:100

[ass t]=dir_congruentes(selc);

tempo(1,k)=t;

end

% Recebendo o vetor com os 100 tempos de processamento

dir_congr(i+52).tempo=tempo;

% Recebendo a código da cadeia associada a caractere

dir_congr(i+52).ass=ass;

clear nome chcode selc ass

end

clear i caracteres k t tempo

72

APÊNDICE D – Comparação entre as assinaturas

%%%%%%%%%%%%%%%%%%%%%%%%%%%% EXPERIMENTO 2 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Implementado por: Leandro Luiz % Comparação entre as assinaturas utilizando a norma 1

% Alocando memória para a matriz que irá receber os valores das normas M_cod_cadeia=zeros(62,62); % 62 é o número de caracteres

M_dir_congr =zeros(62,62);

for i=1:62

for j=1:62

% Código da Cadeia de Freeman

a=cod_cadeia(i).chcode;

b=cod_cadeia(j).chcode;

x=numel(a);

y=numel(b);

if x==y

norma1=sum(abs(b-a));

else

if x>y

c=zeros(1,x); % Alocando memória para c

for k=1:x

c(1,k)=b(round(y/x*(k-0.5)+0.5));

end

norma1=sum(abs(c-a));

else

c=zeros(1,y); % Alocando memória para c

for k=1:y

c(1,k)=a(round(x/y*(k-0.5)+0.5));

end

norma1=sum(abs(c-b));

end

end

M_cod_cadeia(i,j)=norma1;

clear a b

% Direções Congruentes

a=dir_congr(i).ass;

b=dir_congr(j).ass;

x=numel(a);

y=numel(b);

if x==y

norma1=sum(abs(b-a));

else

if x>y

c=zeros(1,x); % Alocando memória para c

for k=1:x

c(1,k)=b(round(y/x*(k-0.5)+0.5));

end

norma1=sum(abs(c-a));

else

c=zeros(1,y); % Alocando memória para c

for k=1:y

c(1,k)=a(round(x/y*(k-0.5)+0.5));

end

norma1=sum(abs(c-b));

end

end

M_dir_congr(i,j)=norma1;

clear a b

end

end

73

APÊNDICE E – Processo de Reconhecimento de Caracteres

%%%%%%%%%%%%%%%%%%%%%%%%%%%% EXPERIMENTO 3 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Implementado por: Leandro Luiz

% Comparação entre as assinaturas da imagens submetidas a ROTAÇÃO E ESCALA % com as assinaturas

modelos

% Alocando memória para a matriz que irá receber os valores das mínimas

% diferenças

M_min_dif=zeros(62,62); % 62 é o número de caracteres

M_norma1 =zeros(62,62);

for i=1:62

% Recebendo imagem da estrutura (COLOCAR O NOME DA ESTRUTURA)

img = img_rot_10(i).img; % Abrindo imagem da estrutura

img_pb = limiarizar(img,127); % Operação de limiarização na imagem

% Operção de perseguição de borda do objeto,

% retorna assinatura representada pelas direções congruentes

a=dir_congruentes(img_pb);

a_cod = mod(a,8); % Transformando a no código da cadeia

for j=1:62

% Abrindo assinatura-padrão para comparação

b=dir_congr(j).ass;

b_cod = mod(b,8); % Tranformando b no código da cadeia

x=numel(a);

y=numel(b);

% Comparação pela norma1

if x==y

dif=min_dif(b_cod,a_cod);

norma1=sum(abs(b-a));

else

if x>y

c=zeros(1,x); % Alocando memória para c

c_cod=zeros(1,x); % Alocando memória para c_cod

for k=1:x

c(1,k)=b(round(y/x*(k-0.5)+0.5));

c_cod(1,k)=b_cod(round(y/x*(k-0.5)+0.5));

end

dif=min_dif(c_cod,a_cod);

norma1=sum(abs(c-a));

else

c=zeros(1,y); % Alocando memória para c

c_cod=zeros(1,y); % Alocando memória para c_cod

for k=1:y

c(1,k)=a(round(x/y*(k-0.5)+0.5));

c_cod(1,k)=a_cod(round(x/y*(k-0.5)+0.5));

end

dif=min_dif(c_cod,b_cod);

norma1=sum(abs(c-b));

end

end

M_norma1(i,j)=norma1;

M_min_dif(i,j)=dif;

clear b c b_cod c_cod

end

clear a a_cod

end

M_normas =zeros(62,6);

M_caract =char(zeros(62,6));

for i=1:62

% Obtendo as 3 menores normas para cada caso

[normas_min_dif ordem_min_dif]=sort(M_min_dif(i,1:62));

[normas_norma1 ordem_norma1]=sort(M_norma1(i,1:62));

% Armazena os 3 primeiros valores calculados da min_dif na posição de 1 a 3

M_normas(i, 1:3)=normas_min_dif(1,1:3);

% Armazena os 3 primeiros valores calculados da norma 1 na posição de 4 a 6

M_normas(i, 4:6)=normas_norma1(1,1:3);

% Obtendo os 3 caracteres que possuem menor norma para cada caso

% Armazena os 3 caracteres mais semelhantes calculados pela min_dif na posição de 1 a 3

M_caract(i, 1:3)=[dir_congr(ordem_min_dif(1,1)).caract, ...

dir_congr(ordem_min_dif(1,2)).caract, ...

dir_congr(ordem_min_dif(1,3)).caract];

% Armazena os 3 caracteres mais semelhantes calculados pela norma1 na posição de 4 a 6

M_caract(i, 4:6)=[dir_congr(ordem_norma1(1,1)).caract, ...

dir_congr(ordem_norma1(1,2)).caract, ...

dir_congr(ordem_norma1(1,3)).caract];

end

clear i dif x y normas_min_dif ordem_min_dif normas_norma1 ordem_norma1

74

APÊNDICE F – Matriz de Comparação entre as assinaturas utilizando a Norma1

75

APÊNDICE G – Matriz de Comparação entre as assinaturas utilizando a Soma das Mínimas Distâncias Angulares (com teste de rotação)

Até o momento nenhum comentário
Esta é apenas uma pré-visualização
3 mostrados em 76 páginas