Técnicas de Processamento de Imagem Aplicadas a Problemas ... · Tabela 3.1 – Descritores de...

99
Técnicas de Processamento de Imagem Aplicadas a Problemas de Automação Industrial Sérgio Nuno Furtado de Oliveira Dissertação para obtenção do Grau de Mestre em Engenharia Mecânica Júri Presidente: Doutor João Rogério Caldas Pinto Orientador: Doutor João Rogério Caldas Pinto Vogais: Doutor Paulo Jorge Sequeira Gonçalves Doutor José Luís Carrilho Sequeira Doutor José Manuel Gutierrez Sá da Costa Maio de 2009

Transcript of Técnicas de Processamento de Imagem Aplicadas a Problemas ... · Tabela 3.1 – Descritores de...

Técnicas de Processamento de Imagem Aplicadas a Problemas de Automação Industrial

Sérgio Nuno Furtado de Oliveira

Dissertação para obtenção do Grau de Mestre em

Engenharia Mecânica

Júri

Presidente: Doutor João Rogério Caldas Pinto

Orientador: Doutor João Rogério Caldas Pinto

Vogais: Doutor Paulo Jorge Sequeira Gonçalves

Doutor José Luís Carrilho Sequeira

Doutor José Manuel Gutierrez Sá da Costa

Maio de 2009

i

Resumo

Este trabalho foca-se no desenvolvimento de aplicações de processamento de imagem

para uma câmara inteligente no âmbito da automação industrial. Tendo sido, a câmara

inteligente, adquirida recentemente, foi necessário proceder à instalação de todo o software, à

familiarização com o pacote de rotinas fornecido e sistema operativo da câmara que pode

trabalhar de forma autónoma ao computador, e à sua ligação aos autómatos programáveis. As

aplicações enquadram-se na área do reconhecimento de objectos a partir dos seus contornos,

obtidos através da captura de imagens. Reconhecer objectos é detectar a classe a que

pertencem dentro de um conjunto de classes dadas. Isto envolve a necessidade de extrair

características dos objectos e desenvolver sistemas de decisão automática. Foram usados

sistemas de decisão baseados na teria dos conjuntos fuzzy.

Para descrever a forma do objecto de um modo mais simples são usados descritores de

contorno, mais especificamente descritores de Fourier. Todas as decisões são posteriormente

transferidas para um autómato que actua de acordo com a situação detectada.

Esta câmara mostrou ser de fácil utilização e de fácil montagem. O sistema de

classificação mostrou-se eficaz ao atribuir uma classe aos objectos apresentados.

Palavras-chave: Câmaras Inteligentes, descritores de Fourier, sistemas de classificação fuzzy,

reconhecimento de objectos.

ii

iii

Abstract

This work focuses on the development of applications of image processing for a smart

camera, within the automation industry scope. Since the smart camera was acquired recently, it

was necessary to install the whole software, to get familiarized with the software routines of the

provided package and to the camera operating system, which can work independently form the

computer, and its connection to programmable logic controllers. The applications fall into the

area of recognition of objects from their contours, obtained from the captured images.

Recognize an object is to detect the class to which it belongs within a given set of classes. This

involves the need to extract features form objects and develop systems for automatic decision.

Decision systems based on fuzzy sets were used.

To describe the shape of the object in a more simple way, shape descriptors are used,

more specifically, Fourier descriptors. All decisions are then transferred to a robot that acts

according to what was detected.

This camera has proved to be easy to use and easy to assembly. The classification

system was effective to assign a class to the objects presented.

Keywords: Smart cameras, Fourier descriptors, fuzzy classification systems, recognition of

objects.

iv

v

Agradecimentos

A concretização desta dissertação teria sido difícil sem o apoio de um grupo de pessoas às

quais estou sinceramente agradecido.

Ao Professor Caldas Pinto pela orientação prestada no desenvolvimento desta dissertação,

pela sua disponibilidade e sentido crítico que me conduziu neste período de aquisição de

conhecimentos para um desenvolvimento pessoal e científico na área estudada.

Ao Professor José Luís Sequeira pela ajuda na montagem da plataforma experimental.

À empresa Infaimon, em especial ao Eng. Carles Carreté pelos esclarecimentos prestados no

desenvolvimento de aplicações para a câmara VCM50.

Aos meus colegas, em especial ao Ricardo Pestana e ao Felipe Blanco pelo apoio e pelas

sugestões dadas.

À minha família.

vi

vii

Índice

1 INTRODUÇÃO ....................................................................................................................... 1

1.1 OBJECTIVOS ..................................................................................................................... 2

1.2 CONTRIBUIÇÕES................................................................................................................ 3

1.3 ESTRUTURA DE TESE ......................................................................................................... 3

2 DESCRITORES DE CONTORNOS ....................................................................................... 5

2.1 INTRODUÇÃO..................................................................................................................... 5

2.2 EXTRACÇÃO DE CONTORNOS ............................................................................................. 6

2.3 REPRESENTAÇÃO DE CONTORNOS ..................................................................................... 7

2.3.1 Coordenadas complexas ......................................................................................... 7

2.3.2 Distância ao centróide ............................................................................................. 7

2.3.3 Função curvatura ..................................................................................................... 8

2.3.4 Função angular cumulativa ..................................................................................... 8

2.4 DESCRITORES DE FOURIER ................................................................................................ 9

2.4.1 Normalização do contorno ....................................................................................... 9

2.4.2 A Transformada de Fourier Discreta ..................................................................... 11

2.4.3 FFT (Fast Fourier Tranform) .................................................................................. 13

2.4.4 Normalização da Transformada ............................................................................ 14

2.4.4.1 Translação ......................................................................................................... 14

2.4.4.2 Rotação .............................................................................................................. 14

2.4.4.3 Escala ................................................................................................................ 15

2.4.4.4 Ponto Inicial ........................................................................................................ 15

2.4.5 Exemplo ................................................................................................................. 16

3 SISTEMAS DE CLASSIFICAÇÃO ...................................................................................... 19

3.1 INTRODUÇÃO................................................................................................................... 19

3.2 CLASSIFICADORES FUZZY ................................................................................................ 20

3.2.1 Conjuntos Fuzzy .................................................................................................... 21

3.2.2 O Modelo Takagi-Sugeno ...................................................................................... 25

3.2.3 Identificação dos parâmetros do Modelo TS ......................................................... 26

3.2.4 Exemplo ................................................................................................................. 28

3.3 VALIDAÇÃO DO CLASSIFICADOR ....................................................................................... 29

3.3.1 Razão de erro aparente ......................................................................................... 30

3.3.2 Erro de resubstituição ............................................................................................ 30

3.3.3 Erro de validação ................................................................................................... 30

viii

4 CÂMARAS INTELIGENTES................................................................................................ 33

4.1 INTRODUÇÃO................................................................................................................... 33

4.2 TIPOS DE CÂMARAS INTELIGENTES ................................................................................... 34

4.3 A CÂMARA VCM50 .......................................................................................................... 35

4.3.1 Software ................................................................................................................. 36

4.3.1.1 Graphic Shell ...................................................................................................... 36

4.3.1.2 VCinit.bat ............................................................................................................ 38

4.3.1.3 Software de compilação ..................................................................................... 38

4.3.1.4 Bibliotecas de desenvolvimento ......................................................................... 38

4.3.2 Hardware ............................................................................................................... 39

5 RESULTADOS EXPERIMENTAIS ...................................................................................... 41

5.1 INTRODUÇÃO................................................................................................................... 41

5.2 PLATAFORMA EXPERIMENTAL .......................................................................................... 42

5.2.1 Montagem .............................................................................................................. 42

5.2.2 Câmara .................................................................................................................. 43

5.2.2.1 Algoritmo de decisão.......................................................................................... 44

5.2.3 Autómato ............................................................................................................... 44

5.3 SELECÇÃO DE DESCRITORES ........................................................................................... 45

5.4 CLASSIFICAÇÃO DE OBJECTOS ......................................................................................... 52

5.5 ANÁLISE DE RESULTADOS ................................................................................................ 54

6 CONCLUSÃO E TRABALHO FUTURO ............................................................................. 57

BIBLIOGRAFIA........................................................................................................................... 59

ANEXO A – CARACTERÍSTICAS DA CÂMARA ...................................................................... 63

ANEXO B – INSTALAÇÃO DO SOFTWARE ............................................................................ 67

ANEXO C – DESENVOLVIMENTO DE APLICAÇÕES. ............................................................ 69

ANEXO D – PRINCIPAIS FUNÇÕES DAS BIBLIOTECAS ...................................................... 71

ANEXO E – LISTAGEM DAS FUNÇÕES DE CLASSIFICAÇÃO ............................................. 75

ANEXO F – LIGAÇÕES AO AUTÓMATO ................................................................................. 81

ANEXO G – IMAGENS USADAS ............................................................................................... 83

ix

Índice de ilustrações

Ilustração 2.1 – a) Imagem com perfil em rampa b) imagem com perfil em degrau .................... 7

Ilustração 2.2 - a) Pontos Iguais, b) Ângulos iguais, c) Comprimento de arco iguais. ............... 10

Ilustração 2.3 Representação de um objecto para diferentes pontos de contorno. ................... 11

Ilustração 2.4 – Espectro da Transformada de Fourier............................................................... 12

Ilustração 2.5 - Espectro da Transformada de Fourrier com a origem em N/2 .......................... 13

Ilustração 2.6 a) Objecto, b) Transformada de Fourrier do objecto ............................................ 16

Ilustração 2.7 – FT inversa com diferentes números de coeficientes, a) 64, b) 32, c) 16, d) 8, e)

4, f) 2 ........................................................................................................................................... 17

Ilustração 3.1 – Diagrama de blocos de um FIS ......................................................................... 24

Ilustração 3.2 ............................................................................................................................... 25

Ilustração 4.1 – A Câmara VCM50.............................................................................................. 35

Ilustração 4.2 - Janela inicial do Graphic Shell ........................................................................... 36

Ilustração 4.3 – Graphic Shell (image) ........................................................................................ 37

Ilustração 4.4 – Janela da linha de comandos. ........................................................................... 37

Ilustração 4.5 - Dimensões da câmara ....................................................................................... 39

Ilustração 5.1 – Objectos classificados. ...................................................................................... 42

Ilustração 5.2 – Montagem da Plataforma Experimental ............................................................ 43

Ilustração 5.3 – Diagrama de blocos do software desenvolvido para a câmara ........................ 43

Ilustração 5.4 – Diagrama de blocos do software desenvolvido para o autómato ..................... 44

Ilustração 5.5 – Variância do descritor -2 .................................................................................... 46

Ilustração 5.6 – Variância do descritor -1 .................................................................................... 46

Ilustração 5.7 – Representação dos coeficientes -1 e 2 num plano 2D para 128 pontos no

contorno ....................................................................................................................................... 48

Ilustração 5.8 – Representação dos coeficientes -1 e 2 num plano 2D para 256 pontos no

contorno ....................................................................................................................................... 48

Ilustração 5.9 – Representação dos coeficientes -2 e 2 num plano 2D para 128 pontos no

contorno ....................................................................................................................................... 49

Ilustração 5.10 – Representação dos coeficientes 2 e 3 num plano 2D para 128 pontos no

contorno ....................................................................................................................................... 49

Ilustração 5.11 – Representação dos coeficientes -2 e 3 num plano 2D para 128 pontos no

contorno ....................................................................................................................................... 50

Ilustração 5.12 – Representação dos coeficientes -2 e -1 num plano 2D para 128 pontos no

contorno ....................................................................................................................................... 50

Ilustração 5.13 – Representação dos coeficientes 1 e -2 num espaço bidimensional ............... 51

Ilustração 5.14 – Arquitectura de modelo ................................................................................... 52

Ilustração 5.15 – Funções pertença para a entrada 1 ................................................................ 52

Ilustração 5.16 – Funções Pertença para a entrada 2 ................................................................ 53

Ilustração 5.17 – Superfície ......................................................................................................... 53

x

xi

Índice de Tabelas

Tabela 2.1 – Descritores de Fourier ............................................................................................ 16

Tabela 2.2 – Coeficientes de Fourier para uma imagem em diferentes posições e orientações17

Tabela 3.1 – Descritores de Fourier ............................................................................................ 28

Tabela 3.2 – Parâmetros da função gaussiana .......................................................................... 28

Tabela 3.3 – Grau de pertença e agregação dos antecedentes ................................................. 29

Tabela 3.4 – Parâmetros dos consequentes. ............................................................................. 29

Tabela 5.1 – Configuração dos LED consoante a classe ........................................................... 44

Tabela 5.2 – Média e variância para dois descritores e para cada classe ................................. 45

Tabela 5.3 – Variância das médias dos coeficientes para 128 pontos de contorno ................... 47

Tabela 5.4 – Variância das médias dos coeficientes para 256 pontos de contorno ................... 47

Tabela 5.5 – Variância das médias dos coeficientes para 128 pontos de contorno usando a

representação de coordenadas por distância ao centróide. ....................................................... 51

Tabela 5.6 – Resultado da classificação fuzzy para diferentes pontos usando os coeficientes -1

e 2 ................................................................................................................................................ 54

Tabela 5.7 – Resultado da classificação para uma rede neuronal ............................................. 54

Tabela 5.8 – Resultado da classificação fuzzy para diferentes pontos usando os coeficientes -1

e -2. ............................................................................................................................................. 55

Tabela 5.9 – Resultado da classificação fuzzy para diferentes pontos usando os coeficientes 2

e 3. ............................................................................................................................................... 55

Tabela 5.10 – Resultado da classificação fuzzy para diferentes pontos usando os coeficientes -

2 e 2. ............................................................................................................................................ 55

Tabela 5.11 – Resultado da classificação fuzzy para diferentes pontos usando os coeficientes -

2 e 3. ............................................................................................................................................ 55

xii

1

1 Introdução

O reconhecimento de objectos é uma tarefa diária efectuada pelos seres humanos e está

relacionada com a necessidade de interacção com o meio envolvente dos mesmos. Os

humanos tendem a entender as imagens como sendo compostas por objectos individuais que

podem ser identificados pela sua forma. Quando existe falta de humanos experientes ou

quando a tarefa põe em risco a sua saúde, os sistemas de visão automáticos são os seus

naturais substitutos. O reconhecimento de objectos automatizado pode ser uma ajuda

importante no fabrico e no controlo de qualidade e funcionar continuamente com uma

performance constante e consistente. Esses sistemas têm que ser razoavelmente rápidos e

robustos ao classificar um objecto para que sejam mais eficazes do que um humano. Usar um

humano para reconhecimento de objectos tem a desvantagem de este se distrair ou de se

aborrecer caso a tarefa seja bastante monótona e de não ser suficientemente rápido caso a

cadência de produção assim o exija.

A forma de um objecto é um dos aspectos mais importantes no reconhecimento de

objectos. É relativamente fácil para um humano descrever ou desenhar uma forma simples de

um determinado objecto, entregar essa descrição ou esse desenho a outro ser humano e este

conseguir identificar o objecto em questão. Os sistemas de reconhecimento de objectos

funcionam com base no mesmo princípio, só que, o humano em vez de entregar a descrição a

um outro ser humano entrega ao sistema de visão. Um sistema de visão é composto por um

sensor e por uma unidade de processamento e que caso esteja tudo no mesmo corpo dá-se o

nome de câmara inteligente.

O reconhecimento de formas tem muitas aplicações, incluindo o reconhecimento de

escrita manual ou não [CKZ1994] [Cohen1994], reconhecimento de faces [KP2004], [FC1995],

etc. Na literatura encontra-se muitos sistemas de reconhecimento de formas baseados em

classificadores estatísticos, redes neuronais [MWA1995], ou usando as distâncias Euclidianas

[RM2002]. Quanto a classificadores fuzzy associados a reconhecimento de formas existe

pouca informação e ainda menos quando associado a descritores de Fourier. Contudo,

encontra-se muita literatura acerca de fuzzy clustering e acerca de classificadores fuzzy,

Muitas aplicações de reconhecimento de formas requerem que o objecto seja classificado

em várias posições, orientações e escalas. Adicionalmente, o classificador, também tem que

ser tolerante a um certo número de variações aleatórias na forma do objecto, como é o caso do

ruído. Tipicamente, e em ambiente industrial, as formas são descritas pela sua silhueta num

plano bidimensional. Essas silhuetas planares sem nenhum tipo de oclusão têm o seu contorno

fechado.

2

Uma câmara inteligente é um sistema de visão integrado que inclui um processador que

extrai e executa procedimentos sem ter necessidade de uma unidade de processamento

exterior. Possui interfaces para disponibilizar os resultados a ouros equipamentos, e.g.,

interface Serie RS232, saídas de conexão a um PLC, actuadores, etc. Actualmente na

indústria, as câmaras inteligentes são maioritariamente usadas para distinguir as peças bem

fabricadas das que apresentam defeitos, ou seja, efectuarem o controlo de qualidade, mas

também podem executar outras tarefas, tais como:

Medições sem necessidade de contacto.

Identificação e separação de peças.

Leitura e verificação de códigos (Código de Barras, etc.)

Detecção da posição e da rotação dos elementos de um robot

Vigilância autónoma

1.1 Objectivos

Este trabalho foca-se na compreensão do funcionamento e no desenvolvimento de

aplicações de processamento e reconhecimento de objectos em 2D, através de sistemas de

classificação fuzzy, para uma câmara inteligente existente no laboratório de automação

industrial do Departamento de Engenharia Mecânica. Esta câmara dispõe de um DSP

programável o que permite desenvolvimento de software para a mesma. Esse software é

desenvolvido usando a linguagem de programação ANSI C mas com umas pequenas

alterações, nomeadamente, nas instruções de manipulação de memória.

O software implementado permite o reconhecimento de objectos através do uso de um

sistema de classificação baseado na teoria dos conjuntos fuzzy. Esse sistema fuzzy teve que

ser:

Invariante à rotação

Invariante à translação

Invariante à escala

Invariante ao ponto inicial

Insensível ao ruído.

Para descrever a forma do objecto de um modo mais simples são usados descritores de

contorno, mais especificamente descritores de Fourier. Destes descritores usa-se apenas a

amplitude por ser mais simples de os tornar invariantes.

3

1.2 Contribuições

Foi implementado, pela primeira vez, um sistema inteligente numa câmara inteligente no

laboratório de Automação e Robótica do Departamento de Engenharia Mecânica, mais

