PROPOSTA DE AVALIAÇÃO DE DESEMPENHO DE ALGORITMOS DE TRATAMENTO DE IMAGENS PARA SISTEMAS EMBARCADOS



Documentos relacionados
SEGMENTAÇÃO DE IMAGENS EM PLACAS AUTOMOTIVAS

Processamento de Imagem. Prof. MSc. André Yoshimi Kusumoto

Detecção e Rastreamento de Objetos coloridos em vídeo utilizando o OpenCV

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES

Atividade: matrizes e imagens digitais

Filtragem. pixel. perfil de linha. Coluna de pixels. Imagem. Linha. Primeiro pixel na linha

FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES

Um Driver NDIS Para Interceptação de Datagramas IP

Introdução ao processamento de imagens e OCTAVE. Julio C. S. Jacques Junior juliojj@gmail.com

1. NÍVEL CONVENCIONAL DE MÁQUINA

FEN Processamento Digital de Imagens. Projeto 2 Utilização de máscaras laplacianas

Dadas a base e a altura de um triangulo, determinar sua área.

5 Entrada e Saída de Dados:

3. Arquitetura Básica do Computador

Espectro da Voz e Conversão A/D

Protocolo TCP/IP. Neste caso cada computador da rede precisa de, pelo menos, dois parâmetros configurados:

Fundamentos de Hardware

Arquitetura de Rede de Computadores

Thales Trigo. Formatos de arquivos digitais

Manual Processamento de Imagem. João L. Vilaça

)LJXUD8PGRVSDUHV'SDUDFRQYROXomRTXHWHPRPHVPRHIHLWRGR NHUQHOGD)LJXUD

Manual Sistema MLBC. Manual do Sistema do Módulo Administrativo

Software de segurança em redes para monitoração de pacotes em uma conexão TCP/IP

Disciplina: Introdução à Informática Profª Érica Barcelos

Sistemas Computacionais II Professor Frederico Sauer

APLICAÇÃO PARA ANÁLISE GRÁFICA DE EXERCÍCIO FÍSICO A PARTIR DA PLATAFORMA ARDUINO

Introdução. Introdução. Introdução. Organização Estruturada de Computadores. Introdução. Máquinas Multiníveis

Organização e Arquitetura de Computadores I. de Computadores

Curso Superior de Sistemas de Telecomunicações Unidade São José. Disciplina: Síntese de Sistemas de Telecomunicações 7º Fase

O AMPLIFICADOR LOCK-IN

Curso: Técnico de Informática Disciplina: Redes de Computadores. 1- Apresentação Binária

ATENÇÃO: * Arquivos com tamanho superior a 500 KB NÃO SERÃO ACEITOS * SOMENTE serão aceitos documentos do formato: PDF

O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware

11/3/2009. Software. Sistemas de Informação. Software. Software. A Construção de um programa de computador. A Construção de um programa de computador

Sistemas Operacionais e Introdução à Programação. Vetores e matrizes

Introdução aos Computadores

3. O NIVEL DA LINGUAGEM DE MONTAGEM

Trabalho 2 Fundamentos de computação Gráfica

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio

CALCULADORA SIMPLES COM ULA

Deivide Possamai e Fernando Fernandes

Ao longo do presente capítulo será apresentada uma descrição introdutória da tecnologia FPGA e dos módulos básicos que a constitui.

Microsoft Office PowerPoint 2007

Copyright 2013 VW Soluções

FILTRAGEM NO DOMÍNIO DAS FREQUÊNCIAS (TRANSFORMADA DE FOURIER) Daniel C. Zanotta 04/06/2015

MANUAL PARA INCLUSÃO DIGITAL- ANDRAGOGIA

Implementando plugins para o ImageJ

Capítulo 3 - Trabalhando com circuitos digitais

Interação Humano - Computador usando Visão Computacional

Aula 2 Aquisição de Imagens

PROJETO INFORMÁTICA NA ESCOLA

Título: Controle de um sistema Bola- Barra com realimentação através de imagem

ULA Sinais de Controle enviados pela UC

Aritmética Binária e. Bernardo Nunes Gonçalves

