técnicas de processamento de imagem aplicadas a problemas ... · tabela 3.1 – descritores de...
Post on 17-May-2019
215 Views
Preview:
TRANSCRIPT
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.
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.
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.
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
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
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
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.
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
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.
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.
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;
}
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
top related