especificamente no laboratório de automação industrial. Com este sistema alarga-se a

diversidade de equipamentos pedagógicos existentes no laboratório de automação industrial,

permitindo uma simulação de um ambiente industrial onde este tipo de câmaras é amplamente

usado. Salienta-se ainda que a empresa que forneceu a câmara mostrou-se muito interessada

no aspecto inovador desta aplicação.

Desenvolveu-se software em C que permite classificar objectos conforme a sua forma.

Este software de classificação é baseado nos conjuntos fuzzy, mais especificamente no

modelo de classificação Takagi-Sugeno. Esse software também permite a comunicação entre a

câmara e um autómato.

Desenvolveu-se também uma aplicação para uma bancada de Automação Industrial que

integra um sistema de comando baseado num autómato com a informação fornecida pela

câmara.

Este trabalho também contribuiu para uma melhor compreensão dos descritores de

Fourier quando usados em conjunto com sistemas de classificação.

1.3 Estrutura de tese

Na secção 2 deste documento são apresentados os descritores de contornos, bem como

as diversas representações de contornos mais usadas. Foram usados descritores de Fourier,

para descrever o contorno do objecto, porque existe um algoritmo de cálculo relativamente leve

a nível computacional. Esse algoritmo é explicado na secção 2.4.2. As técnicas e o porquê de

os descritores de Fourier serem fáceis de se tornarem invariantes são explicados na secção

2.4.4. Na secção 2.4.1 expõe-se um método de diminuir o ruído existente na extracção do

contorno através da normalização do mesmo.

Na secção 3 são introduzidos os sistemas de classificação mais usados actualmente. É

feita uma introdução aos classificadores fuzzy e à lógica que está na base deste tipo de

classificadores. Também é apresentada a técnica de clustering usada para agrupar os dados.

Os métodos de validação do modelo do sistema de classificação são baseados nos erros de

classificação. Estes erros são apresentados na secção 3.3.

Na secção 4 é explicado o conceito de câmara inteligente e é feito um apanhado geral

sobre câmara inteligentes e como podem diferir umas das outras. A câmara usada é a VCM50

4

fabricada pela empresa Vision Components. As principais características desta câmara e o

software usado para comunicação e para desenvolvimento estão explicadas na secção 4.2

Na secção 5 é explicado o procedimento experimental usado bem como os resultados

obtidos. Também são explicadas as decisões tomadas na obtenção de descritores de Fourier.

5

2 Descritores de Contornos

Neste capítulo são introduzidos os descritores de contornos, as representações em que o

contorno pode estar definido, e é feita uma introdução aos descritores de Fourier contendo uma

breve explicação de como os usar.

2.1 Introdução

Uma imagem pode ser definida como uma função bidimensional 𝑓(𝑥, 𝑦), em que 𝑥 e 𝑦

são as coordenadas de um ponto no plano e 𝑓(𝑥, 𝑦) representa a intensidade da imagem nesse

ponto. Uma imagem digital é composta por elementos em que as coordenadas e as

intensidades são valores finitos e discretos. Esses elementos de imagem são referidos como

pixéis e representam a sua forma, cor e textura. Os descritores de formas são métodos

matemáticos usados para representar a forma de um objecto de forma mais simples. Os

descritores de formas são divididos em duas categorias, baseados no contorno do objecto

(Descritores de Contornos), que descrevem a forma do objecto a partir da sua fronteira com o

exterior, e os descritores baseados em regiões que descrevem a forma de um objecto

considerando a sua distribuição espacial.

Os descritores de contornos podem ser classificados pela sua invariância às

transformações permitidas na forma do objecto. Muitos descritores são invariantes no que diz

respeito a formas geometricamente iguais, ou seja, ao mudar a escala, ao serem rodadas ou

transladadas os descritores irão ser os mesmos. Dentro dos descritores de contornos existem

os descritores geométricos, código de cadeia, transformada de Fourier, momentos de Zernik,

entre outros. Os descritores geométricos caracterizam a geometria de uma região ou objecto.

Por exemplo existem como descritores geométricos:

Diâmetro efectivo: Diâmetro de um círculo, com a mesma área do objecto;

Circularidade: Razão entre a área de sobreposição do objecto ao círculo equivalente e

a área total do objecto;

Irregularidade: complemento de um da razão entre os perímetros do círculo equivalente

e do objecto;

Compacticidade: Razão entre o quadrado do perímetro e a área do objecto

O código de cadeia aproxima o contorno a uma sequência de segmentos de recta

conectados entre si, dos quais são conhecidos o comprimento e a direcção. Cada segmento é

codificado de acordo com um número que corresponde à sua direcção

6

A transformada de Fourier baseia-se no teorema de Fourier, pelo qual toda função contínua

pode ser decomposta numa soma de funções sinusoidais de frequências variadas. Para o caso

discreto, que é o que interessa para aplicação a imagens digitais, usa-se a Transformada de

Fourier Discreta. Operações, como filtragem, remoção de ruído, convolução e correlação

podem ser executadas mais convenientemente no domínio da frequência. Além disso, no

domínio da frequência, algumas propriedades dos sinais, tais como a periodicidade, que pode

ser associada, por exemplo, à textura da imagem, são destacadas [GWE2002].

Os Momentos de Zernike [KH1990] são uma classe complexa de momentos invariantes,

que consistem em projecções sobre funções polinomiais complexas, as quais formam uma

base ortogonal. Os polinómios de Zernike constituem-se num modelo matemático preciso que

captura o formato global, ao mesmo tempo em que preserva informações locais, por meio de

harmónicas. Eles formam um conjunto ortogonal completo, representando a projecção do mapa

de pixéis da imagem sobre essas funções de base e, se adequadamente implementadas,

podem ser invariantes à escala, rotação e translação. Os momentos de Zernike mostram-se

bastante eficazes na representação de formas complexas compostas por várias regiões

disjuntas.

Outra classe de descritores é invariante no que diz respeito à isometria. Estes

descritores não variam com diferentes representações isométricas do mesmo objecto. A

vantagem destes descritores é a que podem ser aplicados a objectos deformáveis (por

exemplo, as diferentes posturas do corpo humano) desde que estas deformações não alterem

de forma significativa o seu volume ou a sua área.

2.2 Extracção de contornos

Antes do reconhecimento ou da análise de uma imagem, é necessário retirar as

características requeridas da imagem para que a complexidade da imagem seja reduzida a um

nível mais usável pelas máquinas. A extracção de contornos é um método em que a

informação da imagem é compactada para um mínimo de componentes necessários. A

extracção de contornos refere-se a algoritmos que têm como objectivo identificar pontos numa

imagem digital em que a luminosidade apresenta descontinuidades. Idealmente, um contorno é

um conjunto de pixéis interligados, em que cada um deles está localizado onde ocorre a

descontinuidade da luminosidade, ou seja, existe um degrau na intensidade da luminosidade

entre o pixel e o seu vizinho. Na prática, os contornos existentes numa imagem apresentam-se

sempre difusos, tendo um perfil em forma de rampa em vez de degrau, como mostra a

Ilustração 1

7

a)

b)

Ilustração 1 – a) Imagem com perfil em rampa b) imagem com perfil em degrau

Existem muitos métodos para extracção de contornos, mas a maioria pode ser agrupada

em duas categorias, métodos baseados na primeira derivada e os métodos baseados na

segunda derivada. Os métodos baseados na primeira derivada detectam o contorno através da

primeira derivada, e depois procuram a direcção local do máximo da magnitude do gradiente

usando estimativas da orientação do gradiente. Os métodos baseados na segunda derivada

procuram os zeros de uma derivada de segunda ordem para encontrar o contorno. Um outro

método converte a imagem para binário e procura por pontos que contenham pelo menos um

ponto na sua vizinhança que seja o oposto do próprio.

Depois de extraído o contorno é necessário criar um vector ordenado com as

coordenadas dos pontos pertencentes ao contorno. Para o propósito é necessário definir um

ponto inicial. Depois usa-se o mesmo método usado no código de cadeia para percorrer o

contorno mas em vez de se guardar a direcção guarda-se as coordenadas do ponto.

2.3 Representação de Contornos

Em geral a representação de um contorno de um objecto é uma função unidimensional

que descreve áreas bidimensionais ou contornos. Diferentes tipos de representação de formas

têm sido usados para o cálculo dos descritores. Coordenadas complexas, função de curvatura,

função angular cumulativa e distância ao centróide são os mais usados na representação de

formas [ZL2003].

2.3.1 Coordenadas complexas

Uma função de coordenadas complexas é simplesmente um número complexo

𝑧 𝑡 gerado a partir das coordenadas de um ponto t do contorno:

𝑧 𝑡 = 𝑥 𝑡 + 𝑖𝑦 𝑡 , 𝑡 = 1, 2, … , 𝑁 (2.1)

2.3.2 Distância ao centróide

A função de distância ao centróide é expressa pela distância dos pontos do contorno

ao centróide do objecto e é dado por

8

𝑟 𝑡 = 𝑥 𝑡 − 𝑥𝑐 2 + 𝑦 𝑡 − 𝑦𝑐 2 (2.2)

Onde (𝑥𝑐 , 𝑦𝑐) são os centroides do objecto, que são a média das coordenadas do contorno

𝑥𝑐 =1

𝑁 𝑥(𝑡)

𝑁

𝑡=0

, 𝑦𝑐 =1

𝑁 𝑦(𝑡)

𝑁

𝑡=0

(2.3)

Devido à subtracção do centróide, que representa a posição do objecto no espaço, às

coordenadas do contorno, faz com que este método seja invariante à translação.

2.3.3 Função curvatura

A curvatura representa a segunda derivada do contorno e a primeira derivada da

tangente ao contorno. A função da curvatura usada em [KSP1995] é definida como sendo a

diferença de ângulos 𝜃 sucessivos da tangente do contorno calculados para um comprimento

w.

𝐾 𝑡 = 𝜃 𝑡 − 𝜃 𝑡 − 1 , 𝑡 = 0, 1, 2, … , 𝑁 − 1 (2.4)

Onde N é o número de pontos do contorno e

𝜃 𝑡 = arctan 𝑦 𝑡 − 𝑦 𝑡 − 𝑤

𝑥 𝑡 − 𝑥 𝑡 − 𝑤 (2.5)

No entanto, a função definida deste modo tem descontinuidades para comprimento 2𝜋, mas

sendo uma função fechada, pode ser considerada periódica [KSP1995].

𝐾 𝑖 = 𝐾 𝑖 + 𝑁 , 𝑖 = … , −1, 0, 1, …

2.3.4 Função angular cumulativa

O contorno de uma forma também pode ser representado por ângulos, mas devido à

tangente na equação (2.5), 𝜃(𝑡) apenas pode tomar valores entre [−𝜋, 𝜋[ ou [0, 2𝜋[ [ZL2002].

Por isso 𝜃(𝑡) contém descontinuidades de tamanho 2𝜋. Para ultrapassar esse problema é

introduzida a função angular cumulativa 𝜑(𝑡) definida por Zahn e Roskies [ZR1972] como a

razão da quantidade de variação angular entre o ponto inicial e o ponto t no contorno do

objecto

𝜑 𝑡 = 𝜃 𝑡 − 𝜃(0) 𝑚𝑜𝑑 2𝜋 (2.6)

9

Para que fique de acordo com a intuição humana de que um círculo é “disforme” [ZL2002] uma

função angular cumulativa normalizada 𝜓 𝑡 é usada como a representação da forma,

assumindo que o contorno foi obtido numa orientação anti-rotação do relógio.

𝜓 = 𝜑 𝑁

2𝜋𝑡 − 𝑡 (2.7)

Esta representação é invariante à rotação [PF1977], escala e translação podendo os

descritores de Fourier serem usados directamente sem que tenham de ser normalizados.

As quatro representações acima descritas são baseadas nas coordenadas do contorno

e preservam a informação, ou seja, permitem a reconstrução total da forma do contorno

[Otterloo1991].

Como estas representações do contorno dum objecto são diferentes também vão

produzir resultados diferentes na análise dos descritores. Mostra-se em [ZL2002] que para

descritores de Fourier obtidos usando a representação por distância ao centróide, a sua

performance, no geral, é melhor do que se tivesse usado uma das outras representações.

Neste trabalho optou-se pelo uso da representação por coordenadas complexas porque

é a solução que aparenta ter um menor peso computacional.

2.4 Descritores de Fourier

Os descritores de Fourier são amplamente usados para descrever a forma de um

objecto existente numa imagem através de uma representação da sua forma. Estes descritores

são formados pelos coeficientes da função transformada de Fourier discreta (DFT). Esta

operação transforma uma função de variáveis reais ou complexas noutra função de variáveis

complexas. A nova função obtida é a representação no domínio da frequência da primeira

função e descreve quais as frequências presentes nessa mesma função. Nos descritores de

Fourier, as características gerais da forma de um objecto são capturadas pelas frequências

baixas, enquanto as frequências altas capturam os detalhes mais finos. Estes descritores

mostram-se menos sensíveis ao ruído existente, são fáceis de normalizar e de preservar a

informação.

2.4.1 Normalização do contorno

Antes de se aplicar a transformada de Fourier recolhe-se uma amostra fixa de pontos

pertencentes ao contorno do objecto. Sejam duas funções de contorno 𝑏𝑛 = 𝑥𝑛 + 𝑖𝑦𝑛 e 𝑏′𝑛 =

𝑥′𝑛 + 𝑖𝑦′𝑛 do mesmo objecto. Uma medida típica de similaridade é a Distancia Euclidiana, que

10

corresponde à média quadrática do erro e que está directamente relacionada com a correlação

cruzada [RM2002].

𝐷2 𝑏, 𝑏′ = 𝑏 − 𝑏′ 2

𝑁−1

𝑛=0

(2.8)

A relação torna-se ambígua no caso de os vectores com as coordenadas dos contornos terem

dimensões diferentes. Para evitar este problema usa-se um número fixo de pontos

pertencentes ao contorno para calcular os descritores de Fourier.

Este processo tem como consequência alisar o contorno eliminando o seu ruído assim

como os detalhes mais finos. Ao variar o número de pontos da amostra a precisão da

representação é afectada. Quanto maior for o número de pontos a considerar maior será o

detalhe representado, resultando numa maior precisão ao comparar o objecto com o seu

modelo. No caso contrário, um menor número de pontos, irá reduzir a precisão, como se pode

verificar na ilustração 2.2 mas melhora a eficiência computacional. Para facilitar o uso do

algoritmo de cálculo da transformada de Fourier FFT (Fast Fourier Transform), o número de

pontos a considerar terá que ser uma potência do número dois.

Em geral existem três métodos de escolha de pontos, amostragem por pontos iguais,

amostragem por ângulos iguais e amostragem por comprimento de arco iguais [ZL2002].

Sendo K o total de pontos do contorno do objecto a entrarem na amostra, o método de

amostragem por pontos iguais selecciona os pontos candidatos que estão espaçados entre si

por um número igual de pontos do contorno. O método de amostragem por ângulos iguais

selecciona os candidatos que estão espaçados por um ângulo θ = 2π/K. O método de

amostragem por comprimento de arco selecciona os pontos que estão espaçados a um

comprimento de arco igual. O espaço entre dois pontos é dado por P/K onde P é o perímetro

do contorno do objecto. A Ilustração 2 exemplifica os três métodos de escolha, em que os

pontos vermelhos são os pontos escolhidos e o traço azul é o perímetro do contorno. De entre

os três métodos, o de amostragem por comprimento de arco iguais aparentemente atinge um

melhor efeito espacial, porque representa a velocidade de movimento da unidade no contorno

do objecto [Otterloo1991].

a) b) c)

Ilustração 2 - a) Pontos Iguais, b) Ângulos iguais, c) Comprimento de arco iguais.

θ

11

Na Ilustração 3 são exibidas várias representações da mesma imagem mas com diferente

número de pontos no seu contorno, sendo que a imagem i) é a que tem a totalidade dos pontos

(Perímetro). Podemos ver que com 16 pontos já se consegue visualizar o objecto, e que a

partir de 128 pontos esta já está muito semelhante à original.

i) 1597 Pontos ii) 8 Pontos iii) 16 Pontos

iv) 32 Pontos v) 64 Pontos vi) 128 Pontos

Ilustração 3 Representação de um objecto para diferentes pontos de contorno.

Para este trabalho a metodologia para escolher o número de pontos foi baseada na

amostragem por comprimento de arco iguais, porque se considerou todos os pontos do

contorno que neste caso é igual ao perímetro.

2.4.2 A Transformada de Fourier Discreta

A transformada de Fourier discreta (DFT) requer que a função a ser transformada seja

discreta e que os seus valores diferentes de zero sejam finitos. A DFT apenas avalia dados

suficientes para reconstruir o segmento finito que está a ser analisado. Sendo que a função

inicial é uma sequência de números reais ou complexos. A DFT é ideal para processar

informação digital.

Seja uma figura qualquer representada no plano cartesiano através das coordenadas

dos pontos pertencentes ao seu contorno, essa figura pode ser representada no plano

complexo através de uma função unidimensional tal que

𝑧𝑛 = 𝑥𝑛 + 𝑖𝑦𝑛 , 𝑛 = 0, 1, 2, 3, … , 𝑁 − 1 (2.9)

12

Sendo N o numero de pontos escolhidos pertencentes ao contorno e xn e yn as coordenadas do

ponto n no espaço cartesiano. A transformada de Fourier discreta para o elemento k é dada por

𝑍𝑘 = 𝑧𝑛𝑒−𝑖2𝜋𝑘𝑛 𝑁

𝑁−1

𝑛=0

, 𝑘 = 0, 1, 2, 3, … , 𝑁 − 1 (2.10)

Onde os coeficientes Zk são designados por descritores de Fourier do contorno do objecto. A

transformada de Fourier inversa é

𝑧𝑛 =1

𝑁 𝑍𝑘𝑒−𝑖2𝜋𝑘𝑛 𝑁

𝑁−1

𝑘=0

, 𝑛 = 0, 1, 2, 3, … , 𝑁 − 1 (2.11)

Ao escrever as equações desta forma, está-se a fazer uso da fórmula de Euler para

representar sinusóides em exponenciais complexas, que são muito mais fáceis de manipular.

Desta maneira é imediatamente obtido a amplitude e a fase de zn.

A Ilustração 2.4 representa o espectro da transformada de Fourier. Sendo esta

periódica em torno da origem, o espectro representado corresponde a um período de N pontos.