GUIA DE LABORATÓRIO DE SISTEMAS DIGITAIS PARA O CURSO DE ENGENHARIA DE CONTROLE E AUTOMAÇÃO

Guia de utilização do software. universal GPRS M-300.

Instalação: permite baixar o pacote de instalação do agente de coleta do sistema.

Processo de Controle das Reposições da loja

1 Transmissão digital em banda base

5 Mecanismo de seleção de componentes

MANUAL DE INSTALAÇÃO 1) ORACLE VIRTUALBOX ; 2) MICROSOFT WINDOWS ; 3) SUMÁRIOS GENEPLUS.

Estrutura de Dados. Ricardo José Cabeça de Souza Parte 1

Noções de. Microsoft SQL Server. Microsoft SQL Server

Capacidade = 512 x 300 x x 2 x 5 = ,72 GB

CAPÍTULO 6 ARITMÉTICA DIGITAL

Google Drive. Passos. Configurando o Google Drive

Cálculo de volume de objetos utilizando câmeras RGB-D

Guilherme Pina Cardim. Relatório de Sistemas Operacionais I

IW10. Rev.: 02. Especificações Técnicas

15 Computador, projeto e manufatura

ANDRÉ APARECIDO DA SILVA APOSTILA BÁSICA SOBRE O POWERPOINT 2007

Capítulo 3. Avaliação de Desempenho. 3.1 Definição de Desempenho

Universidade Federal do Rio de Janeiro - IM/DCC & NCE

Guia de qualidade de cores

Cálculo Numérico Aula 1: Computação numérica. Tipos de Erros. Aritmética de ponto flutuante

Programação de Robótica: Modo Circuitos Programados - Avançado -

Admistração de Redes de Computadores (ARC)

O Software Face Match

Transformada de Hough. Cleber Pivetta Gustavo Mantovani Felipe Zottis

Análise de Dados do Financeiro

Sumário 1. SOBRE O NFGoiana DESKTOP Apresentação Informações do sistema Acessando o NFGoiana Desktop

OpenCV.

PROGRAMAÇÃO EM LINGUAGEM LADDER LINGUAGEM DE RELÉS

MC-102 Aula 01. Instituto de Computação Unicamp

Lógica de Programação

SISTEMAS DIGITAIS Prof. Ricardo Rodrigues Barcelar

Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores.

INDICE 1. INTRODUÇÃO CONFIGURAÇÃO MÍNIMA INSTALAÇÃO INTERLIGAÇÃO DO SISTEMA ALGUNS RECURSOS SERVIDOR BAM...

Informática Básica para o PIBID

MANUAL DE INSTALAÇÃO CONFIGURAÇÃO IDE ECLIPSE

ALP Algoritmos e Programação. . Linguagens para Computadores

ANÁLISE E IMPLEMENTAÇÃO DE ALGORITMOS DE COMPRESSÃO DE DADOS. Maria Carolina de Souza Santos 1 Orientador: Prof.º Ms.

Figura 1 - O computador

ARQUITETURA DE COMPUTADORES

O USO DE UM SENSOR DE LUZ LINEAR COMO RECURSO DIDÁTICO PARA DEMONSTRAR PRINCÍPIOS DE DIFRAÇÃO E ESPECTROSCOPIA

Circuitos Digitais. Conteúdo. Sistema de Numeração e Códigos :: Conversões de Binário para Decimal SISTEMA DE NUMERAÇÃO E CÓDIGOS

PROF. DR. JACQUES FACON

Transcrição:

