Fazer o do Arquivo PDF - Universidade Federal do Paraná

Transcrição

Fazer o do Arquivo PDF - Universidade Federal do Paraná
UNIVERSIDADE FEDERAL DO PARANÁ
DEPARTAMENTO DE ENGENHARIA ELÉTRICA
CURSO DE ENGENHARIA ELÉTRICA
PABLO H. DE A. CARNELOS
RICARDO ZELIOTTO
SISTEMA DE DETECÇÃO DE MOVIMENTO EM TEMPO
REAL COM O KIT DSP TMS320DM642
CURITIBA – 2011
PABLO H. DE A. CARNELOS
RICARDO ZELIOTTO
SISTEMA DE DETECÇÃO DE MOVIMENTO EM TEMPO
REAL COM O KIT DSP TMS320DM642
Trabalho de Conclusão de Curso de
Engenharia Elétrica, Departamento de
Engenharia
Elétrica,
Setor
de
Tecnologia, Universidade Federal do
Paraná.
Orientador:
Prof.
Dr
Evelio
Martín
García Fernández
CURITIBA - 2011
2
PABLO H. DE A. CARNELOS
RICARDO ZELIOTTO
SISTEMA DE DETECÇÃO DE MOVIMENTO EM TEMPO
REAL COM O KIT DSP TMS320DM642
TRABALHO APRESENTADO AO CURSO DE ENGENHARIA ELÉTRICA, DA
UNIVERSIDADE FEDERAL DO PARANÁ, COMO REQUISITO À OBTENÇÃO
DO TÍTULO DE GRADUAÇÃO.
COMISSÃO EXAMINADORA
_____________________________________________________
PROF. DR. EVELIO MARTÍN GARCÍA FERNÁNDEZ – UFPR
_____________________________________________________
PROF. DRA. GISELLE FERRARI – UFPR
_____________________________________________________
PROF. DR. GIDEON VILLAR LEANDRO – UFPR
CURITIBA, JUNHO DE 2011.
3
AGRADECIMENTOS
Agradecemos primeiramente a Deus por nos dar saúde e capacidade
intelectual para o desenvolvimento deste trabalho, agradecemos também aos
nossos familiares e namoradas pelo apoio, incentivo e paciência nas inúmeras horas
investidas no decorrer do projeto. Ao nosso orientador, Evelio Fernández, que
esteve sempre disposto a nos auxiliar desde a indicação do trabalho até a
disponibilização dos meios para realizá-lo, o nosso muito obrigado.
4
RESUMO
Os sistemas de vigilância eletrônica vêm ganhando cada vez mais espaço e
importância em nossa sociedade, visto que são sistemas robustos, eficientes e
confiáveis. Esta demanda está presente em aplicações de monitoramento em
estabelecimentos comerciais, residenciais, bem como em controle de tráfego de
veículos e pessoas. A etapa primordial da maioria destes sistemas é a detecção de
movimento entre uma seqüência de quadros de um vídeo, etapa esta, que pode ser
desenvolvida por inúmeros métodos que foram sendo aprimorados com o decorrer
dos anos. A placa DSP TMS320DM642, da Texas Instruments, entra neste contexto,
pois ela permite o desenvolvimento de um sistema de processamento digital de
sinais robusto, eficiente e em tempo real. Neste projeto serão apresentados o
funcionamento desta placa e o desenvolvimento de algoritmos de detecção de
movimento em tempo real através do software Matlab, processado pela
TMS320DM642. Pelo fato de ser um projeto piloto, há muitos pontos a serem
aprimorados, abrindo espaço para que outros possam dar continuidade ao trabalho.
Palavras chave: TMS320DM642, DSP, detecção de movimento, Simulink.
5
ABSTRACT
The electronic surveillance systems are gaining more space and importance in our
society, because these systems are robust, efficient and reliable. This demand is
present in monitoring applications in commercial establishments, residential and
traffic control as well. The key step of most of these systems is the motion detection
between a sequence of frames from a video, which can be developed by numerous
methods that have been improved with the years. The TMS320DM642 DSP board
from Texas Instruments falls into this context because it allows the development of a
robust and efficient system for digital signal processing in real time. In this project we
will describe the functioning of this board and the development of algorithms for
motion detection
in real time
using Matlab software, processed by the
TMS320DM642. Because it is a pilot project, there are many ways to improve it,
making room for others to continue this work.
Keywords: TMS320DM642, DSP, motion detection, Matlab, Simulink.
6
SUMÁRIO
1.
INTRODUÇÃO .................................................................................................. 11
2.
DETECÇÃO DE MOVIMENTO.......................................................................... 13
2.1
2.2
2.3
3.
DESCRIÇÃO DOS EQUIPAMENTOS E FUNCIONAMENTO ........................... 19
3.1
3.2
4.
PRÉ-PROCESSAMENTO DA IMAGEM ...................................................... 14
SUBTRAÇÃO DE FUNDO ........................................................................... 15
SEGMENTAÇÃO ........................................................................................ 17
KIT DSP TMS320DM642 ............................................................................. 19
FUNCIONAMENTO .................................................................................... 20
TRABALHOS REALIZADOS ............................................................................ 26
4.1 TESTES INICIAIS ....................................................................................... 26
4.2 ALGORITMO DE DETECÇÃO DE MOVIMENTO ........................................ 27
4.2.1 Método Subtração de Fundo .................................................................... 27
4.2.2 Método Subtração de Quadros Consecutivos .......................................... 31
5.
RESULTADOS .................................................................................................. 32
5.1
5.2
5.3
6.
SUBTRAÇÃO DE FUNDO ........................................................................... 32
SUBTRAÇÃO DE QUADROS CONSECUTIVOS ........................................ 34
OTIMIZAÇÕES ........................................................................................... 35
CONCLUSÃO E TRABALHOS FUTUROS ....................................................... 40
7
LISTA DE FIGURAS
Figura 1 – Sistema de detecção de objetos em movimento ..................................... 13
Figura 2 – Aplicação do filtro Mediana em janela 3x3. ............................................. 15
Figura 3 – Imagem original seguida de dilatação e erosão 3x3. ............................... 15
Figura 4 – Diagrama da placa EVM DM642 ............................................................. 20
Figura 5 – Interface CCS 3.1 .................................................................................... 21
Figura 6 – Biblioteca da EVM DM642 no “Simulink” ................................................. 21
Figura 7 – Demonstração de montagem do Kit ........................................................ 22
Figura 8 – Conectores de entrada de vídeo do Kit ................................................... 23
Figura 9 – Conectores de saída de vídeo do Kit....................................................... 23
Figura 10 – Exemplo do “Matlab” ............................................................................. 23
Figura 11 – Algoritmo com o Método de Subtração de Fundo no “Simulink” ............ 27
Figura 12 – Bloco de estimação de fundo ................................................................ 28
Figura 13 – Cálculo da mediana .............................................................................. 28
Figura 14 – Comparação e segmentação ................................................................ 29
Figura 15 – Identificação e contagem dos blobs ...................................................... 29
Figura 16 – Desenhos e escritas na imagem original ............................................... 30
Figura 17 – Bloco “Contagem de Objetos” ............................................................... 31
Figura 18 – Método Subtração de Quadros Consecutivos ....................................... 31
Figura 19 – Segmentação do método Subtração de Quadros Consecutivos. ........... 31
Figura 20 – Fundo, segmentação e resultado .......................................................... 32
Figura 21 – Efeito causado pela mudança de iluminação ........................................ 33
Figura 22 – Veículo dividido em dois objetos ........................................................... 33
Figura 23 – Detecção de veículo estacionado .......................................................... 34
Figura 24 – Detecção somente de veículo em movimento ....................................... 34
Figura 25 – SQC, segmentação e resultado ............................................................ 35
Figura 26 – Bloco de segmentação através do limiar constante ............................... 35
Figura 27 – Bloco de pré-processamento................................................................. 36
Figura 28 – Subtração de fundo (em cima) e SQC (em baixo) ................................. 36
Figura 29 – Detecção de oclusão entre veículos ...................................................... 37
Figura 30 – Amostra analisada ................................................................................ 38
8
LISTA DE TABELAS
Tabela 1 – Resumo dos resultados .......................................................................... 38
9
LISTA DE SIGLAS
TI – Texas Instruments
CCS – Code Composer Studio
IDE – Integrated Development Evaluation
DSP – Digital Signal Processing
PCI – Peripheral Component Interconnect
EVM – Evaluation Module
UFPR – Universidade Federal do Paraná
BBox – Bounding Box
LED – Light-Emitting Diode
DRAM – Dynamic Random Access Memory
CD – Compact Disk
JTAG – Joint Test Action Group
USB – Universal Serial Bus
RCA – Radio Corporation of American
VGA – Video Graphics Array
BIOS – Basic Input/Output System
10
1.
INTRODUÇÃO
A necessidade de maior eficiência em sistemas de monitoramento fez com que
o homem fosse substituído, gradativamente, pela visão computacional, pelo fato de
ser um sistema robusto que trabalha 24 horas por dia e com desempenho constante.
Este trabalho está voltado para profissionais do ramo de segurança, monitoramento
e para a sociedade em geral, visto que este tema e aplicação trazem benefícios e
facilidades para as atividades dos ramos em questão.
Este trabalho propõe o desenvolvimento de um sistema de detecção de
movimento em tempo real, utilizando o kit DSP TMS320DM642 como plataforma e
interface com o software “Matlab”, onde será desenvolvido o algoritmo através da
ferramenta de diagrama de blocos “Simulink”. Em paralelo, há um objetivo
secundário de aprofundar os conhecimentos sobre o kit, para possibilitar futuros
trabalhos nesta plataforma.
O fato de este kit ser pouco conhecido e utilizado no mundo da eletrônica e de
não conhecermos seu verdadeiro potencial, nos trouxe um grande desafio, porém
pôde abrir portas para uma área que está em pleno desenvolvimento, como os
sistemas de reconhecimento e monitoramento de veículos, pessoas e objetos em
tempo real.
O presente projeto está desmembrado basicamente em três partes: revisão
bibliográfica, estudo do kit DSP e desenvolvimento, otimização e comparação de
dois algoritmos para a detecção de objetos em movimento. O capítulo 2 apresenta
os principais conceitos aplicados em uma estrutura geral de sistemas de detecção
de movimento, bem como suas ferramentas e processos.
O capítulo 3 descreve as características técnicas do equipamento utilizado e
aborda o funcionamento da interface entre o kit e o “Matlab”. A última etapa tem
como foco os métodos utilizados para criar dois algoritmos, a fim de testar o
desempenho do Kit DSP TMS320DM642 com o “Matlab”. No capítulo 4 é
apresentada a construção destes métodos na ferramenta “Simulink”, e a compilação
de resultados e otimizações são abordados no capítulo 5.
11
Para finalizar, no capítulo 6 são descritas as conclusões do trabalho, bem como
propostas futuras de melhoria dos resultados apresentados.
12
2.
DETECÇÃO DE MOVIMENTO
Atualmente, é difícil desenvolver um sistema definitivo para solucionar o
problema de detecção de movimento de forma genérica. As soluções existentes são
para condições específicas relacionadas com a aplicação desejada.
O que torna o desenvolvimento de tal sistema mais complexo é a dificuldade de
imunizá-lo aos fatores naturais como mudanças na iluminação (sombras, posição e
intensidade), sobreposição de objetos, oscilação da câmera e mudanças na
geometria do fundo. Há trabalhos que foram desenvolvidos especificamente para o
tratamento desses fatores, em [9] por exemplo, foi desenvolvido um método para
suprimir sombras indesejadas.
De maneira geral, um sistema que tem como objetivo a detecção de movimento
e posterior reconhecimento de algum padrão ou contagem de objetos, apresenta
uma seqüência de etapas distintas que são tratadas separadamente, como
apresentado na figura 8. A primeira etapa consiste no pré-processamento da
imagem, onde ela é convertida em escala de cinza e pode ser submetida a filtragem
espacial para eliminar ruídos. O próximo passo é a estimação do fundo da imagem,
que pode ser realizada através de vários métodos ([10] e [11]), desde o mais simples
como utilizar o primeiro quadro do vídeo como fundo, ou métodos mais complexos
que estimam o mesmo de forma dinâmica, alterando o modelo de fundo com o
decorrer dos quadros da cena.
Figura 1 – Sistema de detecção de objetos em movimento
13
Em seguida, é realizada a segmentação da imagem, que consiste na distinção
de objetos estáticos de objetos dinâmicos, através da comparação do quadro atual
com o modelo de fundo da imagem. Os operadores morfológicos exercem a função
de eliminar o ruído indesejado, para que se obtenha uma imagem mais adequada
para futura análise, como o operador “fechamento”. Quanto maior a perfeição da
extração dos objetos em movimento, menor será a presença de falso-positivos e
negativos, tornando as etapas seguintes menos complexas computacionalmente.
Uma vez realizado este processamento, é necessário separar os objetos do
modelo de fundo. O algoritmo realiza nesta etapa a varredura dos pixels, o
agrupamento e a identificação daqueles com mesma intensidade, esses grupos são
comumente chamados de blobs [12]. Os blobs são transmitidos, de maneira geral,
em forma de um vetor constituído de quatro elementos: as coordenadas 2-D do
vértice superior esquerdo, a largura e altura de cada grupo identificado.
Em seguida, uma regra de decisão é criada para verificar se estes blobs
identificados se encaixam nas características do objeto de interesse. Nesta etapa há
vários métodos utilizados, visto que existem inúmeras aplicações possíveis. A
detecção de rostos [13], por exemplo, identifica o padrão dos olhos, nariz e boca
através das suas características apresentadas na máscara binária.
Desta maneira, com os objetos identificados, o rastreamento dos mesmos pode
ser realizado. Assim, aplica-se um método para seguir o objeto em movimento,
podendo ser realizado através de retângulos criados a partir das coordenadas dos
blobs atualizadas a cada quadro do vídeo.
E por fim, se o objetivo é realizar a contagem de objetos, um acumulador é
inserido para a contagem dos blobs caracterizados como objetos de interesse.
2.1
PRÉ-PROCESSAMENTO DA IMAGEM
Após a captura da imagem há várias técnicas aplicadas para melhorar a
posterior análise da mesma, como filtros passa-alta, passa-baixa, geométricos e
operadores morfológicos [14]. Neste trabalho foi utilizado um filtro do tipo passa14
baixa chamado “mediana”, que tem como objetivo a suavização da imagem original
[15]. Este filtro atribui o valor mediano da janela utilizada ao pixel central, uma janela
3x3 como no exemplo da figura 9. Desta forma, ele elimina pequenos detalhes que
poderiam causar ruído na imagem.
Figura 2 – Aplicação do filtro Mediana em janela 3x3. [Fonte: www.mathworks.com/support]
Outra técnica utilizada foi o operador morfológico “fechamento”, que elimina
pequenos buracos e preenche fendas em contornos da máscara binária através da
determinação do valor de um pixel a partir de relações geométricas com os pixels
vizinhos [16]. Este método realiza primeiramente a dilatação da imagem e, em
seguida, a erosão (figura 10). Quanto maior for a janela utilizada, mais significativo
será o resultado final.
Figura 3 – Imagem original seguida de dilatação e erosão 3x3. [Fonte: MANDAVA, A. K. On-Board 3D
Object Tracking]
2.2
SUBTRAÇÃO DE FUNDO
A técnica de subtração de fundo é utilizada para detectar objetos de interesse
em uma seqüência de imagens. De maneira geral, ela compara cada novo quadro
com o modelo de fundo da cena, e é constituída basicamente de três etapas:
treinamento, classificação e atualização.
15
O treinamento é o tempo inicial necessário (número de quadros) para que haja
uma estimativa inicial do modelo de fundo; alguns métodos de maior complexidade
não apresentam esta etapa de treinamento, pois estimam o plano de fundo de forma
dinâmica.
A etapa de classificação vai definir se o pixel faz parte do plano de fundo ou de
algum objeto em movimento, comparando o quadro atual com o modelo de fundo.
Por fim, a atualização vai assegurar uma coerência do modelo de fundo, pois ele
está submetido a variações devido a mudanças da geometria e da iluminação da
imagem. Serão descritos abaixo os métodos utilizados neste trabalho para realizar
esta etapa:
Subtração de fundo através do cálculo da mediana – Este método estima o
fundo da imagem atribuindo a cada pixel o valor mediano calculado entre X quadros
iniciais do vídeo [4]. É um método bastante eficaz em casos onde a câmera de vídeo
está fixa e a imagem não sofre alterações significativas em relação à iluminação e
geometria, pois como este método é não adaptativo, qualquer mudança das
características acima fará com que a futura análise de segmentação seja
prejudicada. O armazenamento dos quadros escolhidos para o treinamento pode
consumir muita memória, podendo tornar desta maneira, o sistema mais lento
computacionalmente.
Com o objetivo de resolver alguns destes problemas, foi desenvolvido um
método adaptativo:
Subtração de Quadros Consecutivos (SQC) – Este método não determina um
modelo de fundo, ele é baseado na diferenciação direta de quadros consecutivos em
uma seqüência de imagens [5]. Este método funciona da seguinte maneira: cada
pixel do novo quadro do vídeo é subtraído do pixel correspondente do quadro
anterior, em seguida, aplica-se o módulo nesta subtração, obtendo desta forma uma
imagem com pixels preponderantemente pretos (regiões onde não houve
modificações nos valores dos pixels) e pixels mais claros, onde existiu uma diferença
de valor entre os mesmos, ou seja, regiões onde ocorreu movimento.
16
Este método é mais flexível que o anterior visto que não depende de uma
imagem específica para criar o fundo e não é sensível a mudanças bruscas de
iluminação. A desvantagem deste método é que se um veículo, por exemplo, que
estava em movimento parar, este método não vai mais detectar este veículo,
havendo a necessidade que ele recomece a se movimentar para haver uma região
de pixels que caracterize a forma do mesmo.
2.3
SEGMENTAÇÃO
Para realizar a segmentação da imagem, os métodos mais utilizados nos
sistemas atuais se baseiam na limiarização [17]. A partir da imagem resultante da
diferença entre os pixels dos quadros, este método classifica através de um limiar,
se os pixels pertencem ao fundo da imagem ou se são pixels que caracterizam
objetos em movimento. Dois métodos utilizados neste trabalho são descritos abaixo:
Limiar constante – A imagem é comparada a um limiar “L” previamente
selecionado, se o resultado for maior que o limiar, o pixel “P” é considerado como
estando em movimento e recebe o valor “1”, caso contrário é considerado fundo e
recebe o valor “0”, criando desta maneira, uma imagem binária. Este limiar não deve
ser muito pequeno para não ocorrer a captura de ruídos indesejados (movimento de
folhas, por exemplo), mas também não pode ser muito grande, para que objetos de
interesse que se desloquem lentamente possam ser detectados. Resumindo, o limiar
é dependente do ambiente a ser analisado e da velocidade dos objetos, tornando
este método não muito flexível. A equação (1) define esse método:
𝑃 𝑥 – 𝑃 𝑥−1
> 𝐿, 𝑃 = 1
𝑃 𝑥 – 𝑃 𝑥−1
≤ 𝐿, 𝑃 = 0
(1)
Método de Otsu [18] – Este método binariza a imagem a partir do seu
histograma. O algoritmo assume que a imagem a ser binarizada contém apenas
duas classes de pixels (o primeiro plano e o fundo) e, em seguida, calcula o limiar
ótimo que separa essas duas classes de modo que sua variância intra-classe seja
mínima. Este método se adapta mais facilmente a mudanças do ambiente analisado,
17
porém apresenta uma maior complexidade que pode afetar o desempenho do
sistema em tempo real.
18
3.
DESCRIÇÃO DOS EQUIPAMENTOS E FUNCIONAMENTO
Os recursos utilizados para a realização deste trabalho foram:
 Uma câmera de vídeo JVC modelo GR-D200u
 Uma TV comum com entrada de video RCA
 Kit DSP TMS320DM642
 Cabo paralelo macho/macho
 Um computador com entrada paralela
 Software Matlab R2007a
 Software Adobe Premiere 6.5
 Placa de captura de vídeo PINNACLE DV500 Plus
 Cabo com conector S-video