Para obter um período centrado demonstra-se que ao multiplicar 𝑧𝑛 por (−1)𝑛 [GWE2002]

antes de se aplicar a transformada de Fourier, a origem é deslocada para o ponto N/2 como

mostra a ilustração 2.5.

Ilustração 4 – Espectro da Transformada de Fourier

13

Ilustração 5 - Espectro da Transformada de Fourrier com a origem em N/2

Com esta representação torna-se mais fácil a visualização de todo o período e também a sua

manipulação.

2.4.3 FFT (Fast Fourier Tranform)

O algoritmo FFT é um algoritmo eficiente no cálculo da transformada de Fourier

discreta e da sua inversa. A transformada de Fourier discreta decompõem uma sequência de

dados em componentes de diferentes frequências, o que pode ser útil em muitas aplicações,

mas calculando-a pela sua definição requer um elevado nível de computação o que nem

sempre poderá estar disponível, levando a que deixe de ser prático a sua utilização. O

algoritmo FFT é um método de a calcular com menos capacidade computacional e de forma

mais rápida. Usando a definição, o cálculo da transformada para uma sequência de dados com

N pontos, tem uma ordem de N2 operações aritméticas mas ao usar o algoritmo FFT calcula o

mesmo resultado tendo apenas uma ordem de N logN operações [CT1965]. A diferença no

tempo de cálculo pode ser substancial especialmente para dados de grandes dimensões.

Existem muitos algoritmos distintos que podem ser chamados de FFT, mas o mais

usado e o que está implementado no software da câmara é o algoritmo de Cooley-Tukey

Radix-2 DIT. Este algoritmo divide uma transformada de dimensão N em dois intervalos de

dimensão N/2 em cada etapa de cálculo. Primeiro calcula a Transformada dos elementos de

índice par e depois os de índice ímpar e em seguida combina os dois resultados para produzir

a transformada de Fourier da sequência. Esta ideia pode ser feita recursivamente para reduzir

o tempo de cálculo. Esta simplificação assume que N é uma potência de dois (2n), mas como

normalmente se pode escolher o número de pontos a usar esta restrição não constitui um

problema importante.

14

2.4.4 Normalização da Transformada

Na obtenção de formas apenas se está interessado no contorno de formas

semelhantes. A posição, tamanho, e rotação não são importantes. Para que se possa

comparar os descritores de formas, estes têm que ser invariantes à rotação, escala e à

translação. Essas invariâncias são difíceis de se obter no domínio espacial. Muitas das

técnicas existentes para tornar descritores invariantes envolvem grandes quantidades de

computação. No entanto, a invariância é fácil de ser obtida para os descritores de Fourier.

Apesar de em [BCP2005] se mostrar que usando o ângulo da fase e a amplitude consegue-se

obter melhores resultados, a complexidade computacional aumenta devido a ter que se

efectuar cálculos algo complexos para tornar a fase invariante à rotação e ao ponto inicial.

Neste trabalho usou-se apenas a amplitude porque requer menos poder computacional.

2.4.4.1 Translação

A translação pode ser descrita como a soma de um número complexo qualquer z com

todos os elementos pertencentes ao vector zn, que contem as coordenadas do contorno. A

transformada de Fourier discreta tem então a forma

𝑧𝑛 + 𝑧 𝑒−2𝜋𝑖𝑘𝑛 𝑁

𝑁−1

𝑛=0

= 𝑧𝑛𝑒−2𝜋𝑖𝑘𝑛 𝑁

𝑁−1

𝑛=0

+ 𝑧 𝑒−2𝜋𝑖𝑘𝑛 𝑁

𝑁−1

𝑛=0

(2.12)

O primeiro somatório da equação acima corresponde à parte não transladada do vector,

enquanto que o segundo elemento é

𝑒−2𝜋𝑖𝑘𝑛 𝑁

𝑁−1

𝑛=0

= 1 − 𝑒−2𝜋𝑖𝑘𝑛

1 − 𝑒−2𝜋𝑖𝑘𝑛 𝑁 = 0, 𝑘 ≠ 0

𝑁 − 1, 𝑘 = 0

(2.13)

De acordo com a solução anterior a translação irá afectar apenas o primeiro elemento da

transformada de Fourier discreta, sendo que a invariância à translação poderá então ser obtida

eliminando o elemento Z0.

2.4.4.2 Rotação

Seja φ o ângulo de rotação do objecto, esta pode ser descrita como uma multiplicação

de 𝑒−𝜑𝑖 por cada elemento do vector zn. Então a transformada de Fourier discreta é

𝑧𝑛𝑒𝜑𝑖 𝑒−2𝜋𝑖𝑘𝑛 𝑁

𝑁−1

𝑛=0

= 𝑒𝜑𝑖 𝑧𝑛𝑒−2𝜋𝑖𝑘𝑛 𝑁

𝑁−1

𝑛=0

(2.14)

Como 𝑒−𝜑𝑖 = 1, para obter invariância à rotação, é suficiente considerar apenas o valor

absoluto de cada elemento.

15

2.4.4.3 Escala

A escala pode ser descrita como a multiplicação de uma constante c por cada elemento

do vector zn, então a transformada de Fourier discreta é

𝑐𝑧𝑛 𝑒−2𝜋𝑖𝑘𝑛 𝑁

𝑁−1

𝑛=0

= 𝑐 𝑧𝑛𝑒−2𝜋𝑖𝑘𝑛 𝑁

𝑁−1

𝑛=0

(2.15)

A invariância pode ser obtida fazendo que a constante c seja igual ao valor absoluto de um

elemento do vector Z. Como a invariância à translação também é desejada, c não poderá ser

obtido com o elemento Z0 porque o seu valor irá ser alterado com a translação do objecto.

Normalmente é escolhido o elemento Z1, e a invariância à escala é feita dividindo todos os

elementos do vector Z por |Z1|. Z1 é frequentemente chamado como a frequência fundamental

[RM2002] e tem a maior amplitude quando o contorno é traçado no sentido contrário à rotação

do relógio e o contorno não se cruza [W1980]. No caso de se usar a distância ao centróide

para representar o contorno, o elemento a usar seria o Z0.

2.4.4.4 Ponto Inicial

O vector complexo que representa as coordenadas do contorno de um objecto tem que

ter um ponto inicial e um final. A escolha desses pontos não afecta os descritores de Fourier. O

ponto inicial pode ser descrito como uma multiplicação por 𝑒2𝜋𝑖𝑘𝑚 𝑁 , em que m corresponde

ao número de pontos entre o antigo ponto inicial e o novo. Pode-se escrever como

𝑧 𝑛−𝑚 𝑚𝑜𝑑 (𝑁)𝑒−2𝜋𝑖𝑘𝑛 𝑁

𝑁−1

𝑛=0

= 𝑒2𝜋𝑖𝑘𝑚 𝑁 𝑧 𝑛−𝑚 𝑚𝑜𝑑 (𝑁)𝑒−2𝜋𝑖𝑘 (𝑛−𝑚) 𝑁 (2.16)

𝑁−1

𝑛=0

Como a função 𝑒2𝜋𝑖𝑘 (𝑛−𝑚) 𝑁 é periódica, então a equação (2.16) pode ser escrita como

𝑒2𝜋𝑖𝑘𝑚 𝑁 𝑧 𝑛−𝑚 𝑚𝑜𝑑 (𝑁)𝑒−2𝜋𝑖𝑘 (𝑛−𝑚) 𝑁

𝑁−1

𝑛=0

= 𝑒2𝜋𝑖𝑘𝑚 𝑁 𝑧𝑘 (2.17)

Como ao calcular os descritores de Fourier tomam-se os valores absolutos dos coeficientes da

transformada, e sendo 𝑒2𝜋𝑖𝑘𝑚 𝑁 = 1, o ponto inicial não irá ter influência nos descritores. O

ponto inicial só irá influenciar o ângulo da fase.

Todas as propriedades acima descritas aplicam-se para casos ideais. No caso real estas

propriedades são aproximações, mas o seu uso não irá influenciar os resultados de forma

considerável.

16

2.4.5 Exemplo

Seja o objecto da ilustração 2.3 i). Para normalizar o contorno escolhe-se um número de

pontos que seja suficiente para capturar as características do Objecto. Com 64 pontos essas

características são bem capturadas, como mostra a ilustração 2.6 a). Esses pontos são então

multiplicados por (−1)𝑛 , é usada a representação por coordenadas complexas e aplica-se a

transformada de Fourier. Na ilustração 2.6 b) estão representadas as magnitudes da

transformada de Fourier obtida. São essas magnitudes que serão usadas como descritores de

Fourier após uma normalização para que fiquem invariantes à translação, à rotação, à escala e

ao ponto inicial.

a) b)

Ilustração 6 a) Objecto, b) Transformada de Fourrier do objecto

Também se pode usar os ângulos da fase, mas a sua normalização envolve operações

complexas. Na tabela 2.1 são mostrados os descritores de Fourier de maior amplitude, antes e

de depois de serem normalizados

Pontos 29 30 31 32 33 34 35 36

DF 1.05e3 4.12e3 8.61e4 2,527e4 3.23e3 1.9e3 1.97e3 55.26

DF Normalizados

0,32686 1,27550 2,66393 0 1 0,59025 0,60929 0,01708

Tabela 2.1 – Descritores de Fourier

Apesar do número de coeficientes obtidos na transformada de Fourier ser igual ao

número de pontos do contorno escolhidos, apenas uma pequena quantidade desses

coeficientes é necessária para capturar as características gerais da forma. Ao aplicar a

transformada de Fourier inversa aos coeficientes não normalizados, o contorno original é

reposto. A ilustração 2.7 mostra a transformada inversa de Fourier para vários números de

coeficientes. A partir de 4 coeficientes forma do objecto já começa a ser perceptível. Com 16

coeficientes as características gerais da imagem são praticamente capturadas. Mas para um

sistema de classificação, usando apenas dois descritores pode ser suficiente para que o

sistema reconheça o objecto.

17

a)

b)

c)

d)

e)

f)

Ilustração 7 – FT inversa com diferentes números de coeficientes, a) 64, b) 32, c) 16, d) 8, e) 4, f) 2

Na tabela 2.2 são exibidos descritores de Fourier para diferentes posições do mesmo

objecto. A primeira linha corresponde à imagem original a segunda ao objecto rodado, a

terceira representa o mesmo objecto mas para uma escala diferente e a quarta linha é o

objecto transladado.

Descritores de Fourier

-5 -4 -3 -2 -1 2 3 4 5

0,1516 0,1532 0,3607 1,2754 2,7556 0,5892 0,6261 0,0163 0,1026

0,1629 0,1723 0,3185 1,3009 2,6846 0,5902 0,6080 0,0250 0,1020

0,1452 0,1484 0,3670 1,2596 2,7557 0,5842 0,6305 0,0154 0,1003

0,1452 0,1484 0,3670 1,2596 2,7557 0,5842 0,6305 0,0154 0,1003

Média 0,1512 0,1556 0,3533 1,2739 2,7379 0,5870 0,6238 0,0180 0,1013

Variância 6,9E-05 0,00013 0,0005 0,0004 0,0012 1,03E-05 0,0001 2,1E-05 1,4E-06

Tabela 2.2 – Coeficientes de Fourier para uma imagem em diferentes posições e orientações

18

19

3 Sistemas de Classificação

Neste capítulo é introduzido as diferentes classes de sistemas de classificação e é

explicado o funcionamento de um sistema de classificação baseado em conjuntos fuzzy.

3.1 Introdução

Ao avaliar a similaridade entre objectos recorre-se a atributos que são distinguíveis por

natureza. A forma dos objectos é um desses atributos e que difere de objecto para objecto com

maior ou menor grau de similaridade. Para obter uma representação numérica da forma do

objecto recorre-se aos descritores de formas como por exemplo os descritores de Fourier. Se a

escolha dos protótipos de um determinado objecto for adequada é esperado que uma amostra

de outros objectos similares corresponda a um grupo de pontos na vizinhança do protótipo,

num espaço de características de n dimensões. Também, se as características foram bem

escolhidas é esperado que os grupos de pontos de cada classe estejam razoavelmente

separados permitindo uma melhor distinção entre classes. Um sistema de classificação é

usado para interpretar um conjunto de características de um determinado objecto e, consoante

essa interpretação, atribuir uma classe ao objecto.

Na classificação o objectivo é atribuir classes aos objectos com base nas medidas

efectuadas nesses objectos. Este problema tem dois aspectos principais: descriminar e

agrupar. Na aprendizagem não supervisionada as classes são desconhecidas a priori e

necessitam de ser descobertas e discriminadas a partir dos dados. Este processo envolve a

estimação do número de classes e a consequente atribuição das classes aos objectos. Na

aprendizagem supervisionada as classes são previamente definidas e são usados grupos de

aprendizagem contendo objectos devidamente classificados. Com essa informação constrói-se

um sistema de classificação que consiga atribuir uma classe a uma futura observação de um

objecto com uma classificação desconhecida. Muitas vezes os dois tipos de aprendizagem

estão relacionados porque as classes descobertas na aprendizagem não supervisionada são

usadas na aprendizagem supervisionada.

Um classificador C para N classes é um mapeamento de um conjunto de objectos X,

dado o seu vector de características, para um conjunto N (de elementos de 1 a N), i.e. 𝐶: 𝑋 ↦

𝑁 onde C(x) representa a classe de um objecto x dado o seu vector de características. Os

classificadores são construídos ou treinados com base em observações anteriores. São essas

observações que compõem os conjuntos de treino ou de aprendizagem

Existem muitas aproximações diferentes para a construção de um classificador.

Diferentes classificadores irão produzir resultados diferentes tal como as decisões tomadas na

20

selecção de características e na normalização dos dados. Dos vários tipos de sistemas de

classificação, destaca-se os classificadores baseados na vizinhança, na teoria da decisão

estatística, em redes neuronais, na teoria dos conjuntos fuzzy e em support vector machines.

Os classificadores baseados na vizinhança são baseados numa função distância para

pares de observações, como a distância Euclidiana ou a correlação Pearson. Para classificar

um objecto, primeiro escolhe-se um determinado número N de observações e depois escolhe-

se a classe que é a mais comum nas N observações escolhidas.

Os Classificadores baseados na teoria da decisão estatística são classificadores

probabilísticos. Devido à aleatoriedade em que as classes dos padrões são obtidas, as

considerações probabilísticas tornam-se importantes no reconhecimento de padrões. É

possível obter um classificador aproximado, que é óptimo no sentido de que o seu uso produz

a menor probabilidade de cometer erros de classificação [Bishop1995].

As suport vector machines (SVM) foram originalmente desenhadas para classificação

binária mas estas podem ser estendidas para um sistema com múltiplas classes. O método

convencional para o propósito consiste em decompor as N classes do problema em séries de

problemas com duas classes e construir vários classificadores binários. A ideia principal das

SVM é encontrar o melhor hiperplano que separa as duas classes nos dados de treino, i.e. um

que maximize a soma das distâncias entre os pontos correctamente classificados para ambas

as classes e o hiperplano.

As redes neuronais são um modelo matemático baseado nas redes neuronais biológicas.

Consiste em grupos de neurónios interligados. Na maioria dos casos as redes neuronais são

sistemas adaptivos que mudam a sua estrutura com base nos dados externos ou internos que

circulam nos através da rede durante o processo de aprendizagem [Bishop1995]. Estas redes

têm origem em modelos de como um humano pode seleccionar problemas de reconhecimento

de padrões. Apesar de não existir uma total compreensão teórica de como funcionam, dezenas

de pacotes de software têm emergido nos mercados [Rothe1998].

Os classificadores fuzzy são baseados na teoria dos conjuntos fuzzy e foram o sistema

escolhido para a execução deste trabalho.

3.2 Classificadores Fuzzy

Um classificador fuzzy é um sistema de classificação baseado em regras fuzzy e é

composto por três componentes principais: base de dados, base de regras e um método de

raciocínio. A base de dados descreve a semântica dos conjuntos fuzzy associados a etiquetas

linguísticas. Cada regra na base de regras especifica um subespaço no universo de discurso,

ao usar conjuntos fuzzy na parte dos antecedente de uma regra. O método de raciocínio

21

providencia o mecanismo para classificar um padrão usando a informação da base de dados e

da base de regras. Para classificar um determinado padrão de entrada descrito por um vector

X, é calculado o seu grau de compatibilidade com cada regra do sistema.

3.2.1 Conjuntos Fuzzy

O cérebro humano interpreta informação sensorial imprecisa e incompleta proveniente

dos órgãos sensoriais. A lógica fuzzy sugere imprecisão e tenta reproduzir essa interpretação,

ou seja, a lógica fuzzy é uma aproximação, no mundo da informática, da maneira como o

cérebro humano pensa e como resolve problemas. No senso comum a lógica fuzzy refere-se a

conjuntos fuzzy cujos limites estão desfocados e é um sistema lógico que tende a formalizar o

raciocínio [Bih2006]. A teoria dos conjuntos fuzzy providencia um método de cálculo para lidar

com essa informação linguisticamente, e efectua uma computação numérica usando etiquetas

linguísticas estipuladas por funções pertença [JSM1997] e regras if-then. O sistema fuzzy não

possui a adaptabilidade de lidar com mudanças nos ambientes externos apesar de ser

estruturado com regras if-then. A teoria dos conjuntos fuzzy é baseada na lógica fuzzy que é

uma área de pesquisa baseada no trabalho de L. A. Zadeh.

A lógica fuzzy usa variáveis linguísticas e valores de verdade contínuos pertencentes

ao intervalo [0, 1], em vez de decisões binárias {1, 0} (Verdadeiro ou falso). Normalmente a

lógica fuzzy é usada quando o sistema é difícil modelar com exactidão mas se tem um modelo

inexacto. Um sistema fuzzy é tipicamente composto por uma base de regras, funções pertença

e um sistema de inferência. O sistema de inferência Fuzzy (ou FIS, do inglês fuzzy inference

system) é composto por uma selecção de regras if-then que conseguem modelar o raciocínio

humano para uma dada tarefa.

Seja X um conjunto de objectos e x um elemento genérico de X então X = {x}. Um

conjunto A, é definido como uma colecção de objectos x pertencentes a X que possuam uma

característica em comum, em que, para cada x, este pode ou não pertencer a A. Define-se a

função característica para cada elemento x de X pertencente a A como

𝜇𝐴(𝑥): 𝑋 → 0, 1