PROPOSTA DE AVALIAÇÃO DE DESEMPENHO DE ALGORITMOS DE TRATAMENTO DE IMAGENS PARA SISTEMAS EMBARCADOS Edvaldo Francisco Freitas Lima (1) (edvaldo@ucdb.br), Mauro Conti Pereira (1,3) (maurocp@gmail.com), Uender da Costa Faria (1) (uendercf@gmail.com), Adair da Silva Oliveira Junior (1) (adairsojr@outlook.com), Daniel Augusto Dias Araujo (1) (daniel_augusto25@hotmail.com), Raul Sanabria (1) (raulsanabria.28@gmail.com), Marco Aurelio Candia Braga (2) (marcoaurelio@candiaebraga.com.br). (1) Universidade Católica Dom Bosco (UCDB); (3) Instituto Federal de Educação, Ciência e Tecnologia de MS (IFMS) (2) Conselho Regional de Engenharia e Agronomia de Mato Grosso do Sul (CREA-MS). RESUMO: Processamento digital de imagens (PDI) e Visão Computacional (VC) tratam imagens armazenadas na forma de matrizes formadas por números que representam a intensidade de cinza ou de cores de cada elemento da imagem (pixels ou Picture elements), tratando a imagem por meio de algoritmos computacionais. Existem diversos algoritmos principalmente no domínio espacial e na freqüência, por exemplo, com aplicações em segmentação, restauração, melhoria de imagens ou até simplificação. Uma técnica simples adotada nesta proposta foi a detecção de bordas, que aproximam derivadas parciais para encontrar pontos de máximo, discretizando-as, usando-se aqui os métodos de Canny e Sobel. Foi usado o Matlab e sua biblioteca Image Processing Toolbox, para depois comparar a perfomance das obtidas usando-se ferramentas das plataformas de hardware escolhidas, processadores dspic da Microchip e OMAP DSP da Texas Instruments, e hardware reconfigurável FPGA da Altera. PALAVRAS-CHAVE: Processamento de imagens, Sistemas Embarcados, DSP, OMAP, FPGA, dspic. A PROPOSAL TO COMPARE THE PERFORMANCE OF IMAGE PROCESSING ALGORITHMS IN EMBEDDED SYSTEMS ABSTRACT: Digital Image Processing (DIP) and Computer Vision (CV) handles images stored in the form of matrices of numbers that represent the gray or color intensities of an each dot of the image (called pixel, or picture element), using computer algorithms on them. There are algorithms in the space domain or frequency domain, with applications in segmentation, restoration, enhancement and even simplification. Simple algorithms were used to compare the performance of the proposed platforms, edge detection, that approximate partial derivatives to find maximum points by discretization, using here the methods of Sobel and Canny. It was used the software Matlab and its library, Image Processing Toolbox, to later compare the ones obtained using the tools for each hardware platform, the processors dspic (from Microchip) and OMAP (from Texas Instruments), and reconfigurable hardware on FPGA (from Altera). Using them, we set up a proposal to choose the best platform for implementation of these algorithms, comparing their performances. KEYWORDS: Image processing, Embedded Systems, DSP, OMAP, FPGA, dspic. Anais do XIV CONEMI - Congresso Nacional de Engenharia Mecânica e Industrial

1. INTRODUÇÃO Processamento digital de imagens (PDI) e Visão Computacional (VC) tratam imagens armazenadas na forma de matrizes com a intensidade de cinza, ou de cores de cada elemento da imagem (pixels ou Picture elements), tratando a imagem por meio de algoritmos computacionais. É um tipo de processamento digital de sinais (DSP, digital signal processing, em inglês), mas a sigla também é usada para identificar o processador que realiza estes tratamentos (Digital Signal Processor). Dentre os algoritmos existem técnicas principalmente no domínio espacial e na freqüência, por exemplo, com aplicações em segmentação, restauração, melhoria de imagens ou até simplificação, usando transformadas (de Fourier, de cosseno,...), morfologia matemática e difusão anisotrópica. Uma técnica simples para adotar nesta proposta foi a detecção de bordas, que aproximam derivadas parciais para encontrar pontos de máximo discretizando-as, usando-se aqui os métodos de Canny e Sobel. Foi usado o Matlab e sua biblioteca de tratamento de imagem, o Image Processing Toolbox, para depois comparar a perfomance das obtidas usando-se ferramentas das plataformas de hardware escolhidas, processadores dspic da Microchip e OMAP 3530, uma processador DSP da Texas Instruments, e hardware reconfigurável FPGA da Altera. Para o chip OMAP utilizou-se a placa Beagle Board rev. C4, da Texas Instruments, baseado na plataforma do processador OMAP 3530, Para o hardware reconfigurável FPGA foi usada uma placa de desenvolvimento da Altera as ferramentas de programaccao em VHDL, e a simulação no ModelSim, com a ferramenta Quartus. Para o processador dspic da Microchip, comparando seu desempenho com implementações de algoritmos aplicados em cada uma destas plataformas. Ferramentas computacionais são utilizadas para o processamento das imagens, como o software No Matlab usou-se sua biblioteca Image Processing Toolbox, com implementações de diversos algoritmos, dentre eles algoritmo para conversão de imagens coloridas para níveis de cinza, rgb2gray, algoritmo para redimensionamento de imagens, imresize, e algoritmo para detecção de bordas, edge. Após esta etapa alguns algoritmos existentes no Matlab foram implementados em linguagem C e utilizou-se também da biblioteca OpenCV, sendo esta biblioteca específica para processamento digital de imagens. Para comparação mede-se o total de tempo gasto no processamento, inlcuindo o tempo que se demora para enviar e receber imagem do PC serialmente a cada uma das plataformas citadas. Anais do XIV CONEMI - Congresso Nacional de Engenharia Mecânica e Industrial 2

