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