𝜇𝐴 𝑥 = 1, Se 𝑥 é um membro de 𝐴0, Se 𝑥 não é membro de 𝐴

Se X é uma colecção de objectos x, então um conjunto fuzzy A pertencente a X é

definido como um conjunto de pares ordenados

𝐴 = 𝑥, 𝜇𝐴(𝑥) 𝑥 ∈ 𝑋

22

Onde 𝜇𝐴(𝑥) é chamada função pertença (ou MF, do inglês Membership Function) do conjunto

fuzzy A. A MF atribui a cada elemento de X uma razão de pertença entre 0 e 1. Quanto mais

próximo da unidade se encontra 𝜇𝐴(𝑥) maior é o seu grau de pertença. Usualmente X é

referido como o universo do discurso e é constituído por objectos discretos ou pelo espaço

contínuo. Para um dado conjunto fuzzy caracterizado pela sua função pertença, poderá ser

impraticável listar todos os pares que o definem, especialmente no espaço contínuo, tornando-

se conveniente expressar a MF através de uma equação matemática. As mais comuns são

Triangular

𝑡𝑟𝑖𝑎𝑛𝑔𝑢𝑙𝑜 𝑥; 𝑎, 𝑏, 𝑐 =

0, 𝑥 ≤ 𝑎𝑥 − 𝑎

𝑏 − 𝑎, 𝑎 ≤ 𝑥 ≤ 𝑏

𝑐 − 𝑥

𝑐 − 𝑏, 𝑏 ≤ 𝑥 ≤ 𝑐

0, 𝑐 ≤ 𝑥

(3.1)

Os parâmetros 𝑎, 𝑏, 𝑐 com 𝑎 < 𝑏 < 𝑐 determinam as coordenadas x dos três

vértices do triangulo.

Trapezoidal

𝑡 𝑥; 𝑎, 𝑏, 𝑐, 𝑑 =

0, 𝑥 ≤ 𝑎𝑥 − 𝑎

𝑏 − 𝑎, 𝑎 ≤ 𝑥 ≤ 𝑏

1 𝑏 ≤ 𝑥 ≤ 𝑐𝑐 − 𝑥

𝑐 − 𝑏, 𝑐 ≤ 𝑥 ≤ 𝑑

0, 𝑑 ≤ 𝑥

(3.2)

Os parâmetros 𝑎, 𝑏, 𝑐, 𝑑 com 𝑎 < 𝑏 < 𝑐 determinam as coordenadas x dos quatro

vértices do quadrado.

Gaussiana

É especificada por dois parâmetros 𝑐, 𝜎

𝑓 𝑥, 𝜎, 𝑐 = 𝑒− 𝑥−𝑐 2

2𝜎2 (3.3)

Em que c representa o centro da MF, e 𝜎 a sua largura.

Bell Generalizada

É especificada por três parâmetros 𝑎, 𝑏, 𝑐

𝑏 𝑥, 𝑎, 𝑏, 𝑐 =1

1 + 𝑥 − 𝑐

𝑎 2𝑏

(3.4)

Onde b é normalmente positivo.

Sigmoidal

É definida como

𝑠 𝑥, 𝑎, 𝑏 =1

1 + 𝑒−𝑎 𝑥−𝑐 (3.5)

23

A construção de um conjunto fuzzy depende da identificação de um universo de

discurso adequado e da especificação de uma função pertença apropriada.

Sejam A e B dois Fuzzy sets em que as funções pertença são 𝜇𝐴 𝑥 , 𝜇𝐵(𝑥) respectivamente,

define-se que

Um fuzzy set é vazio se e só se a sua função pertença é identicamente zero em X

Dois fuzzy sets A e B são iguais, ou seja A = B, se e só se 𝜇𝐴 𝑥 = 𝜇𝐵(𝑥) para

qualquer x ∈ X.

O complementar de um fuzzy set é definido como 𝜇𝐴′ 𝑥 = 1 − 𝜇𝐴(𝑥)

A está contido em B se 𝐴 ⊂ 𝐵 ⇔ 𝜇𝐴 ≤ 𝜇𝐵

União entre A e B é 𝐶 = 𝐴 𝐵 => 𝜇𝑐 𝑥 = Max 𝜇𝐴 𝑥 , 𝜇𝐵 𝑥 , 𝑥 ∈ 𝑋.

Intersecção de A com B é 𝐶 = 𝐴 ∩ 𝐵 => 𝜇𝑐 𝑥 = Min 𝜇𝐴 𝑥 , 𝜇𝐵 𝑥 , 𝑥 ∈ 𝑋

O produto algébrico de A com B é definido como 𝐴 ∙ 𝐵, 𝜇𝐴𝐵 = 𝜇𝐴 ∙ 𝜇𝐵

A soma algébrica entre A e B é 𝐴 + 𝐵, 𝜇𝐴𝐵 = 𝜇𝐴 + 𝜇𝐵. Esta operação só tem sentido

se 𝜇𝐴 + 𝜇𝐵 ≤ 1 para todo x.

Diferença absoluta 𝐴 − 𝐵 , 𝜇 𝐴−𝐵 = 𝜇𝐴 − 𝜇𝐵 .

O produto cartesiano 𝐴 × 𝐵 é um fuzzy set em 𝑋 × 𝑌 e

𝜇𝐴×𝐵 𝑥, 𝑦 = min 𝜇𝐴 𝑥 , 𝜇𝐵(𝑦)

O co-produto cartesiano 𝐴 + 𝐵 é um fuzzy set em 𝑋 + 𝑌 e

𝜇𝐴+𝐵 𝑥, 𝑦 = max 𝜇𝐴 𝑥 , 𝜇𝐵(𝑦)

Os conjuntos fuzzy e os operadores fuzzy são os sujeitos e verbos da lógica fuzzy. As

regras if-then são usadas para formular os condicionamentos que compreendem a lógica fuzzy.

Uma regra if-then tem a seguinte forma

𝑆𝑒 𝑥 é 𝐴 𝑒𝑛𝑡ã𝑜 𝑦 é 𝐵

Onde A e B são os valores linguísticos definidos por conjuntos fuzzy no universo de discurso X

e Y, respectivamente. A parte “x é A” é chamada de antecedente e a parte “y é B” de

consequente. Sendo o valor de x representado por um número qualquer o antecedente é a

interpretação que retorna um valor entre 0 e 1. Sendo B representado como um conjunto fuzzy,

o consequente é, então, uma atribuição que atribui B à variável de saída y. Em geral a entrada

de uma regra if-then é o valor da variável x sendo a saída composta pelo conjunto fuzzy.

A Interpretação de uma regra if-then é constituída por duas partes. Primeiro avaliar os

antecedentes, que envolve “fuzzificar” a entrada e aplicar as operações necessárias. A

segunda parte consiste em aplicar o resultado ao consequente. O antecedente de uma regra

pode conter múltiplas partes que terão que ser calculadas em simultâneo e resolvidas entre sim

de modo a produzirem um único valor.

24

𝑆𝑒 𝑥1 é 𝐴1 𝑒 𝑥2 é 𝐴2 𝑒 ⋯ 𝑒 𝑥𝑛 é 𝐴𝑛 𝑒𝑛𝑡ã𝑜 …

O Consequente também pode ter várias partes

… 𝑒𝑛𝑡ã𝑜 𝑦1 é 𝐵1 𝑒 𝑦2 é 𝐵2 𝑒 ⋯ 𝑒 𝑦𝑛 é 𝐵𝑛

Que serão afectadas pelo antecedente de igual modo. Normalmente uma só regra não é

suficientemente para que o sistema seja eficiente. Então é necessário o uso de duas ou mais

regras que terão, para cada uma, uma saída correspondente a um conjunto fuzzy. Esses

conjuntos fuzzy são depois agregados para produzirem apenas uma saída. Para agregar as

regras é usado um sistema de inferência fuzzy (ou FIS).

Um sistema de inferência fuzzy é um sistema que agrega as entradas e calcula a saída

usando os conceitos da teoria dos conjuntos fuzzy, regras if-then e o raciocínio fuzzy. Essa

saída é depois a base das decisões a serem tomadas. Em geral um FIS implementa um

sistema não linear entre as entradas e as saídas. Este sistema é conseguido através de regras

if-then que descrevem o seu comportamento para uma determinada situação. A estrutura

básica de um FIS consiste em três componentes:

Uma base de regras que contém uma selecção de regras fuzzy

Uma base de dados que define as funções pertença usadas nas regras fuzzy

Um mecanismo de raciocínio que executa o procedimento de inferência.

Para que a saída seja crisp é necessário uma “desfuzificação”, como é mostrado na Ilustração

8. Existem dois tipos principais de modelos FIS: o Mandami e o Takagi-Sugeno.

Ilustração 8 – Diagrama de blocos de um FIS

Estes dois sistemas diferem entre si na maneira de como calculam a saída. O sistema

Mandami calcula uma saída fuzzy que depois requer o uso de um “desfuzzificador” para obter

uma saída crisp. O sistema Takagi-Sugeno devolve uma saída já crisp. O sistema de inferência

fuzzy implementado foi o modelo Takagi-Sugeno, porque

O modelo Takagi-Sugeno é computacionalmente mais eficiente porque a complexa

“desfuzzificação” do sistema Mandami é substituída por uma média ponderada.

A saída é uma função das entradas o que torna a sua relação mais explicita.

X (Fuzzy)

(Fuzzy)

(Fuzzy) Desfuzzificador

Regra 1

x é A1 y é B1

w1

x é A2 y é B2

w2

x é An y é Bn

w3

Regra 2

. .

.

Regra n

Agregador

(Crisp ou

Fuzzy)

(Fuzzy)

Y (Crisp)

25

3.2.2 O Modelo Takagi-Sugeno

Uma regra do modelo Takagi-Sugeno é tipicamente dada por:

SE 𝑥1 = 𝐴𝑖1 E 𝑥2 = 𝐴𝑖2 E … E 𝑥𝑛 = 𝐴𝑖𝑛 ENTÃO 𝑜𝑢𝑡𝑝𝑢𝑡 = 𝑦𝑖

Em que

𝑦𝑖 = 𝑎𝑖1𝑥1 + 𝑎𝑖2𝑥2 + ⋯ + 𝑎𝑖𝑛𝑥𝑛 + 𝑏𝑖

A agregação dos antecedentes (𝜇1(𝑥1), 𝜇2(𝑥2), …, 𝜇𝑛(𝑥𝑛 )) pode ser feita através do produto

cartesiano do resultado das funções pertença de uma dada regra:

𝜔𝑖 = 𝜇𝑖1 𝑥1 ∙ 𝜇𝑖2 𝑥2 ∙ ⋯ ∙ 𝜇𝑖𝑛 𝑥𝑛

Ou através do valor mínimo de entre das soluções das funções pertença de uma dada regra.

𝜔𝑖 = min 𝜇𝑖1 𝑥1 , 𝜇𝑖𝑛 𝑥2 , ⋯ , 𝜇𝑖𝑛 𝑥𝑛

A saída do sistema é uma média ponderada dada por:

𝑌 = 𝜔𝑖𝑦𝑖

𝜔𝑖

𝑁

𝑖=1

(3.6)

Em que N corresponde ao numero de regras. 𝜔𝑖 e 𝑦𝑖 podem ser obtidos conforme o diagrama

da Ilustração 9

Ilustração 9

Os sistemas de inferência fuzzy são, normalmente, construídos com base no

comportamento passado do sistema em estudo, com o intuito de que estes sistemas

reproduzam o comportamento desse sistema. A construção de um sistema de inferência fuzzy

⋮ ⋮

µn(xn)

µ2 (x2)

µ1(x1)

𝜔𝑖

𝑦𝑖 𝑎𝑖1𝑥1 + 𝑎𝑖2𝑥2 + ⋯ + 𝑎𝑖𝑛 𝑥𝑛 + 𝑏𝑖

Agregador

Input 1

Input 1 MF X1

xn Input 3 MF

Input n

Input 2

X2 Input 2 MF

26

envolve duas etapas. A primeira etapa consiste na identificação da estrutura e inclui as

seguintes tarefas

Seleccionar as variáveis de entrada e saída relevantes

Escolher o tipo de sistema de inferência fuzzy

Determinar o número de termos linguísticos associados a cada entrada e a cada saida.

No caso do modelo Takagi-Sugeno determinar a ordem das equações dos

consequentes.

Implementar as regras if-then.

A segunda parte consiste na determinação das funções pertença e dos coeficientes de cada

regra para o sistema Takagi-Sugeno, e inclui as seguintes tarefas

Escolher uma família apropriada de funções pertença.

Determinar os parâmetros da função pertença.

Refinar os parâmetros da função pertença recorrendo a técnicas de optimização.

3.2.3 Identificação dos parâmetros do Modelo TS

O modelo TS utiliza a ideia de linearização de uma região fuzzy definida no espaço. As

regiões fuzzy são parametrizadas e cada região está associada a um subsistema linear. Devido

aos antecedentes “fuzzificamente” definidos, os sistemas não lineares formam uma colecção

de múltiplos modelos lineares [AF2004]. O grau de activação de cada regra é proporcional ao

grau de contribuição que cada modelo linear tem na saída do modelo TS. A identificação do

modelo TS é dividida em duas partes

1. Aprendizagem dos antecedentes, que consiste na determinação dos

parâmetros das funções pertença.

2. Determinação dos parâmetros dos consequentes 𝑎1, 𝑎2 , ⋯ , 𝑎𝑛

No desenvolvimento de um modelo TS o problema está em identificar os antecedentes

pertencentes à parte dos dados que necessita de optimização não linear. Essa identificação

consiste numa aprendizagem dos parâmetros dos antecedentes que pode ser resolvida usando

aproximações heurísticas tais como métodos de fuzzy clustering. Os parâmetros dos

antecedentes baseados em fuzzy clustering são obtidos através da análise de dados e do

reconhecimento de padrões, onde o conceito de grau de pertença é usado para representar o

quanto um dado objecto, representado por um vector de características, é similar a um dado

protótipo. Os vectores de características podem ser agrupados em clusters de modo a que os

vectores do mesmo cluster sejam o mais similar possível, e os vectores de outros clusters

sejam o mais diferente possível. Essa similaridade pode ser calculada usando uma medida de

distância adequada. De um modo geral, o fuzzy clustering é aplicado para descobrir regiões no

27

universo das variáveis de entradas e saída, que possam ser aproximados localmente por

modelos simples (modelos lineares) [Babuska1998]. O número de clusters determina o número

de regras do modelo fuzzy obtido. As técnicas de clustering são usadas conjuntamente com a

lógica fuzzy para determinar as localizações iniciais das regras if-then. Essas técnicas são

validadas tendo em conta os seguintes pressupostos [JSM1997].

1. Entradas similares deverão produzir saídas similares, ou seja, o sistema a ser

modelado é bem comportado.

2. Os pares entrada/saída similares nos dados de treino são agrupados em clusters, isto

é, os dados terão que ser agrupados conforme um tipo específico de distribuição.

As técnicas de clustering heurísticas, usadas para identificar a estrutura do modelo fuzzy, mais

representativas são o K-means, fuzzy C-means, o método mountain clustering e o método

subtractivo. Neste trabalho foi usado o método subtractivo.

O método subtractivo foi proposto por [Chiu1994] e consiste em considerar pontos

pertencentes aos dados como os centros dos clusters. Seja uma colecção de pontos

𝑥1 , 𝑥2 , ⋯ , 𝑥𝑛 normalizados e pertencentes a um espaço de dimensão M. Como cada ponto é

candidato a ser o centro de um cluster, uma medida de densidade no ponto 𝑥𝑖 é definida como

𝐷𝑖 = exp − 𝑥𝑖 − 𝑥𝑗

2

𝑟𝑎 2 2

𝑛

𝑗 =1

(3.7)

Onde 𝑟𝑎 é uma constante positiva e define o raio de acção do candidato a centro do cluster.

Quanto maior for o número de pontos dentro do raio de acção maior será a densidade para o

ponto em questão. Após o cálculo da densidade para cada ponto, é escolhido, como primeiro

centro de cluster, aquele que tem maior densidade 𝐷𝑐1. De seguida a densidade para os outros

pontos é revista da seguinte forma

𝐷𝑖 = 𝐷𝑖 − 𝐷𝑐1exp − 𝑥𝑖 − 𝑥𝑐1 2

𝑟𝑏 2 2 3.8

Em que 𝑥𝑐1 é o ponto escolhido para primeiro centro do cluster e 𝑟𝑏 é uma constante positiva

que é definida como a vizinhança que tem uma redução considerável na densidade.

Normalmente a constante 𝑟𝑏 é superior à constante 𝑟𝑎 para que não haja centros muito

próximos uns dos outros. É sugerido por [Chiu1994] que 𝑟𝑏 seja igual a 1,5𝑟𝑎 . Após a revisão

das densidades dos pontos, um novo centro 𝑥𝑐2 é seleccionado e as densidades voltam a ser

revistas tendo em conta este novo centro. Este processo é repetido até que existam suficientes

centros de cluster. Cada centro representa um protótipo que contém certas características do

sistema a modelar. Esses centros poderiam ser usados como os parâmetros das regras fuzzy

de um modelo TS de ordem zero [JSM1997].

28

Com os parâmetros dos antecedentes fixos, a estimação dos parâmetros dos

consequentes, que no modelo TS são equações lineares, podem ser transformados num

problema de erro quadrático mínimo. Seja 𝑋𝑒 = 𝑋, 1 com 𝑋 = 𝑥T , e Γi , com 𝑖 = 1,2, … , 𝑚 em

que m é igual ao numero de regras, uma matriz diagonal em que os elementos da diagonal são

𝑢𝑙 =𝜔𝑖

𝜔𝑗𝑁𝑗=1

(3.9)

Com 𝑙 = 1,2, … , 𝑚. Seja

𝑋′ = Γ1 Xe , Γ2 Xe , ⋯ , Γm Xe (3.10)

𝜃′ = 𝜃1T , 𝜃2

T , … , 𝜃𝑚T T (3.11)

Onde 𝜃𝑖T = 𝑎𝑖

𝑇 , 𝑏𝑖 . A equação (6) pode ser escrita como um modelo de regressão

𝑌 = 𝑋′𝜃′ + 𝑒 (3.12)

Onde 𝑒 é o erro de aproximação. A solução para o problema do mínimo quadrático na

estimação dos parâmetros dos consequentes é