2. MATERIAIS, MÉTODOS E RESULTADOS 2.1 Processamento de imagem Como visto na Figura 1, uma imagem digital é representada em uma matriz de duas dimensões com pixels (picture elements ou elementos de imagem) com número em binário representando a intensidade de tom de cinza, e quando colorida associa-se mais de uma matriz para identificar o nível de cada cor (por exemplo vermelho, verde e azul, RGB, red, green, blue) ou, num modelo alternativo, matiz, saturação e luminosidade (HSY, hue, saturation and luminosity). Carvalho (2005), Gonzalez (2000), Marques (1999), Pereira (2006). FIGURA 1. Representação digital de uma imagem. Carvalho (2005). As imagens utilizadas na realização deste trabalho são originalmente coloridas no modelo RGB. No caso destas imagens são associadas três matrizes, uma para cada cor, com células (pixel) de 8 bits, 1 byte, podendo então assumir valores de 0 à 255. As Figuras 2 e 3 representam uma imagem colorida e suas componentes R, G e B. Anais do XIV CONEMI - Congresso Nacional de Engenharia Mecânica e Industrial 3

FIGURA 2. Imagem colorida e a correspondente intensidade da componente R. FIGURA 3. Intensidade das componentes G e B da Figura 2. As imagens utilizadas passam primeiro por um processo de conversão para escala de cinza, ou seja, as três matrizes transformam-se em apenas uma, mantendo o mesmo formato de 1 byte por pixel, variando entre o preto, com o menor valor, e o branco, com maior valor. O processo escolhido para a conversão é mesmo utilizado no Matlab, cada pixel recebe o valor das matrizes RGB multiplicado por um fator, sendo eles: 30%, 59% e 11% sendo vermelho, verde e azul respectivamente, pois a visão humana tem mais receptores nervosos para a cor verde. A conversão é dada pela equação: (1) Onde M é a matriz em níveis de cinza, R a matriz em níveis de vermelho, G a matriz em níveis de verde e B a matriz em níveis de azul. Tais fatores estão relacionados à sensibilidade visual do olho humano. A Figura 5 representa a Figura 2 convertida para escala de Cinza. Anais do XIV CONEMI - Congresso Nacional de Engenharia Mecânica e Industrial 4

FIGURA 5. Figura 2 convertida para escala de cinza. Como as imagens foram representadas em matrizes usando 8 bits por pixel, seus valores variam de 0 à 255, e operações aritméticas podem ser feitas para obtenção de dados, como por exemplo, somar uma imagem à outra pixel à pixel. Porém se apenas somarmos os pixels teremos problemas, pois, alguns pixels terão valores maiores que 255. Para isso existem métodos para obtenção de valores adequados, o método utilizado neste trabalho foi o da normalização. Na normalização os cálculos aritméticos são guardados em uma matriz auxiliar, com suas células tendo mais bits para a representação dos valores, após todos os cálculos obtém-se desta matriz o maior e o menor valor, seja ele positivo ou negativo, pois algumas operações trabalham também com subtração, depois é recalculado o valor de célula utilizando a seguinte fórmula: Onde Mfinal é a matriz normalizada, Maux é a matriz auxiliar que possui células com maiores bits de representação, Vmax é o maior valor da matriz auxiliar e Vmin é o menor valor da matriz auxiliar. Após a aplicação da formula de normalização os valores finais podem ser armazenados em 1 byte novamente pois estarão na faixa de 0 à 255. A resolução da imagem pode ser espacial, conforme Figura 6, onde se mostra o efeito da diminuição da resolução espacial da imagem. Há também a quantização dos níveis de cinza, onde na Figura 7 mostra-se o efeito da diminuição de tamanho da palavra usada para representar os tons de cinza da imagem. (2) Anais do XIV CONEMI - Congresso Nacional de Engenharia Mecânica e Industrial 5

