44
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

UNIVERSIDADE FEDERAL DO PARANÁ DEPARTAMENTO DE …cricte2004.eletrica.ufpr.br/ufpr2/tccs/166.pdf · Este trabalho propõe o desenvolvimento de um sistema de detecção de movimento

Embed Size (px)

Citation preview

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

2

PABLO H. DE A. CARNELOS RICARDO ZELIOTTO

SISTEMA DE DETECÇÃO DE MOVIMENTO EM TEMPO

REAL COM O KIT DSP TMS320DM642

CURITIBA - 2011

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

3

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.

4

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.

5

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.

6

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.

7

SUMÁRIO

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

2. DETECÇÃO DE MOVIMENTO .......................................................................... 13

2.1 PRÉ-PROCESSAMENTO DA IMAGEM ...................................................... 14

2.2 SUBTRAÇÃO DE FUNDO ........................................................................... 15

2.3 SEGMENTAÇÃO ........................................................................................ 17

3. DESCRIÇÃO DOS EQUIPAMENTOS E FUNCIONAMENTO ........................... 19

3.1 KIT DSP TMS320DM642 ............................................................................. 19

3.2 FUNCIONAMENTO .................................................................................... 20

4. 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 SUBTRAÇÃO DE FUNDO ........................................................................... 32

5.2 SUBTRAÇÃO DE QUADROS CONSECUTIVOS ........................................ 34

5.3 OTIMIZAÇÕES ........................................................................................... 35

6. CONCLUSÃO E TRABALHOS FUTUROS ....................................................... 40

8

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

9

LISTA DE TABELAS

Tabela 1 – Resumo dos resultados .......................................................................... 38

10

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

11

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.

12

Para finalizar, no capítulo 6 são descritas as conclusões do trabalho, bem como

propostas futuras de melhoria dos resultados apresentados.

13

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

14

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 passa-

15

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.

16

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.

17

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,

18

porém apresenta uma maior complexidade que pode afetar o desempenho do

sistema em tempo real.

19

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)

20

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.

21

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”

22

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.

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.

Emulador

JTAG

Captura

Processamento

Exibição de

Resultados

Desenvolvimento

do Algoritmo

Captura

Processamento

Processamento

Emulador

JTAG

23

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.

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”

S-Video

RCA

RCA - Componente

VGA S-Video

24

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.

25

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.

26

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

27

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.

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

1 2

3 4 5

28

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.

29

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.

30

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.

31

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.

32

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

33

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ôde-

se 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).

34

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

35

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

36

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

37

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.

38

Figura 30 – Amostra analisada

Comparação Quantidade

Real

Método Subtração de Fundo

Método SQC

Carros 114 109 113

Motos 8 1 7

Ônibus/caminhões 7 6 7

Total veículos 129 116 127

Eficiência detecção veículos 100% 90% 98%

Falso-positivos detectados 0 14 6

Total erros detecção 0 27 8

Eficiência total 100% 79% 94%

Oclusão entre veículos 13 21 17

Total de erros 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.

39

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.

40

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

41

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.

42

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.

43

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.

44

[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