𝜃′ = 𝑋′ T𝑋′ −1(𝑋′)T𝑌 (3.13)

3.2.4 Exemplo

Seja o contorno da ilustração 2.5 em que os descritores normalizados estão na tabela 3.1.

Pretende-se classificar o objecto usando um sistema de classificação com cinco classes.

x -1 2

DF Normalizados

0.9797 0,0052

Tabela 3.1 – Descritores de Fourier

Como são dois descritores o sistema terá que ter duas entradas. As funções de pertença são

baseadas na função Gaussiana, e cujos parâmetros estão na tabela 3.2. O sistema terá cinco

regras porque tem cinco classes.

Ai1 1 2 3 4 5

𝜎 0,071 0,071 0,071 0,071 0,071

𝑐 0,99 0,011 0,49 0,22 0,56

Ai2 1 2 3 4 5

𝜎 0,071 0,071 0,071 0,071 0,071

𝑐 0,0057 0,058 0,08 0,84 0,89

Tabela 3.2 – Parâmetros da função gaussiana

29

O grau de pertença para cada classe é apresentado na tabela 3.3. A agregação dos

antecedentes é feita através do mínimo

i 1 2 3 4 5

MF1i 0,99 0 0 0 0

MF2i 1 1 0,574 0 0

Agregação (ωi) 0,99 0 0 0 0

Tabela 3.3 – Grau de pertença e agregação dos antecedentes

A tabela 3.4 mostra os parâmetros dos consequentes do sistema TS

𝑦𝑖 = 𝑎𝑖1𝑥1 + 𝑎𝑖2𝑥2 + 𝑏𝑖

Em que n = 1, 2, 3, 4, 5.

i 1 2 3 4 5

a1 7,57e-10 2e-7 1,095e-6 5,783 -0,888

a2 -9,667e-11 -5,45e-7 1,43e-6 -2,117 -0,587

b 1 5 2 4,511 4,037

y 1 5 2 10,17 3.164

Tabela 3.4 – Parâmetros dos consequentes.

Para calcular a classe a que o objecto pertence, e sendo um sistema TS, recorre-se à equação

(3.6)

𝑌 = 𝜔𝑖𝑦𝑖

𝜔𝑖

𝑁

𝑖=1

=0,99 × 1 + 5 × 0 + 2 × 0 + 10,17 × 0 + 3,164 × 0

1 + 0 + 0 + 0 + 0= 0,99

Conclui-se que o objecto é da classe 1.

3.3 Validação do Classificador

Um classificador é uma qualquer função 𝐶: 𝑋 ↦ 𝑁 em que D pode ser crisp, fuzzy,

possibilista ou probabilístico. Desenhar um bom classificador significa “achar um bom D”.

Quando é feito com dados de treino, o processo chama-se aprendizagem supervisionada. A

aprendizagem do sistema de classificação consiste em achar os parâmetros de D que

permitam um bom desempenho do classificador. No desenho de um classificador os dados são

normalmente separados num conjunto de treino e num conjunto de testes. Testar um

classificador significa estimar a probabilidade do classificador não classificar correctamente. O

método normal para testar um classificador consiste em submeter os dados de teste ao

classificador e contar os erros de classificação. Existem diferentes representações para o erro.

30

3.3.1 Razão de erro aparente

A razão de erro aparente requer que exista dados de teste e de treino diferentes. Essa

razão de erro é convenientemente tabulada numa matriz 𝑛 × 𝑛 chamada de matriz confusão:

𝐶 = 𝑐𝑖𝑗 = # 𝑎𝑡𝑟𝑖𝑏𝑢𝑖çõ𝑒𝑠 à 𝑐𝑙𝑎𝑠𝑠𝑒 𝑗 𝑚𝑎𝑠 𝑞𝑢𝑒 𝑒𝑟𝑎𝑚 𝑑𝑎 𝑐𝑙𝑎𝑠𝑠𝑒 𝑖

A razão de erro aparente de D quando treinando com os dados de treino 𝑋𝑡𝑟 e testados com os

dados de teste 𝑋𝑡𝑒 é

𝐸𝐷 = 𝑋𝑡𝑒 𝑋𝑡𝑟 = # 𝑒𝑟𝑟𝑎𝑑𝑜𝑠

𝑛𝑡𝑒 = 1 −

# 𝑐𝑒𝑟𝑡𝑜𝑠

𝑛𝑡𝑒 = 1 −

𝑇𝑟(𝐶)

𝑛𝑡𝑒 (3.14)

A equação (3.14) devolve a fracção, entre [0, 1], do número de erros obtidos no teste.

Este erro é função de D e dos conjuntos de teste e treino usados. Sempre que uma destas

variáveis for alterada o erro irá provavelmente ser alterado. 𝐸𝐷 é usualmente o índice de

performance de D, porque mede a extensão para a qual D generaliza os dados de Treino

[BKKP2005]. Neste trabalho só irá ser usado a razão de erro aparente. É uma boa prática

trocar os papeis de 𝑋𝑡𝑒 e de 𝑋𝑡𝑟 , redesenhar D e calcular um novo erro. A este processo

chama-se validação cruzada. Se produzir um erro muito diferente indica que os dados usados

são algo tendenciosos e que devem ser testados e/ou substituídos. A validação cruzada pode

ser repetida k vezes, usando diferentes pares 𝑋𝑡𝑟 , 𝑋𝑡𝑒 para cada teste.

3.3.2 Erro de resubstituição

Ao erro 𝐸𝐷 = 𝑋 𝑋 , ou seja, quando os dados de treino são iguais aos dados de

teste, dá-se o nome de razão de erro de resubstituição. O classificador é treinado usando o

conjunto de dados X, e a estimativa do erro de classificação é obtida fazendo com que o

mesmo conjunto de dados seja usado para testar o classificador. Apesar de esta aproximação

ser simples, a razão do erro de resubstituição pode ser tendenciosamente descendente

[DF2002]. Apesar de esta razão de erro ser mais optimista pode ser a mais indicada para

comparar diferentes sistemas de classificação.

3.3.3 Erro de validação

Esta ideia provem da frequente prática em usar 𝑋𝑡𝑒 para decidir se D está “bem

treinado”, ao calcular repetidamente 𝐸𝐷 = 𝑋𝑡𝑒 𝑋𝑡𝑟 para diferentes parâmetros de D e/ou 𝑋𝑡𝑟 .

31

Ao querer minimizar o erro de teste, D é treinado com 𝑋𝑡𝑟 , testado com 𝑋𝑡𝑒 , e depois repete-se

o ciclo de treino para outras escolhas, até se conseguir um erro aceitável ou mínimo, o que

provoca que 𝑋𝑡𝑒 involuntariamente faça parte de 𝑋𝑡𝑟 . Para ultrapassar esse problema é

comum subdividir 𝑋 em três subconjuntos distintos: 𝑋 = 𝑋𝑡𝑟 ∪ 𝑋𝑡𝑒 ∪ 𝑋𝑣𝑎 , onde 𝑋𝑣𝑎 é chamado

de conjunto de validação.

32

33

4 Câmaras Inteligentes

Neste capítulo introduz-se o conceito de câmara inteligente. Expõe-se as características

da câmara utilizada.

4.1 Introdução

Uma câmara inteligente é um sistema de visão integrado que, em adição à captura de

imagens, inclui um processador, que extrai informação das imagens e executa procedimentos

sem ter necessidade de uma unidade de processamento exterior, e interfaces para

disponibilizar os resultados a ouros equipamentos. Normalmente é um sistema de visão

isolado, com um sensor de imagem dentro de um invólucro de uma câmara de vídeo industrial.

Pode conter todos os interfaces de comunicação, e.g. interface Serie RS232, saídas de

conexão a um PLC, actuadores, etc.

A função principal de um sistema de visão usando câmaras inteligentes é compreender a

imagem e gerar os dados necessários a usar, de maneira autónoma e inteligente. A ideia das

câmaras inteligentes é converter os dados em conhecimento, processando a informação

quando onde esta se torna disponível e transmitir apenas resultados. Estas câmaras não têm

como objectivo em produzir imagens de alta qualidade ao olho humano mas sim tentar

descrever o que está a acontecer nas imagens com o objectivo de tomar a melhor decisão

possível num sistema de controlo autónomo.

Esta arquitectura tem a vantagem de ser mais compacta do que um sistema baseado

num PC e normalmente tem um custo inferior. Tem a desvantagem de não ter um interface de

utilizador ou de este ser muito mais simples do que o do PC. Apesar de serem usadas para

aplicações mais simples, algumas câmaras inteligentes modernas conseguem rivalizar com

alguns PCs em termos de capacidade de Processamento e de funcionalidades.

As principais vantagens de um sistema baseado em câmaras inteligentes versus um

sistema baseado em PC‟s são:

Sistemas de Visão baseados num PC:

Flexibilidade – O PC oferece uma maior flexibilidade no número de opções possíveis.

Por exemplo no PC é possível usar software de outro fabricante.

Poder computacional – Os PC‟s conseguem ter um maior poder de computação. Com

esta capacidade de computação os trabalhos mais pesados são normalmente

entregues a um PC

34

Câmaras inteligentes:

Custo – As câmaras inteligentes geralmente têm um custo de aquisição e de

montagem inferior porque estas incluem a câmara, lentes e cablagem.

Simplicidade – O software disponibilizado com as câmaras são muitas vezes do tipo

aponte e tire e são mais simples de se usar do que os dos PC‟s. O software

normalmente vem pronto a usar não necessitando de mais desenvolvimentos tornando

as câmaras mais rápidas de se instalar.

Integração – Devido à normalização das suas conexões as câmaras inteligentes são

mais fáceis de serem integradas em ambientes industriais.

Fiabilidade – Com menos peças móveis e temperaturas de funcionamento mais baixas

as câmaras inteligentes são mais fiáveis que os PC‟s.

Tendo um processador dedicado em cada unidade, as câmaras inteligentes são

indicadas para um uso onde é necessário conjugar várias câmaras que funcionem

independentemente umas das outras e muitas vezes assincronamente.

Estas câmaras têm sido comercializadas desde da metade da década de 80 do século

XX, mas apenas recentemente começaram a ter uma utilização mais generalizada.

4.2 Tipos de Câmaras Inteligentes

Tipicamente uma câmara inteligente pode ser considerada como sendo um sistema

multifuncional capaz de ser programado para executar qualquer tipo de aplicação. Mas, como

qualquer outro sistema de visão, existem constrangimentos na sua implementação. O software

disponível para a câmara e a velocidade de processamento ditam o quanto de processamento

de imagem e de análise se pode ser executado pela câmara.

Uma câmara inteligente tradicional é composta por uma única caixa que contem um

sensor e uma unidade de processamento. As linhas de comunicação são secundárias e

limitadas, mas muitos dos fabricantes oferecem combinações de entradas e saídas,

capacidade de processamento e sensores para satisfazer as necessidades. Existe um outro

tipo de câmara em que o sensor e o conjunto óptico estão separados da unidade de

processamento. Este sistema tem a vantagem de se poder trocar de sensor sem ter que

substituir o conjunto todo.

As capacidades destes sistemas podem variar desde a simples função de um sensor

presença, até sistemas sofisticados de análise que usam algoritmos sofisticados e rotinas de

aplicações de visão tais como o reconhecimento de padrões, reconhecimento de caracteres,

entre outras.

35

4.3 A câmara VCM50

A câmara VCM50 é uma câmara fabricada pela Vision Components que possui

capacidade de processamento autónomo e de comunicação com um PLC. É uma câmara leve

e compacta. Esta câmara foi desenhada para aplicações industriais e é insensível às vibrações

e aos choques. O aspecto desta câmara pode ser visto na Ilustração 10

Ilustração 10 – A Câmara VCM50

Esta câmara contém o sistema operativo VC/RT que controla todas as funções básicas,

providenciando uma linha de comandos para um fácil acesso aos recursos.

O sistema operativo VC/RT é composto pelos seguintes componentes:

O núcleo (Kernel) que contém os seguintes componentes

o O loader que carrega os programas

o Rotinas controladas por interrupções para tirar e mostrar fotografias

o Rotinas controladas por interrupções para o buffer da interface série

A linha de comandos (Shell) que é um programa carregado pelo loader e que comunica

com o utilizador via a interface série. Esta linha de comandos dispõe de comandos que

podem ser executados directamente. Permite ainda a execução de “Batchfiles”

Varias rotinas que podem ser ligadas aos programas do utilizador

A câmara VCM50 não tem output directo de vídeo. Para mostrar a imagem esta é transformada

em JPEG e depois transferida para um dispositivo capaz de exibir ficheiros JPEG.

36

4.3.1 Software

Esta câmara veio equipada com um conjunto de ferramentas de desenvolvimento e de

comunicação.

4.3.1.1 Graphic Shell

A comunicação entre o PC e a câmara é feita através do interface Serie RS232. Para

carregar programas para a câmara e para descarregar imagens utiliza-se o programa Graphic

Shell fornecido pela empresa que fabrica a câmara. A Ilustração 11 mostra o ambiente gráfico

do programa.

Ilustração 11 - Janela inicial do Graphic Shell

Para conectar o programa à câmara, primeiro clicar em “Hands”, depois escolher a porta COM

na qual a câmara esteja ligada e por fim o “Baud Rate”. Se a ligação for bem sucedida os dois

ícones vermelhos passam a verde.

Ao clicar no botão “Ext. Dir.” é exibido o conteúdo da memoria flash da câmara.

Para carregar programas para a memória flash usa-se o botão “Upload”. O botão “Erase”

apaga todo o conteúdo da memória flash. Ao clicar no botão “Image” é mostrada a janela da

Ilustração 12.

37

Ilustração 12 – Graphic Shell (image)

Em que “Load” descarrega a imagem que está em memória na câmara, “Load New”

descarrega uma imagem nova da câmara, ou seja, a camara tira uma fotografia nova e depois

descarrega-a.

O botão “Chat” exibe a janela mostrada pela Ilustração 13.

Ilustração 13 – Janela da linha de comandos.

Nesta janela são introduzidos os comandos a dar à câmara e são visualizadas as respectivas

respostas.

38

4.3.1.2 VCinit.bat

Antes de começar o desenvolvimento de programas para as câmaras da série VC, o sistema

de desenvolvimento tem que ser configurado para o modelo de câmara a usar. As principais

diferenças entre os vários modelos de câmaras são:

Resolução e tipo de sensor

Frequência de relógio do processador

Tamanho e velocidade de acesso da memória dinâmica

Tamanho e velocidade do flash EPROM

Essa configuração é feita usando VCINIT.BAT

Na linha de comandos do DOS fazer

Vcinit xxx

Onde xxx é o modelo da câmara

4.3.1.3 Software de compilação

O software de compilação usado no desenvolvimento foi o Visual DSP da Analog

Devices. O Visual DSP usa um compilador de ANSI C. No Anexo B explica-se como instalar

este software. No Anexo C está um pequeno exemplo de um programa para a câmara e

algumas considerações a ter ao desenvolver aplicações.

4.3.1.4 Bibliotecas de desenvolvimento

vcrt – Esta biblioteca contem a funções de controlo da câmara, nomeadamente, as

funções de comunicação, manipulação da memoria, controlo do sensor, etc.

vclib – Esta Biblioteca contém as funções de processamento/manipulação da imagem

(Atenção: Nesta biblioteca existe funções que não são compiláveis para a câmara

vcm50.)

vcmlib – Esta biblioteca contem funções adicionais para a câmara vcm50.

macros – Contem macros úteis para o funcionamento das bibliotecas.

Estas bibliotecas são fornecidas pelo fabricante da câmara. No Anexo D está uma pequena

compilação das instruções mais importantes.

39

4.3.2 Hardware

A câmara possui um sensor CCD de digitalização progressiva em escala de cinzentos de

640x480 pixéis. Está alojada num tubo de 30 mm de diâmetro com lentes integradas, LEDs de

iluminação e seis LEDs de indicação.

Dispõe de 8 MB de memória dinâmica e 2 MB de memória Flash para armazenamento

de programas e dados.

A comunicação com a câmara é feita através um interface série RS232 e tem ainda

seis outputs e dois inputs de 24V compatíveis com um PLC (Programmable logic controller). A

Ilustração 14 mostra as dimensões da câmara.

Ilustração 14 - Dimensões da câmara

40

41

5 Resultados Experimentais

Neste capítulo é explicado o método usado para obtenção dos resultados e é mostrado

os resultados.

5.1 Introdução

Para obtenção dos resultados experimentais foram fotografadas os objectos da

ilustração 5.1 em vinte posições diferentes. Depois, o primeiro passo no processamento de

imagem consistiu em binarizar a imagem, em que um simples limite foi aplicado para converter

a imagem em escala de cinzentos numa imagem binária. Na realidade as imagens vêm com

ruído, o que resulta em pontos ou áreas não desejadas à volta das formas obtidas, por isso, um

processo para eliminar esse ruído é normalmente aplicado. O contorno foi então extraído e

ordenado recorrendo ao processamento da secção 2.2. Com o contorno devidamente

ordenado foi então normalizado e obtiveram-se os coeficientes da transformada de Fourier aos

quais foi aplicado a normalização descrita na secção 2.4.1 para que se tornassem invariantes à

rotação, à translação, à escala e ao ponto inicial. De seguida foi desenvolvido o sistema

inteligente baseado na teoria dos conjuntos fuzzy.

O desenvolvimento do modelo fuzzy TS é constituído por três partes

1. Selecção das variáveis de entrada e saída

2. Selecção da estrutura e estimação dos parâmetros.

3. Validação do modelo obtido.

O modelo obtido tem como entradas descritores de formas obtidos através da transformada

de Fourier e tem como saída a classe a que um determinado objecto pertence. A maior

preocupação na escolha do vector de entrada foi a de quantos descritores seriam necessários

para que o modelo TS obtido fosse capaz de distinguir os objectos. Essa escolha é explicada

na secção 5.3. A identificação do modelo e aplicação dos algoritmos de clustering foi efectuada

usando a toolbox fuzzy logic do Matlab. Os modelos foram treinados e validados usando os

contornos de vinte imagens de cada objecto em diferentes posições. Desses vinte contornos

retiraram-se 128 pontos de cada um para cálculo da transformada de Fourier. Dos 126

descritores obtidos após a normalização da transformada de Fourier apenas dois foram

necessários para obter um modelo capaz de identificar os objectos. Com o modelo construído

este foi implementado em C para ser integrado na câmara VCM50