EFIGURA 5. Exemplo de imagem diminuindo de 240x320 até15x20 [PEREIRA, 06] 256 niveis (8 bits) 128 niveis (7 bits) 64 niveis (6 bits) 32 niveis (5 bits) 16 niveis (4 bits) 8 niveis (3 bits) 4 niveis (2 bits) 2 niveis (1 bit) FIGURA 7. Efeito da quantização dos níveis de cinza: imagem de 240x320 pixels, com níveis de cinza indo de 256 níveis a 2 níveis (imagem binária) [PEREIRA, 06] O processo de detecção de bordas procura implementar derivadas parciais para encontrar pontos de máximo. Como são valores discretizados, pode-se aproximá-las por equações de diferenças, através da convolução de máscaras, processo no qual se aplica à uma matriz maior (imagem), uma matriz menor (máscara) na qual são realizadas operações aritméticas em torno de um pixel. Essas máscaras podem também ser chamadas de filtros, pois elas nos permitem selecionar algo que queremos dar destaque na imagem. Existem outros processos de detecção de bordas que não utilizam máscaras de convolução, porém alguns exigem custos computacionais muito altos. As Figuras 7 a 9 mostram exemplo de matriz original, uma máscara para convolucao, um exemplo de caçulo de um pixel e a matriz resultante. Anais do XIV CONEMI - Congresso Nacional de Engenharia Mecânica e Industrial 6

FIGURA 7. Matriz imagem e a matriz máscara uitlizada, que detecta bordas nas direções vertical e horizontal. FIGURA 8. Exemplo de cálculo do primeiro valor da convolução. FIGURA 9. Matriz resultante da convolução das matrizes da Figura 7. Anais do XIV CONEMI - Congresso Nacional de Engenharia Mecânica e Industrial 7

Define-se borda um pixel onde em torno dele há uma diferença razoavelmente grande nos níveis de cinza, a borda pode ser tanto horizontal quanto vertical. Existem diversos filtros para detecção de borda, dentre eles o de Roberts, Sobel, Prewitt, Frei-Chen e Canny. Depois de feita a diferenciação utilizando uma dos filtros citados acima, procede-se a normalização da imagem, onde teremos agora não mais níveis de cinza, e sim níveis de borda, quanto maior o valor, maior a diferença entorno de um pixel, então maiores a chances desse pixel ser uma borda. Após o processo de normalização, transformamos a imagem em uma imagem binária, esse processo reduz os 8 bits por pixel para 1 bit por pixel, ou seja, ao invés de níveis de cinza teremos apenas preto e branco. Escolhe-se um valor limiar onde acima desse valor é branco e o pixel recebe 1, e igual e abaixo desse valor é preto e o pixel recebe 0. 2.2 Software Matlab O trabalho iniciou-se a partir do estudo da teoria de imagem digital e alguns processos, dentre eles rotação, convolução e zoom in (aproximação ou ampliação). Esta parte do trabalho foi feito todo no Matlab, pois o mesmo possui um toolbox de processamento de imagens (Image Processing Toolbox), o qual facilita a protipação de algoritmos para tratamento das imagens, existindo funções para carregar imagens, extrair as matrizes RGB, redimensionar, converter para cinza e algoritmos para detecção de bordas já implementados, além de muitos outros mais complexos. As principais funções utilizadas da toolbox foram: imread, responsável por carregar a imagem; imresize, altera o tamanho da imagem; rgb2gray, converte uma imagem no formato RGB para escala de cinza; imshow, função que permite a visualização de imagens; edge, algoritmo de detecção de bordas, essa função aceita como parâmetro o algoritmo de detecção desejado, tem-se entre as opções Sobel, Canny e Prewitt. As figuras 10, 11 e 12, a seguir, representam as funções imread, rgb2gray e im2bw (binário de imagem), respectivamente, seguidos da função imshow, para a visualização destas imagens. Anais do XIV CONEMI - Congresso Nacional de Engenharia Mecânica e Industrial 8