3.1
KIT DSP TMS320DM642
O Kit DSP TMS320DM642 utilizado foi disponibilizado pelo Departamento
de Engenharia Elétrica e compreende:

A placa EVM DM642

Fonte de alimentação da placa – 5V 5A

CD de instalação do CCS 3.1

Emulador JTAG modelo XDS510PP Plus da Spectrum Digital

Fonte de alimentação do emulador – 5V 3A

CD com driver do emulador

CD de atualização do driver
A placa EVM DM642 é uma plataforma de desenvolvimento que permite ao
usuário avaliar e desenvolver aplicações para a família DSP C64xx da TI (Texas
Instruments). A placa apresenta as seguintes características: processador de 720
MHz, interface PCI (Peripheral Component Interconnect) padrão, 32 Mbytes de
memória DRAM (Dynamic Random Access Memory), 4 Mbytes de memória flash,
portas de vídeo e de áudio, interface Ethernet, LEDs (Light-Emitting Diode)
19
programáveis e interface para emulador JTAG (Joint Test Action Group informações técnicas presentes em [1]). A figura 1 apresenta o diagrama da DM642.
Figura 4 – Diagrama da placa EVM DM642
3.2
FUNCIONAMENTO
Para realizar a comunicação entre a placa e o computador utiliza-se um
emulador JTAG, este, como citado em [2], pode ter saída USB (Universal Serial Bus)
ou paralela. Como o modelo do emulador disponibilizado pelo Departamento de
Engenharia Elétrica possuía saída paralela, para finalizar a conexão física entre o
computador e o emulador foi necessário o uso de um cabo paralelo de conectores
ambos machos DB25, que não é muito facilmente encontrado no mercado.
A placa é acessada através do software CCS IDE (Code Composer Studio
Integrated Development Evaluation), que realiza uma interface com o computador,
conforme figura 2, no qual é possível criar um projeto (arquivo .pjt) e programar o kit,
para então compilá-lo no DSP através de um arquivo executável (arquivo .out). As
principais linguagens aceitas pela interface são: C, C++ e Assembly. Para que o
CCS 3.1 reconheça a placa utilizada faz-se necessária a devida configuração no
“Setup CCStudio”, indicando os corretos modelos da placa e do emulador utilizados.
20
Figura 5 – Interface CCS 3.1
Outra opção para o desenvolvimento do algoritmo é o software “Matlab”, que
permite o uso de uma linguagem em alto nível através dos diagramas de bloco da
ferramenta “Simulink”.
O “Simulink”, por sua vez, contém uma biblioteca específica para a família de
processadores C6000, chamada “c6000lib”, que é criada no momento da instalação
do CCS 3.1. Dentro desta biblioteca encontra-se um conjunto de blocos para a placa
DM642, como mostra a figura 3, e a partir destes, pode-se criar um projeto no
“Simulink” compatível com o CCS. Vale salientar que os blocos da biblioteca “Video
and Image Processing Blockset” também são compatíveis com o CCS e podem ser
usados para incrementar o algoritmo.
Figura 6 – Biblioteca da EVM DM642 no “Simulink”
21
Para permitir o funcionamento deste sistema, o “Matlab” utiliza a ferramenta
“Real-Time Workshop” para criar uma implementação em linguagem C em tempo
real do modelo “Simulink”.
Sendo assim, para rodar um modelo da ferramenta “Simulink” é necessário
seguir alguns passos. Primeiramente é necessário conectar as entradas e saídas a
um dispositivo de captura de vídeo (por exemplo, uma câmera) e um monitor (por
exemplo, uma televisão), respectivamente. É necessário, também, conectar a placa
ao computador através do emulador JTAG e do cabo Paralelo, como mostra a figura
4.
Desenvolvimento
do Algoritmo
Exibição de
Resultados
Captura
Emulador
Emulador
Processamento
JTAG
JTAG
Processamento
Figura 7 – Demonstração de montagem do Kit
O kit suporta vários padrões de conectores. Para os conectores de entrada, o
kit suporta os seguintes padrões: S-video e RCA para vídeo composto, como mostra
a figura 5.
22
S-Video
RCA
Figura 8 – Conectores de entrada de vídeo do Kit
Já para os conectores de saída é possível observar na figura 6 que o kit aceita
os padrões: VGA, S-video e Vídeo RCA Componente.
S-Video
VGA
RCA - Componente
Figura 9 – Conectores de saída de vídeo do Kit
Após o kit estar devidamente conectado e os programas e drivers estarem
corretamente instalados, é necessário criar um modelo no “Simulink”. Como mostra
a figura 7, os blocos principais desse modelo devem consistir em três elementos:
“DM642EVM V3”, “Task” e o algoritmo.
Figura 10 – Exemplo do “Matlab”
23
O bloco “DM642EVM V3” aponta para o “Matlab” o modelo da placa e do
processador que estão sendo utilizados, configurando o “Real-Time Workshop” para
gerar um código específico para esse hardware.
O “Task” é responsável por criar uma função principal, que executa uma função
secundária contida no bloco “Algoritmo”. Ele determina parâmetros e é capaz de
restringir, através de uma estrutura de sinais, o acesso pelo algoritmo a outros
recursos da placa, dessa forma o seu processamento é otimizado.
Por último, o bloco “Algoritmo” contém a solução elaborada e responsável
pelos resultados nas portas de saída da placa.
Dentro do subsistema do bloco “Algoritmo”, para representar as entradas e
saídas de vídeo, deve-se utilizar os blocos “Video Capture” e “Video Display”,
contidos na biblioteca “c6000lib”.
O primeiro é um conversor analógico-digital que permite a entrada dos dados
de vídeo para serem processados. Esse bloco captura o vídeo no tamanho 720x480
pixels com formato uint8 (valores inteiros positivos com 8 bits).
Já o segundo é um conversor digital-analógico que converte os resultados para
as portas de saída da placa. Uma importante observação é que o bloco aceita
apenas o formato uint8 como sinal de entrada, sendo necessário em muitos casos
utilizar um conversor.
Após ter o algoritmo pronto, basta clicar no “Incremental Build” que a
ferramenta “Real-time Workshop” fará tudo automaticamente, ou seja, converte o
modelo “Simulink” para linguagem C, inicia automaticamente o CCS criando o
projeto.pjt, conecta a placa ao programa, compila o algoritmo para linguagem de
máquina e executa o arquivo .out.
Esta aplicação do “Matlab” é um recurso eficiente para prototipagem rápida e
desenvolvimento de aplicações de sistemas integrados para processadores digitais
de sinais, porém pouco explorada como o modelo utilizado neste trabalho.
24
Vários trabalhos desenvolvidos utilizam o kit DSP TMS320DM642 para
diferentes aplicações, como a detecção de pessoas [3], sistema de vigilância [4],
sistema de detecção de alvos em infravermelho [5], sistema embarcado de detecção
de objetos tridimensionais [6] e segmentação de superfícies planares [7]. Esses
trabalhos foram desenvolvidos diretamente no CCS em linguagem C, no entanto,
foram encontradas poucas aplicações em que o “Matlab” é a ferramenta utilizada
para criar o algoritmo. Em [8], por exemplo, foi utilizado o kit DSP TMS320DM642
com o “Simulink” para detecção de formas geométricas através da transformada de
Hough.
25
4.
TRABALHOS REALIZADOS
4.1
TESTES INICIAIS
Realizar uma série de testes com o kit DSP TMS320DM642 para verificar seu
funcionamento e a real possibilidade de integrá-lo ao “Matlab” foi de extrema
importância, pois determinaria a possibilidade de realizar ou não a proposta inicial
deste trabalho.
A idéia inicial era de utilizar um laptop para realização dos testes devido a sua
praticidade de locomoção e instalação, no entanto, a interface utilizada pelo kit é a
JTAG e o emulador disponibilizado utiliza uma interface paralela não encontrada em
computadores mais modernos. A primeira tentativa de solução foi através de um
adaptador USB-Paralelo, porém durante a instalação do CCS 3.1 ocorreu um erro
pela falta de uma porta paralela nativa. Outro ponto observado foi a lista de sistemas
operacionais compatíveis com o software, sendo o “Windows XP” o sistema mais
recente. Assim a tentativa de instalar o kit em um computador desktop com sistema
operacional “Windows XP” foi a única solução encontrada.
Outra dificuldade encontrada nesse processo foi configurar o computador, o
emulador e o driver da placa para o correto funcionamento, pois foi necessário
realizar o ajuste das configurações da porta paralela na BIOS do computador e no
software “SD Config v3.1” do emulador.
Após a correta instalação o resultado encontrado foi satisfatório, tendo em vista
que não se encontrou dificuldades em realizar alguns exemplos do próprio kit, que
funcionaram corretamente.
No entanto, ao realizar a integração com o “Matlab” outras dificuldades foram
encontradas, pois não há compatibilidade na versão disponível do CCS 3.1 com
versões mais atuais deste programa. Após algumas pesquisas [19] verificou-se que
seria necessário utilizar a versão R2007a ou R2006b, ou ainda atualizar a versão do
CCS para a 3.3 se quiséssemos utilizar o “Matlab” já instalado no computador da
26
UFPR, versão R2008a. Porém, o CCS 3.3 não foi encontrado para download gratuito
[20]. Optou-se então, em utilizar o CSS 3.1 com o “Matlab” R2007a.
A partir desses primeiros passos foi possível iniciar a composição de um
algoritmo de processamento de imagem a fim de atingir os objetivos citados.
4.2
ALGORITMO DE DETECÇÃO DE MOVIMENTO
Neste trabalho foram desenvolvidos dois algoritmos baseados nos métodos
subtração de fundo e SQC conforme citados anteriormente.
4.2.1
Método Subtração de Fundo
Neste método há cinco etapas principais que constituem o algoritmo, que foram
separadas em blocos distintos no “Simulink” conforme figura 11.
3
1
4
5
2
Figura 11 – Algoritmo com o Método de Subtração de Fundo no “Simulink”
Após a captura da imagem 720x480 em escala de cinza, foi inserido o bloco 1
para diminuir o tamanho da imagem para 160x120, com a finalidade de diminuir o
tempo de processamento da mesma. Este processo foi realizado através do método
de interpolação bilinear, onde se utiliza quatro pixels próximos para interpolar o valor
do pixel. Em seguida, a seqüência de imagens passa pelo bloco 2 de estimação do
plano de fundo. Este bloco é constituído de sub-blocos como mostra figura 12.
A idéia deste bloco é de escolher o número de amostras iniciais para estimar o
fundo através do bloco N, e enquanto esta etapa estiver ocorrendo, o sub-bloco
“estimação de fundo” está ativado e um sinal “0” é enviado na saída 2, indicando que
27
o fundo ainda não foi estimado. A partir do momento em que as amostras iniciais
foram tratadas, o modelo de fundo é enviado para a saída 1 e um sinal positivo na
saída 2, permitindo que as próximas etapas sejam realizadas.
Figura 12 – Bloco de estimação de fundo
O sub-bloco “estimação de fundo” (figura 13) recebe cada amostra e as
redimensiona para um único vetor linha, neste caso, 1x19200; em seguida, um
buffer organiza estas amostras no formato Mx19200, onde M é o número de
amostras iniciais analisadas. Então, o cálculo da mediana é realizado para cada
pixel das M amostras, transformando o sinal novamente em um vetor linha 1x19200.
Este vetor é redimensionado para seu tamanho inicial de 160x120, ou seja, uma
imagem onde os pixels representam a mediana calculada entre M amostras.
Figura 13 – Cálculo da mediana
O bloco 3 “comparação e segmentação”, agora ativado, vai subtrair cada
quadro do vídeo do modelo de fundo previamente determinado como ilustra a figura
14, em seguida, é realizado o módulo do resultado para obter apenas valores
positivos. Desta forma, tem-se uma imagem onde pixels que apresentarem diferença
de intensidade estarão destacados. Após esta etapa, a binarização deste resultado é
realizada através de um bloco específico do “Simulink” (“Autothreshold”) que utiliza o
método de Otsu. Um bloco de operador fechamento está presente na última etapa
da segmentação para o preenchimento de possíveis buracos na imagem resultante.
28
Figura 14 – Comparação e segmentação
O bloco 4 do algoritmo é responsável pela identificação dos blobs na imagem
segmentada, conforme figura 15. Esta tarefa é realizada por um bloco do “Simulink”
que identifica as regiões padronizadas e pode disponibilizar várias informações
sobre as mesmas, como o centróide, a área, a posição, a orientação, o perímetro,
etc.
Neste trabalho foram utilizadas as saídas de área e de posição (BBox) dos
blobs. A área foi utilizada com o intuito de selecionar os blobs que apresentassem
uma área dentro do limite mínimo e máximo estabelecidos, limites que poderiam ser
ajustados dependendo da aplicação visada. O BBox é uma matriz 4xN que informa a
posição do vértice superior esquerdo do blob, sua largura e altura, e N é o número
de blobs identificados na imagem. Com essas duas informações, o bloco “seletor de
colunas” seleciona somente os blobs que têm suas áreas dentro dos limites
impostos.
A contagem dos blobs em movimento na imagem é realizada através desta
mesma informação, sendo necessário somente o uso de um bloco somador.
Figura 15 – Identificação e contagem dos blobs
O último bloco (bloco 5) é responsável por apresentar o resultado no vídeo
final, ou seja, irá desenhar um retângulo contornando os extremos dos blobs e
escrever na imagem de saída a quantidade de objetos detectados.
29
Esse procedimento é realizado através do bloco “Contorno de objetos”, como
mostra a figura 16. Esse bloco recebe as informações das regiões a serem
contornadas e desenha na imagem original (Video In) um retângulo contornando os
objetos detectados. Um ponto interessante é que o bloco “Contorno de Objetos”
trabalha com imagem no formato RGB (composto por três componentes que formam
as cores da imagem, Red = Vermelho, Green = Verde e Blue = Azul), dessa forma
foi necessário colocar os ganhos k1, k2 e k3 (0.3, 0.59 e 0.11, respectivamente) para
converter a imagem em RGB, onde os valores aplicados estão relacionados à
sensibilidade visual do olho humano. Após este processo, foi necessário converter
novamente em escala de cinza (I’).
Figura 16 – Desenhos e escritas na imagem original
Para escrever um texto com o número de objetos detectados foi necessário
utilizar o bloco “Contagem de objetos” que está detalhado na figura 17. Como é
possível notar, foi necessário realizar uma transposta do vídeo, escrever a
mensagem e em seguida realizar outra transposta para então apresentar o resultado
na saída. Isso é necessário devido ao fato de matrizes numéricas MxN serem
representadas como M sendo o número de linhas e N o número de colunas. Porém
a dimensão dos pixels dos quadros do vídeo é de forma inversa, ou seja, uma matriz
de pixels MxN é composto por M colunas e N linhas.
Para realizar a transposta das matrizes foi utilizado o bloco “Matrix Transpose”
da biblioteca “c6000lib” e como estes blocos trabalham com o formato “single” foi
necessário utilizar conversores no início e no final deste procedimento.
30
Figura 17 – Bloco “Contagem de Objetos”
Por fim, utilizou-se um bloco alfanumérico para escrever o texto “Número de
objetos: X”, onde X é o valor da variável que contém o número de objetos
detectados.
4.2.2
Método Subtração de Quadros Consecutivos
O Método Subtração de Quadros Consecutivos, utiliza basicamente a mesma
lógica e estrutura de blocos que o método anterior, tendo como principal diferença a
ausência do bloco “Estimação de fundo”, como mostra a figura 18.
Figura 18 – Método Subtração de Quadros Consecutivos
Como não há estimação de fundo, a imagem utilizada para subtrair o vídeo
original, e assim detectar alguma variação nas imagens, é o próprio vídeo original,
porém com um atraso
1
Z
(figura 19). Os demais blocos são os mesmos aplicados na
Subtração de Fundo, como é possível verificar comparando as figuras 14 e 19.
Figura 19 – Segmentação do método Subtração de Quadros Consecutivos.
31
5.
RESULTADOS
Para poder avaliar a robustez desses métodos de forma mais conclusiva, fez-
se necessária a análise em um ambiente no qual existissem mudanças de
iluminação, objetos de diferentes tamanhos em movimento e em velocidades
diferentes. Para tal, as imagens analisadas neste trabalho foram capturadas no
segundo andar de um prédio na esquina entre as ruas Barão do Cerro Azul e
Paulino de Siqueira Cortes, em São José dos Pinhais. Desta forma, pudemos
analisar estes pontos críticos com uma visão ampla da rua, com o objetivo de
detectar os veículos em movimento e evitando, na medida do possível, a oclusão
entre os mesmos. Para facilitar a avaliação dos métodos, as imagens foram
registradas no computador através de uma placa de captura de vídeo “PINNACLE
DV500 Plus”, e compiladas pelo programa “Adobe Premiere 6.5”.
5.1
SUBTRAÇÃO DE FUNDO
Num primeiro momento, as imagens foram capturadas sem o uso de um tripé,
o que pôde mostrar, já em um primeiro momento, que esta técnica necessita que a
câmera esteja muito bem fixada, pois qualquer oscilação pode levar o algoritmo a
uma má interpretação da imagem e detectar objetos que não estão em movimento,
como mostra a figura 20.
Figura 20 – Fundo, segmentação e resultado
Este método também apresentou grande sensibilidade a mudanças na
iluminação. A figura 21 mostra o momento onde uma nuvem cria uma grande
32
sombra na imagem, modificando quase que completamente o quadro atual em
relação à imagem de fundo.
Figura 21 – Efeito causado pela mudança de iluminação
Em outro momento, desta vez com a câmera fixa e iluminação constante, pôdese notar que partes do objeto em movimento que apresentam uma cor parecida com
a do fundo não são captadas com o método de limiarização por Otsu. Um exemplo é
a não captura do pára-brisa do veículo, dividindo o mesmo em dois objetos, como
mostra a figura 22.
Figura 22 – Veículo dividido em dois objetos
Mudanças na geometria da imagem também são mal-interpretadas por esta
técnica, como por exemplo, um veículo que estaciona na rua após a imagem de
fundo ser estimada (figura 23).
33
Figura 23 – Detecção de veículo estacionado
Estes exemplos citados acima puderam comprovar que o método de detecção
de movimento através da subtração de fundo é bastante sensível às mudanças de
geometria, iluminação e oscilação da câmera. O método SQC desenvolvido visou
diminuir estes problemas.
5.2
SUBTRAÇÃO DE QUADROS CONSECUTIVOS
Como este método não realiza a comparação dos quadros com um fundo prédeterminado, ele elimina o problema de mudanças bruscas de iluminação e
geometria da imagem, porém ainda necessita que a câmera esteja fixa. A figura 24
mostra o caso onde veículos que estão parados em um semáforo não são
detectados, ao contrário de um veículo que está se aproximando.
Figura 24 – Detecção somente de veículo em movimento
No entanto, como este método também utiliza a limiarização por Otsu,
encontrou-se o mesmo problema do veículo dividido em dois objetos distintos, como
34
mostra a figura 25. Nem mesmo o aumento do fator do operador fechamento foi
capaz de solucionar o problema.
Figura 25 – SQC, segmentação e resultado
Este método apresentou melhorias em relação ao primeiro analisado, porém
alguns pontos não foram totalmente solucionados. Algumas otimizações que foram
realizadas nestes métodos são descritas a seguir.
5.3
OTIMIZAÇÕES
Com o objetivo de eliminar o problema da divisão do veículo, optou-se por
substituir a limiarização pelo método de Otsu pelo método com limiar constante,
conforme figura 26. Desta forma, o processamento seria mais rápido e o limiar
escolhido seria capaz de definir o pára-brisa como parte do veículo em movimento.
Assim, para o primeiro método foi adotado o limiar de 0,4 a fim de aumentar a
robustez em relação às variações de iluminação; já no segundo caso, foi aplicado
um limiar menor (0,1) para obter uma maior sensibilidade aos movimentos de baixa
velocidade.
Figura 26 – Bloco de segmentação através do limiar constante
35
Esta modificação permitiu também a inserção de um bloco de préprocessamento da imagem (figura 27), o qual é composto de um filtro “mediana”
capaz de eliminar ruídos através da suavização da imagem original. O mesmo não
foi utilizado com o método Otsu, pois o processamento se tornava tão complexo, que
após alguns segundos de rodar o programa, o mesmo travava indicando problema
de memória.
Figura 27 – Bloco de pré-processamento
Com estas modificações realizadas observou-se uma melhoria significativa nos
resultados, como mostra a figura 28.
Figura 28 – Subtração de fundo (em cima) e SQC (em baixo)
O ideal para o monitoramento de veículos em uma rodovia é que a câmera
esteja posicionada acima da mesma de forma perpendicular, evitando qualquer tipo
36
de oclusão entre os veículos. Como não era possível posicionar a câmera desta
maneira foi possível notar que, quando veículos estavam bem próximos ou havia
partes se sobrepondo, o algoritmo identificava somente um objeto em movimento,
como ilustra a figura 29. Outro fator responsável por este comportamento foi o
operador fechamento utilizado, pois aumentava a área dos veículos na segmentação
da imagem causando a junção dos mesmos.
Figura 29 – Detecção de oclusão entre veículos
Com as otimizações realizadas, foi coletada uma amostra de 10 minutos,
monitorando a Rua Barão do Cerro Azul como ilustra a figura 30. Esta amostra
contempla os pontos críticos que foram citados (oclusão, variação de iluminação e
alteração na geometria da imagem), podendo avaliar de forma íntegra os dois
métodos. A tabela 1 mostra o resumo dos resultados obtidos nesta amostra. Para
tornar possível a comparação, utilizou-se como critério a detecção do objeto em
movimento uma única vez, pois a presença do semáforo descontinuava o
movimento temporariamente criando uma diferença na contagem entre os métodos.
37
Figura 30 – Amostra analisada
Comparação
Carros
Motos
Ônibus/caminhões
Total veículos
Eficiência detecção veículos
Falso-positivos detectados
Total erros detecção
Eficiência total
Oclusão entre veículos
Total de erros
Quantidade
Real
114
8
7
Método
Método
Subtração
SQC
de Fundo
109
113
1
7
6
7
129
116
127
100%
90%
98%
0
14
6
0
27
8
100%
79%
94%
13
21
17
0
35
12
Tabela 1 – Resumo dos resultados
Considerando todos esses resultados, concluiu-se que o método SQC com
segmentação por limiar constante obteve melhor eficiência na detecção de veículos
em movimento, visto que foi um sistema mais robusto e também não apresentou
muitos casos de falso-positivos, exceto quando pessoas andavam juntas ou
próximas a veículos e formavam, desta forma, uma área de pixels que estava dentro
dos limites estabelecidos. Outra possibilidade de falso-positivos ocorreu quando a
superfície de objetos não era uniforme (portas, janelas e estampas), presente
principalmente em ônibus e caminhões.
38
Em relação ao processamento, foi possível observar que o método “Subtração
de Fundo” apresentou maior atraso na análise das imagens, resultando numa
diferença na sequência real dos quadros do vídeo. Isto ocorreu devido ao processo
de estimação de fundo exigir maior alocação de memória em relação ao método
SQC.
39
6.
CONCLUSÃO E TRABALHOS FUTUROS
Devido às diversas aplicabilidades, a visão computacional em tempo real vem
sendo altamente desenvolvida em diversos campos, com destaque para aplicações
em monitoramento, entretenimento, biometria e engenharia biomédica. Neste
trabalho
utilizou-se
o
kit
TMS320DM642
para
verificar
sua
utilidade
no
desenvolvimento de algoritmos de detecção de objetos em movimento em
plataformas DSP.
Há vários métodos para desenvolver essa aplicação, neste trabalho, para
verificar o potencial do kit, foram desenvolvidos dois algoritmos: “Subtração de
Fundo” e “Subtração dos Quadros Consecutivos”.
O primeiro método mostrou-se mais eficiente para acompanhamento de objetos
que não estão, necessariamente, realizando movimentos contínuos durante a
análise. Porém ele necessita de limitações e controles no ambiente analisado, pois
não há realimentação da estimação do fundo, tornando-o sensível a alterações de
iluminação e geometria da imagem.
Já o segundo método apresentou uma maior eficiência e robustez na detecção
de objetos em movimento contínuo, obtendo 94% de eficiência na análise da
amostra coletada, contra 79% do primeiro método. Outra vantagem é sua
flexibilidade em relação ao ambiente, pois não há a necessidade de reinicializar o
programa em caso de mudança da cena a ser analisada.
Ambos os métodos apresentaram limitações em comum. A câmera, por
exemplo, deve estar muito bem fixada e posicionada em um ponto de observação
que não prejudique a visão de todos os objetos em movimento, evitando a
sobreposição dos mesmos. De outro lado, o ambiente deve estar bem iluminado,
visto que o processamento é realizado na imagem em escala de cinza, não sendo
possível então, sua aplicação em lugares noturnos sem iluminação infra-vermelha
(IV).
De modo geral, analisando as limitações e interfaces foi possível verificar que
este kit, em conjunto com o “Matlab”, é uma poderosa ferramenta de análise didática
40
dessas aplicações em tempo real, pois não é necessário um conhecimento prévio e
aprofundado de linguagens de programação. No entanto, um ponto negativo é a
limitação de utilização de blocos prontos, não possibilitando a otimização dos
códigos gerados.
A partir do trabalho desenvolvido há pontos que podem ser aprimorados em
trabalhos futuros, visto que antes desse projeto, houveram poucos trabalhos
desenvolvidos utilizando o conjunto, kit e “Matlab”. Um dos pontos de melhoria é a
velocidade de processamento do programa, que pode ser aprimorada através da
programação em linguagem C na ferramenta “S-function” (ferramenta capaz de criar
soluções em linguagem C quando utilizado o “Real-Time Workshop”). Desta forma,
as funções poderão ser desenvolvidas de maneira mais eficiente que os blocos do
“Matlab”, como a binarização por Otsu.
Os métodos de detecção de movimento é outro fator que pode ser otimizado,
podendo ser, por exemplo, a contínua estimação de fundo no método “Subtração de
Fundo”. Esta solução foi implementada com sucesso em simulação no “Matlab”, no
entanto houve um conflito no modelo quando implementado com a placa.
Por fim, o sistema pode apresentar maior robustez se os dois métodos
desenvolvidos forem utilizados em paralelo, pois eles trabalhariam de forma
complementar, ou seja, o sistema detectaria qual método utilizar para cada situação.
41
BIBLIOGRAFIA
[1] Texas Instruments. TMS320DM642 Technical Overview, 2002.
[2] Suporte Spectrum Digital. Disponível em:
http://www.spectrumdigital.com
[3] ROICHMAN, E.;SOLOMON, Y.; MOSHE, Y. Real-Time Pedestrian Detection
and Tracking. Signal and Image Processing Laboratory (SIPL), Israel Institute of
Technology. Technion City, Haifa 32000, Israel.
[4] CHEN, M. Y.; YANG, S. J.; CHUNG, H. W. To Develop Real-Time Remote
Video Processing and Surveillance System. Institute of Electrical Engineering of
National Taiwan University. Department of Biomedical Engineering of Yuanpei
University. Department of Radiology, Tri-Service General Hospital and National
Defense Medical Center. China.
[5] WANG, Y.; ZHANG, J. Dim Target Detection System Based on DSP.
Proceedings of the Second Symposium International Computer Science and
Computational Technology. Huangshan, P. R. China, 26-28,Dec. 2009. p. 321-324.
[6] MANDAVA, A. K. On-board three-dimensional object tracking: Software and
hardware solutions. Department of Electrical and Computer Engineering. Howard
R. Hughes College of Engineering - University of Nevada. Las Vegas, 2009.
[7] THAKOOR, N.; JUNG, S.; GAO, J. Real-time Planar Surface Segmentation in
Disparity Space. Electrical Engineering Department, Computer Science and
Engineering Department - University of Texas. Arlington.
[8] HO, C. G. A Hough Transform Rapid Prototyping System Using The
MATLAB Embedded Target For The TI TMS320DM642 EVM. MIG Development,
2007. p. 381–384.
[9] RUAS, G. I. S. Sistema Visual de Segmentação de Objetos Robusto a
Iluminação para Monitoramento Automático de Tráfego de Veículos Terrestres.
42
Dissertação de Mestrado em Engenharia Elétrica – Universidade de Brasília.
Brasília, 2009.
[10] PICCARDI, M. Background subtraction techniques: a review. The ARC
Centre of Excellence for Autonomous Systems (CAS) - University of Technology.
Sydney,2004.
[11] HIGASHINO, W. A. Estudo Comparativo de Algoritmos de Subtração de
Fundo em Seqüências de Imagens. Dissertação de Mestrado em Ciência da
Computação – UNICAMP. Campinas, 2006.
[12] RUAS, G. I. S.; BENSO, V. A. P. Estudo e implementação de um sistema
para monitoramento do fluxo de veículos em cruzamentos urbanos através de
vídeo digital. Trabalho de conclusão de curso (Graduação em Engenharia Elétrica)
– Universidade Federal do Paraná. Curitiba, 2006.
[13] CARVALHO, F. J. S.; TAVARES, J. M. R. S. Detecção de Faces em Imagens
baseada na Identificação da Pele e dos Olhos. Tecnné – Revista de Estudos
Politécnicos N.º1. Instituto Superior de Engenharia do Porto. Faculdade de
Engenharia da Universidade do Porto.
[14] KOERICH, A. L. Visão Computacional.
Programa de Pós-Graduação em
Engenharia Elétrica - Universidade Federal do Paraná. Disponível em:
HTTP://www.eletrica.ufpr.br/ufpr2/professor/36/TE817/1-Introducao-VC.pdf.
Acesso
em: 5 de março de 2011.
[15] PÁSSARO, M. C.; FARIA, M. D. Filtragem de Imagens Fixas. Faculdade de
Engenharia – Universidade do Porto. Porto, 2006.
[16] REN, T. I. Processamento de Imagem Morfológica. Centro de Informática,
Universidade Federal de Pernambuco. Recife, 2010.
[17] SEIXAS, F. L.; MARTINS, A. Avaliação dos Métodos para a Segmentação
Automática dos Tecidos do Encéfalo em Ressonância Magnética. Universidade
Federal Fluminense. Rio de Janeiro, 2008.
43
[18] KOKUBUM, C. N. C. Estudo de Métodos para Classificação e Localização
Precisa de Padrões Usando um Sistema de Luz Estruturada. Faculdade de
Ciências e Tecnologia, Universidade Estadual Paulista. Presidente Prudente, 2004.
[19] Suporte Matlab. Disponível em:
http://www.mathworks.com/support
[20] Suporte Texas Instruments. Disponível em:
http://www.ti.com
44