42

Classe 1

Classe 2

Classe 3

Classe 4 Classe 5

Ilustração 15 – Objectos classificados.

5.2 Plataforma Experimental

A plataforma experimental é constituída por uma câmara inteligente VCM50, por um

autómato, por botões interruptores e por uma mesa iluminada. A câmara adquire as imagens e

classifica o objecto existente enviando de seguida essa informação para o autómato.

5.2.1 Montagem

A câmara VCM50 é ligada ao autómato através de ligações compatíveis com PLC. A

Ilustração 16 mostra a plataforma experimental. Foi necessário o uso de uma base iluminada

porque a condições de luminosidade não eram as ideais e como as peças têm um acabamento

brilhante, ao usar o flash da câmara, estas reflectiam demasiada luz não permitindo uma

correcta obtenção da sua forma.

43

Ilustração 16 – Montagem da Plataforma Experimental

Os botões são usados para dar início ao processo de classificação e para terminar o programa

de classificação que está a ser executado na câmara.

5.2.2 Câmara

Para a câmara foi desenvolvido um software para o reconhecimento do objecto. Esse software

tem um funcionamento de acordo com o esquema da Ilustração 17.

Ilustração 17 – Diagrama de blocos do software desenvolvido para a câmara

A binarização é feita usando as funções existentes nas bibliotecas fornecidas. A extracção do

contorno é feita de acordo com o explicado na secção 2.2. Na normalização do contorno foram

usados 128 pontos.

Aquisição

da Imagem Binarização

Extracção

do contorno

Normalização

do contorno

Transformada

de Fourier

Normalização

dos coeficientes

Calculo dos graus

de pertença

Agregação dos

antecedentes

Calculo das

funções Afim

Obtenção

da classe

Comunicação do resultado

ao autómato

A

B

C

D

A – Câmara

B – Autómato

C – Botões

D – Caixa de Luz

44

5.2.2.1 Algoritmo de decisão

O algoritmo de decisão está implementado da seguinte forma:

1. Normalização dos descritores: Os descritores são normalizados para que estejam entre

zero e um

2. Cálculo da Função de pertença associada a cada entrada

3. Agregação dos antecedentes usando o valor mínimo obtido no cálculo das funções de

pertença

4. Cálculo da função Takagi-Sugeno Afim

5. Repetir os procedimentos 2, 3 e 4 para cada regra

6. Obtenção da Saída usando a equação 3.6.

5.2.3 Autómato

A câmara é ligada ao autómato através de quatro saídas e duas entradas binárias de 24V

compatíveis com um PLC. O autómato usado foi um SAIA PCD4 existente no laboratório de

automação do Departamento de Engenharia Mecânica. O software desenvolvido consistiu num

programa que ordenasse a câmara fotografar e depois mostrar o resultado através de três

LEDs, seguindo o esquema da Ilustração 18.

Ilustração 18 – Diagrama de blocos do software desenvolvido para o autómato

Ao pressionar o botão para que a câmara inicie o processo, simula-se a existência de um

sensor num processo automático.

Para exibir os resultados é usada a configuração dos LEDs mostrada na Tabela 5.1.

Classe Vermelho Amarelo Verde

1 1 0 0

2 0 1 0

3 0 0 1

4 1 1 0

5 0 1 1

Erro 1 1 1

Tabela 5.1 – Configuração dos LED consoante a classe

Pressiona

Botão

Activa

câmara

Recebe resultados

da Câmara

Exibe

Resultados

45

5.3 Selecção de Descritores

Para a selecção de pontos a considerar na normalização do contorno descrito na secção

2.4.1, foi calculada a variância e a média para dois descritores que estão na tabela 5.2. Para

esta comparação forma usados os coeficientes -1 e -2 porque para quatro pontos os

coeficientes 0 e 1 são iguais a 0 e 1 respectivamente, devido à normalização explicada na

secção 2.4.4

Classe

1 2 3 4 5

Pontos Descritor 1 2 1 2 1 2 1 2 1 2

4 Média 1,41 3,37 0,828 3,28 0,803 15,2 0,268 3,999 1,768 8,15

Var. 0,022 2,8 0,095 2,47 0,092 297,3 0,0017 6,136 0,109 1,617

8 Média 1,31 2,71 0,717 3,69 0,854 11,6 0,0198 3,411 0,281 12,733

Var. 0,0013 0,0048 0,017 0,104 0,011 10,96 0,0007 0,032 0,0237 1,721

16 Média 1,29 2,67 0,707 3,67 0,764 13,6 0,0204 3,36 0,324 13,43

Var. 0,0006 0,001 0,0069 0,0256 0,006 0,894 0,0005 0,0012 0,0033 0,955

32 Média 1,28 2,66 0,71 3,708 0,764 13,95 0,0204 3,392 0,313 13,56

Var. 9,49E-5 0,0004 0,0617 0,018 0,0063 0,443 0,0004 0,001 0,0041 0,118

64 Média 1,28 2,66 0,711 3,71 0,764 14,04 0,0199 3,384 0,313 13,58

Var. 6,47E-5 0,0003 0,0062 0,016 0,0058 0,398 0,0004 0,0003 0,004 0,162

128 Média 1,28 2,66 0,71 3,71 0,762 14,023 0,02 3,383 0,315 13,56

Var. 6,6E-5 0,0003 0,0062 0,016 0,0059 0,359 0,0004 0,0002 0,004 0,158

256 Média 1,28 2,66 0,71 3,71 0,762 14,018 0,0199 3,383 0,315 13,57

Var. 6,47E-5 0,0003 0,0061 0,0159 0,0059 0,364 0,0004 0,0002 0,0041 0,164

512 Média 1,28 2,66 0,71 3,71 0,761 14,01 0,0199 3,383 0,315 13,574

Var. 6,28E-5 0,0003 0,0061 0,0159 0,006 0,36 0,0004 0,0002 0,0041 0,164

Todos Média 1,28 2,66 0,71 3,711 0,759 13,95 0,0197 3,382 0,315 13,54

Var. 6,11E-5 0,0004 0,006 0,0175 0,0063 0,406 0,0004 0,0002 0,0041 0,2

Tabela 5.2 – Média e variância para dois descritores e para cada classe

Na Ilustração 19 pode-se ver que variância do coeficiente -2 começa a ser

aproximadamente constante a partir dos 32 pontos.

Na Ilustração 20, a variância do descritor -1 só começa a ser aproximadamente

constante a partir de 64 Pontos mas só a partir de 128 pontos é que a classe 3 “estabiliza”.

Sendo assim o numero pontos a usar no trabalho será de 128.

46

Ilustração 19 – Variância do descritor -2

Ilustração 20 – Variância do descritor -1

Na escolha dos coeficientes a usar para treinar o sistema inteligente usou-se os que

apresentavam uma maior variância porque estes apresentam a maior probabilidade de os seus

pontos médios estarem distantes uns dos outros. Na Tabela 5.3 e na Tabela 5.4 pode-se ver

que os que apresentam maior variância são os coeficientes -1 e 2 para 128 e para 256 pontos

0

0,02

0,04

0,06

0,08

0,1

0,12

4 16 64 256 1024

Var

iân

çia

Pontos

Variância do Coeficiente -2

Classe1

Classe 2

Classe 3

Classe 4

Classe 5

0

1

2

3

4

5

6

4 16 64 256 1024

Var

iân

çia

Pontos

Variância do Coeficiente -1

Classe1

Classe 2

Classe 3

Classe 4

Classe 5

47

respectivamente. Apesar de a variância nem sempre garantir que os pontos estão devidamente

separados foi usada como ponto de partida.

Coeficientes

Classe -4 -3 -2 -1 0 1 2 3

1 0,178045 0,322584 1,2838 2,662412 0 1 0,593204 0,604604

2 0,270179 0,47383 0,71034 3,710129 0 1 0,691121 0,170072

3 0,704259 0,774538 0,762025 14,02311 0 1 0,951716 0,7962

4 1,380173 1,123706 0,314813 13,56428 0 1 2,804336 0,473722

5 0,006688 0,630414 0,019958 3,383492 0 1 0,009902 0,202354

Variância 0,303987 0,09435 0,230534 33,50815 0 0 1,12466 0,071001

Tabela 5.3 – Variância das médias dos coeficientes para 128 pontos de contorno

Coeficientes

Classe -4 -3 -2 -1 0 1 2 3

1 0,178031 0,322722 1,28388 2,662464 1 0 0,593255 0,604526

2 0,270158 0,473921 0,710307 3,710096 1 0 0,691347 0,170136

3 0,703915 0,774026 0,762203 14,0183 1 0 0,951046 0,794986

4 1,380967 1,123807 0,314915 13,57016 1 0 2,804612 0,474792

5 0,006507 0,630398 0,019863 3,383124 1 0 0,009781 0,202459

Variância 0,304349 0,094313 0,230585 33,51101 0 0 1,12494 0,070777

Tabela 5.4 – Variância das médias dos coeficientes para 256 pontos de contorno

Na Ilustração 21 e na Ilustração 22 é mostrado a distribuição espacial dos coeficientes -

1 e 2 da transformada de Fourier. Os grupos para cada classe estão claramente separados,

usando apenas dois coeficientes. Então para o sistema de classificação apenas dois

coeficientes serão necessários, mesmo que ao aplicar a transformada inversa a forma não seja

reconstruída.

Pode-se ver que a distribuição espacial não varia com este aumento do número de

pontos a considerar do contorno. O mesmo pode-se concluir pela observação da Ilustração 19

e da Ilustração 20 porque a variância dos coeficientes é aproximadamente constante a partir

dos 128 pontos.

48

Ilustração 21 – Representação dos coeficientes -1 e 2 num plano 2D para 128 pontos no contorno

Ilustração 22 – Representação dos coeficientes -1 e 2 num plano 2D para 256 pontos no contorno

Usando outro par de descritores a distribuição dos coeficientes nem sempre é a

melhor. Na Ilustração 23 podemos ver que a classe 2 e a classe 3 estão sobrepostas em

alguns coeficientes. No caso da Ilustração 24 existe um ponto da classe 2 que poderá ser

atribuído à classe 1 quando for feito o clustering.

0

0,5

1

1,5

2

2,5

3

0 2 4 6 8 10 12 14 16

Co

efi

cie

nte

2

Coeficiente -1

Representação dos coeficientes em 2D(128 Pontos)

Classe 1

Classe 2

Classe 3

Classe 4

Classe 5

0

0,5

1

1,5

2

2,5

3

3,5

0 5 10 15 20

Co

efi

cie

nte

2

Coeficiente 1

Representação dos coeficientes em 2D(256 Pontos)

Classe 1

Classe 2

Classe 3

classe 4

Classe 5

49

Ilustração 23 – Representação dos coeficientes -2 e 2 num plano 2D para 128 pontos no contorno

Ilustração 24 – Representação dos coeficientes 2 e 3 num plano 2D para 128 pontos no contorno

No caso da Ilustração 25 também existe um ponto da classe 2 que está deslocado. Este ponto

pode ter sido derivado do ruído existente já que parece ser por causa do coeficiente 3. Já a

distribuição dos pontos na Ilustração 26 é suficientemente separada para que este par de

descritores também sirva para o sistema de classificação

0

0,5

1

1,5

2

2,5

3

3,5

0 0,2 0,4 0,6 0,8 1 1,2 1,4

Co

efi

cie

nte

2

Coeficiente -2

1

2

3

4

5

0

0,1

0,2

0,3

0,4

0,5

0,6

0,7

0,8

0,9

1

0 0,5 1 1,5 2 2,5 3 3,5

Co

efi

cie

nte

3

Coeficiente 2

1

2

3

4

5

50

Ilustração 25 – Representação dos coeficientes -2 e 3 num plano 2D para 128 pontos no contorno

Ilustração 26 – Representação dos coeficientes -2 e -1 num plano 2D para 128 pontos no contorno

Usando a representação de coordenadas através da distância ao centróide, obteve-se a

média dos descritores de cada classe exibidos na Tabela 5.5, para os primeiros 8 descritores e

para 128 pontos do contorno. De notar que para este tipo de representação de contornos a

transformada de Fourier é simétrica, ou seja o coeficiente -n será igual ao n, e já é invariante à

translação. Para tornar invariante à escala é usado o coeficiente 0.

0

0,1

0,2

0,3

0,4

0,5

0,6

0,7

0,8

0,9

1

0 0,2 0,4 0,6 0,8 1 1,2 1,4

Co

efi

cie

nte

3

Coeficiente -2

1

2

3

4

5

0

2

4

6

8

10

12

14

16

18

0 0,2 0,4 0,6 0,8 1 1,2 1,4

Co

efi

cie

nte

-1

Coeficiente -2

Classe 1

Classe 2

Classe 3

Classe 4

Classe 5

51

Coeficientes

Classe 0 1 2 3 4 5 6 7

1 1 0,224611 0,147744 0,067639 0,02957 0,051307 0,017511 0,018666

2 1 0,227913 0,126263 0,070013 0,036914 0,022043 0,017419 0,005258

3 1 0,309637 0,064981 0,038129 0,026135 0,021213 0,016503 0,012596

4 1 0,290435 0,097055 0,04381 0,011847 0,023584 0,018887 0,009271

5 1 0,252954 0,040756 0,103773 0,03437 0,025914 0,009932 0,012076

Variância 0 0,001429 0,001902 0,000676 9,67E-05 0,000161 1,24E-05 2,42E-05

Tabela 5.5 – Variância das médias dos coeficientes para 128 pontos de contorno usando a representação

de coordenadas por distância ao centróide.

Escolhendo dois descritores e representando-os num espaço bidimensional verifica-se

através da ilustração 5.6 que para este caso a representação por distância ao centróide não é

a solução que apresenta melhores resultados, o que vai contra a conclusão de [ZL2002]. De

notar que nesse caso o sistema de classificação foi outro e foram usados todos os coeficientes

da transformada de Fourier obtidos.

Ilustração 27 – Representação dos coeficientes 1 e -2 num espaço bidimensional

0

0,05

0,1

0,15

0,2

0,25

0,3

0,35

0 0,05 0,1 0,15 0,2 0,25 0,3 0,35 0,4

Representação dos coeficientes 1 e 2 num espaço bidimensional

Classe 1

Classe 2

Classe 3

Classe 4

Classe 5

52

5.4 Classificação de Objectos

Para a classificação foram usados dois descritores de Fourier. Cada um desses

descritores representa uma entrada no sistema sendo a saída a classe a que o objecto

pertence. O sistema foi construído e treinado com base na toolbox Fuzzy Logic do MatLab e

usando as ferramentas do CLAP. Ao aplicar as técnicas de clustering é conveniente que os

pontos de cada classe estejam devidamente separados. Assim um modelo com regras bem

definidas é conseguido. Como com dois descritores apenas se consegue grupos claramente

separados, não é necessário o uso de mais nenhum descritor.

Para obtenção do classificador, os dados foram divididos em dados de treino (75%) e em

dados de validação (25%). O sistema de classificação implementado na câmara é um sistema

com duas entradas e uma saída como se mostra na Ilustração 28.

Ilustração 28 – Arquitectura de modelo

Na Ilustração 29 e na Ilustração 30, estão representadas as funções pertença associadas a

cada cluster e para a entrada 1 e 2 respectivamente.

Ilustração 29 – Funções pertença para a entrada 1

53

Ilustração 30 – Funções pertença para a entrada 2

De notar que para os clusters 1 e 3, as funções de pertença estão muito próximas o que pode

provocar algum erro de classificação. Estes clusters correspondem à classe 1 e 2.

A superfície de resultados é mostrada na Ilustração 31.

Ilustração 31 – Superfície

54

5.5 Análise de Resultados

Os dados foram divididos em dados de treino (75%) e em dados de validação (25%).

Foram executados cem procedimentos de obtenção de um classificador com dados de treino e

validação diferentes. Os resultados obtidos na avaliação dos sistemas de classificação para os

diversos números de pontos do contorno estão exibidos na Tabela 5.6. Nestes resultados

foram usados os coeficientes -1 e 2. Foram medidos o erro máximo e o erro mínimo obtidos na

amostra de cem classificadores. Também foi contabilizada a média do erro que cada

classificador obteve. Na última coluna está o número de classificadores que obtiveram o erro

mínimo.

Nº de Pontos Erro Mínimo (%) Erro Máximo (%) Erro Médio % Erros Mínimos

8 0 0 0 100

16 0 3,33 0,27 92

32 0 0 0 100

64 0 0 0 100

128 0 0 0 100

256 0 0 0 100

512 0 0 0 100

Todos 0 0 0 100

Tabela 5.6 – Resultado da classificação fuzzy para diferentes pontos usando os coeficientes -1 e 2

Ao comparar com os resultados obtidos para um sistema de classificação usando redes

neuronais, mostrados na Tabela 5.7, verifica-se que para um sistema fuzzy a performance, em

geral, é melhor. Este sistema Neuronal é do tipo feed-forward backpropagation que é dos tipos

de redes neuronais mais usado e contém duas camadas com quatro neurónios cada. Na

obtenção dos resultados teve-se o cuidado de usar as mesmas sementes para a escolha

aleatória dos conjuntos de treino e validação.

Nº de Pontos Erro Mínimo (%) Erro Máximo (%) Erro Médio %Erros Mínimos

8 0 100 8,8 44

16 0 20 0,76 90

32 0 44 1,16 91

64 0 40 1,48 88

128 0 64 2,8 85

256 0 60 2,76 86

512 0 60 3,4 83

Todos 0 60 2,56 86

Tabela 5.7 – Resultado da classificação para uma rede neuronal

De notar que nas redes neuronais a partir dos 64 pontos a performance piora.

Na classificação apenas foram necessários cinco clusters, o mesmo número que as

classes existentes, porque os dados estão bem separados, o que indica que a escolha dos

descritores a usar foi acertada. Na escolha da representação do contorno usou-se aquela que

aparentava ser a menos exigente a nível computacional, mas neste caso revelou-se como a

melhor opção.

55

Ao usar outros pares de coeficientes obtiveram-se os resultados mostrados na Tabela 5.8

para os coeficientes -1 e -2, na Tabela 5.9 para os coeficientes 2 e 3, na Tabela 5.10 para os

coeficientes -2 e 2 e na Tabela 5.11 para os coeficientes -2 e 3.

Nº de Pontos Erro Mínimo (%) Erro Máximo (%) Erro Médio %Erros Mínimos

8 0 6,67 1,37 64

