do arquivo - Programa de Pós

Transcrição

do arquivo - Programa de Pós
WAVELETS E REDES NEURAIS APLICADAS À ESTIMAÇÃO
DE VOLUME DE TRÁFEGO DE VEÍCULOS
Dissertação apresentada ao curso de Mestrado em
Engenharia Elétrica da Universidade Federal da Bahia,
como requisito parcial à obtenção do título de Mestre em
Engenharia Elétrica.
Orientador: Prof. Antonio Cézar de Castro Lima
Universidade Federal da Bahia
Angelo Amâncio Duarte
Salvador
Departamento de Engenharia Elétrica da UFBa
Fevereiro de 2001
Agradecimentos
Uma dissertação de mestrado não pode ser construída sem a colaboração valiosa de
familiares, amigos e mestres.
Registro meu agradecimento ao meu orientador, Prof. Antonio Cezar de Castro Lima,
pela tranquilidade e ânimo constante com que me recebeu nos momentos de maior dificuldade
durante a realização da pesquisa, além do companheirismo e sábios conselhos antes e durante
a realização do mestrado.
Ao Prof. Luciano Rila pelas sugestões e atenção que dedicou ao estudo do meu
trabalho.
À Fundação Escola Politécnica pela bolsa recebida durante o tempo de estudos, que
ajudou a minimizar o peso dos investimentos em bibliografia. Estendo também meu
agradecimento a todos os professores do mestrado e funcionários do Departamento de
Engenharia Elétrica da UFBA, com os quais tive uma produtiva convivência nos últimos dois
anos e sem os quais não seria possível a existência do curso.
Finalmente, porém com maior intensidade, agradeço a minha esposa e filha que
abriram mão de valiosas horas de convivência para que esse trabalho fosse concluído. Sem
elas eu não teria o equilíbrio emocional necessário para faze-lo. A elas cabe, em grande
monta, o mérito pela conclusão do meu curso de mestrado.
Salvador, fevereiro de 2001
Angelo Amâncio Duarte
i
Índice
Lista de Figuras
iv
Lista de Tabelas
vi
Resumo
vii
Abstract
viii
1 Introdução
1
2 Wavelets
3
2.1
Análise de Frequência ................................................................................................................................ 3
2.2
Análise Tempo-Frequência ........................................................................................................................ 8
2.3
Análise Multiresolucional ........................................................................................................................ 13
2.3.1
Transformada Wavelet Contínua ..................................................................................................... 14
2.3.2
Transformada Wavelet Discreta ...................................................................................................... 18
2.3.3
Codificação Sub-Banda ................................................................................................................... 19
2.3.4
Transformada Wavelet Discreta em 2 dimensões ............................................................................ 25
3 Análise de Imagens
27
3.1
Histogramas.............................................................................................................................................. 28
3.2
Equalização .............................................................................................................................................. 31
3.3
Detecção de bordas .................................................................................................................................. 33
4 Redes Neurais Artificiais (RNA)
37
4.1
Modelo de McCulloch-Pitts ..................................................................................................................... 37
4.2
Perceptrons ............................................................................................................................................... 39
4.3
ADALINE ................................................................................................................................................ 40
4.4
Escolha da topologia de uma rede MLP .................................................................................................. 42
4.5
Treinamento de redes MLP (Algoritmo backpropagation) ..................................................................... 42
5 Metodologia
44
5.1
Equalização das imagens.......................................................................................................................... 45
5.2
Processamento com Wavelets .................................................................................................................. 48
5.3
Detecção de Bordas .................................................................................................................................. 50
5.4
Treinamento da Rede Neural ................................................................................................................... 52
5.5
Validação da Rede Neural ........................................................................................................................ 53
5.6
Procedimentos gerais ............................................................................................................................... 53
6 Resultados obtidos
6.1
55
Desempenho do método atual .................................................................................................................. 55
ii
6.2
Comparação com o método anterior ........................................................................................................ 59
7 Conclusões
60
Apêndice A Arquivos de listas de imagens
62
Apêndice B Programa para criação das matrizes de dados para a RNA
63
Apêndice C Programa de treinamento da RNA
65
Apêndice D Programa para simulação e contagem de erros
66
Apêndice E Programa para classificação dos erros
68
Bibliografia
69
iii
Lista de Figuras
Figura 2.1: Sinal x1(t) obtido pela superposição de 4 senóides com frequências de 20, 70,
120 e 200Hz........................................................................................................... 5
Figura 2.2: PSD do sinal x1(t) obtido pela superposição de 4 senóides com frequências
de 20, 70, 120 e 200Hz .......................................................................................... 6
Figura 2.3: Sinal x2(t) obtido pela concatenação de quatro senóides com frequências de
20, 70, 120 e 200Hz............................................................................................... 7
Figura 2.4: PSD do sinal x2(t) obtido pela concatenação de quatro senóides com
freqüências de 20, 70, 120 e 200Hz ...................................................................... 7
Figura 2.5: PSD obtida pela STFT do sinal x2(t) obtido pela concatenação de quatro
senóides com frequências de 20, 70, 120 e 200Hz (a = 5000) ............................ 10
Figura 2.6: PSD obtida pela STFT do sinal x1(t) obtido pela soma de quatro senóides
com frequências de 20, 70, 120 e 200Hz (a = 5000) .......................................... 11
Figura 2.7: PSDs com janelas de diferentes suportes, obtidas para o sinal x2(t). (a) a =
10; (b) a = 100; (c) a = 1000 e (d) a = 10000 .................................................... 12
Figura 2.8: (a) Wavelet Morlet; (b) Wavelet Chapéu Mexicano ............................................ 16
Figura 2.9: Gráfico do valor absoluto dos coeficientes wavelet em 32 escalas, obtidos
através da CWT do sinal x2(t) com a wavelet Morlet.......................................... 17
Figura 2.10: Divisão do espectro de frequências através de um banco de filtros .................... 20
Figura 2.11: Descrição do algoritmo de codificação sub-banda ............................................... 22
Figura 2.12: DTW de um alguns sinais de teste obtidos usando wavelets Haar. À esquerda
o sinal original e à direita os coeficientes d[n]. (a) f = cos(2.pi.10.t); (c) f =
cos(2.pi.10.t) + cos(2.pi.60.t); (e) onda quadrada de 10Hz ................................. 24
Figura 2.13: DTW de uma imagem apresentando os coeficientes obtidos no primeiro
nível. (a) Imagem original; (b) Coeficientes da DWT de 1 nível com wavelet
de Haar ................................................................................................................ 25
Figura 3.1: Exemplos de histogramas de imagens com 256 níveis de cinza .......................... 30
Figura 3.2: Função de mapeamento para correção dos níveis de cinza.. (a)
Correspondência entre os níveis de cinza da entrada e saída; (b) Função de
mapeamento......................................................................................................... 32
iv
Figura 3.3: Exemplo de equalização de imagens. (a) Imagem original; (b) Histograma da
imagem (a); (c) Imagem após equalização (low=0.1, high=0.9, botton=0,
top=1); (d) Histograma da imagem (c) ................................................................ 33
Figura 3.4: Resultados de diversos métodos de detecção de borda sobre uma mesma
imagem. (a) Imagem original; (b) Método de Robert; (c) Método de Prewitt;
(d) Método de Sobel ............................................................................................ 36
Figura 4.1: Diagrama de blocos de um discriminador linear representando o modelo de
neurônio McCulloch-Pitts ................................................................................... 38
Figura 4.2: Diagrama de uma MLP (perceptron) de 4 camadas ............................................. 39
Figura 4.3: Diagrama de blocos do modelo ADALINE ......................................................... 41
Figura 5.1: Exemplos de imagens com e sem equalização. Do lado esquerdo as imagens
originais e do lado direito as imagens equalizadas via função imadjust do
MATLAB com faixa de entrada [0,05 0,5] e faixa de saúda [0 1]. ..................... 47
Figura 5.2: Exemplos dos resultados obtidos para os coeficientes de aproximação de
segundo nível após a aplicação da DWT com wavelets de Haar. As imagens
originais tem resolução de 160x120 pontos e as aproximações de 40x30
pontos .................................................................................................................. 49
Figura 5.3: Resultados da detecção de bordas sobre as imagens formadas pelos
coeficientes de aproximação da DWT de segundo nível com wavelet de
Haar. .................................................................................................................... 51
Figura 6.1: (a)Resultado do treinamento da rede neural feed-forward com 3 camadas
20x20x1; (b) Idem para uma rede 10x10x1 ........................................................ 56
Figura 6.2: Distribuição do número de imagens por faixa de erro absoluto no lote de
simulação ............................................................................................................. 57
Figura 6.3: Distribuição do número de imagens por faixa de erro normalizado no lote de
simulação ............................................................................................................. 58
v
Lista de Tabelas
Tabela 5.1: Relação de carros por imagem no grupo de 800 imagens usadas no
treinamento .......................................................................................................... 52
Tabela 5.2: Relação de carros por imagem no grupo de 2400 imagens usadas na
simulação ............................................................................................................. 53
Tabela 6.1: Comparação dos erros obtidos pelos resultados dos testes com lotes de
treinamento (800 imagens) e simulação (2400 imagens) .................................... 57
Tabela 6.2: Classificação dos erros por imagens com as mesmas quantidades de carros
(simulação com a rede 20x20x1)......................................................................... 58
Tabela 6.3: Comparação dos tempo de treinamento dos métodos anterior e atual ................. 59
Tabela 6.4: Comparação dos erros obtidos pelos resultados dos testes usando os métodos
anterior e atual ..................................................................................................... 59
vi
Resumo
Esse trabalho associa as ferramentas de Transformada Wavelet Discreta, Redes
Neurais e Tratamento de Imagens (melhoria de contraste e detecção de bordas) com o
objetivo de identificar corretamente o número de carros em imagens obtidas a partir de um
mesmo ponto fixo. A Transformada Wavelet Discreta é utilizada com grande eficiência para
compactação de imagens nesse trabalho reduzindo a quantidade de pontos que representam
uma imagem sem degradar a informação do número de carros que essa contem. A detecção de
bordas converte a imagem original em uma imagem que apresenta apenas as bordas dos
objetos nela contidos, já que experimentos realizados com seres humanos e outros animais
mostraram que bordas são as mais importantes pistas para interpretar imagens. As redes
neurais artificiais, por serem inspiradas no neurônio biológico, possuem características muito
úteis no reconhecimento de padrões. Essa associação de ferramentas busca facilitar ou
possibilitar a detecção do número de carros em imagens, informação relevante em diversas
aplicações, tal como, por exemplo, a determinação do tempo de atuação de semáforos como
resultado da comparação do fluxo de suas diversas vertentes de tráfego. Será demonstrado que
a associação das três técnicas é bem sucedida e que a Transformada Wavelet Discreta
viabiliza o treinamento mais eficiente da Rede Neural pela substancial redução do número de
pontos necessários para representar a informação.
vii
Abstract
This works associates Discret Wavelet Transform, Image Analysis and Artificial
Neural Network to identify the number of cars in a image sequence taken from a fixed point.
The Discret Wavelet Transform is used to compact the images with no degradation over the
information of numbers cars in them. Edge detection is used to reduce the useless information
by extracting only the edges of the scenes, once it has been demonstrated that edges is the
main information used by animals and humans in image interpretation. Artificial Neural
Networks, by inspiration in biological neuron, have very useful characteristics for pattern
recognition. This association of tools aims to facilitate or to allow the correctly identification
of the numbers of cars in a sequence of images, that is ver relevant in many applications like,
for example, the specification of duty times in traffic lights. It will be demonstrated that the
association of the three techniques is well succeed and that the Discret Wavelet Transform
allows an improvement in the training of the Neural Net, as a consequence of a strong
reduction in the number of points required to represent the information.
viii
___________________________________________________________________________1
1
Introdução
A crescente preocupação com a qualidade de vida nas cidades tem fomentado o estudo
dos meios de transporte e de seus impactos sobre o cotidiano. Nesse sentido, é notória a
influência que o aumento do número de veículos nas cidades que, associado a um incipiente
investimento na infra-estrutura e a uma insuficiente oferta de serviços de transporte público,
vem se tornando uma das principais causas na deterioração do meio-ambiente e no aumento
do tempo de deslocamento dentro das cidades.
Os sistemas de controle de tráfego têm sido alvo de inúmeras pesquisas e hoje já se
valem de modernas técnicas de controle no sentido de automatizar e otimizar o controle do
fluxo de veículos via semáforos. Partindo-se desse pressuposto, nota-se que a adaptabilidade
dos tempos de operação dos semáforos a partir das características do tráfego torna-se um
poderoso instrumento na implementação de estratégias de controle.
A acertada implementação desse controle passará por uma correta aquisição das
características do tráfego, geralmente expressas através do número de veículos por unidade de
tempo, também chamado de volume de tráfego.
Existem muitas maneiras de se conseguir medir o volume de tráfego, sendo que a
grande maioria delas utiliza algum tipo de sensor que ou têm contato físico com o veículo
(sensores colocados no asfalto) ou precisa ser instalado em uma posição que se torna
inconveniente devido ao fluxo de pedestres, o que o deixa vulnerável a vandalismos.
Uma solução que possa fazer a medição do tráfego a partir da posição de um
observador que esteja posicionado na altura do semáforo traria como vantagens sua maior
invulnerabilidade contra vandalismos e a dispensa do contato físico com o veículo. Essa idéia
já foi objeto de estudo anterior e se mostrou viável para um certo universo de aplicações.
A motivação desse estudo é desenvolver um método capaz de estimar o fluxo de
veículos e que, quando comparado ao método anterior, possa atingir um dos, ou ambos os,
objetivos listados a seguir:
___________________________________________________________________________2
a) diminuir o custo computacional;
b) diminuir o erro de estimação.
Para isso o presente trabalho é faz uma associação de três técnicas matemáticas para
implementar um método de estimação do fluxo de veículos em uma rodovia a partir de
fotogramas dessa rodovia, obtidos através de uma câmera filmadora posicionada de forma a
simular um observador.
As imagens obtidas serão processadas visando adequa-las, sem deterioração da
informação do número de carros presentes, a um sistema de Inteligência Artificial baseado
numa Rede Neural Artificial que se incumbirá da estimação do número de veículos. Esse
processamento se dará por métodos de equalização de contraste e detecção de bordas.
O grande avanço introduzido pelo método que será descrito reside na introdução do
processamento da imagens através da Transformada Wavelet, que se mostra extremamente
adequada para uma compactação das imagens sem perda da informação do número de
veículos presentes na mesma.
Esse texto está dividido em sete capítulos.
O capítulo 1 faz uma introdução sobre o tema que será relatado.
O capítulo 2 trata da teoria do processamento de sinais, começando com uma breve
descrição da Transforma de Fourier e da Transformada de Fourier de Tempo Curto, para em
seguida introduzir a Transformada Wavelet em 1 e 2 dimensões.
O capítulo 3 fala das técnicas de equalização de imagens e dos métodos mais comuns
para detecção de bordas.
O capítulo 4 fala das Redes Neurais Artificias enfocando o modelo que será usado
nesse trabalho.
O capítulo 5 comenta os procedimentos e materiais usados durante a pesquisa.
O capítulo 6 apresenta os resultados obtidos comparando-os ao método anterior de
referência.
O capítulo 7 tece considerações sobre os resultados e apresenta novos estudos que
poderão evoluir a partir dos resultados obtidos.
Os apêndices apresentam listagens dos programas que foram utilizados para a
obtenção dos resultados apresentados.
___________________________________________________________________________3
2
Wavelets
2.1
Análise de Frequência
Desde o início do século XIX, quando o matemático francês Joseph Fourier
desenvolveu sua teoria de análise de frequências, sabe-se que uma função periódica pode ser
representada pela soma infinita de funções periódicas exponenciais complexas.
+∞
Χ(ω ) = FT [ x(t )] =
∫ x(t ).e
− jwt
dt
(Error! Style not
defined.-1)
dω
(Error! Style not
defined.-2)
−∞
+∞
x(t ) = IFT [ Χ(ω )] =
∫ Χ(ω ).e
jwt
−∞
A equação (2.1) é conhecida como equação de análise de Fourier, Transformada de
Fourier ou simplesmente FT (Fourier Transform), e a equação (2-2) é conhecida como
equação de síntese de Fourier, Transformada Inversa de Fourier ou simplesmente IFT (Inverse
Fourier Transform). Ambas equações consideram a função x(t) periódica e contínua no
tempo.
O advento dos computadores e do cálculo numérico estimulou o estudo dos sinais
discretos no tempo ou, por outro lado, dos sinais contínuos no tempo transformados em sinais
discretos no tempo conforme o teorema da amostragem [Cand88]. Os sinais discretos no
tempo devem ser tratados de acordo com suas peculiaridades, e muitas das ferramentas
matemáticas utilizadas para sinais contínuos no tempo foram adaptadas para atender à essas
exigências. Esse foi também o caso da Transformada de Fourier que provou-se válida também
para o caso discreto, passando a se chamar na análise como Transformada Discreta de Fourier
ou DFT (Discrete Fourier Transform) e, na síntese, Transformada Inversa Discreta de Fourier
ou IDFT (Inverse Discrete Fourier Transform), conforme descrito nas seguintes equações:
M −1
Χ(Ω m ) = DFT [ x(t )] = ∑ x(t ).e − jΩ mt
t =0
(Error! Style
not defined.-3)
___________________________________________________________________________4
x(t ) = IDFT [ Χ(Ω m )] =
1
M
M −1
∑ Χ (Ω
m
).e jΩ mt
t =0
(Error! Style
not defined.-4)
em que
x(t) = x(t+kM), ∀k
(Error! Style
not defined.-5)
é um sinal discreto periódico de período M e
2πm
(Error! Style
Ωm =
not defined.-6)
M
é a frequência discreta, sendo m o números de amostras do sinal no período M.
A DFT passou a ser amplamente utilizada no processamento digital de sinais quando
em 1965 os matemáticos Cooley e Tukey apresentaram um algoritmo rápido para o cálculo da
DFT, que ficou conhecido como FFT (Fast Fourier Transform).
A análise de frequência tanto para sinais de tempo contínuo quanto de tempo discreto
permite estudar quais as frequências que estão presentes em um sinal periódico. Entretanto, a
maioria dos sinais naturais não segue esse padrão. Ao contrário, os sinais que são encontrados
na natureza são, em sua grande maioria, sinais descontínuos e/ou aperiódicos ou mesmo sinais
periódicos que apresentam alguma forma de descontinuidade ou perturbação. Nestes casos a
informação do instante de tempo em que ocorre a singularidade é de tanta ou mais valia do
que a informação sobre sua frequência, e é aqui que a Transformada de Fourier passa a
apresentar sua principal desvantagem: a perda da informação de tempo dos eventos presentes
no sinal.
Para ilustrar esse fato considere-se o seguinte sinal composto por quatro ondas
senoidais puras com frequências de 20, 70, 120 e 200Hz, descrito pela equação
x1 (t ) = sin(2π 20t ) + sin(2π 70t ) + sin(2π120t ) + sin(2π 200t )
(Error! Style
not defined.-7)
Sendo que o sinal x1(t) foi amostrado com uma frequência de 1KHz e que um trecho
com 512 amostras (aproximadamente 0,5s) foi armazenado. Esse trecho pode ser visualizado
na Figura 2.1.
___________________________________________________________________________5
Figura Error! Style not defined..1: Sinal x1(t) obtido pela superposição de 4 senóides com
frequências de 20, 70, 120 e 200Hz
Aplicando-se a DFT sobre o sinal x1(t) obtemos a sequência Χ1(Ωm) e, a partir desta,
pode-se analisar quais as frequências presentes no sinal x1(t). Essa análise é feita traçando um
gráfico que relaciona a potência média do sinal por unidade de banda. Esse gráfico é
conhecido como Densidade Espectral de Potência ou PSD (Power Spectrum Density) e é
calculado através da seguinte expressão:
PSD (Ω m ) =
X (Ω m )
2
N2
A PSD para o sinal x1(t) pode ser vista na Figura 2.1-2.
(Error!
Style not
defined.8)
___________________________________________________________________________6
Figura Error! Style not defined..2: PSD do sinal x1(t) obtido pela superposição de 4 senóides com
frequências de 20, 70, 120 e 200Hz
Observa-se facilmente a presença das quatro frequências que compõem o sinal x1(t),
bem como suas potências relativas que, nesse caso, são iguais.
Seja agora um outro sinal montado a partir das mesmas quatro componentes de 20, 70,
120 e 200Hz, só que não mais pela superposição das mesmas e sim pela sua concatenação, ou
seja, outro sinal discreto x2(t) também com 512 amostras feitas a uma taxa de 1KHz e
composto pela seguinte equação:
⎧ sin(2π 200t ),0 ≤ t < 128
⎪sin(2π 120t ),128 ≤ t < 256
⎪
x 2 (t ) = ⎨
⎪ sin(2π 70t ),256 ≤ t < 384
⎪⎩ sin(2π 20t ), t ≥ 384
Um trecho desse sinal está mostrado na Figura 2-3.
(Error!
Style not
defined.9)
___________________________________________________________________________7
Figura Error! Style not defined..3: Sinal x2(t) obtido pela concatenação de quatro senóides com
frequências de 20, 70, 120 e 200Hz
Agora aplicando-se a DFT sobre esse sinal e calculando-se a sua PSD obtém-se o
resultado mostrado na Figura 2-4.
Figura Error! Style not defined..4: PSD do sinal x2(t) obtido pela concatenação de quatro
senóides com freqüências de 20, 70, 120 e 200Hz
___________________________________________________________________________8
Analisando o resultado obtido na Figura 2-4 pode-se perceber claramente que ainda
existem quatro componentes principais centradas nas frequências de 20, 70, 120 e 200Hz.
Porém, observa-se que agora há um certo espalhamento da energia ao longo de toda a faixa.
Esse espalhamento é provocado pela subta mudança de uma frequência para outra no sinal
original, o que causa uma descontinuidade nesses pontos. Essa descontinuidade provoca um
espalhamento da energia ao longo do espectro de frequências, que aparece sob a forma de um
"ruído" no gráfico.
Comparando-se de uma maneira mais grosseira os dois espectros apresentados nas
Figuras 2-2 e 2-4, pode-se dizer que ambos apresentam a mesma aparência geral, isto é,
ambos apontam para sinais que apresentam quatro componentes principais de frequências, as
quais estão localizadas em 20, 70, 120 e 200Hz. Concluí-se com isso que a transformada de
Fourier é incapaz de nos permitir uma clara diferenciação entre esses dois sinais bastante
diferentes no domínio do tempo, uma vez que apresenta um resultado muito parecido para
ambos no domínio da frequência. Resumindo, pode-se mesmo afirmar que a transformada de
Fourier não é adequada para a análise de sinais com características não-estacionárias (sinais
cujas componentes de frequência se alteram ao longo do tempo), a menos que não se esteja
interessado na informação do tempo em que as frequências aparecem num sinal mas apenas
nos valores dessas frequências.
2.2
Análise Tempo-Frequência
A perda da informação de tempo na transformada de Fourier gerou a necessidade de
uma nova estratégia para a análise de sinais não-estacionários. Nessa estratégia assumisse que
o sinal é estacionário em determinadas partes, e passasse a estudar essas partes
individualmente.
Isso pode ser visto, por exemplo, na Figura 2-3, onde o sinal tem quatro porções de
tempo onde apresenta um caráter estacionário. Aplicando-se uma janela sobre esse sinal, de
forma a que sejam separadas cada uma de suas porções estacionárias, a DFT de cada porção
obterá exatamente a frequência presente em cada uma. Essa estratégia provou-se adequada
para diversas aplicações, dando origem a uma "revisão" da transformada de Fourier que
passou a ser conhecida com Transformada de Fourier de Tempo Curto ou STFT (Short Time
Fourier Transform).
A STFT corresponde à divisão do sinal em porções pequenas o suficiente para que
dentro dessas porções o sinal possa ser tratado como um sinal estacionário. Essa divisão é
___________________________________________________________________________9
obtida pela aplicação de uma janela W ao sinal, com uma largura tal que dentro dela as
porções do sinal sejam estacionárias. Matematicamente, essa operação pode ser descrita da
seguinte forma:
M −1
(Error! Style
not defined.-10)
t =0
*
em que x(t) é o sinal original e w (t) é o complexo conjugado da função janela escolhida. Essa
Χ(τ , Ω m ) = STFT [ x(t )] = ∑ x(t ) ⋅ w* (t − τ ).e − jΩ mt
operação pode ser também expressa no domínio da frequência pela convolução
Χ(τ , Ω m ) = Χ(Ω m ) ∗ W (Ω m )
(Error! Style
not defined.-11)
Nota-se agora que a STFT é função de duas variáveis: tempo e frequência. Essa
característica permite o estudo do sinal x(t) levando em consideração não só as frequências
que o compõem mas também o comportamento dessas frequências ao longo do tempo. Para
ilustrar esse fato tome-se novamente o sinal x2(t) obtido pela equação (2-9) e aplique-se sobre
ele a STFT usando uma janela gaussiana do tipo
(Error! Style
w(t ) = e
not defined.-12)
em que a determina a largura da janela (quanto menor, mais larga) e t o tempo. O resultado
− a.t 2
2
obtido para a igual a 5000 pode ser visto na Figura 2-1.
Observa-se que o resultado apresenta claramente as quatro componentes de frequência
do sinal. A diferença aqui, quando compara-se esse resultado com o resultado obtido pela
DFT, é que tem-se também uma informação de tempo que mostra o instante em que as
frequências ocorreram bem como sua duração. Vê-se agora que as frequências aparecem em
instantes de tempo bem definidos. A título de comparação, analise-se agora o resultado da
STFT quando aplicada sobre o sinal x1(t) obtido pela equação (2-7), utilizando-se os mesmos
parâmetros para a janela w(t).
___________________________________________________________________________
10
Figura Error! Style not defined..5: PSD obtida pela STFT do sinal x2(t) obtido pela concatenação
de quatro senóides com frequências de 20, 70, 120 e 200Hz (a = 5000)
O resultado, visto na Figura 2-5, mostra a existência novamente das quatro
componentes de frequência e informa que as mesmas aparecem durante todo o tempo. Vê-se
com isso que a STFT consegue diferenciar os dois sinais claramente, resolvendo o problema
apresentado pela DFT.
Como toda nova abordagem, a nova análise tempo-frequência trouxe também novas
questões ao universo da análise de sinais. O problema agora residia sobre qual a melhor
configuração de janela que permitiria a melhor segmentação do sinal ou, mais precisamente,
sobre qual a largura da janela que seria adequada para a obtenção dos melhores resultados. A
prática mostrou que os resultados obtidos variavam significativamente com a mudança da
largura da janela, que é chamada de suporte da janela. Parecia óbvio, entretanto, que janelas
com suporte compacto, ou seja, janelas estreitas, conduziriam a resultados com melhor
resolução já que separariam segmentos estreitos do sinal original, resultando em segmentos
com fortes características estacionárias.
A obviedade dessa conclusão infelizmente não implicou em sua generalidade. De fato,
como pode ser visto a seguir, janelas com alto suporte compacto provocam a perda da
resolução temporal da STFT, que é a sua principal vantagem quando comparada à DFT.
___________________________________________________________________________
11
Figura Error! Style not defined..6: PSD obtida pela STFT do sinal x1(t) obtido pela soma de
quatro senóides com frequências de 20, 70, 120 e 200Hz (a = 5000)
Como exempo, considere-se mais uma vez o sinal x2(t) já definido na equação (2-9) e
aplique-se sobre ele a STFT com janelas de largura diferentes (a = {10, 1000, 10000}). As
novas PSDs obtidas, juntamente com a PSD já obtida para a igual a 5000 estão relacionadas
na Figura 2.7. Atente-se nessa figura para uma significativa mudança no perfil das quatros
densidades espectrais de potência encontradas.
___________________________________________________________________________
12
(a)
(b)
(c)
(d)
Figura Error! Style not defined..7: PSDs com janelas de diferentes suportes, obtidas para o
sinal x2(t). (a) a = 10;
(b) a = 100; (c) a = 1000 e (d) a = 10000
É fácil perceber, comparando os quatro gráficos da Figura 2.7, que há um
compromisso entre a resolução que obtem-se para o tempo e a frequência. Vê-se que nas
Figuras 2.7.a e 2.7.b as raias são estreitas e bem separadas quando vistas no domínio da
frequência, mas são largas e se justapõem quando vistas no domínio do tempo. De forma
contrária, vê-se que nas Figuras 2.7.c e 2.7.d as raias são bem definidas no domínio do tempo
mas se alargam no domínio da frequência.
A conclusão desse experimento é que há um compromisso entre a resolução no
domínio da frequência e a resolução no domínio do tempo, não se pode alcançar ganho em
uma sem perda na outra e vice-versa. Esse resultado é explicado por um princípio conhecido
como Princípio da Incerteza de Heisenberg.
___________________________________________________________________________
13
O Princípio da Incerteza foi originalmente desenvolvido por Heisenberg para
justificar que não se pode saber simultaneamente o momento e a localização de uma partícula
em movimento. Quando estendido para estudo dos sinais, esse princípio declara que não se
pode saber a exata representação tempo-frequência de um sinal, ou seja, não se pode saber
exatamente quais as componentes de frequência existem em um determinado instante de
tempo. O que se pode saber são em quais intervalos de tempo certas bandas de frequências
existem.
O Princípio da Incerteza no caso da análise de sinais via STFT está intimamente
relacionado com a largura da janela w(t). Se essa é muito estreita, visando obter-se uma boa
resolução no tempo, perde-se resolução em frequência (Figuras 2.7.c e 2.7.d). Ao contrário, se
a janela é muito larga ganha-se resolução em frequência mas perde-se resolução no tempo
(Figuras 2.7.a e 2.7.b).
Analisando-se com mais cuidado a fórmula da STFT chega-se à interessante conclusão
de que fazendo a janela w(t) com largura infinita tem-se a máxima resolução em frequência
possível e nenhuma resolução no tempo, ou seja, obtém-se X(Ωm). Por outro lado, se
fazendo-se a largura de w(t) infinitesimalmente pequena, mas não nula, o resultado será
simplesmente o máximo de resolução no tempo e nenhuma resolução na frequência, ou seja,
obtém-se x(t).
De todo o exposto acima vê-se que a escolha da função w(t) mais adequada para a
análise tempo-frequência de um sinal está longe de ser uma tarefa fácil ou, o que é pior,
possível de ser auxiliada por alguma heurística. Devido a isso, foi necessário o
desenvolvimento de uma outra forma de análise, a qual esta relatada a seguir.
2.3
Análise Multiresolucional
A alternativa encontrada para o problema da resolução na análise tempo-frequência foi
o desenvolvimento de uma nova técnica em que as diferentes frequências contidas no sinal
são analisadas em diferentes resoluções. A essa técnica deu-se o nome de análise
multiresolucional ou MRA (Multiresolution Analysis).
A MRA foi desenvolvida para permitir uma análise com boa resolução no tempo e
pouca resolução em frequência para altas frequências e, ao contrário, pouca resolução no
tempo e alta resolução em frequência nas frequências baixas. Essa abordagem faz muito
___________________________________________________________________________
14
sentido quando considera-se que a grande maioria dos sinais práticos apresentam
componentes de alta frequência com curta duração e componentes de baixa frequência com
longa duração. A questão principal na MRA é que as janelas agora não tem mais um tamanho
fixo durante a análise mas sim um tamanho variável que se adapta conforme as necessidades
de resolução de cada situação. Essas novas janelas passaram a ser representadas por uma
classe de funções que receberam o nome de Wavelets.
2.3.1
Transformada Wavelet Contínua
De maneira geral as técnicas de análise de sinais consistem na decomposição de um
sinal em uma combinação linear de funções base ou, em termos algébricos, na decomposição
de um vetor do espaço vetorial do sinal em uma combinação linear de vetores base nesse ou
em outro espaço vetorial que permita uma melhor compreensão das características do sinal.
Essa operação consiste no somatório dos produtos dos vetores base do espaço vetorial por
números escalares. A determinação desses escalares é chamada de análise do sinal e a
reconstrução do sinal a partir dos escalares e dos vetores base é chamada de síntese.
Assim, seja o espaço de funções conhecido como L2(R), composto pelo conjunto de
funções f(t) que atendem à seguinte condição:
∫
2
f (t ) dt = E < ∞
(Error! Style not
defined.-13)
Esse espaço é denominado assim porque o L representa a integral de Lebesque, o
número 2 indica o quadrado do módulo de f(t) e o R indica que a variável independente t pode
assumir qualquer valor no eixo real [Burr98].
O produto interno de duas funções f(t) e g(t) nesse espaço é o escalar a obtido pela
expressão
a = f (t ), g (t ) = ∫ f (t ).g * (t )dt
(Error! Style not
defined.-14)
e a norma de uma função f(t) é definida por
f =
f (t ), f (t )
(Error! Style not
defined.-15)
As equações (2.14 e 2.15) são, na verdade, uma generalização das operações
geométricas definidas no espaço Euclidiano tridimensional.
Duas funções de norma não nula são ditas ortogonais se seu produto interno for nulo,
ou seja,
___________________________________________________________________________
15
ψ k (t ),ψ l (t ) = ∫ψ k (t ).ψ l* (t ).dt = 0
(Error! Style not
defined.-16)
k ≠l
e são ditas ortonormais se
ψ k (t ),ψ l (t ) = ∫ψ k (t ).ψ l* (t ).dt = δ kl
(Error! Style not
defined.-17)
k =l
em que δkl é a função delta de Kronecker definida por
⎧1 se k = l
⎩0 se k ≠ l
δ kl = ⎨
Um sinal ou função f(t) pode ser escrito pela combinação linear
(Error! Style not
defined.-18)
em que l é um índice inteiro para a soma (finita ou infinita), al são os coeficientes reais da
f (t ) = ∑ a lψ l (t )
l
expansão e ψl(t) são um conjunto de funções reais chamado de conjunto de expansão.
Se a expansão é única diz-se que o conjunto de expansão é uma base para o espaço de
funções. Se a base é ortonormal os coeficientes podem ser calculados pelo produto interno
ak = f (t ),ψ k (t ) = ∫ f (t ).ψ k (t ).dt
(Error! Style not
defined.-19)
Por exemplo, na série de Fourier a base é formada pelo conjunto de expansão
composto pelas funções sen(kω0t) e cos(kω0t) com freqüências kω0. Na série de Taylor as
funções são monômios tk.
A Transformada Wavelet Contínua ou CWT (Continuos Wavelet Transfom), é
definida por:
[
]
CWT f ,ψ a ,b =
f (t ) =
1
Cψ
1
∫ f (t ).ψ
a
*
(
t −b
).dt
a
[
{a, b ∈ ℜ; a ≠ 0}
]
CWT f ,ψ a ,b a ,b
ψ da.db
∫−∞ ∫−∞
a2
∞
∞
(Error! Style not
defined.-20)
(Error! Style not
defined.-21)
A perfeita reconstrução de f(t) a partir da equação de síntese 2.21 depende da constante
Cψ chamada constante de admissibilidade [Daub92], que é calculada pela seguinte fórmula:
Cψ = 2π ∫
∞
−∞
[ ]
FT ψ a ,b (ξ )
ξ
2
dξ < ∞
(Error! Style not
defined.-22)
Nota-se que a CWT é uma função de duas variáveis a e b conhecidas,
respectivamente, como parâmetros de escala (largura da janela) e translação (posição da
janela). A função ψ(t) é a função de expansão chamada de wavelet mãe, ou seja, é a função
modelo que será expandida e transladada.
___________________________________________________________________________
16
Existem diversas condições necessárias para que ψ(t) seja considerada uma wavelet.
Uma das mais importantes [Daub92] é que:
(Error! Style not
defined.-23)
∫ψ (t )dt = 0
O termo wavelet é uma adaptação do termo francês ondelete usado pela primeira vez
nos trabalhos de Yves Meyer, e quer dizer pequena onda. Esse termo surgiu do fato de que as
funções ψ(t) têm comprimento finito, ou seja, suporte compacto, e possuem caráter oscilatório
(Figura 2.8.a e b).
As vantagens da utilização da CWT no lugar da STFT podem ser melhor avaliadas
através de um exemplo. Analisando-se, através da CWT, o sinal x2(t) obtém-se o gráfico em
duas dimensões mostrado na Figura 2.9. A análise foi feita utilizando uma wavelet Morlet
(Figura 2.8.a), obtida pela expressão
ψ (t )
−t 2
= e 2 cos(5t)
(Error! Style not
defined.-24)
1
1
0.8
0.6
0.4
0.5
0.2
0
-0.2
0
-0.4
-0.6
-0.8
-1
-5
-4
-3
-2
-1
0
1
2
3
(a)
Figura Error! Style not defined..8:
4
5
-0.5
-5
-4
-3
-2
-1
0
1
2
3
4
5
(b)
(a) Wavelet Morlet; (b) Wavelet Chapéu Mexicano
A análise multiresolucional trouxe um novo conjunto de informações que precisam ser
analisados sob uma nova óptica. No exemplo citado (Figura 2.9) pode-se observar quatro
regiões distintas que correspondem exatamente aos quatro segmentos de frequência do sinal
x2(t). Cada uma dessas regiões tem a largura (tempo) equivalente à largura do segmento do
sinal original. Simultaneamente, observa-se que essas quatro regiões apresentam alturas
diferentes no gráfico quando observadas em relação ao eixo das escalas.
___________________________________________________________________________
17
Figura Error! Style not defined..9: Gráfico do valor absoluto dos coeficientes wavelet em 32
escalas, obtidos através da CWT do sinal x2(t) com a wavelet Morlet
O termo escala é usado na análise wavelet para designar o nível de detalhes com o
qual se está observando o sinal ou, em outras palavras, qual a resolução de frequência que está
sendo usada na análise. Pequenas escalas correspondem a altas frequências e grandes escalas
a baixas frequências. Para facilitar o entendimento pode-se fazer uma analogia com o termo
escala usado em topografia. Quando diz-se que um mapa está desenhado em grande escala
significa que o mesmo apresenta uma visão global do terreno e, portanto, não apresenta seus
detalhes, correspondendo apenas a informações de baixa frequência do relevo. Se, por outro
lado, desenha-se um mapa em pequena escala apresenta-se as características do terreno com
maior riqueza de detalhes, correspondendo às informações de alta frequência.
Embora exista uma relação entre a escala na análise Wavelet e a frequência na análise
de Fourier ela está longe de ser uma regra geral já que a correspondência entre uma e outra é
fortemente dependente da forma da wavelet escolhida. É comum a utilização do termo
"duração" (1/a) no lugar de frequência, para evitar a confusão com os ciclos de repetição dos
coeficentes wavelet [Lewa98].
Uma das relações frequentemente adotadas é a associação do pico do espectro dos
coeficientes wavelet com a singularidade da FT de uma onda cossenoidal. Essa associação
___________________________________________________________________________
18
pode ser alcançada computando a escala a do coeficiente wavelet máximo de uma onda
cossenoidal conhecida e comparando-a com a frequência do espectro de Fourier dessa onda.
2.3.2
Transformada Wavelet Discreta
O cálculo dos coeficientes da CWT (ou da FT) não pode ser praticamente realizado em
computadores por usar equações analíticas, integrais, etc. Assim, é necessário discretizar a
CWT, o que é conseguido, da mesma forma que na FT, pela amostragem dos coeficientes.
Esse procedimento da origem às séries wavelet, conhecidas como Transformada Wavelet
Discreta, DWT - Discrete Waveet Transform. Entretanto, ao contrário da FT, a amostragem
dos coeficientes da CWT não precisar ser realizada com uma taxa uniforme.
De fato, a mudança de resolução em cada escala permite utilizar taxas de amostragem
variáveis de acordo com a escala em se está operando. Para escalas maiores (frequências
baixas), a taxa de amostragem pode ser reduzida de acordo com o critério de Nyquist, o que
permite a economia de quantidades razoáveis de memória.
Desse modo, o plano tempo-frequência pode ser amostrado a uma taxa de amostragem
N1 na escala a1 e a uma taxa de amostragem N2 na escala a2. Se a1<a2 (correspondendo a
frequências f1>f2) então N2<N1, atendendo à seguinte relação:
N2a2 = N1a1
(Error! Style not
defined.-25)
N 2 N1
=
f2
f1
(Error! Style not
defined.-26)
ou ainda,
A discretização é feita inicialmente sobre o parâmetro a (escala) numa grade
logarítmica. Em seguida, o parâmetro b (deslocamento) é discretizado com respeito à escala a,
ou seja, é usada uma taxa de amostragem diferente para cada escala.
A abordagem é muito semelhante à usada no tratamento de sinais pela FT onde os
coeficientes são discretizados dando origem à série de Fourier ou FS (Fourier Series). A
diferença é que agora a taxa de amostragem varia de acordo com a escala em que se está
tratando o sinal.
Resumindo matematicamente esse procedimento, tem-se agora a equação da wavelet
ψ a ,b (t ) =
1
ψ(
t −b
)
a
a
re-escrita em sua forma discreta [Daub92]
(Error! Style not
defined.-27)
___________________________________________________________________________
19
ψ
j ,k
(t ) = a 0− j 2ψ (a 0− j t − kb0 )
a 0 > 1; b0 > 0
(Error! Style not
defined.-28)
A DWT viabiliza a computação da CWT, entretanto ela não pode ser considerada uma
transformada discreta na total acepção da palavra. Isso porque a DWT é simplesmente a
versão amostrada da CWT. Na verdade, a DWT é altamente redundante para viabilizar a
reconstrução do sinal, e essa redundância gera um custo computacional bastante elevado.
Assim, uma nova abordagem foi desenvolvida considerando agora que o parâmetro
tempo é de fato uma grandeza discreta. Cabe aqui uma observação quanto à nomenclatura
usada para diferenciar a transformada wavelet discreta gerada a partir da amostragem da CWT
e também conhecida como séries wavelet, da transformada wavelet de tempo discreto e que
deveria se chamar DTWT (Discrete Time Wavelet Transform). Na literatura especializada
convenciona-se chamar a DTWT de DWT, já que sua utilização é mais frequente [Burr98],
enquanto que a DWT é geralmente conhecida como séries wavelet ou WS (Wavelet Series).
Assumir-se-á doravante nesse trabalho o termo DWT para identificar a transformada wavelet
discreta tal qual é largamente feito na literatura.
Os fundamentos da DWT remontam ao ano de 1976 com os trabalhos de Croiser,
Esteban e Galand para o desenvolvimento de uma técnica para decomposição de sinais de
tempo discreto. No mesmo ano foi desenvolvida uma técnica para codificação de sinais de
voz chamada codificação de sub-bandas (subband coding), que foi aprimorada em 1983
dando lugar à codificação piramidal (pyramidal coding), que é também conhecida como
análise multiresolucional. Mais tarde, Vetterli [Vett92] otimizou o esquema de codificação
sub-banda, removendo as redundâncias no esquema de codificação piramidal.
2.3.3
Codificação Sub-Banda
A idéia por trás da codificação sub-banda é essencialmente a mesma da CWT. A CWT
é a medida da correlação entre a wavelet em diferentes escalas e o sinal, com essa escala
servindo de medida de similaridade, e é computada pela alteração da escala (suporte) de uma
função janela, pelo deslocamento dessa janela no tempo, pela multiplicação dessa janela pelo
sinal e, finalmente, pela integração do resultado em todo o intervalo de tempo.
No caso discreto (WS), o sinal é analisado em diferentes escalas por filtros com
diferentes frequências de corte. Para as pequenas escalas o sinal é tratado por filtros passa-alta
e para grande escalas por filtros passa-baixa. A quantidade de informação do sinal em cada
___________________________________________________________________________
20
escala é alterada pelas operações de filtragem e a escala é alterada por operações de
sub-amostragem ou sobre-amostragem. A sub-amostragem corresponde à remoção de
amostras do sinal, correspondendo a uma redução da taxa de amostragem. A
sobre-amostragem corresponde à inserção de novas amostras ao sinal, geralmente iguais a
zero ou a um valor interpolado, correspondendo a um aumento da taxa de amostragem.
A escolha mais usual na obtenção dos coeficientes da WS a partir da CWT é fazer uma
amostragem diádica dos coeficientes. Em outras palavras, escolhe-se a0=2 e b0=1 na equação
(2.28) gerando a equação
(Error! Style not
defined.-29)
ψ j ,k (t ) = 2 − j 2ψ (2 − j t − k )
que é uma base ortonormal para ao espaço L2(ℜ) [Daub92].
Todo o esquema pode ser graficamente representado pela Figura 2.10.
f
f
f
f
Figura Error! Style not defined..10: Divisão do espectro de frequências
através de um banco de filtros
Considere-se um sinal discreto no tempo representado por uma sequência x[n], (n =
0,1,2,3,...). A filtragem desse sinal [Cand88] corresponde a operação matemática de
convolução do mesmo com a função de resposta ao impulso h[n] do filtro. Essa operação
pode ser expressa pela seguinte equação
y[n] = x[n] ∗ h[n] =
∞
∑ x[k ].h[n − k ]
k = −∞
(Error! Style not
defined.-30)
Considerando-se agora que o sinal discreto no tempo x[n] foi obtido pela amostragem
de um sinal contínuo x(t) a uma frequencia Fs hertz., tem-se que a máxima frequência
___________________________________________________________________________
21
possível no sinal contínuo terá que ser Fs/2 hertz para atender ao teorema de Nyquist. Em
termos de frequência radial, temos que Fs é definida como 2π radianos, resultando que a
máxima frequência contida em x[n] é π radianos.
Após fazer-se atravessar o sinal por um filtro passa-baixa com metade da banda do
sinal original a maior frequência presente nesse sinal será de π/2 radianos. Sendo assim,
pode-se excluir metade das amostras do sinal e ainda continuar-se-á a atender ao critério de
Nyquist. Isso corresponde a uma sub-amostragem por um fator de 2, o que, na prática,
significa uma redução da frequência de amostragem pela metade. Esse processo pode ser
descrito pela seguinte equação:
y[n] = x[n] ∗ h[n] =
∞
∑ x[k ].h[2n − k ]
k = −∞
(Error! Style not
defined.-31)
Resumindo, vê-se que filtrando-se metade da banda do sinal através de um filtro
passa-baixa reduz-se metade de suas frequências, o que pode ser interpretado como uma
redução da quantidade de informações do sinal pela metade ou ainda, em outras palavras, uma
redução pela metade em sua resolução. Ora, uma redução da resolução pela metade permite
dobrar a escala em que se está analisando o sinal sem que haja perda de informação na
análise, ou seja, pode-se extrair metade das amostras do sinal sem que isso afete a quantidade
de informação presente no mesmo, o que corresponde a reduzir a frequência de amostragem
pela metade.
Essa é a estratégia adotada no cálculo da DWT. A DWT analisa o sinal em diferentes
bandas de frequência com diferentes resoluções pela decomposição do sinal em dois
conjuntos: aproximação (baixas frequências) e detalhe (altas frequências). As aproximações
são obtidas pela operação com filtros passa-baixa e os detalhes com filtros passa-alta, cada um
com metade da banda do sinal original. A saída de cada filtro é, então, sub-amostrada por um
fator de dois, que corresponde a eliminação de metade das amostras. Esse processo continua
até que sobrem apenas duas amostras do sinal, e pode ser matematicamente descrito pelas
seguintes equações
d [n] = x[n] ∗ g[n] =
∞
∑ x[k ].g[2n − k ]
k = −∞
a[n] = x[n] ∗ h[n] =
∞
∑ x[k ].h[2n − k ]
k = −∞
(Error! Style not
defined.-32)
(Error! Style not
defined.-33)
___________________________________________________________________________
22
em que d[n] e a[n] são, respectivamente, as saídas do filtro passa-alta e passa-baixa
sub-amostradas por um fator de 2. As sequências d[n] e a[n], respectivamente, são também
conhecidos como detalhes e aproximações do sinal x[n].
A Figura 2.11 ilustra o procedimento. Nela, x[n] representa o sinal original e g[n] e
h[n] as funções de transferência dos filtros passa-alta e passa-baixa respectivamente. Cada
nível inferior apresenta metade das amostras do nível imediatamente superior a ele. As
funções de transferência h[n] e g[n] são relacionadas através da expressão (2-34) e
correspondem a filtros conhecidos como QMF (Quadrature Mirror Filter).
(Error! Style not
defined.-34)
g[ L − 1 − n] = (−1) n h[n]
x[n]; f = [0 , pi]
g[n]
h[n]
f = [0 , pi/2]
f = [pi/2 , pi]
2
Coeficientes
do nível 1
2
d1[n]
a1[n]
g[n]
h[n]
f = [0 , pi/4]
f = [pi/4 , pi/2]
2
Coeficientes
do nível 2
2
d2[n]
a2[n]
g[n]
h[n]
f = [0 , pi/8]
f = [ pi/8 , pi/4]
2
Coeficientes
do nível 3
2
d3[n]
a3[n]
Figura Error! Style not defined..11: Descrição do algoritmo de codificação subbanda
___________________________________________________________________________
23
Pode-se demonstrar [Burr98] que a síntese do sinal x[n] pode ser obtida a partir dos
coeficientes d[n] e a[n] utilizando um processo inverso ao da análise. Nesse caso, os sinais em
cada nível sofrem uma superamostragem por um fator de 2 (inserção de mais amostras à
sequência original), passam pelos filtros pass-alta e passa-baixa e então são somados. É
interessante notar-se que as funções de transferencia h*[n] e g*[n] usadas na síntese são
exatamente as mesmas dos filtros usados na análise, exceto por uma inversão das sequências
no tempo. Dessa forma, a equação de síntese pode ser escrita por
x[n] =
∞
∑ (a[n].h[2k − n] + d[n].g[2k − n])
n = −∞
(Error! Style not
defined.-35)
A perfeita reconstrução do sinal x[n] não pode ser conseguida se os filtros não
possuírem uma banda ideal. Entretanto, é possível obter-se filtros que, sob certas condições,
permitam uma reconstrução perfeita. Os mais famosos foram obtidos por Ingrid Daubechies
[Daub92] e deram origem às waveletes de Daubechies.
Um outro fator importante a observar é que a operação de sub-amostragem é feita em
múltiplos de 2 e isso gera a necessidade de que o comprimento da sequência x[n] seja uma
potência inteira de 2. Simultaneamente, o comprimento do sinal determina o máximo número
de níveis de decomposição possível, conforme a fórmula
número de níveis de decomposição = log2(número de amostras)
(Error! Style not
defined.-36)
A interpretação dos coeficientes resultantes da DWT requer uma nova abordagem já
que sua apresentação não segue o mesmo padrão apresentado na análise de frequências. Uma
das formas mais usuais é a apresentação dos coeficientes obtidos em cada nível da análise em
um gráfico sequencial em que as escalas decrescem a partir da origem. A Figura 2.12
apresenta um exemplo. Note-se como não há uma interpretação elementar para cada caso,
principalmente pelo fato de que a DWT não destrói a informação de tempo tal qual o faz a
DFT. A habilidade em extrair melhores informações da DWT é dependente da experiência do
operador não só na transformada wavelet propriamente dita mas também no sistema que está
sendo analisado.
___________________________________________________________________________
24
(a)
(b)
(c)
(d)
(e)
(f)
Figura Error! Style not defined..12: DTW de um alguns sinais de teste obtidos usando wavelets
Haar. À esquerda o sinal original e à direita os coeficientes d[n]. (a) f = cos(2.pi.10.t);
(c) f = cos(2.pi.10.t) + cos(2.pi.60.t); (e) onda quadrada de 10Hz
___________________________________________________________________________
25
2.3.4
Transformada Wavelet Discreta em 2 dimensões
O conceito da DWT estudado em uma dimensão pode ser facilmente estendido para
duas dimensões. Nesse caso, se considerando-se uma matriz bidimensional M qualquer podese aplicar a DWT sobre as linhas, as colunas ou ainda as diagonais de M. Com isso, serão
computados os coeficientes de aproximações e detalhes da mesma forma que para uma
sequência unidimensional.
(a)
(b)
Figura Error! Style not defined..13: DTW de uma imagem apresentando os
coeficientes obtidos no primeiro nível. (a) Imagem original; (b)
Coeficientes da DWT de 1 nível com wavelet de Haar
___________________________________________________________________________
26
Uma abordagem usualmente feita é extrair os coeficientes da DWT e compara-los
lado a lado de forma se ter uma visão geral de todos os coeficientes simultaneamente. Um
exemplo disso pode ser visto nas imagens apresentadas na Figura 2.13. Note-se que as
imagens obtidas pelos coeficientes possuem metade do tamanho da imagem original, como
consequência da filtragem de metade da banda causada pela DWT.
___________________________________________________________________________
27
3
Análise de Imagens
O sistema visual humano é uma ferramenta altamente especializada em sua tarefa de
codificar informações para o cérebro e a sua simulação em um ambiente computacional tem
demandado muitos esforços de diversos pesquisadores nas mais diversas áreas [Bron00].
A primeira dificuldade na implementação de um sistema artificial de visão é a
generalidade das funções realizadas pelo sistema visual: reconhecimento de padrões,
interpretação de cores, acompanhamento de movimentos, compensação automática de
variações na luminosidade da cena em foco, etc. Na verdade, a complexidade e especialização
dessas funções levou os pesquisadores a se dedicarem a cada uma delas isoladamente,
gerando diversas teorias e sistemas que procuram repetir com o sucesso do sistema visual e a
análise de imagens é uma dessas área .
A análise de imagens lida com o processamento das imagens e a análise de suas
características [Gose96]. Frequentemente, uma imagem crua precisa ser processada para que
se diminua a quantidade de informação irrelevante ou para que se reduza o ruído, melhorando
as propriedade da imagem visando facilitar e tornar mais confiável a extração das
características que se quer estudar na mesma.
Genericamente falando, as operações sobre imagens, ou transformações, podem
assumir três naturezas [Gose96]: a) transformação imagem/imagem, onde a imagem original é
substituída por uma nova imagem, resultante do processamento da primeira; b) transformação
imagem/característica, onde são extraídas informações de caracterização da imagem e c)
transformação característica/decisão, na qual uma ou mais características da imagem é usada
para algum tipo de classificação e decisão.
No processamento em computadores as imagens são representadas por matrizes
obtidas pela digitalização de um sinal analógico recebido de algum elemento de captação
(câmera de vídeo, câmera de raios-X, sensor de prótons, etc) e convertido para digital por um
conversor A/D. A taxa de amostragem define a quantidades de pontos presentes na matriz,
que é chamada de resolução geométrica e define o nível máximo de detalhes da imagem.
___________________________________________________________________________
28
Cada ponto da matriz é chamado de pixel, uma abreviação do termo inglês picture
element. O valor do pixel está relacionado com a intensidade luminosa do respectivo ponto da
imagem e sua faixa de valores geralmente é uma potência 2. Estudos mostraram que o olho
humano não pode distinguir mais que 256 níveis de energia em uma cor. Por isso, tipicamente
usa-se 8 bits para representar o valor do pixel, sendo que para imagens em preto e branco essa
faixa é chamada de resolução da escala de cinza, profundidade de cinza ou escala de cinza,
com a cor preta representada por 0 e a branca por 255.
3.1
Histogramas
Uma informação bastante significativa da imagem é a sua distribuição de níveis de
cinza, ou seja, a frequência com que cada nível ocorre na imagem. Essa distribuição é
apresentada através de um histograma, que nada mais é do que um gráfico relacionando o
nível de cinza (abscissa) com a frequência de sua ocorrência na imagem (ordenada).
Um histograma é montado dividindo-se a faixa de níveis que se quer estudar em
intervalos que são chamados de bins ou células. Após isso, conta-se o número de pixels cujos
níveis estão presentes dentro desse intervalo e plota-se esse resultado, em função dos bins, na
forma de um gráfico de barras. A Figura 3.1-1 apresenta algumas imagens e seus respectivos
histogramas.
___________________________________________________________________________
29
(a)
(b)
(c)
(d)
(f)
(e)
___________________________________________________________________________
30
Figura Error! Style not defined..1:
cinza
Exemplos de histogramas de imagens com 256 níveis de
___________________________________________________________________________
31
Os histogramas apresentados na Figura 3.1-1 foram construídos para imagens fonte
com 256 níveis de cinza representados dentro de uma faixa de valores entre 0 e 1, sendo 1 o
valor para o nível de branco e 0 para o nível de preto.
3.2
Equalização
Frequentemente o histograma de uma imagem apresenta uma concentração de pontos
em alguma região. Isso pode acontecer por consequência da própria natureza da imagem ou
como resultado de transformações aplicadas sobre a mesma durante o processamento.
Nessas situações, pode-se decidir pela construção de um histograma assimétrico, ou
seja, um histogramas onde a largura de cada bin diferente. Nos histogramas assimétricos
usa-se bins mais estreitos nas regiões onde há uma alta concentração de níveis, e bins mais
largos nas regiões onde a baixa concentração. Dessa maneira pode-se melhorar a resolução
do histograma nas regiões com maior população de níveis.
Uma maneira de se alcançar esse objetivo é fazer com que a largura dos bins seja
calculada para que todos eles contenham o mesmo número de pixels. Outra é aplicar uma
transformação de forma a que os níveis de cinza da imagem sejam igualmente distribuídos ao
longo de toda a faixa possível da escala de cinza, de tal forma que cada nível contenha
aproximadamente a mesma quantidade de pixels. Essa transformação recebe o nome de
equalização, ou também transformação de alisamento do histograma [Gose96].
A equalização tem o efeito de melhorar o contraste das regiões da imagem que
apresentam alta concentração de pixels com níveis de cinza similares, como consequência do
espalhamento que provoca na escala de cinza.
Um algoritmo frequentemente usado para implementar a equalização é listar os pixels
da imagem original em ordem crescente do nível de cinza. Após isso, divide-se a lista em N
partes iguais, onde N é o número de níveis de cinza para a nova imagem que se quer obter, e
atribui-se nível 0 para os pixels da primeira parte, 1 para os da segunda e assim
sucessivamente.
Uma outra abordagem corrige o valor de cada pixel utilizando uma função de
transformação ax , vista na Figura 3.2-a, também chamada função de mapeamento. Essa
γ
função faz o mapeamento dos valores dos pixels dentro de uma faixa níveis baixo e alto de
forma a alargar ou encurtar a escala de cinzas de uma imagem, alterando ou não o valor dos
pixels dentro da faixa (se γ=1 o valor do pixel na saída da função é o mesmo da entrada).
___________________________________________________________________________
32
baixo
alto
0
0
1.0
inferior
superior
1.0
Intensidade de
Entrada
Intensidade de
Saída
(a)
Intensidade de Saída
top
axγ
bottom
low
high
1.0
Intensidade de Entrada
(b)
Figura Error! Style not defined..2: Função de mapeamento para correção dos níveis de cinza..
(a) Correspondência entre os níveis de cinza da entrada e saída; (b) Função de
mapeamento
Note-se que a função de mapeamento tem valores para limitar a faixa de operação. Os
valores low e high são usados para definir a faixa de intensidade dos pixels que será usada na
transformação. Valores fora dessa faixa serão truncados para os extremos da faixa de níveis
da saída.
A título de ilustração, pode-se encontrar um exemplo de equalização pelo método de
ajuste na Figura 3.2-b.
___________________________________________________________________________
33
(b)
(a)
(d)
(c)
Figura Error! Style not defined..3: Exemplo de equalização de imagens. (a) Imagem original;
(b) Histograma da imagem (a); (c) Imagem após equalização (low=0.1, high=0.9,
botton=0, top=1); (d) Histograma da imagem (c)
3.3
Detecção de bordas
Sabe-se que as bordas são uma das características mais importantes na interpretação de
imagens. O que se chama de borda é região de transição entre um objeto na imagem e o fundo
sobre o qual ele esta posicionado. Quanto maior a variação de intensidade entre os pixels do
objeto e do fundo mais definida é a borda, sendo essa definição chamada de intensidade da
borda.
A taxa de variação do nível de cinza em uma direção da imagem é igual à derivada
parcial, ou seja,
___________________________________________________________________________
34
∂g (x, y )
g (x + Δx, y ) − g (x, y )
= lim
Δx →0
∂x
Δx
(Error! Style
not defined.1)
para a taxa de variação horizontal e
∂g (x, y )
g (x, y + Δy ) − g (x, y )
= lim
Δ
y
→
0
∂y
Δy
(Error! Style
not defined.2)
para a taxa de variação vertical.
Partindo-se da equação (3-1) e considerando-se que o menor valor possível de Δx é 1,
tem-se que a equação (3-1) torna-se
(Error! Style
not defined.3)
que é o diferença de primeira ordem de g em relação a x. Raciocínio análogo pode ser feito
g'x (x, y) = g(x + 1, y) - g(x, y)
em relação à variável y chegando-se a diferença de primeira ordem de g em relação a y, ou
seja,
g'y (x, y) = g(x, y + 1) - g(x, y)
(Error! Style
not defined.4)
Em processamento de imagens é comum representar expressões dessa natureza
definindo operadores que representam os pesos de cada termo da equação. Assim,
reescrevendo-se as equações (3-3) e (3-4) de uma nova maneira, tem-se que:
g'x (x, y) = -1.g(x, y) + 1.g(x + 1, y)
(Error! Style
not defined.5)
g'y (x, y) = -1.g(x, y) + 1.g(x, y + 1)
(Error! Style
not defined.6)
e
Considerando-se que, por definição, a variável x cresce da esquerda para a direita e a
variável y cresce de baixo para cima ao longo da imagem, as equações (3-5) e (3-6) geram
dois operadores,
(Error! Style
not defined.−1 .
7)
que são chamados de detetores de borda, já que são usados para enfatizar ou detectar
a) − 1
1 e b)
1
mudanças no nível de cinza entre dois pixels adjacentes.
Esses detetores indicam a velocidade com que o nível de cinza varia de um pixel para
outro nas direções x e y. Valores positivos de g'x indicam que o nível de cinza aumenta
___________________________________________________________________________
35
quando se caminha da esquerda para a direita ao longo da imagem. Valores positivos de g'y
indicam que o nível de cinza aumenta quando se caminha de baixo para cima ao longo da
imagem.
Muitas vezes é necessário detectar bordas diagonais nos objetos presentes na cena.
Nesses casos usam-se operadores baseados em diferenças diagonais, tais como
−1
0
0
1
−1
0
0
0
0
0
0
0
1
a)
e b)
0
−1
(Error! Style
not defined.8)
1
0 .
ou
a)
e b)
0
0
1
0
−1
0
0
0
.
0
(Error! Style
not defined.9)
Esses operadores são conhecidos como detetores de borda de Robert e são sensíveis a
bordas diagonais da esquerda para a direita no sentido ascendente (equações 3-8a e 3-9a) ou
descendente (equações 3-8b e 3-9b).
Outros detetores combinam algum tipo de suavização da imagem juntamente com a
detecção de borda. Dentre estes, alguns dos mais comuns são [Gose96]:
a) o operador que combina suavização uniforme da imagem em uma direção e
detecção de borda na direção perpendicular, conhecido como detetor de borda de Prewitt,
representado por
−1
a) − 1
−1
0
0
0
1
1
1
−1 −1 −1
e b) 0
0
0
;
1
1
1
(Error! Style
not defined.10)
b) o operador que combina suavização binomial e detecção de borda, conhecido como
detetor de borda de Sobel, representado por
−1
a) − 2
−1
0
0
0
1
2
1
−1 − 2
e b) 0
0
1
2
−1
0
;
1
(Error! Style
not defined.11)
A Figura 3.4 apresenta alguns exemplos dos operadores uma mesma imagem. Note-se
a significativa diferença do resultado obtido pelo método de Robert com os resultados obtido
pelos métodos de Sobel e Prewitt.
___________________________________________________________________________
36
(a)
(b)
(c)
(d)
Figura Error! Style not defined..4: Resultados de diversos métodos de detecção de borda
sobre uma mesma imagem. (a) Imagem original; (b) Método de Robert; (c) Método
de Prewitt; (d) Método de Sobel
___________________________________________________________________________
37
4
Redes Neurais Artificiais (RNA)
4.1
Modelo de McCulloch-Pitts
As Redes Neurais Artificiais (RNA) são inspiradas nos sistemas neuronais biológicos
e nos sistemas nervosos dos seres vivos, também denominados de Redes Neurais Naturais
(RNN).
Atualmente, as pesquisas em RNA não se preocupam primordialmente imitar os
sistemas naturais e sim em atender à duas novas motivações [Azev00]:
•
Modelar o sistema nervoso com precisão tal que permita a observação de um
comportamento que, equivalendo ao comportamento de um ser vivo modelado, possa
servir como apoio às hipóteses usadas na modelagem;
•
Construir computadores com alto grau de paralelismo
A teoria de RNA surge a partir do final século XIX com a identificação do neurônio
biológico pelo neurologista espanhol Ramón y Cajal. A partir daí muitos pesquisadores e
cientistas agregaram novos conhecimentos ao estudo do sistema nervoso até que em 1943
Warren McCulloch e Walter Pitts publicaram na revista Bulletin of Mathematical Biophysics
o artigo "A Logical Calculus of the Ideas Immanent in Nervous Activity", criando a base para
a teoria das RNA tal qual é conhecida atualmente.
O modelo de McCulloch-Pitts ou MCP, como é também denominado, define o
neurônio como um sistema binários cujas entradas binárias e a saída binária são relacionadas
por um discriminador linear que pode ser genericamente definido pela seguinte equação:
⎛ n
⎞
y = H ⎜ ∑ wi xi − Θ ⎟ = h(w t x − Θ)
⎝ i =1
⎠
(Error! Style
not defined.1)
___________________________________________________________________________
38
em que o vetor w =[w1,w2,...,wn] é o vetor de ganhos associadas às entradas do vetor x, Θ é
o valor do limiar, h(.) é a função degrau unitário e y ∈ [0;1] é a saída binária. A figura 4.1
ilustra o diagrama de blocos do discriminador linear.
x1
x2
w1
w2
+
v
y
Θ
xn
wn
Figura Error! Style not defined..1: Diagrama de blocos de um discriminador linear
representando o modelo de neurônio McCulloch-Pitts
Considerando-se um vetor x no espaço euclidiano ℜn , vê-se que, matematicamente, o
modelo de McCulloch-Pitts é capaz de separar esse espaço em duas regiões A e B, conforme o
seguinte comportamento:
⎧ w t x − Θ > 0 ⇒ x ∈ A ⇒ y = 1
⎨ t
⎩w x − Θ < 0 ⇒ x ∈ B ⇒ y = 0
(Error! Style
not defined.2)
Esse comportamento pode ser usado como classificador de padrões ou separador de
aglomerados, desde que os padrões que se quer separar possam ser representados por vetores
linearmente separáveis. Essa situação pode ser melhor descrita considerando-se dois
conjuntos de vetores U e V ∈ ℜn, compostos, respectivamente, por uma quantidade k e m
vetores de n-dimensionais. Se U e V formarem aglomerados no espaço ℜn tal que exista um
hiperplano Θ que atenda
(Error! Style
⎛ n
⎞
y = H ⎜ ∑ wi xi − Θ ⎟ = h(w t x − Θ)
not defined.⎝ i =1
⎠
3)
então diz-se que os conjuntos U e V são linearmente separáveis, caso contrário não haverá um
discriminador linear porque o conjuntos não são linearmente separáveis.
___________________________________________________________________________
39
4.2
Perceptrons
Frank Rossenblatt, em 1958, dando prosseguimento ao trabalho de McCulloch,
desenvolveu uma rede de múltiplos neurônios e a chamou de Perceptron (Figura 4.2), que
também é conhecida pela sigla MLP, do inglês Multi Layer Perceptron (Perceptron Multi
Camadas). Conforme pode ser visto na Figura 4.2, a MLP é uma rede composta por camadas
de neurônios, as quais podem ser divididas basicamente em três classes [Kova96]:
c) Camada de entrada, ou primeira camada, composta pelos neurônios que recebem
os sinais de excitação;
d) Camada de saída, composta pelos neurônios cujas saídas são as saídas da rede;
e) Camadas intermediárias, ou camadas ocultas, que interligam as camadas de
entrada e saída.
k=0
k=1
k=2
k=3
u31 = y1
u01 = x1
u11
u21
u02 = x2
u12
u22
u32 = y2
u0J0=x J0
u1J1
u2J2
u3J3 = yJ3
Figura Error! Style not defined..2:
Diagrama de uma MLP (perceptron) de 4 camadas
As camadas da MLP da Figura 4.2 têm J0, J1, J2 e J3 dimensões, que correspondem
ao número de neurônios em cada uma.
Rosenblatt procurava desenvolver um método para ajuste dos ganhos e limiares dos
nós do Perceptron de forma a poder adequa-lo a situações onde a função discriminatória não é
simples de ser determinada [Kova96]. Para isso Rossenblat inspirou-se nos sistemas nervosos
biológicos e imaginou que seria possível "ensinar" uma MLP qual a função que ela deveria
modelar através de algum método de ajuste dos pesos e dos limiares dos MCPs em cada nó.
Além disso, Rossenblatt apoiou-se num estudo feito pelo biólogo D. Hebb em 1949, que
propôs um princípio pelo qual o aprendizado de um sistema nervoso complexo pode ser
___________________________________________________________________________
40
reduzido a um processo puramente local, em que os ajustes de ganhos sinápticos de cada
célula nervosa é dependente apenas dos erros detectados nessa célula.
De uma maneira geral, o processo de aprendizagem, também chamado de adaptação,
consiste em uma sequência de ajustes nos pesos de cada nó de forma a aproximar a saída da
rede ao valor da solução desejada. Na forma algébrica, pode-se dizer que, sendo w o vetor de
pesos de um MCP da rede, o aprendizado consistirá em definir-se um Δw tal que w(t+1) =
w(t)+ Δw gere uma saída melhor que w(t). Hebb teorizou que o Δw de cada MCP da rede
pode ser calculado unicamente com base em seu erro de saída, não importando os demais
MCPs da rede. Esse princípio ficou conhecido como Princípio de Aprendizado de Hebb e
pode ser escrito pela seguinte equação:
(Error! Style
not defined.4)
(Error!
Style
com
Δwi = η ⋅ e ⋅ x d
not defined.5)
(Error!
Style
e
e = ( y d − y)
not defined.6)
d
d
em que y é a saída desejada quando o MCP é excitado com a entrada x , y é a saída calculada
winew = wiold + Δwi
do MCP e η é a taxa de aprendizagem. Raciocínio semelhante pode ser empregado para o
cálculo do novo limiar Θ.
Rosenblatt definiu um algoritmo que baseava-se na apresentação de diversos exemplos
à rede e no ajuste sucessivo dos pesos e limiares de cada nó até que fosse atingido um
determinado patamar de erro. O algoritmo de Rosenblatt, que ficou conhecido como lei de
aprendizado do Perceptron sempre converge em um número finito de operações [Hayk94],
desde que o problema consista na classificação de dois conjuntos linearmente separáveis.
4.3
ADALINE
O termo ADALINE é um acrônimo da denominação ADAptive LInear Neuron e
representa um modelo desenvolvido por Widrow e Hoff em 1960, cujo algoritmo de
treinamento é conhecido como Regra Delta, que foi a precursora do algoritmo
backpropagation para treinamento de MLPs (ver item 4.5).
___________________________________________________________________________
41
x1
x2
w1
+1
w2
+
v
y
-1
e
xn
+
wn
Figura Error! Style not defined..3:
Θ
yd
Diagrama de blocos do modelo ADALINE
A principal característica do modelo ADALINE é que a função erro é calculada a
partir da saída linear v (Figura 4.3) o que leva a uma conveniente minimização de uma função
erro quadrática. Isso pode ser expresso da seguinte maneira:
Seja a função erro expressa pela equação
(Error! Style
not defined.7)
d
em que Γ={(xi , y i)}, i é o i-ésimo padrão de treinamento (i = 1,2,...n), é um conjunto de
1 n
e = ∑ ( y id − vi ) 2
2 i =1
treinamento e vi = wi.xi é a saída calculada para uma determinada entrada xi.
Utilizando-se o método do gradiente e partindo-se um ponto arbitrário w(0),
objetiva-se encontrar qual o vetor de pesos que minimiza e. Isso pode ser conseguido
ajustando-se w de forma a caminhar-se na direção oposta ao gradiente, ou seja, Δw α -∇e.
Através de algumas manipulações algébricas, chega-se à fórmula
∇e =
∂e
= − xi ⋅ e
∂wi
(Error! Style
not defined.8)
Com isso conclui-se que Δw α e.xi , ou
Δw = η.e.xi
(Error! Style
not defined.9)
___________________________________________________________________________
42
4.4
Escolha da topologia de uma rede MLP
O trabalho de definição da melhor topologia de uma rede MLP é basicamente
empírico e não há uma heurística para resolver esse problema. Entretanto, os trabalhos de
Cybenko, em 1988 e 1989, determinaram que uma MLP de três camadas pode aproximar
qualquer função contínua e uma de quatro pode aproximar qualquer função matemática,
ajudando a restringir o universo de configurações possíveis.
A definição do número adequado de nós em cada camada da rede depende de vários
fatores, como: número de exemplos usados no treinamento, quantidade de ruído presente nos
exemplos, complexidade da função a ser aprendida, distribuição estatística dos dados de
treinamento, etc. Também aqui não uma forma determinística para cálculo do número de
elementos, ficando o método sujeito à experiência do projetista em relação ao problema que
está sendo tratado.
4.5
Treinamento de redes MLP (Algoritmo backpropagation)
Existe atualmente um grande número de algoritmos para treinamento de redes MLP,
sendo que estes podem ser divididos basicamente em estáticos e dinâmicos. Os algoritmos
estáticos não alteram a estrutura da rede durante o treinamento, modificando apenas os pesos
e limiares. Os algoritmos dinâmicos alteram também a topologia da rede, aumentando ou
diminuindo o número de nós e conexões.
O algoritmo de aprendizado mais utilizado em redes MLP é o backpropagation,
desenvolvido em 1986 por Rummelhart, Hinton e Williams. Esse é um algoritmo do tipo
estático onde o aprendizado ocorre em duas fases, chamadas de forward e backward. Na fase
forward a saída da rede é calculada com base num padrão de entrada. Na fase backward
calcula-se o erro entre a saída desejada e a calculada para que seja feito o ajuste dos pesos das
conexões.
O algoritmo backpropagation é montado com base na generalização da Regra Delta de
Widrow e por isso é também conhecido como Regra Delta Generalizada. Nesse algoritmo é
proposta uma forma de definir os erros das camadas intermediárias, possibilitando o ajuste
dos pesos destas. Dessa forma, a função erro a ser minimizada passa a contemplar as saídas de
todos os neurônios de todas camadas, ou seja,
___________________________________________________________________________
43
(Error! Style
not defined.10)
em que E é o erro total, n o número de padrões de treinamento, k o número de unidades de
E=
k
1
( y id − y i ) 2
∑∑
2 n i =1
saída, yi a i-ésima saída calculada e yid a i-esima saída desejada.
A regra delta generalizada requer que as funções de ativação sejam semi-lineares, ou
seja, sejam contínuas, diferenciáveis e não-decrescentes [Kova96]. Para esse algoritmo, a
correção Δwji que deve ser aplicada aos pesos do i-ésimo neurônio da j-ésima camada será
Δwji =η.δj.xi
(Error! Style
not defined.11)
em que
δj =
∂E
= ( y dj − y j )Θ' (v)
∂v j
(Error! Style
not defined.12)
∂E
= Θ' (v)∑ δ l .w jl
∂v j
l
(Error! Style
not defined.13)
se j for a camada de saída, ou
δj =
se j for uma camada intermediária.
Um problema enfrentado pelos algoritmos de treinamento de redes MLP é a
dificuldade na definição dos parâmetros de treinamento. Um outro problema diz respeito a
quando deve ser suspenso o treinamento, os assim chamados critérios de parada. Alguns dos
critérios de parada a mais usados são: o encerramento do treinamento ao se atingir um número
máximo de ciclos; o encerramento quando o erro quadrático médio ficar abaixo de valor; o
encerramento quando o percentual de classificações corretas estiver acima de um valor; uma
combinação dos métodos anteriores.
Uma outra questão é a frequência de atualização dos pesos. Nesse sentido existem
duas abordagens em uso. A abordagem denominada on-line prevê que os pesos são ajustados
após a apresentação de cada padrão de treinamento. Essa abordagem, embora mais rápida,
pode ser instável de acordo com a magnitude do ator de aprendizado escolhido. Já a
abordagem, denominada batch, prevê que os pesos só serão ajustados após todos os padrões
terem sido apresentados. Embora mais estável, essa última tem um custo computacional
elevado em função da grande massa de dados do conjunto de treinamento.
___________________________________________________________________________
44
5
Metodologia
O estudo atual se aproveitou das imagens já captadas e catalogadas no trabalho
apresentado por Fernando Ribeiro [Ribe99].
O trabalho citado catalogou um total de 8402 imagens obtidas a partir da filmagem do
tráfego da Av. Garibaldi (próximo à Vasco da Gama), do ponto de um viaduto que liga a Rua
Caetano Moura à Av. Cardeal da Silva. A partir desse conjunto, foi utilizado um subconjunto
de 3200 imagens escolhidas aleatoriamente mas que atendessem ao pré-requisito de apenas
possuir um número inteiro de carros e não apresentar ônibus, caminhões ou motos, já que não
permitiam uma equivalência consistente com um número de carros.
Cada imagem, após digitalizada e processada, resultou num arquivo em formato
Bitmap, com resolução de 160x120 e 256 níveis na escala de cinza.
Neste estudo foram usados os seguintes equipamentos e programas:
a) Equipamento: Microcomputador padrão IBM-PC, marca COMPAQ, modelo Deskpro
4000, com processador Kingston TurboChip AMD-K6-2 de 366MHz, 96 MB de memória
RAM e disco rígido de 3 GB.
___________________________________________________________________________
45
b) Programas:
•
•
•
•
•
Sistema Operacional Microsoft Windows 98SE;
MATLAB v5.0.0;
MATLAB Neural Network Toolbox v2.0.3;
MATLAB Image Processing Toolbox v2.0-Beta;
MATLAB Wavelet Toolbox v1.0.2.
®
®
®
®
A estratégia de trabalho foi implementada em quatro etapas. Na primeira fez-se uma
equalização nas imagens para melhorar o contraste dos carros de cor escura em relação ao
piso asfaltico. Em seguida aplicou-se a Transformada Wavelet Discreta (DWT) com Wavelet
de Haar para reduzir o número de pontos das imagens. Na sequência foi realizado o
processamento para a detecção de bordas dos carros presentes nas imagens e, finalmente, as
imagens resultantes foram aplicadas à rede neural. Cada uma dessas etapas será descrita nos
próximos tópicos.
5.1
Equalização das imagens
Durante o curso da pesquisa uma das principais dificuldades encontradas foi a de
detectar carros cuja intensidade de brilho fosse baixa a ponto de dificultar a sua comparação
com o piso asfáltico. Essa dificuldade foi acentuada quando as imagens passaram pelo
processamento com wavelets (item 5.2), pois o resultado desse processamento terminava por
reduzir o número de detalhes das imagens.
Um outro fator que se apresentou também como uma dificuldade foi a perspectiva
apresentada pelas imagens captadas, que fez com que os carros mais distantes da câmera de
filmagem tivessem seu tamanho relativo reduzido, resultando também numa redução da
quantidade de informação que o representava e dificultando ainda mais a distinção de carros
de cor escura (pouco brilho) em relação ao asfalto.
A solução para eliminar esse problema veio através da equalização das imagens
(Capítulo 3), ou seja, da compensação seletiva do nível de cinza com o objetivo de melhorar o
contraste dos carros de cor escura em relação ao piso asfáltico.
Pela observação do histograma das imagens originais foi possível estabelecer um
critério que levou a um resultado satisfatório para o processo. Esse critério considera que os
___________________________________________________________________________
46
pixels dentro da faixa [0.05,0.5], numa escala de cinza onde o valor 0 significa cor preta e 1
significa cor branca, têm seus valores corrigidos de forma a assumirem a faixa máxima, ou
seja [0,1]. Todo trabalho foi realizado considerando uma curva de ajuste com γ=1, ou seja,
uma reta.
O MATLAB , através do Toolbox de Processamento de Imagens, permite a rápida
®
equalização das imagens através da função imadjust. Essa função recebe como argumentos a
imagem que se quer manipular na forma de uma matriz, a faixa de valores de entrada que
serão computados na equalização e a faixa de valores de saída nos quais os valores de entrada
serão computados. Dessa maneira foi possível melhorar significativamente o contraste das
áreas escuras das imagens, como pode ser visto em alguns exemplos apresentados na Figura
3.1.
Note-se que a função de equalização corrige apenas os valores que estão dentro da
faixa de entrada transformando-os em valores correspondentes na faixa de saída. Os valores
que estão fora da faixa de entrada, ou seja, valores menores que 0,05 ou maiores que 0,5, são
ajustados para o mínimo e o máximo da faixa de saída, respectivamente.
___________________________________________________________________________
47
Figura Error! Style not defined..1: Exemplos de imagens com e sem equalização. Do lado
esquerdo as imagens originais e do lado direito as imagens equalizadas via função
imadjust do MATLAB com faixa de entrada [0,05 0,5] e faixa de saúda [0 1].
___________________________________________________________________________
48
5.2
Processamento com Wavelets
Nessa técnica reside o grande avanço conseguido no presente estudo. O resultado da
aplicação da DWT sobre as imagens permitiu uma significativa redução no tamanho das
mesmas sem que houvesse perda da informação do número de carros que se queria registrar.
A aplicação da DWT foi conseguida através das rotinas presentes no Toolbox Wavelet
do MATLAB . Nesse toolbox encontram-se as funções necessárias para utilização da
®
Transformada Wavelet tanto contínua quanto discreta. Para a DWT, especificamente, existem
as funções tanto para análise quanto para síntese de sinais de uma ou duas dimensões.
Também é possível a escolha de uma das diversas wavelets mãe disponíveis.
No caso em questão, o objetivo foi obter os coeficientes de aproximação da DWT de
segundo nível de cada imagem e, para isso, optou-se pelo uso das wavelets de Haar. A escolha
dessa classe de wavelets mãe se deu por dois fatores: o primeiro foi a relação inteira entre o
número de pontos da matriz das imagens original e o número de pontos da matriz dos
coeficientes de aproximação obtidos; o segundo foi a decisão de observar o comportamento
de uma wavelet clássica e que permiti-se uma rápida fácil implementação da DWT em um
algoritmo externo ao MATLAB® para uso em estudos futuros. Durante o trabalho outras
wavelets mãe foram testadas sem que se observa-se um ganho significativo em relação ao
processo.
Feita a escolha da wavelet mãe (Haar), partiu-se das imagens originais na forma de
uma matriz de 120 linhas por 160 colunas. Em seguida, utilizando-se a função wavedec2 do
MATLAB®, fez-se a aplicação da DWT obtendo-se os coeficientes da decomposição de
segundo nível. No passo seguinte, utilizando a função appcoef2, gerou-se a matriz com 30
linhas por 40 colunas que corresponde a aproximação de segundo nível da matriz original.
Um exemplo dos resultados obtidos pode ser observado na Figura 5.2 onde são
apresentadas as imagens da Figura 5.1 já devidamente equalizadas (lado direito da Figura 5.1)
e ao lado dessas o resultado obtido pela DWT.
___________________________________________________________________________
49
Figura Error! Style not defined..2: Exemplos dos resultados obtidos para os coeficientes de
aproximação de segundo nível após a aplicação da DWT com wavelets de Haar. As
imagens originais tem resolução de 160x120 pontos e as aproximações de 40x30
pontos
___________________________________________________________________________
50
5.3
Detecção de Bordas
A última etapa no tratamento das imagens foi realizar uma detecção de bordas sobre as
imagens resultantes da DWT. Mais uma vez lançou-se mão do MATLAB através do Toolbox
Processamento de Imagens que possui a rotina edge específica para esse fim.
No presente estudo optou-se pela utilização do detetor de bordas de Sobel. Essa
escolha baseou-se no fato de que esse detetor apresenta uma boa resposta para bordas
horizontais e verticais da imagem, além de realizar uma ponderação no cálculo do valor do
pixel considerando o valor dos pixels imediatamente vizinhos.
O resultado da detecção de bordas foram matrizes binárias de 40x30 pontos onde as
bordas eram representadas por bits 1. Essas matrizes sofreram ainda uma última manipulação
para se tornarem vetores adequados para a apresentação à rede neural. Essa manipulação
consistiu em extrair da imagem apenas a região de interesse, ou seja, a região que contem os
carros, descartando-se os pontos fora dessa região.
Observando-se as Figuras 5.1 ou 5.2 pode-se notar que a área de interesse correspondo
a um trapézio na horizontal, com o lado menor na borda esquerda da imagem. Por observação
consegue-se facilmente definir para cada uma das 40 colunas que compõem cada imagem
quais os pixels que podem ser descartados. Assim, dos 1200 (30x40) pontos da matriz original
consegue-se formar um vetor coluna de 717 pontos pela concatenação dos segmentos de
interesse em cada coluna da matriz.
Uma melhor compreensão do resultado pode ser obtida observando-se na Figura 5.3 o
produto da função de detecção de bordas sobre as imagens obtidas da DWT. Note-se que as
imagens apresentadas na Figura 5.3 já apresentam as regiões descartáveis devidamente
anuladas.
___________________________________________________________________________
51
Figura Error! Style not defined..3: Resultados da detecção de bordas sobre as imagens
formadas pelos coeficientes de aproximação da DWT de segundo nível com
wavelet de Haar.
___________________________________________________________________________
52
5.4
Treinamento da Rede Neural
A topologia da rede Neural inicialmente utilizada foi a mesma já definida no trabalho
de Fernando Ribeiro [Ribe99], para que fosse possível estabelecer uma comparação entre o
novo método e o anterior.
Sendo assim repetiu-se o modelo de uma rede do tipo feed-forward composta por 20
neurônios na camada inicial, 20 na intermediária e 1 neurônio na camada de saída.
Para o treinamento foram usadas as mesmas 800 imagens originalmente selecionadas.
Essas imagens passaram pelo processo relatado nos itens 5.1 a 5.3 e geraram ao final uma
matriz de 717x800 pontos, onde cada uma das 800 colunas representou o resultado do
processamento de uma imagem. A tabela 5.1 apresenta a distribuição da quantidade de carros
por imagem no grupo de treinamento.
Total de carros por imagem do grupo treinamento
0
1
2
3
4
5
6
7
8
209
297
85
75
68
45
11
0
10
Tabela Error! Style not defined..1: Relação de carros por imagem no grupo de 800 imagens
usadas no treinamento
Devido à significativa redução da massa de dados em relação ao método anterior
pode-se optar pela apresentação simultânea das 800 imagens à rede, no lugar da divisão das
800 imagens em um grupo de 400 e dois de 200 imagens que foi feita anteriormente.
Nessa parte do trabalho foram usadas as funções do Toolbox Rede Neural do
MATLAB para redes do tipo feed-forward. A primeira função utilizada foi a initff para
inicialização da rede no MATLAB.
O treinamento propriamente dito foi feito com a função trainbpx que utiliza o
algoritmo backpropagation. A limitação de memória do equipamento onde foram realizados
os testes impediu a utilização da função trainlm que utiliza o algoritmo LevenbergMarquardt, muito mais eficiente que o algoritmo backpropagation. Cada passo do
treinamento, ou seja, a apresentação dos dados à rede (fase forward) seguida do cálculo dos
erros e ajuste dos pesos (fase backward) recebe o nome de época. Assim, o número de épocas
ao final do treinamento define quantos ciclos são necessários para que a rede atinja a precisão
necessária na modelagem.
___________________________________________________________________________
53
5.5
Validação da Rede Neural
Realizado o treinamento da rede partiu-se para a simulação da mesma utilizando-se as
2400 imagens restantes do lote de 3200 originalmente selecionado. Essas 2400 imagens
passarram pelo mesmo processo de tratamento das 800 imagens usadas no treinamento da
rede gerando uma matriz de 717 linhas por 2400 colunas, onde cada coluna representou uma
imagem.
Total de carros por imagem do grupo de simulação
0
1
2
3
4
5
6
7
8
634
1058
384
173
108
37
5
1
0
Tabela Error! Style not defined..2: Relação de carros por imagem no grupo de 2400 imagens
usadas na simulação
Para a simulação foi utilizada a função simuff do Toolbox Redes Neurais do
MATLAB. Essa função recebe os pesos e constantes encontrados com a função trainbpx e
calcula o vetor objetivo a partir de uma matriz de entrada. Para interpretar os resultados foram
calculados diversos tipos de erros absolutos e relativos, através da comparação entre as saídas
desejadas e as saídas calculadas pela rede. As fórmulas usadas para os erros foram as
seguintes:
erro absoluto = |no. de carros estimado – no. real de carros|
erro absoluto médio =
∑ erro absoluto
N
N
erro relativo =
erro relativo médio =
5.6
, em que N é o número de imagens
erro absoluto
número de carros na imagem
∑ erro relativo
N
N
, em que N é o número de imagens
(Error! Style
not defined.1)
(Error! Style
not defined.2)
(Error! Style
not defined.3)
(Error! Style
not defined.4)
Procedimentos gerais
Todas as funções descritas nos itens anteriores foram agrupadas de forma a
automatizar as tarefas. As imagens utilizadas foram as mesmas obtidas e catalogadas no
trabalho descrito em [Ribe99]
___________________________________________________________________________
54
Inicialmente optou-se pela manipulação das imagens através da criação de dois
arquivos texto com uma estrutura simples, onde uma linha continha o nome do arquivo da
imagem e a outra o número de carros presentes na mesma. Um exemplo desses arquivos pode
ser encontrado no Apêndice A.
O tratamento das imagens foi implementado através de um programa do MATLAB
condensando todas as técnicas descritas nos itens 5.1 a 5.3. Esse arquivo está listado no
Apêndice B. Ao final da execução esse programa gera um arquivo de dados no formato
MATLAB contendo as matrizes resultantes do tratamento das imagens, bem como vetores
target que serão usados no treinamento e simulação da rede neural.
O treinamento da rede neural foi implementado pelo programa descrito no Apêndice
C. Ao final da execução esse programa gerou um arquivo de dados no formato MATLAB
contendo os pesos e as constantes da rede bem como a curva de aprendizagem da rede durante
o treinamento.
A validação da rede neural foi realizada pelo programa descrito no Apêndice D. Esse
programa obtém a resposta da rede neural para um conjunto novo de imagens e calcula os
erros dessas respostas em relação às respostas esperadas.
___________________________________________________________________________
55
6
Resultados obtidos
Nesse capítulo serão apresesentados os resultados em duas etapas. Na primeira será
feita uma descrição dos resultados obtidos no estudo atual, focalizando os erros e tempos de
execução do método desenvolvido. Na segunda será feita uma comparação com o método
desenvolvido anteriormente no trabalho de Fernando Ribeiro [Ribe99] no intuito de mostrar a
evolução obtida com o uso do método atual. Durante o capítulo usar-se-á a nomenclatura
método atual com referência ao método desenvolvido nesse estudo e método anterior com
referência ao método desenvolvido por Ribeiro.
6.1
Desempenho do método atual
Utilizando-se a estrutura descrita no capítulo 5, foi possível realizar um processo de
treinamento da rede neural com um grupo de 800 imagens. A rede utilizada tinha três
camadas com 20x20x1 neurônios. Esse treinamento demorou 7 horas, com 7758 épocas, e
apresentou o comportamento demonstrado na Figura 6.1.a. Os parâmetros usados no
treinamento podem ser observados no programa listado Apêndice C. O treinamento foi
executado até que o erro quadrático médio na saída da rede atingisse um valor menor ou igual
a 0,01.
A título de comparação, também foram feitas experiências com uma rede menor, de
10x10x1 neurônios, cujo o resultado do treinamento está apresentado na Figura 6.1.b. Essa
rede foi treinada após 6249 épocas, num total de 3 horas e 10 minutos .
___________________________________________________________________________
56
(a)
(b)
Figura Error! Style not defined..1: (a)Resultado do treinamento da rede neural feed-forward
com 3 camadas 20x20x1; (b) Idem para uma rede 10x10x1
___________________________________________________________________________
57
Após o treinamento foram realizadas simulações para averiguar a capacidade das
redes em calcular resultados a partir de novas entradas. Os resultados, obtidos pela
metodologia explícita no capítulo 5, demonstraram que ambas as redes são capazes de estimar
o volume de carros numa sequência de fotogramas. A tabela 6.1 apresenta, os resultados do
erro quadrático médio absoluto e normalizado (erro dividido pelo número de carros na
imagem) obtido nas simulações. Esses resultados foram obtidos pelo programa descrito no
Apêndice D.
Erro absoluto médio
por lote
Treinamento
Simulação
0,0182
0,4067
0,0154
0,4623
Rede
20x20x1
10x10x1
Erro normalizado médio
por lote
Treinamento
Simulação
0,0035
0,1972
0,0032
0,2185
Tabela Error! Style not defined..1: Comparação dos erros obtidos pelos resultados dos
testes com lotes de treinamento (800 imagens) e simulação (2400
imagens)
Uma outra avaliação dos resultados pode ser apreciada nas figuras a seguir, onde
vêem-se uma classificação dos erros absolutos (Figura 6.2) e normalizados (Figura 6.3) por
faixas. Essa classificação mostra qual o total de imagens do lote de simulação em que erro do
resultado calculado pela rede é menor que um determinado valor.
Total de imagens por erro absoluto
1400
1200
1000
800
600
400
200
qu
e4
Ma
i or
4,0
)
[3,
0;
[2,
0;
[1,
0;
Rede 20x20x1
3,0
)
2,0
)
1,0
)
Rede 10x10x1
[0,
5;
0,5
)
[0,
25
;
[0
;
0, 2
5)
0
[0 ; 0,25)
[0,25 ; 0,5)
[0,5 ; 1,0)
[1,0 ; 2,0)
[2,0 ; 3,0)
[3,0 ; 4,0)
Maior que 4
Rede 20x20x1
1256
446
431
229
30
7
1
Rede 10x10x1
1139
425
506
270
52
6
2
Figura Error! Style not defined..2: Distribuição do número de imagens por faixa de erro
absoluto no lote de simulação
___________________________________________________________________________
58
Total de imagens por faixa do erro normalizado
1400
1200
1000
800
600
400
200
0
qu
e4
4,0
)
Re de
2
0x 10x
1
0x 20x
1
Ma
i or
[3,
0;
[0,
25
;0
,5)
[0,
5;
1,0
)
[1,
0;
2,0
)
[2,
0;
3,0
)
[0
;
0, 2
5)
Re de
1
[0 ; 0,25)
[0,25 ; 0,5)
[0,5 ; 1,0)
[1,0 ; 2,0)
[2,0 ; 3,0)
[3,0 ; 4,0)
Maior que 4
Rede 20x 20x 1
1215
663
427
76
12
6
1
Rede 10x 10x 1
1120
622
508
111
27
10
2
Figura Error! Style not defined..3: Distribuição do número de imagens por faixa de erro
normalizado no lote de simulação
Uma outra análise pode também ser realizada se catalogarmos os erros nas imagens
com o mesmo número de carros. Os resultados obtidos dessa análise foram obtidos pelo
programa listado no apêndice E e estão representados nas tabelas a seguir.
Faixa de erro absoluto
# carros
<0,25
> 4,0
# imagens
0
634
0
0
0
0
0
0
634
26,42%
1
470
318
216
50
3
0
1
1058
44,08%
2
96
79
133
67
6
3
0
384
16,00%
3
30
30
46
61
5
1
0
173
7,21%
4
16
15
28
36
11
2
0
108
4,50%
5
10
4
7
11
4
1
0
37
1,54%
6
0
0
1
3
1
0
0
5
0,21%
7
0
0
0
1
0
0
0
1
0,04%
8
0
0
0
0
0
0
0
0
0,00%
431
229
30
9,54%
1,25%
Totais
%
1256
52,33%
[0,25;0,5) [0,5;1)
446
18,58%
17,96%
[1,0;2,0) [2,0;3,0) [3,0;4,0)
7
0,29%
1
0,04%
2400
%
100,00%
100,00%
Tabela Error! Style not defined..2: Classificação dos erros por imagens com
as mesmas quantidades de carros (simulação com a rede
20x20x1)
___________________________________________________________________________
59
6.2
Comparação com o método anterior
Os resultados obtidos no método anterior [Ribe99] precisam ser manipulados para que
possam ser comparados aos resultados do método atual.
A primeira questão diz respeito ao tempo de treinamento da rede. No método anterior
não foi possível efetuar o treinamento da rede em uma só etapa devido à limitação de
performance do computador consequente da grande massa de dados que foi utilizada. Dessa
maneira, foram realizados três treinamentos em sequência, utilizando um lote de 400 imagens
no primeiro treinamento (duração de 3 horas), acrescentando 200 imagens no segundo (total
de 5 horas) e mais 200 imagens no último (total de 9,5 horas). Desse modo vê-se que o tempo
total gasto no processo foi de 17,5 horas. A tabela a seguir compara os resultados obtidos nos
dois métodos
Método
Tempo de
treinamento (hs)
Anterior
Atual 20x20x1
Atual 10x10x1
17:30'
7
3hs e 10min
Tabela Error! Style not defined..3: Comparação dos tempo de treinamento dos métodos
anterior e atual
A segunda questão refere-se ao erro de modelagem da rede obtida. Pela mesma razão
relatada no parágrafo anterior, a simulação da rede no método de Ribeiro foi realizada
dividindo-se o lote de 2400 imagens de teste em 6 lotes com 400 imagens cada. Os valores de
erro obtidos são dispostos na tabela abaixo, juntamente com os valores do método atual
relatados no item 6.1.
Método
anterior
atual 20x20x1
atual 10x10x1
Erro absoluto médio
por lote
Treinamento
Simulação
0,0353
0,8000
0,0182
0,4067
0,0154
0,4623
Erro normalizado médio
por lote
Treinamento
Simulação
0,0028
0,2496
0,0035
0,1972
0,0032
0,2185
Tabela Error! Style not defined..4: Comparação dos erros obtidos pelos resultados dos
testes usando os métodos anterior e atual
___________________________________________________________________________
60
7
Conclusões
A partir dos resultados obtidos e demonstrados no capítulo anterior pode-se concluir
que a combinação das ferramentas Wavelet, Tratamento de Imagens e Redes Neurais
configura uma solução para a estimação do volume de tráfego de veículos a partir de uma
sequência de fotogramas. Os erros obtidos pelo método mostraram-se aceitáveis quando o
interesse é a comparação do volume de tráfego entre duas ou mais vertentes de tráfego.
A nova combinação de ferramentas também apresentou uma significativa redução do
custo computacional quando comparada ao método anterior que combinava apenas Análise de
Imagens e Redes Neurais. Essa redução se apresentou na forma de uma significativa
economia na quantidade de memória gasta para armazenar as imagens tratadas e também no
menor tempo de processamento do algoritmo de treinamento da rede.
Cabe ressalvar que o método não se mostrou adequado para um estimação precisa do
número de veículos em uma imagem, já que eventualmente acontecem erros de estimação
muito significativos. O que se pôde observar foi a sua utilidade na estimação do fluxo de
veículos a partir de uma sequência de imagens estáticas. Nesse sentido, pode-se afirmar que
os erros obtidos são perfeitamente aceitáveis para um grande número de aplicações prática, tal
como, por exemplo, a captação de dados para um sistema inteligente de temporização de
semáforos.
Muitos estudos podem ser feitos a partir dos resultados conseguido té aqui. Na
ferramenta wavelet pode-se avaliar a utilização de outras wavelets mãe para averiguar a
alteração na performance do método. Também pode-se averiguar se uma aproximação maior,
nível 3 ou 4, ainda manterá uma quantidade de informação suficiente para ser detectada pela
rede.
Ainda com relação à ferramenta wavelet é possível implementar a detecção de bordas
diretamente a partir dos coeficientes obtidos pela DWT, eliminando-se o passo da detecção de
bordas e melhorando a performance do algoritmo.
___________________________________________________________________________
61
No tratamento de imagens é possível estudar outras formas de equalização que
possam melhorar ainda mais o contraste das imagens. Também pode-se alterar os parâmetros
de sensibilidade do método detecção de bordas, ou mesmo alterar esse método, visando uma
melhoria no resultado do tempo de treinamento da rede.
Por fim, a rede neural utilizada pode ser melhor treinada apresentando-se um conjunto
maior e mais representativo de imagens. Além do mais, os parâmetros de treinamento podem
ser afinados para otimizar o tempo de treinamento.
Uma vez definido o algoritmo final, todas as ferramentas utilizadas podem ser ainda
desenvolvidas em uma linguagem de programação mais otimizada (C ou FORTRAN)
evitando-se com isso as desvantagens de performance e consumo de memória do ambiente de
desenvolvimento do MATLAB.
___________________________________________________________________________
62
Apêndice A
Arquivos de listas de imagens
Arquivos com listagem das figuras e respectivos número de carros. No trabalho foram
montados dois arquivos dessa natureza. O primeiro, denominado list123_800.txt, contem a
listagem com nome das 800 imagens usadas no treinamento da rede neural. O segundo,
denominado list4-9_2400.txt, contem a listagem com nome das 2400 imagens usadas na
simulação da rede neural.
A listagem a seguir apresenta as linhas iniciais do arquivo list123_800.txt.
000000t1.bmp
0
000000t2.bmp
0
000000t3.bmp
0
000000t4.bmp
0
000000t5.bmp
0
000000t6.bmp
0
000000t7.bmp
0
:
:
:
___________________________________________________________________________
63
Apêndice B
Programa para criação das matrizes de
dados para a RNA
Listagem do programa makept.m responsável pela criação das matrizes que serão
aplicadas à rede neural.
%
%
%
%
%
%
%
%
MAKEPT – Create input matrix and target vector for neural net
based on DWT, image equalization and edge detection
imglist
imgdir
imgpt
p
t
–
-
Text file with the list of images
Directory of images
MATLAB file with results
input matrix for neural net
target vector from neural net
%
Angelo A. Duarte, 01-20-2000
%
Copyright © 2000 by Angelo Duarte
clc
% Initialization
p = [];
t = [];
i1 = round((53-(1:40))/5.55)+1; % Upper part that will be discarded
i2 = round((117+(1:40))/5.55)-1; % Lower part that will be discarded
wtlevel = 2;
% Wavelet Transform Level
wavelet = 'haar';
% Wavelet type
fid = fopen(imglist);
% File with list of images
fimg = fgetl(fid);
% Get first image file name
cimg = fgetl(fid);
% Get number of cars in the image
image = 0;
% Image coounter
while cimg ~= -1
% Process until EOF
image = image + 1;
% ith input
[X,map] = bmpread(strcat(imgdir,'\',fimg));
% Read image
t(:,image) = str2num(cimg);
home
[fimg '
' imglist '
' imgpt '
' num2str(image)] % Print message
X = ind2gray(X,map);
% Transform to gray level matrix
X = imadjust(X,[0.05 0.5]);
% Image equalization
[C,S] = wavedec2(X,wtlevel,wavelet); % Wavelet Transform
X = appcoef2(C,S,wavelet,wtlevel);
% Calculates de approximation
coeficients
X = edge(X,0.5,'sobel');
% Edge extraction
P = [];
% Create na empty column vector
for j = 1:40
P = [P ; X(i1(j):i2(j),j)]; % Fill column vector based on image's
useful part
end
p(:,image) = P;
% Build the input matrix for neural net
fimg = fgetl(fid);
% Get next image file name
cimg = fgetl(fid);
% Get number of cars in the image
end
t = (t+1)/10;
% t values in [0,1] range
___________________________________________________________________________
64
fclose(fid);
% Close file
clear ans X map i1 i2 image j fid fimg cimg C S P wavelet wtlevel
save(imgpt,'p','t')
% Save results
___________________________________________________________________________
65
Apêndice C
Programa de treinamento da RNA
Programa train3lay.m usado no treinamento da rede neural.
% TRAIN3LAY – Train neural net using backpropagation
% p – Input matrix (717xN), N = total of images
% t – Target vector
%
%
Angelo A. Duarte, 01-20-2000
Copyright (c) 2000 by Angelo Duarte
clc
begintime = datestr(datenum(now),0)
% Neural functions
f1 = 'logsig';
f2 = 'logsig';
f3 = 'logsig';
% Store begin time
% 1st layer
% 2nd layer
% 3rd layer
% Net initialization
mm = repmat([0 1],size(p,1),1);
[w1,b1,w2,b2,w3,b3] = initff(mm,10,f1,10,f2,1,f3);
clear mm;
% Net training
tp = [1 10000 0.01 0.3 1.2 0.3 0.9 1.01];
[w1,b1,w2,b2,w3,b3,te,tr] = trainbpx(w1,b1,f1,w2,b2,f2,w3,b3,f3,p,t,tp);
endtime = datestr(datenum(now),0)
save train3laylt1
% Save results
% Store end time
___________________________________________________________________________
66
Apêndice D
Programa para simulação e contagem de
erros
Programa sim3lay.m usado na simulação da rede neural e cálculo dos erros.
% SIM3LAY – Validate the neural net obtained by TRAIN3LAY program and
% calculate the errors
% ptrain – input matrix used on training
% psim
- input matrix for simulation
% ttrain – target vector used on training
% tsim
- correct target vector used for compare the result of the
simulation
%
%
Angelo A. Duarte, 01-20-2000
Copyright (c) 2000 by Angelo Duarte
% Simultion with the same images used on training
atrain = simuff(ptrain,w1,b1,f1,w2,b2,f2,w3,b3,f3);
etrain = (atrain – ttrain)*10;
absetrain = abs(etrain);
metrain = sum(abs(etrain))/800 % Mean error for this group of images
% Simulation with new images
assim = simuff(psim,w1,b1,f1,w2,b2,f2,w3,b3,f3);
esim = (assim – tsim)*10;
absesim = abs(esim);
mesim = sum(absesim)/2400 % Mean error for this group of images
% Ranges of absolute errors
mEd = [0 0 0 0 0 0 0];
for j = 1:2400,
if absesim(j) < 0.25;,
mEd(1) = mEd(1)+1;,
elseif absesim(j) < 0.5;,
mEd(2) = mEd(2)+1;,
elseif absesim(j) < 1;,
mEd(3) = mEd(3)+1;,
elseif absesim(j) < 2;,
mEd(4) = mEd(4)+1;,
elseif absesim(j) < 3;,
mEd(5) = mEd(5)+1;,
elseif absesim(j) < 4;,
mEd(6) = mEd(6)+1;,
else
mEd(7) = mEd(7)+1;,
end
end
mEd
% Ranges of normalized errors
Nmetrain = absetrain/(ttrain*10)
___________________________________________________________________________
67
Nmesim = absesim/(tsim*10)
NmEd=[0 0 0 0 0 0 0];
for j = 1:2400,
Nabsesim(j) = absesim(j)/(tsim(j)*10);
if Nabsesim(j)<0.10;,
NmEd(1)=NmEd(1)+1;,
elseif Nabsesim(j)<0.25;,
NmEd(2)=NmEd(2)+1;,
elseif Nabsesim(j)<0.5;,
NmEd(3)=NmEd(3)+1;,
elseif Nabsesim(j)<0.75;,
NmEd(4)=NmEd(4)+1;,
elseif Nabsesim(j)<1;,
NmEd(5)=NmEd(5)+1;,
elseif Nabsesim(j)<1.5;,
NmEd(6)=NmEd(6)+1;,
else
NmEd(7)=NmEd(7)+1;,
end
end
NmEd
___________________________________________________________________________
68
Apêndice E
Programa para classificação dos erros
Programa sim3lay1.m usado na classificação dos erros nas imagens com os mesmos
números de carros.
% SIM3LAY1 - Calculate the errors in images with the same number of cars
% psim
- input matrix for simulation
% tsim
- correct target vector used for compare the result of the
simulation
%
%
Angelo A. Duarte, 01-20-2000
Copyright (c) 2000 by Angelo Duarte
% Simulation with new images
asim = simuff(psim,w1,b1,f1,w2,b2,f2,w3,b3,f3);
esim = (asim - tsim)*10;
absesim = abs(esim);
% Ranges of absolute errors
mEd = zeros(9,7);
t = tsim*10;
for j = 1:2400,
if absesim(j) < 0.25,
mEd(t(j),1) = mEd(t(j),1)+1;,
elseif absesim(j) < 0.5,
mEd(t(j),2) = mEd(t(j),2)+1;,
elseif absesim(j) < 1,
mEd(t(j),3) = mEd(t(j),3)+1;,
elseif absesim(j) < 2,
mEd(t(j),4) = mEd(t(j),4)+1;,
elseif absesim(j) < 3,
mEd(t(j),5) = mEd(t(j),5)+1;,
elseif absesim(j) < 4,
mEd(t(j),6) = mEd(t(j),6)+1;,
else
mEd(t(j),7) = mEd(t(j),7)+1;,
end
end
mEd
___________________________________________________________________________
69
Bibliografia
[Akay98]
AKAY, Metin, Time frequency and wavelets in biomedical signal processing, IEEE
Press Series in Biomedical Engineering, IEEE , New York, NY, 1998
[Azev00]
AZEVEDO, Fernando M. de, BRASIL, Lourdes M., OLIVEIRA, Roberto C. L. de,
Redes neurais com aplicações em controle e sistemas especialistas, Bookstore,
Forianópolis, Santa Catarina, 2000
[Bron00]
BRONZINO, Joseph D., The Biomedical Engineering Handbook, 2 ed., CRC Press
LLC, Boca Raton, Florida, 2000
[Burr98]
BURRUS, C. Sidney, GOPINATH, Ramesh ª, GUO, Haitao, Introduction to
wavelets and wavelet transforms: A primer, Prentice Hall, Inc., Upper Saddle River,
New Jersey, 1998
[Cand88]
CANDY, James V., Signal processing: the modern approach, International Edition
1988, McGraw-Hill Book Co., Singapore
[Daub92]
DAUBECHIES, Ingrid, Tem lectures on wavelets, SIAM – Society for Industrial
and Applied Mathematics, Philadelphia, Pennsylvania, 1992
[Galv99]
GALVÃO, Roberto K. H., Wavelet-based techniques for adaptive feature and
pattern recognition, Tese de Doutorado, ITA, São José dos Campos, São Paulo,
1999
[Gose96]
GOSE, Earl, JOHNSONBAUGH, Richard, JOST, Steve, Pattern recognition &
image analysis, Prentice Hall, Upper Saddle River, New Jersey, 1996
[Grap95]
GRAPS, Amara, An introduction to wavelets, IEEE Computational Science and
Engineering, vol. 2, num. 2, Summer 1995, IEEE Computer Society, Los Alamitos,
CA
[Hans96]
HANSELMAN, Duane C., LITTLEFIELD, Bruce, Mastering MATLAB®:A
comprehensive tutorial and reference, Prentice Hall, Inc., Upper Saddle River, New
Jersey, 1996
[Hayk94]
HAYKIN, S., Neural Networks: A comprehensive foundation, New York,
Macmillan Publishing, 1994
___________________________________________________________________________
70
[Kova96]
KOVÁCS, Zsolt L., Redes neurais artificiais: fundamentos e aplicações, 2. ed.,
Edição Acadêmica, São Paulo, SP, 1996
[Kuma99] KUMAR, V. Ravi, et. al., Simple denoising algorithm using wavelet transform,
AIChE Journal, Vol.45, n. 11, p. 2461-2466, 1999
[Lewa98]
LEWALLE, Jacques, Wavelet without lemmas, Lecture Series on Applications of
Continuos Wavelets to Data Analysis, Syracuse University, 6-8 April 1998
[Misi96]
MISITI, Michel, et. al., Wavelet toolbox for use with MATLAB®, The MathWorks,
Inc., Natick, Massachusets, March 1996
[Ribe99]
RIBEIRO, Fernando F. S., Detecção de volume de tráfego de veículos
proporcionada por visão computacional via redes neurais, Dissertação de
Mestrado, Departamento de Engenharia Elétrica da UFBA, Salvador, Bahia, Janeiro
de 1999
[Thom95] THOMPSON, Clay M., SHURE, Loren, Image processing toolbox for use with
MATLAB®, The MathWorks, Inc., Natick, Massachusets, 1995
[Vett92]
VETTERLI, M., HERLEY, C., Wavelets and filter banks: theory and design, IEEE
transactions on Signal Processing, Vol. 40, 1992, pp. 2207-2232