FIGURA 10. Imagem original. FIGURA 11. Escala de cinza. FIGURA 12. Imagem binária. Primeiramente se converte a imagem para escala de cinza e, com a função edge, escolhe-se o tratamento de detecção de bordas desejado, conforme figuras 13 e 14 a seguir. FIGURA 13. Tratamento de borda Canny. FIGURA 14. Tratamento de borda Sobel. Anais do XIV CONEMI - Congresso Nacional de Engenharia Mecânica e Industrial 9

2.3 dspic O Matlab, através de outra toolbox, nos permite exportar e importar matrizes através de arquivos de texto. Essa estratégia foi utilizada pois, na linguagem C, não existem funções nativas para carregamento de imagens, seria necessário a utilização de bibliotecas, como por exemplo a opencv, e como posteriormente os algoritmos serão implementados no dspic através da linguagem C, poderia ocorrer de não existir as mesmas bibliotecas, e a adaptação do código seria mais difícil. A imagem foi exportada através do Matlab já convertida para níveis de cinza, para que algoritmo em C faça apenas a detecção de bordas. Ele importa e abre o arquivo, extraindo a matriz em níveis de cinza, faz a convolução utilizando uma máscara de Sobel de 3 x 3 pixels, normaliza, e no final a transforma em binário (apenas dois níveis, preto ou branco). A transformação para binário funciona com um filtro corta faixa, valores abaixo de um limiar receberão zero, e acima receberão valor máximo. Por fim, a imagem processada em C foi exportada para um arquivo para visualização no Matlab. A Figura 15, a seguir, é o resultado do algoritmo implementado em C, utilizando-se da mesma imagem original (Figura 10) para que se tenha uma melhor comparação, em relação a Figura 14. FIGURA 15. Tratamento de detecção de borda processado em linguagem C. Após a implementação dos algoritmos na linguagem C, foram estudadas as ferramentas de desenvolvimento e de simulação do dspic. Para desenvolvimento foi utilizada a ferramenta MPLAB X da Microchip, apresentado na Figura 16, e para simulação foi utilizado o software Proteus 8, apresentado na Figura 17. Anais do XIV CONEMI - Congresso Nacional de Engenharia Mecânica e Industrial 10

FIGURA 16. Imagem do software MPLAB X. FIGURA 17. Imagem do software Proteus 8. 2.4 DSP OMAP 3530 Para o processador OMAP, composto de dois núcleos, um ARM processamento geral e um DSP C60 para DSP, foi necessária a instalação de uma biblioteca para implementação dos algoritmos em C, chamada OpenCV, que possui módulos de processamento de imagens, biblioteca com mais de 350 algoritmos de visão computacional, como por exemplo filtros de imagens, e seu Anais do XIV CONEMI - Congresso Nacional de Engenharia Mecânica e Industrial 11

processamento de imagens é em tempo real. Esta biblioteca possui interfaces para linguagens C/C++, Python e Java. Possui suporte para sistemas operacionais Windows, Linux, Android e Mac OS, sendo uma ferramenta muito útil para o desenvolvimento de aplicações em sistemas embarcados. Conforme estudo dos algoritmos, agora utilizando a biblioteca OpenCV e um pacote chamado CMake, obteve-se as figuras 18, 19 e 20. FIGURA 18. Imagem do algoritmo sendo compilado pelo terminal Linux. FIGURA 19. Comparação entre imagem original e tratamento Canny, compilado pelo terminal. Anais do XIV CONEMI - Congresso Nacional de Engenharia Mecânica e Industrial 12

FIGURA 20. Comparação entre imagem original e tratamento Sobel, compilado pelo terminal. Como último material, utilizou-se um kit de desenvolvimento baseado na plataforma OMAP, que é a Beagle Board, da Texas Instruments, conforme figura 21 abaixo. Uma das características que tornam interessante o uso deste kit é o baixo custo da placa, próximo dee cem dólares, em relação ao poder de processamento relativamente alto se comparado a diversos microcontroladores mais simples. FIGURA 21. Arquitetura da placa Beagle Board rev. C4. Anais do XIV CONEMI - Congresso Nacional de Engenharia Mecânica e Industrial 13