16 0 0 0 100

32 0 3,3 0,8 76

64 0 3,3 0,067 98

128 0 3,3 0,17 95

256 0 3,3 0,23 93

512 0 3,3 0,2 94

Todos 0 3,3 0,27 92

Tabela 5.8 – Resultado da classificação fuzzy para diferentes pontos usando os coeficientes -1 e -2.

Nº de Pontos Erro Mínimo (%) Erro Máximo (%) Erro Médio %Erros Mínimos

8 0 23,33 7,3 9

16 0 10 1,5 62

32 0 6,67 0,97 72

64 0 6,67 0,83 76

128 0 3,33 0,8 76

256 0 3,33 0,8 76

512 0 3,33 0,8 76

Todos 0 3,33 0,8 76

Tabela 5.9 – Resultado da classificação fuzzy para diferentes pontos usando os coeficientes 2 e 3.

Nº de Pontos Erro Mínimo (%) Erro Máximo (%) Média %Erros Mínimos

8 0 20 6,5 12

16 0 13,33 2,93 34

32 0 6,67 0,83 80

64 0 6,67 0,8 81

128 0 6,67 0,63 84

256 0 6,67 0,53 87

512 0 6,67 0,6 85

Todos 0 6,67 0,8 81

Tabela 5.10 – Resultado da classificação fuzzy para diferentes pontos usando os coeficientes -2 e 2.

Nº de Pontos Erro Mínimo (%) Erro Máximo (%) Média %Erros Mínimos

8 0 26,67 11,97 2

16 0 3,33 0,7 79

32 0 3,33 0,93 72

64 0 3,33 0,93 72

128 0 3,33 0,93 72

256 0 3,33 0,93 72

512 0 3,33 0,93 72

Todos 0 3,33 0,93 72

Tabela 5.11 – Resultado da classificação fuzzy para diferentes pontos usando os coeficientes -2 e 3.

56

Destas tabelas verifica-se que nenhuma destas combinações consegue ter melhores

resultados do que a combinação entre os coeficiente -1 e 3. De um certo ponto de vista seria

de esperar porque em alguns casos, os pontos não estão suficientemente separados para

produzirem bons clusters. Assim sendo destaca-se a importância que é a selecção dos

descritores a usar num sistema inteligente.

Nos testes feitos com o sistema implementado na câmara o tempo de execução variou

entre os dois segundos e os cinco segundos, dependendo do tamanho do contorno. Este

tempo poderá ser ainda ser reduzido bastando, para isso, aplicar um algoritmo de extracção de

contornos que esteja optimizado para esta câmara. A performance do sistema de classificação

foi bastante satisfatória porque identificou correctamente os objectos pressupostos em várias

posições e em todas as vezes que foram submetidos ao ensaio.

57

6 Conclusão e Trabalho Futuro

Este trabalho abordou o uso de câmaras inteligentes como sistemas de identificação de

objectos para uso industrial e pedagógico. Foi utilizada uma câmara inteligente com a

possibilidade de executar programas criados localmente. Foi desenvolvido um sistema de

classificação baseado nos conjuntos fuzzy usando descritores de Fourier.

A câmara VCM50 é uma câmara de fácil montagem e funcionamento. Mostrou-se capaz

de executar procedimentos de classificação baseados em sistemas inteligentes sem perda de

performance, o mesmo acontecendo ao calcular os descritores de Fourier. A maior perda de

performance surgiu no tratamento de imagem para obtenção dos descritores de Fourier, que

varia conforme o tamanho do contorno do objecto. De salientar que a parte do tratamento de

imagem não foi aprofundada podendo ainda ser optimizada para diminuir os tempos de cálculo.

Um problema que a câmara apresentou foi que a iluminação própria revelou-se ser pouco

usável quando as peças, a serem fotografadas, têm um acabamento brilhante. Uma iluminação

mais difusa talvez resolvesse o problema. Para este caso foi necessário o uso de uma mesa

iluminada e de um método de iluminação com uma maior difusão da luz, sendo esse método a

luz ambiente do laboratório de automação industrial.

O sistema inteligente baseado em conjuntos fuzzy mostrou ser bastante eficaz apenas

com dois descritores de Fourier, mesmo quando estes eram calculados usando poucos pontos

do contorno do objecto. Muito provavelmente esta performance se deva ao facto de as peças

serem suficientemente diferentes sendo fácil a obtenção de clusters devidamente separados.

Estes sistemas inteligentes foram rápidos de se treinar e são simples de se implementar. No

entanto a situação complica-se quando o número de regras aumenta, mas apenas na parte de

escrita do código, porque é necessário a introdução de todos os parâmetros necessários.

Os descritores de Fourier, neste caso, conseguiram representar a forma de um objecto de

forma bastante satisfatória, apesar de existirem combinações de pares de descritores que não

consigam ter performances óptimas. Esta também poderá ser a causa de em alguns trabalhos

existentes a performance não atingir resultados mais próximos do óptimo, porque têm em conta

todos os coeficientes da transformada de Fourier o que pode introduzir ruído. Estes descritores

são relativamente rápidos de serem calculados e fáceis de os tornar invariantes à translação,

rotação e à escala. São ideais para estas situações onde a capacidade computacional é

limitada.

58

Em geral a solução apresentada para um sistema de reconhecimento de objectos usando

uma câmara inteligente teve um bom desempenho, podendo ser usada em ambientes

industriais sem grande perda de performance.

Como desenvolvimentos futuros propõe-se a optimização do processo de tratamento de

imagem para que diminua o tempo gasto pela câmara para classificar um objecto, o estudo de

outras arquitecturas de redes neuronais, e de outros sistemas inteligentes, para servir de

comparação com o trabalho aqui apresentado e um estudo sobre a influência que cada

coeficiente da transformada de Fourier irá ter no processo de decisão.

59

Bibliografia

[AF2004] Angelov, P. P. e Filev, P. D. (2004), An Approach to Online Identification of Takagi-

Sugeno Fuzzy Models, IEEE Transactions on Systems, Man and Cybernetics – Part B:

Cybernetics, VOL. 34, NO. 1, pp 484-498.

[AJ2007] Ahmad, S.M.F. e Jahromi M.Z. (2007), Constructing Accurate Fuzzy Classification

Systems: A new approach using weighted fuzzy rules, Computer Graphics, Imaging and

Visualization, pp 408-414.

[Babuska1998] Babuska, R. (1998), Fuzzy Modeling for Control. Kluwer: Boston, MA.

[BCP2005] Bartolini, I., Ciaccia, P. e Patella M. (2005), WARP: Accurate Retrieval of Shapes

Using Phase of Fourier Descriptors and Time Warping Distance, IEEE Transactions on Pattern

Analysis and Machine Intelligence, Vol. 27, No. 1, pp 142-147.

[Bishop1995] Bishop, C. M. (1995), Neural Networks for Pattern Recognition, Oxford University

Press. Oxford.

[Bih2006] Bih, Joseph. (2006), Paradigm shift – An introduction to fuzzy logic, IEEE Pontentials,

pp 6-10, 21.

[BKKP2005] Bezdek, J. C., Keller, J., Krinapuram, R. e Pal, N. R. (2005) Fuzzy Models and

Algoritms for Patern Recognition and Image Processing, Springer, USA.

[Chiu1994] Chiu, S. L. (1994), Fuzzy model identification based on cluster estimation. Journal of

Intelligent and Fuzzy Systems, vol 2, pp. 267-278.

[CKZ1994] M. Chen, A. Kundu, e J. Zhou. (1994), Off-line handwritten word recognition using a

hidden Markov model type stochastic network. IEEE Trans. Pattern Anal. Mach. Intel., vol. 16,

pp. 481–496.

[Cohen1994] Cohen, E. (1994), Computational theory for interpreting handwritten text in

constrained domains, Artif. Intell., vol. 67, pp. 1–31.

[CT1965] Cooley, W. e Tukey, J. W. (1965) An Algorithm for the Machine Calculation of

Complex Fourier Series, Mathematics of Computation, vol. 19, pp. 297-301.

[DF2003] Dudoit, S. e Fridlyand, J. (2003), Classification in microarray experiments. In

Statistical Analysis of Gene Expression Microarray Data, Chapman & Hall, pp 124, U.S.A.

60

[FC1995] Fadzil, M.H.A. e Choon, L. C. (1995), Fourier descriptors and neural networks far

shape classification, International Conference on Acoustics, Speech, and Signal Processing,

1995. ICASSP-95. vol.5, pp 3435-3438

[GWE2002] Gonzalez R. C., Woods E. R. e Eddins S. L. (2002), Digital Image Processing using

Matlab, 2nd

Edition, Prantice Hall.

[HKKR1999] Hoppner F, Klawonn F, Kruse R, Runkler T. (1999) Fuzzy Cluster Analysis and

Methods for Classification, Data Analysis and Image Recognition. Wiley.

[JSM1997] Jang, J. S., Sun, C. T. e Mizutani, E. (1997), Neuro-Fuzzy and Soft Computing: A

Computational Approach to Learning and Machine Intelligence. Prentice Hall, New Jersey,

1997.

[KH1990] Khotanzad, A. e Hong, Y. H. (1990) Invariant image recognition by Zernike

moments, IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol 12-5, pp489-

497.

[KP2004] Kwak, K-C e Pedrycz, W. (2004), Face recognition using fuzzy Integral and wavelet

decomposition method, IEEE Transactions on Systems, Man, and Cybernetics, Part B:

Cybernetics, Vol. 34-4, pp 1666-1675

[KSP1995] Kauppinen, H., Seppanen, T. e Pietikainen, M. (1995) An Experimental Comparison

of Autoregressive and Fourier-Based Descriptors in 2D Shape Classification. IEEE Transactions

PAMI, Vol. 17(2) pp 201-207.

[MWA1995] McElroy, T., Wilson, E. e Anspach, G. (1995), Fourier Descriptors and Neural

Networks for Shape Classification, International Conference on Acoustics, Speech, and Signal

Processing. ICASSP-95.

[NS2007] Nayak, P. C. e Suheer, K. P. (2007) Fuzzy model identification based on cluster

estimation for reservoir inflow forecasting, Hydrological Processes, Vol 22, pp 827-841

[Otterloo1991] Otterloo, Peter J. van. (1991), A contour-Oriented Approach to Shape Analysis.

Prentice Hall International (UK) Ltd.

[Pao1989] Pao, Y. (1989) Adaptive Pattern Recognition and Neural Networks. Reading, MA:

Addison-Wesley, 1989.

[PF1977] Eric Persoon e King-sun Fu. (1977), Shape Discrimination Using Fourier Descriptors.

IEEE Trans. On Systems, Man and Cybernetics, Vol.SMC-7(3), pp 170-179.

[RM2002] Rafiei, D e Mendelzon A. O. (2002), Efficient retrieval of similar shapes, The VLDB

Journal 11: 17–27.

61

[Rothe1998] Rothe, H. (1998), Approaches to Pattern Recognition In Advanced Pattern

Recognition Techniques, RTO/NATO, 1.1-1.29.

[Schalkoff1992] Schalkoff, R. (1992), Pattern Recognition-Statistical, Structural and Neural

Approaches. Wiley, New York.

[W1980] Wallace T. P. e Wintz P. A. (1980) An efficient three dimensional aircraft recognition

algorithm using normalized Fourier descriptors. Comput Graph Image Process, 13:99–126.

[Z1965] Zadeh, L. A. (1965), Fuzzy Sets, Information and control, vol 8, pp 338-353.

[ZL2002] Zhang, D. e Lu, G.(2002), A Comparative Study on Shape Retrieval Using Fourier

Descriptors with Different Shape Signatures, In Proceedings of the Sixth Digital Image

Computing, Techniques and Applications (DICTA02), Melbourne, Australia. Pp. 86-91.

[ZL2002a] Zhang, D. e Lu G.(2002), Enhanced Generic Fourier Descriptors for Object-Based

Image Retrival, In Proceedings of the International Conference on Acoustics, Speech, and

Signal Processing (ICASSP 2002), Orlando, Florida, USA.

[ZL2003] Zhang D e Lu G. (2003), A comparative study of curvature scale space and Fourier

descriptors for shape-based image retrieval, Journal of Visual Communication & Image

Representation 14: 41–60.

62

63

Anexo A – Características da Câmara

Informações Gerais

Câmara VCM50 é baseada num sensor CCD de digitalização progressiva em escala de

cinzentos de 640x480 pixéis.

Este sensor tem um DSP (Digital Signal Processor) de alta performance, com 80 KBytes de

memória interna, que executa todos os processamentos necessários.

Esta câmara foi desenhada para aplicações industriais e são insensíveis às vibrações e aos

choques.

A comunicação com a câmara é feita através um interface serie RS232 e tem ainda I/Os de

24V compatíveis com um PLC (Programmable logic controller)

As Imagens JPG podem ser transferidas pela interface serie.

Estrutura Básica

A câmara vem com uma cobertura NEMA41 IP65

2 que inclui um anel de LEDS e uma Micro

lente de vídeo

Internamente a câmara e constituída por três placas principais

Descrição Função

Placa do Sensor Controla e recebe os sinais do sensor CCD Produz o vídeo e os sinais de relógio

Placa do CPU Digitaliza o sinal de vídeo Placa completa de processamento de sinal Interface PLC, Interface de serie, Fonte de alimentação de 3W

Placa de memória Contem 8MB de DRAM

1 Computer enclosures constructed for either indoor or outdoor use to provide a degree of protection to

personnel against incidental contact with the enclosed equipment; to provide a degree of protection against falling dirt, rain, sleet, snow, windblown dust, splashing water, and hose-directed water; and that will be undamaged by the external formation of ice on the enclosure 2 Degrees of Protection Provided by Enclosures (6 - Dust-tight, 5 - Protected against water jets.)

64

Especificações Técnicas

Sensor 1/4 „‟ Progressive scan Sony ICX098-AL-6

Nº efectivo de pixéis 640(H) x 480(V)

Pixel size 5,6(H) x 5,6(V) µm

Chip size 4,6(H) x 3,97(V) mm

Dynamic Range 60 dB

Programmable Gain 1-40 (255 steps)

High speed shutter 24us, 104us, 184us, … @ clk = 9,375 MHz

12us, 52us, 92us, … @ clk = 18,75 MHz

Low speed shutter Up to 2 s adjustable in 0,5 ms steps

Binning 1x, 2x, 4x

Integration Full frame progressive scan

Picture taking Without delay, program-controlled or triggered externally, full

frame

A/D conversion 8/10 bit

Image display On a PC or Handheld by JPEG transfer via serial interface

Overlay None

Frame rate 25 fps for VGA resolution / Options for 50 fps VGA, 100 fps

@640x240, 100 fps @640x120 using binning mode

Processor Analog Devices ADSP2185 signal processor @ 75 Hz

Image/data memory 8 Mbytes dynamic memory

Memory capacity 14 full-size images 640x480

Flash EPROM 512 or 2 MB Kbytes for programs and data, programmable in

the system

Process interface 2 inputs / 4 outputs, 24V, outputs 4x400mA / LED monitoring

Output protection 0,5 – 2,0 A over current protection + internal thermal

protection

Serial interface 10 mA current loop (non-standard (max 115200 Baud))

Galvanic separation Standard RS232 (V24) by converter in serial cable connector

Video output Only by JPEG Transfer via serial interface

Illumination Built-in, 8 high-efficiency white LED‟s

Power supply Built-in switching power supply

Supply voltage 24V +/- 10% unregulated, DC, max 50 mA (1,2W)+1600 mA

(38W) for digital I/O

Electrical connections VCM sensor connector (12 pin)

Operating temperature -5 C to 45 C, 80% relative humidity, noncondensing

Storage temperature -25 C to 60 C, 95% relative humidity, noncondensing

65

Ligações à câmara

A ligação da câmara ao mundo exterior é feita através do cabo VCM RS232/V24. Este cabo

tem um conector fêmea Lumberg 0322-12 que conecta na câmara, uma interface RS232 para

comunicação a um PC e 4 Outputs/2 Inputs para comunicação com um PLC.

Atribuição dos pinos do conector e da câmara

Sinal Pinos na Câmara Pinos no Conector

Cor do Cabo

V24 RxD+ 1 B Branco

V24 RxD- 2 V Castanho

V24 TxD+ 3 D Verde

V24 TxD- 4 E Amarelo

IN0 5 K Cinzento

IN1 6 A Cor-de-rosa

OUT0 7 F Azul

OUT1 8 G Roxo

OUT2 9 H Cinzento/Cor-de-rosa

OUT3 10 J Vermelho/Azul

VCC +24V 11 M Vermelho

GND 12 L Preto

Ilustração A1 - Configuração dos Pinos no Conector

66

Saída para o conector RS232

Sinal PCB Cor do Cabo

V24 RxD+ 1 Branco

V24 RxD- 2 Castanho

V24 TxD+ 3 Verde

V24 TxD- 4 Amarelo

67

Anexo B – Instalação do Software

Nesta parte irão ser descrito os passos para instalar o software fornecido com a câmara.

1. Instalação do software de compilação

a. Caso exista alguma versão existente é necessário desinstalá-la.

b. Aceder à pasta onde está o software e configurar o ficheiro setup.exe para que

corra com compatibilidade com Windows 98/Me.

c. Executar o setup.exe. Irá abrir uma janela de dialogo com os passo a seguir.

d. Depois indicar as opções pedidas

e. Modificar o directório de instalação para “c:\adsp”

f. De seguida indicar o tipo de instalação que queremos realizar.

g. E começa o processo de cópia dos arquivos para o directório de instalação

2. Modificação do ficheiro autoexec.bat.

Após a instalação do software há que modificar alguns parâmetros do arquivo autoexec.bat

Editar o arquivo e escrever as seguintes linhas:

SET PATH="C:\adsp";"%PATH%"SET

PATH="C:\adsp\System";"%PATH%"

3. Alterar as Variaveis de sistema

Alterar a variável “path” acrescentando “c:\adsp; C: \adsp\System”

4. Instalação da biblioteca vcrt 2.3

a. Aceder à pasta onde se encontra a instalação

b. Executar o arquivo VRT23_setup.exe

c. Instalar na pasta “c:\adsp”, ira avisar que a pasta já existe e perguntará se

queremos instalar nesse directório. Respondemos que sim.

d. Clicar no “Install”.

5. Instalação das Bibliotecas vclib

a. Aceder à pasta onde se encontra a instalação

