Figura 32. Monitorando via esquerda.
Com os resultados obtidos é possível ver o indice de acerto do software na Tabela 2.
Horário da gravação
Erro / Esperado Carros
Erro / Esperado Motos
Erro / Esperado Caminhões
Erro / Esperado Total de veículos
08:00h 4% 14,2% 14,2% 2,8%
10:00h 0% 0% 0% 0%
12:00h -- -- -- --
14:00h 3,3% 33,33% 0% 4,8%
18:00h 11% 10% 0% 0%
Tabela 2. Erro em relação ao esperado.
Desconsiderando os erros não previstos neste trabalho ocasionados por múltiplas faixas como a troca de faixa e as sombras de uma faixa incidindo sobre a outra o software errou em apenas três vezes em um total de 159 classificações, o que dá um acerto de 98,2%.
Quanto a velocidade média estimada dos veículos o teste foi realizado com um carro conhecido passando pelo local em uma velocidade conhecida por três vezes, a velocidade controlada foi de 60km/h nas três ocasiões e o software indicou a velocidade média com erros inferiores a 5% (58km/h, 59km/h e 62km/h).
Figura 33. Câmera TRDB-5 e KIT Altera DE2.
Para o desenvolvimento do hardware primeiramente foi necessário entender o funcionamento da câmera TRDB-5 e escrever o bloco de hardware responsavél por interagir com a câmera de vídeo, a fabricante da câmera fornece um bloco de hardware para esta função porém o código não é otimizado para o kit utilizado neste trabalho, sendo assim foram necessárias modificações no código original e ajuste no script dos requisitos de timing dos clocks da FPGA.
O proximo passo foi a transformação dos sinais digitas vindos deste bloco em imagens do tipo raw utilizando um bloco de hardware também fornecido pela fabricante da câmera, após esse passo foi necessário transformar as imagens raw em um padrão conhecido para que a mesma pudesse ser visualizada pelos olhos humanos e reconhecida como uma imagem, para isto um bloco de hardware foi descrito a fim de transformar a imagem raw em RGB.
Após conseguir a imagem no seu formato RGB, tornou-se viavél migrar os algoritmos existentes em software para hardware, tais como a transformação da imagem RGB em tons de cinza e uma segmentação de imagem baseada em cores a fim de detectar objetos de interesse na imagem, simulando a subtração de fundo. Os principais blocos desenvolvidos em hardware podem ser observados na Figura 34:
Figura 34. Blocos significativos desenvolvidos em hardware
A imagem de entrada foi convertida em tons de cinza utilizando operadores binários de deslocação de bits, visto que FPGA não tem suporte nativo a ponto flutuante e implementar tal suporte foge ao escopo deste trabalho, não foi possível realizar a multiplicação dos canais da mesma forma que foi feita em software, com base nisso foi realizada uma aproximação dos valores, como pode ser visto no trecho de código da Figura 35 os dez bits dos três canais de R,G e B foram deslocados até conseguir se obter o melhor contraste em tons de cinza.
O resultado do módulo de conversão de RGB em tons de cinza realizado na face de uma pessoa pode ser visualizado na Figura 36.
Figura 36. Resultado da conversão em tons de cinza.
Após captar a saída da imagem em tons de cinza uma forma de separar os objetos de interesse do fundo com base na sua diferença de coloração foi implementada, uma limiar de intensidade de cor foi estabelecida de forma de que objetos com uma intensidade maior do que a limiar(os objetos de interesse) são representados pela cor branca e o background é representado pela cor preta. A Figura 37 demonstra a comparação realizada no canal de saída do bloco que transforma RGB em cinza aplicando a limiar indicada no valor de thresh, enquanto a Figura 38 apresenta o resultado da operação em FPGA, identificando tudo que não é parede (azul) como objetos de interesse (no caso a câmera do celular utilizada para tirar uma foto e a cômoda a frente da parede.
Figura 37. Operação de transformação da imagem em preto e branco.
Figura 38. Resultado da operação de transformação da imagem em preto e branco
O resultado da operação é gravado na memória DDR do kit para futuras utilizações, o hardware descrito nesta seção serve de base para aplicações em FPGA envolvendo PDI, visto que fornece uma arquitetura básica para leitura de imagens vindas de uma câmera, processamento das imagens e gravação das imagens processadas em memória além de duas operações básicas de PDI e comunicação com a VGA para facilitar a visualização dos resultados.
4 CONCLUSÕES
O presente trabalho detalhou os conceitos necessários ao desenvolvimento de um sistema para monitoramento do fluxo de veículos e uma arquitetura básica em FPGA para desenvolvimento de aplicações de PDI.
Junto com a sucinta introdução sobre o tema de monitoramento de fluxo de veículos, foram definidos o problema de pesquisa, os objetivos e a metodologia que guiou o curso do trabalho, além da informação teórica que serviu como base para o desenvolvimento do projeto. A fundamentação teórica realizou uma busca em trabalhos acadêmicos por trabalhos nas áreas de processamento digital de imagens, vigilância eletrônica e sistemas embarcados.
O projeto do sistema para monitoramento do fluxo de veículos veio após a fundamentação teórica, utilizando os conceitos expostos na mesma foi possível construir uma lista de requisitos que serviram de norte para o desenvolvimento do projeto, além de casos de uso que demonstraram o funcionamento do sistema.
O desenvolvimento do sistema foi materializado na linguagem de programação C/C++
implementando conceitos da seção de fundamentação teórica, bem como seguindo os requisitos e caracteristicas do projeto previamente estabelecidas.
O sistema foi testado em ambientes controlados expostos no capitulo de experimento e os resultados indicados no capitulo de indicados apontam para um acerto em 98,2% das classificações e um erro de velocidade média aproximada inferior a 5% quando comparado ao velocímetro do carro.
A migração da plataforma em software para hardware apresentou dificuldades, migrar um sistema desenvolvido em software com abstrações de alto nível e diversas bibliotecas que implementam funcionalidades que fogem ao escopo do trabalho para linguagem de hardware se mostrou uma tarefa complexa.
O primeiro problema encontrado foi a interação com a câmera adquirida, a câmera possui diversos protocolos de comunicação digital que devem ser respeitados, além de requisitos de timing para que o sincronismo da imagem ocorra, existe uma grande quantidade de passos e configurações
que devem ser realizadas antes de se conseguir obter sinais digitais que representam a imagem vinda do sensor.
Esta primeira etapa tomou um tempo demasiadamente longo com funcionalidades que fugiram ao escopo do Trabalho de Conclusão de Curso (TCC). Após a obtenção da imagem foi necessário armazená-la visto que algoritmos de subtração de fundo tem como referência, pelo menos, um único frame em comparação ao atual. Para armazenar a imagem foi necessário realizar a gravação de um frame em memória, com isto um tempo demasiadamente longo foi necessário para conseguir entender e utilizar o protocolo de comunicação da memória DDR.
Somente após essas duas etapas foi possível começar a tratar, de fato, o processamento de imagem em FPGA que mostrou-se bastante complexo, visto que ponto flutuante e outras facilidades disponíveis em software são inexistentes em linguagens de hardware.
O desenvolvimento em hardware ficou como um projeto a parte tentando chegar no mesmo fim. O que não foi possível, o processo de desenvolvimento do hardware avançou até uma arquitetura capaz de captar imagens pelo sensor da câmera, transformá-la em uma imagem em tons de cinza, aplicar um filtro para identificar objetos de interesse e gravar o resultado em memória DDR para futuras utilizações.
Este projeto se justificou como um TCC pois abrangeu diversas áreas do conhecimento, tais como: programação C/C++, desenvolvimento de hardware e processamento de imagens, fazer uso de matérias do curso tais como: Circuitos Lógicos, Tópicos Especiais em Vigilância Eletrônica, Engenharia de Software, Algoritmos I e II dentre outras, além de usar tecnologias e conceitos relevantes, como monitoramento de fluxo de veículos, tecnicas de processamento digital de imagem e sistemas embarcados.
Espaços para novos trabalhos de pesquisa foram identificados no decorrer deste projeto, alguns destes trabalhos não foram realizados por falta de tempo, recursos ou porque não compunham o foco da pesquisa e seriam melhor acomodados através de novos estudos.
Como trabalhos futuros a este sugere-se terminar a migração do sistema desenvolvido em software para hardware utilizando a arquitetura desenvolvida neste projeto como base e comparar os resultados obtidos em hardware com os resultados obtidos em software. Outro trabalho futuro sugerido é desenvolver uma aplicação que utilize os dados obtidos a partir deste projeto disponíveis
dimensionamento das melhores rotas de um ponto até outro tendo em vista o fluxo de veículos em diversas vias diferentes. E por ultimo aperfeiçoar o software, no sentido de melhorar seu desempenho, testar novos algoritmos de PDI como substituir o algoritmo de subtração de fundo ou de detecção de bordas utilizados neste trabalho por algoritmos diferentes são alguns dos trabalhos de pesquisa futuros sugeridos.
REFERÊNCIAS BIBLIOGRÁFICAS
CHEUNG, Sen-Chin S.; KAMATH, Chandrika, Proceedings of the SPIE, Volume 5308, USA, p.
881-892, 2004.
CUCCHIARIA, R; PICCARDI, M; PRATI, A; SCARABOTTOLO, N. Real-Time Detection of Moving Veichles, Proceedings International Conference on, p.618-623, 1999.
CONCI, Aura; AZEVEDO, Eduardo. Computação Gráfica: Processamento de Imagens Digitais, Elsevier, 2007, 376 p.
DAGGU, V. Design and Implementation of an Efficient Reconfigurable Architecture for Image Processing Algorithms using Handel-C. Master These. 2003.
DOUGLAS, C; SMITH, J. VHDL & Verilog Compared & Contrasted plus modeled example written in VHDL, Verilog and C. Proceedings of the 33rd annual Design Automation Conference, New York, p.771-776, 1996.
D’AMORE, R., VHDL Descrição e Síntese de Circuitos Digitais, LTC, 2005. 276 p.
FONSECA, João Marques e Vieira. Aplicação da Transformada de Fourier no processamento digital de imagens, Tese de Mestrado, Aracaju-SE, 1999.
GONZALES, R.; WOODS, R., Digital Image Processing, Prentice Hall, 2002. 793 p.
HARTLEY, R.; ZISSERMAN, A., Multiple View Geometry in Computer Vision, Cambridge, 2003, 646 p.
HORPRASERT, Tharanat; HARWOOD, David; DAVIS, Larry S. A robust background subtraction and shadow detection. Asian Conference on Computer Vision, USA, 2000.
LARA, A., Segmentação de Movimento para Aplicações de Vigilância Eletrônica, USP, 2006.
38 p.
MARQUES, H; VIEIRA, M., Processamento Digital de Imagens, Brasport, 1999. 303 p.
MICHELONI, C; REMAGNINO, P; ENG, H; GENG, J. Intelligent Monitoring of Complex Environments. IEE Intelligent Systems, p. 12-14, 2010.
RADKE, Richard J.; ANDRA, Srinivas;ROYSAM, Badrinath. Image change detection algorithms:
A system survey. IEEE Transactions on Image Processing, 14(3), 2005.
RAO, Daggu Venkatershwar; PATIL, Shruti. Implementation and evaluation of image processing algorithms on reconfigurable architecture using c-based hardware descriptive language.
International Journal of Theoretical and Applied Computer Sciences, India, p9-34, 2006.
REMAGNIGO, P, Proceedings of the Eight British Machine Vision Conference, U.K, p. 380- 389, 1997.