A Beagle Board é uma placa com todas as funções de um computador (PC), suportando sistemas operacionais Linux embarcado por meio de um SD Card, que é uma das maneiras mais simples e mais utilizada para processar os algoritmos, já que funciona diretamente de um sistema operacional interno, necessitando apenas de uma fonte de alimentação de 5V, adaptador para conexão com internet, mouse e teclado. Eles são ligados por meio de um hub usb, já que esta placa só possui uma entrada USB. Ou seja, esta placa funciona como um microcomputador portátil, mas com uma grande diferença no peso e tamanho, semelhante a um maço de cigarros, uma ótima opção para sistemas embarcados. Após a instalação do sistema operacional Linux na placa Beagle Board e da instalação da biblioteca OpenCV, fica critério do usuário utilizar IDE s (Integrated Development Environment ou Ambiente Integrado de Desenvolvimento) como Eclipse ou Netbeans, ou utilizar a compilação pelo terminal Linux, por meio da instalação de um pacote chamado CMake. Esta última opção se torna mais viável, já que como é processado pelo terminal Linux, ocupa menos memória de processamento, resultando em processamento mais rápido do algoritmo. 2.5 FPGA Para a utilização do Sistema Embarcado usando FPGA (Field Programmable Gate Array) que é uma matriz reconfigurável de elementos lógicos que permite implementação de sistemas combinatórios e sequenciais em um único circuito integrado, é necessário a implementação dos algoritmos na linguagem VHDL, desenvolvidos no ambiente computacional Quartus e simulado na ferramenta Modelsim, todos executados em PC. Desenvolveu-se um único algoritmo que funciona como operador de borda de Sobel. Para que este funcione, foi desenvolvido um outro algoritmo na mesma linguagem porém como teste, que serviu como entrada e saída de estímulos, os quais poderiam ser visualizados no Modelsim instantaneamente. O processo foi implementado através de um arquivo de texto, que era lido e depois transmitido para o algoritmo do projeto. O algoritmo de teste é chamado de teste_leitura_escrita, onde também era gerado e os estímulos de clock, reset e start. O algoritmo a ser compilado era o código onde incluía a parte do teste e do projeto. A versão do software utilizado para descrever o algoritmo foi o Quartus 13.1. A seguir, nas Figuras 22, 23, 24 e 25, seguem os dados obtidos da simulação na ferramenta Modelsim. A partir destes dados podemos ter uma base de quanto tempo e quantos pulsos de clock são necessários para executar a operação inteira. Anais do XIV CONEMI - Congresso Nacional de Engenharia Mecânica e Industrial 14

FIGURA 22. a) Sinal finish_mont_mat marca o início da montagem da matriz para ser processada. b) Sinal fins_leitura indica o início da leitura de dados do arquivo de texto. FIGURA 23. Sinal fins_leitura indica o fim da leitura de dados no arquivo de texto. Anais do XIV CONEMI - Congresso Nacional de Engenharia Mecânica e Industrial 15

FIGURA 24. a) Sinal finish_mont_mat indica o final de montagem da matriz; b) Sinal finish_pocess indica o final de processamento com a máscara de Sobel; c) Sinal fin_norm indica o começo do processo de normalização e envio de dados. Depois de realizadas as simulações no Modelsim, o algoritmo desenvolvido é capaz de gerar um novo arquivo de texto, conforme Figura 26 a seguir, com o nome imagemprocessada.txt (escolha do usuário), o qual posteriormente é aberto no software Matlab para poder assim visualizar a imagem com as bordas detectadas, conforme Figuras 27, 28 e 29. Anais do XIV CONEMI - Congresso Nacional de Engenharia Mecânica e Industrial 16

FIGURA 25. a) Sinal fin_norm indica o fim do processo de normalização e envio de dados; b) Sinal marcador3 indica quantidade de pulsos de clock necessário para realizar o processo inteiro. FIGURA 26. Imagem do arquivo de texto gerado na simulação com valores binários. Anais do XIV CONEMI - Congresso Nacional de Engenharia Mecânica e Industrial 17