b. Executar o arquivo ADSP-VCLIB20+Ext_setup.exe

c. Instalar na pasta “c:\ADSP”, ira avisar que a pasta já existe e perguntará se

queremos instalar nesse directório. Respondemos que sim.

d. Clicar no “Install”.

6. Instalação do programa de comunicação Graphic Shell.

Este programa não requer instalação estando pronto a ser executado a partir da pasta em

que se encontra.

68

69

Anexo C – Desenvolvimento de Aplicações.

Antes de começar a desenvolver é necessário executar o batch file “VCinit.bat” que se encontra

dentro da directoria “C:\adsp\21xx\work” da seguinte maneira:

C:\adsp\21xx\work>VCinit.bat VCM50

Esta aplicação irá configurar as bibliotecas a serem usadas pelo compilador.

Para desenvolver o código pode-se usar um programa qualquer de edição de texto.

Caso se utilize as bibliotecas fornecidas pelo fabricante é conveniente que elas apareçam com

a seguinte ordem:

#include <cam0.h>

#include <vcrt.h>

#include <vcmlib.h>

#include <vclib.h>

#include <macros.h>

Visto existirem algumas funções que estão repetidamente definidas em várias bibliotecas.

A programação do código segue o standard do C.

Exemplo de uma aplicação para binarização da imagem:

/* * * bina.c – Binariza as imagens conforme o valor da * * variável tresh * * */

#include <cam0.h>

#include <vcrt.h>

#include <vcmlib.h>

#include <macros.h>

#include <vclib.h>

void main(void)

{

long adr, i;

int led = 1, binning = 0, tresh=175;

adr = 0L; /* Endereço do inicio da imagem*/

tp50 (adr, led, binning); /* Tira a Fotografia */

for (i = 0; i < 307200; i++)

{

if (rpix(i) > tresh)

{

wpix(255,i);

}

else

{

wpix(0,i);

}

70

}

}

Após o desenvolvimento do código é preciso compilar o mesmo. Para compilar o código

recorre-se a batch files que são copiados durante a instalação do software, nomeadamente

“CC.bat” ou “build.bat”. Exemplo:

C:\adsp\21xx\work\CC.bat bina.c

Ou

C:\adsp\21xx\work\builde.bat bina.c

O conteúdo desses ficheiros é composto por:

g21 %1.c -a cam2.ach -c -msmall-code -Wall -g -v -mreserved=i3 -o %1

ld21 \lib\pg_hdr \lib\stack %1 -g -gcc -x -a cam2 -e adsp -lib -user

vcrt vclib

..\util\convert %1

..\util\scvt

copy adsp.msf ..\procomm\%1.msf

Caso exista mais que um ficheiro a ser compilado é necessário alterar o “CC.bat” de modo a

que todos os ficheiros sejam compilados. Exemplo

g21 prg1.c -a cam2.ach -c -msmall-code -Wall -g -v -mreserved=i3 -o %1

g21 prg2.c -a cam2.ach -c -msmall-code -Wall -g -v -mreserved=i3 -o %1

g21 prg3.c -a cam2.ach -c -msmall-code -Wall -g -v -mreserved=i3 -o %1

ld21 \lib\pg_hdr \lib\stack prg1 prg2 prg3 -g -gcc -x -a cam2 -e adsp

-lib -user vcrt vclib

..\util\convert prg1

..\util\scvt

copy adsp.msf ..\procomm\prg1.msf

Em que neste caso prg1 é o ficheiro onde se encontra a função main().

Após correr este batch file, irá ser copiado para a pasta “C:\adsp\21xx\Procomm” um ficheiro

prg1.msf. Será esse ficheiro que irá ser enviado para a câmara.

Para enviar esse ficheiro para a câmara usa-se o “Graphic shell”.

71

Anexo D – Principais funções das bibliotecas

As funções abaixo descritas podem ser integradas em qualquer programa em linguagem C.

Funções de aquisição de imagens

Tp50 Função para tirar fotografias

Sintaxe: void tp50 (long wordadr, int led, int binning)

Descrição: Esta função tira a fotografia em diferentes modos de binning.

long wordadr Define o endereço de armazenamento na memória DRAM

int led controla os LEDs de iluminação.

int binning Define o modo de binning

Modo 0: 640x480

Modo 1: Soma o valor de duas linhas horizontais (640x240)

Modo 2: Soma o valor de 4 Linhas (640x120)

Shutter Shutter speed

Sintaxe: long shutter (long stime)

Descrição: Esta função selecciona a velocidade do obturador do sensor CCD.

Esta velocidade é especificada pelo valor de stime em micro segundos

Este valor pode variar entre 20 micro segundos e 2 segundos

Funções de Input e de Output

outPLC Saída de um valor para o PLC

Sintaxe void outPLC (int value)

Descrição Esta macro envia para a saída do PLC o valor value. Bit0 corresponde ao

valor output0, Bit1 corresponde ao valor output1, etc.

inPLC Entrada de um valor do PLC

Sintaxe int inPLC (void)

Descrição Esta macro recebe os sinais do PLC. Bit0 e Bit1 correspondem ao valor das

entradas do PLC. Os restantes bits são sempre iguais a zero. Se existe

corrente numas das entradas então o valor do bit é zero. Caso contrário é um.

72

LEDout Ouput dos indicadores LEDs

Sintaxe void LEDout (int value)

Descrição Esta Função envia o valor value para os seis LEDs bicolores ligando-os todos

ao mesmo tempo. A seguinte tabela explica que bits da entrada value

corresponde a que LED.

Bit 15 Bit 14 Bit 13 Bit 12 Bit 11 Bit 10 Bit 9 Bit 8

RSVD RSVD RSVD RSVD G0 R0 G1 R1

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

G2 R2 G3 R3 G4 R4 G5 R5 Onde “R2” significa LED 2 luz vermelha. Os LEDs podem se vermelhos, verdes

ou âmbar. Este ultimo, é escolhido se os dois bits de um LED estão a “1”.

switch_pressed Função que devolve o estado do push-button da câmara.

Sintaxe int switch_pressed (void)

Descrição Esta Função retorna o estado do push-button. Se está a ser pressionado a

função devolverá “1” caso contrário devolverá “0”.

pstr Envia uma string pelo interface serie

Sixtaxe: void pstr (char *pstr)

Descrição: Função que envia uma string especificada pelo ponteiro pstr através do

interface série.

print Output formatado de variáveis e de texto

Sixtaxe: void print (char *format ...)

Descrição: Esta função é uma função rudimentar da função print (). Apenas variáveis

do tipo int e long são aceites. O output pode ser decimal (%d) e hexadecimal

(%x).

O Texto e as variáveis são enviados via interface serie.

Funções de Alocação de Memória DMEM

vcmalloc Aloca memoria na DMEM

Sixtaxe void *vcmalloc (unsigned int size)

Descrição: Função que aloca memoria na DMEM.

size é o tamanho da memoria requerida em words (int = 16 bits). Esta função

73

retorna um ponteiro para a memoria alocada.

Se a memoria não puder ser alocada de modo coerente então retorna um

ponteiro null.

Basicamente esta função é equivalente á função malloc (), mas o uso

dessa função não é recomendado.

vcfree Liberta Memória DMEM.

Sixtaxe void vcfree (void *ptr)

Descrição: Função que liberta memoria na DMEM, anteriormente alocada pela função

vcmalloc (). Esta função é equivalente à função free () mas o uso

dessa não é aconselhável.

Funções de acesso à DRAM

rpix Lê um byte da memória DRAM.

Sixtaxe int rpix (long addr)

Descrição: Função permite a leitura de um byte da memória DRAM em que addr é o

endereço de memória do byte a ser lido. O endereço 0L é o primeiro byte na

memória DRAM

wpix escreve um byte da memória DRAM.

Sixtaxe void wpix (int value, long addr)

Descrição: Função permite a escrita de um byte na memória DRAM em que addr é o

endereço de memória do byte a ser escrito e value o seu valor. O endereço 0L

é o primeiro byte na memória DRAM.

Funções de Binarização

rlcmk Cria o RLC (Run Length code) de uma imagem

Sintaxe long rlcmk (image *a, int thr, long rlc, long size)

Descrição A função rlcmk cria um código RLC para a variável de imagem a e guarda-o

na DRAM. Em que thr é o treshold usado na binarização. 0 < thr < 256.

Um pixel maior que thr é considerado como sendo branco e preto no caso

contrário.

rlc é o endereço inicial para onde o código RLC irá ser guardado, size o

numero de palavras disponeveis na DRAM para o RLC. Caso não haja espaço

suficiente a operação é abortada.

74

rlcout Exibe o run length code

sintaxe int rlcout(image *a, long rlc, int dark, int light)

Descrição A função rlcout() possibilita transformar o run length code numa imagem de

escala de cinzentos

a a Variavel de imagem, rlc o endereço inicial do run length code, dark o

valor em escala de cinzentos das pixéis pretos e light das zonas brancas.

Retorna 0 se não houver erro e -1 no caso contrário.

rlc_feature determina as propriedades do RLC

sintaxe void rlc_feature(feature *f, long rlc, int color)

Descrição Afunção rlc_feature() calcula as propriedades de um RLC. O parâmetro

color é usado para especificar se as propriedades são calculadas para as

zonas pretas (=0) ou para as zonas brancas (=-1)

As propriedades calculadas são as seguintes:

area: area

x_center: coordenada x do centro de gravidade

y_center: coordenada y do centro de gravidade

x_min: menor coordenada de x

x_max: maior coordenada de y

y_min: menor coordenada de x

y_max maior coordenada de y

x_lst: last x-coordinate in the last line

rlc é o endereço do inicio do run length code na DRAM.

f é o ponteiro para a lista de parâmetros guardada na seguinte estrutura:

typedef struct

{

long area; /* object area */

long x_center; /* x_center - normalized */

long y_center; /* y_center - normalized */

int x_min; /* x_min */

int x_max; /* x_max */

int y_min; /* y_min */

int y_max; /* y_max */

int x_lst; /* last x */

} feature;

75

Anexo E – Listagem das funções de Classificação

Sistema Fuzzy

Cálculo das funções de pertença

/********************************************************************

* Função Para calcular a função pertenca

*Input

* x - Entrada

* sigma - valor de sigma

* c - valor de c

*Return

* Valor da função de pertence

*******************************************************************/

double mf(double x, double sigma, double c)

{

double co;

co = -1*((x-c)*(x-c))/(2*sigma*sigma);

return exp(co);

}

Função TS Afim /*********************************************************************

* Calcula z = x*a + y*b + ... + c

*Input

* param - vactor com os parametros (a, b, c, ...) da equação

* var - vector com os valores de entrada (x, y, ...).

* varcount - numero de variaveis de entrada

*Return

* Resultado da equação z = x*a + y*b + ... + c

*********************************************************************/

double sugenoOut(double param[], double var[], int varcount)

{

int i;

double z;

z=0;

for(i=0; i < varcount; i++)

{

z += param[i] * var[i];

}

z += param[i];

return z;

}

76

Agregação dos antecedentes Esta função usa o produto ou os mínimos para agregar os antecedentes.

/*********************************************************************

* Função para calcular o peso de cada ms

*Input

* mfs - Vector Resultados das funções de pertence

* init - Posição inicial a ter em conta no vector mfs

* inputnum - Numero de posições a considerar

* met - metodo de calculo

*Return

* Valor do peso

*********************************************************************/

double peso (double mfs[], int init, int inputnum, int met)

{

double var = 1;

int i;

/* Metodo do minimo */

if(met == 0)

{

var = mfs[init];

for (i = init; i < init+inputnum; i++)

{

if (var > mfs[i])

var = mfs[i];

}

/*print("Calculou peso\n");*/

}

/* Metodo do produto */

else if (met == 1)

{

for (i = init; i < init+inputnum; i++)

var *=mfs[i];

}

return var;

}

Função que efectua todo o sistema de inferência fuzzy

/*

**********************************************************************

* Funcao que efectua o sistema de inferencia fuzzy

* Input

* Vector com os descritores

* Return

* Classe do objecto

*

*********************************************************************/

int classe(double * ine)

{

77

double mfs[10],in[2], sug[5], param[3], w[5], out;

int classe;

/*Normaliza as entradas para que fiquem entre [0 1]*/

in[0]=(ine[NCd2-1]-2.6303)/(15.4953-2.6303);

in[1]=(ine[NCd2+2]-0.0056)/(2.90746-0.0056);

if (in[0] > 1 && in[0] < 1.2)

in[0] = 1;

else if (in[0]>1) return 6;

if (in[1] > 1 && in[1] < 1.2)

in[1] = 1;

else if (in[1]>1) return 6;

/* -- In 1 ------------------------------ */

mfs[0] = mf(in[0],0.07071, 0.001543);

mfs[2] = mf(in[0],0.07071, 0.05887);

mfs[4] = mf(in[0],0.07071, 0.08621);

mfs[6] = mf(in[0],0.07071, 0.8496);

mfs[8] = mf(in[0],0.07071, 0.877);

/* -- In 2 ------------------------------ */

mfs[1] = mf(in[1],0.07071, 0.2028);

mfs[3] = mf(in[1],0.07071, 0.001305);

mfs[5] = mf(in[1],0.07071, 0.2345);

mfs[7] = mf(in[1],0.07071, 0.974);

mfs[9] = mf(in[1],0.07071, 0.3179);

/* -- Out 1 Cluster 1 ------------------------- */

param[0] = 32.01;

param[1] = 6.568;

param[2] = -0.5633;

sug[0] = sugenoOut(param,in,2);

/* -- Out 1 Cluster 2 ------------------------- */

param[0] = -0.3017;

param[1] = 3.156;

param[2] = 5.077;

sug[1] = sugenoOut(param,in,2);

/* -- Out 1 Cluster 3 ------------------------- */

param[0] = -1.013;

param[1] = 2.852;

param[2] = 0.6511;

sug[2] = sugenoOut(param,in,2);

/* -- Out 1 Cluster 4 ------------------------- */

param[0] = 0;

param[1] = 0;

param[2] = 4;

sug[3] = sugenoOut(param,in,2);

/* -- Out 1 Cluster 5 ------------------------- */

param[0] = 0;

param[1] = 0;

param[2] = 3;

sug[4] = sugenoOut(param,in,2);

/* -- Agregacao --------------------------------*/

78

w[0] = peso(mfs,0,2,0);

w[1] = peso(mfs,2,2,0);

w[2] = peso(mfs,4,2,0);

w[3] = peso(mfs,6,2,0);

w[4] = peso(mfs,8,2,0);

/* -- Funcao afim ------------------------------*/

out =

(w[0]*sug[0]+w[1]*sug[1]+w[2]*sug[2]+w[3]*sug[3]+w[4]*sug[4])/(w[0]+w[

1]+w[2]+w[3]+w[4]);

/*print("out %ld \n",(long)(100*out));*/

/* -- Classe -----------------------------------*/

if(out > 0.89 && out <=1.1) classe = 1;

else if(out > 1.9 && out <2.1) classe = 2;

else if(out > 2.9 && out <3.1) classe = 3;

else if(out >= 3.9 && out <4.1) classe = 4;

else if(out >= 4.9 && out <5.1) classe = 5;

else classe = 6;

return classe;

}

Descritores de Fourier Calcula as transformadas de Fourier para diferentes números de pontos

double * fourier(int * xi, int * yi)

{

/*********************************************************************

* Calcula as tranformadas de Fourier para diferentes numeros de

pontos

* Entradas

* Coordenadas x e y

* Retorn

* Coeficientes normalizados

*********************************************************************/

int i, pos;

int tx[NC], ty[NC];

double mag[NC];

double ss[NC];

/* Calcula as tranformadas de Fourier para diferentes numeros de

pontos */

switch (NC)

{

case 128:

pos = vcfft128(xi,yi,tx,ty);

break;

case 256:

pos = vcfft256(xi,xi,tx,ty);

break;

}

for(i=0;i < NC;i++)

{

79

mag[i]=(double)sqrt((double)tx[i]*(double)tx[i]+(double)ty[i]*(d

ouble)ty[i]); /* Calcula as magnitudes */

}

for(i=0;i<NC;i++)

{

ss[i]=mag[i]/mag[(int)NCd2+1];/* Normaliza os coeficientes

*/

}

ss[(int)NCd2]=(double)0; /* Elimina o efeito da translação */

return ss;

}

80

81

Anexo F – Ligações ao Autómato

As Ligações do autómato à câmara e aos outros componentes usados estão na tabela 1 e na

tabela 2 respectivamente

Autómato Câmara

O 46 In0

O 47 In1

I 25 Out0

I 27 Out1

I 29 Out2

I 31 Out3

Tabela F.12 – Ligações do Autómato à Câmara.

Autómato Componentes

I 6 Start

I 7 Botão verde

I 8 Botão encarnado

O 35 Luz Vermelha

O 36 Luz Amarela

O 37 Luz Vermelha

Tabela F.13 – Ligações do autómato aos componentes usados

Para o funcionamento interno da câmara só interessa o botão verde e o vermelho. O botão

start apenas serve para evitar o inicio ou o termino não desejado.

Funcionamento do programa do autómato.

1. Ligar o botão start (I6)

2. Para iniciar a identificação pressionar botão verde (I7)

Os resultados são exibidos através das luzes (O35, O36, O37).

3. Para terminar o programa a correr na câmara pressionar o botão vermelho (I8)

A tabela 3 contém a correspondência entre as entradas e as saídas

Entradas Saída Significado

I6 e I7 O 46 Inicio da classificação

I6 e I8 O 47 Termina programa na câmara

I6 e I25 e I27 e I29 e I31 O35 Classe 1

I6 e I25 e I27 e I29 e I31 O36 Classe 2

I6 e I25 e I27 e I29 e I31 O38 Classe 3

I6 e I25 e I27 e I29 e I31 O35 e O36 Classe 4

I6 e I25 e I27 e I29 e I31 O36 e O37 Classe 5

I6 e I25 e I27 e I29 e I31 O35 e O37 Classe Desconhecida

I6 e I25 e I27 e I29 e I31 O35 e O36 e O37 Erro

Tabela F.14 – Correspondência entre as entradas e as saídas.

82

Na figura F.1 apresenta-se o programa implementado no autómato.

Ilustração F.1 – Programa do autómato

83

Anexo G – Imagens usadas

Imagens obtidas para a classe 1

Imagens obtidas para classe 2

84

Classe 3

Classe 4

85

Classe 5