FIGURA 27. Imagem original. FIGURA 28. Imagem obtida através do algoritmo implementado em VHDL. Anais do XIV CONEMI - Congresso Nacional de Engenharia Mecânica e Industrial 18

FIGURA 29. Imagem obtida através da utilização do detector de borda Sobel pelo Matlab. 3.CONCLUSÕES Processamento digital de imagens é uma área de pesquisa de crescente interesse, por permitir um grande número de aplicações, sendo desde o tratamento na qualidade das imagens médicas até a detecção de bordas por meio de algoritmos. Sua operação de processamento consiste na aquisição da imagem (converter uma imagem em uma representação numérica adequada), armazenamento, processamento da imagem (por meio de algoritmos) e por fim a exibição da imagem tratada. Por meio do processamento de imagens no computador, utilizando Matlab e OpenCV, o projeto se tornou simples e conclusivo: o software Matlab nos fornece funções próprias de seu sistema, sem a necessidade do uso de algoritmos complexos, portanto a imagem tratada ainda pode ser melhorada. Tendo em vista este objetivo, utilizou-se algoritmos em Linguagem C com bibliotecas do OpenCV, para o processamento das imagens. Visualmente nota-se a diferença: com os algoritmos específicos, a imagem tratada se torna mais limpa e sem ruídos. Com uma comparação entre as imagens geradas pelo algoritmo em Matlab e o gerado na linguagem VHDL, pode-se observar que a imagem gerada através do algoritmo descrito em VHDL não suavizou a imagem e que também emitiu muito mais informação do que deveria, ou seja, ele não somente descreveu a informação das bordas, mas também parte do objeto que está na imagem. Anais do XIV CONEMI - Congresso Nacional de Engenharia Mecânica e Industrial 19

REFERÊNCIAS BEAGLEBOARD.org beagleboard, disponível em <http://beagleboard.org/beagleboard>, acessado em 09/09/2014. BEAGLEBOARD.org Mentor Embedded Linux for Beagleboard, disponível em <http://beagleboard.org/ project/mentor+embedded+linux/>, acessado em 09/09/2014. CARVALHO, A.A.; REBELLO, J.M.A.; VIANA, A.F. O Mundo das Imagens Digitais. Matéria, Vol 8, Nº 2 p.167, 2003. <http://www.materia.coppe.ufrj.br/sarra/artigos/artigo10297> Acesso em 15 Nov. 2005. GONZALEZ, R. C. e WOODS, R. E. (2000) Processamento de Imagens Digitais. Editora Edgard Blucher Ltda, São Paulo, Brasil. 2000. GUIAGEM AUTÔNOMA / Wiki / Executando o programa da Guiagem na BeagleBoard <http://sourceforge.net/p/guimag/wiki/executando%20o%20programa%20da%20guiagem%20na% 20BeagleBoard/>, acessado em 09/09/2014. MARQUES FILHO, Ogê; VIEIRA NETO, Hugo. Processamento Digital de Imagens, Rio de Janeiro: Brasport, 1999. ISBN 8574520098. MATHWORKS Inc. (2003) MatLab s Image Processing Toolbox Manual. Mathworks. Cambridge, MA. MATHWORKS INC. MATLAB. Versão do estudante: guia do usuário. São Paulo: Makron Books, 1997. MATURANA, Patrícia Salles. Algoritmos de detecção de bordas implementados em FPGA Ilha Solteira : [s.n.], 2010. OPENCV <http://opencv.org/>, acessado em 09/09/2014. PEREIRA, Mauro Conti. Sistema de Substituição Sensorial para Auxílio a Deficientes Visuais Via Técnicas de Processamento de Imagens e Estimulação Cutânea. Tese de Doutorado, USP, São Paulo, SP, Brasil, 2006. Agradecimentos Agrademos ao apoio da Universidade Católica Dom Bosco - UCDB pelo incentivo à pesquisa e disposição dos laboratórios de informática e ao PIBIC pela ajuda de custo e bolsa para os acadêmicos. Anais do XIV CONEMI - Congresso Nacional de Engenharia Mecânica e Industrial 20