• Nenhum resultado encontrado

Aceleração do processo de construção de nuvem de pontos para digitalização tridimensional Utilizando FPGA

N/A
N/A
Protected

Academic year: 2021

Share "Aceleração do processo de construção de nuvem de pontos para digitalização tridimensional Utilizando FPGA"

Copied!
44
0
0

Texto

(1)

Universidade de Brasília - UnB

Faculdade UnB Gama - FGA

Engenharia Eletrônica

Aceleração do Processo de Construção de

Núvem de Pontos para Digitalização

Tridimensional Utilizando FPGA

Autor: Érica de Oliveira da Costa

Orientador: Prof. Dr. Gerardo Antonio Idrobo Pizo

Brasília, DF

2016

(2)

Érica de Oliveira da Costa

Aceleração do Processo de Construção de Núvem de

Pontos para Digitalização Tridimensional Utilizando

FPGA

MonograĄa submetida ao curso de graduação em (Engenharia Eletrônica) da Universidade de Brasília, como requisito parcial para ob-tenção do Título de Bacharel em (Engenharia Eletrônica).

Universidade de Brasília - UnB Faculdade UnB Gama - FGA

Orientador: Prof. Dr. Gerardo Antonio Idrobo Pizo

Brasília, DF

2016

(3)

Érica de Oliveira da Costa

Aceleração do Processo de Construção de Núvem de Pontos para Digitalização Tridimensional Utilizando FPGA/ Érica de Oliveira da Costa. – Brasília, DF,

2016-50p. : il. (algumas color.) ; 30 cm.

Orientador: Prof. Dr. Gerardo Antonio Idrobo Pizo

Trabalho de Conclusão de Curso – Universidade de Brasília - UnB Faculdade UnB Gama - FGA , 2016.

1. FPGA. 2. Digitalização tridimensional. I. Prof. Dr. Gerardo Antonio Idrobo Pizo. II. Universidade de Brasília. III. Faculdade UnB Gama. IV. Aceleração do Processo de Construção de Núvem de Pontos para Digitalização Tridimensional Utilizando FPGA

(4)
(5)

Resumo

A tarefa de construção de núvens de pontos para digitalização tridimensional envolve o processamento de uma grande quantidade de dados. Este processo possui caráter repeti-tivo, uma vez que o mesmo conjunto de operações é aplicado a porções independentes da imagem. A Ąm de se agilizar o processamento, propõe-se a execução concorrente de tais operações. A estrutura de FPGAs auxilia na implementação de paralelismo de execução entre blocos de funções, além de disponibilizar alta Ćexibilidade de desenvolvimento, de-vido à programação ser baseada em linguagens de descrição de hardware. Neste contexto, propõe-se o uso de FPGA para a aquisição, pré-processamento e, por Ąm, segmentação de pontos de imagens com a Ąnalidade de acelerar a etapa de construção de núvens de pontos no processo de digitalização tridimensional.

Palavras-chaves: Processamento de imagens. Segmentação. FPGA. Digitalização

(6)

Abstract

The task of building points clouds for three-dimensional scanning involves the processing of a great amount of data. This process has repetitive character, as the same group of operations is applied to independent portions of an image. In order to accelerate this process, it is proposed the concurrent processing of such operations. The structure of FPGAs assists on the implementation of execution parallelism between blocks of functions, in addition to allowing a high level of development Ćexibility, as its conĄguration is based on Hardware Description Languages (HDLs). Therefore, the employment of such devices on image processing is an attractive option. In this context, the proposal is to implement points detection on a FPGA, in order to accelerate the task of building points clouds in the process of three-dimensional scanning.

(7)

Lista de ilustrações

Figura 1 Ű Irradiação do laser sobre um objeto . . . 16

Figura 2 Ű Progressão do laser ao longo do objeto . . . 16

Figura 3 Ű Diagrama da proposta de solução . . . 18

Figura 4 Ű PerĄl de irradiação Gaussiano de um laser . . . 20

Figura 5 Ű Diâmetro de um feixe Gaussiano . . . 20

Figura 6 Ű Mudança no raio de frente de onda com a distância de propagação. . . 21

Figura 7 Ű Operação envolvendo um único pixel . . . 22

Figura 8 Ű Operação envolvendo vizinhança . . . 23

Figura 9 Ű Operação global. . . 23

Figura 10 Ű Componentes de um sistema de processamento de imagens . . . 24

Figura 11 Ű Estrutura de um FPGA . . . 26

Figura 12 Ű Mecanismo de Ąltragem espacial . . . 27

Figura 13 Ű Imagem capturada e pré-processada do laser sobre o objeto . . . 29

Figura 14 Ű Seleção do pixel de maior intensidade em uma coluna da imagem . . . 29

Figura 15 Ű Módulo VModCAM acoplado a Digilent AtlysTM . . . 31

Figura 16 Ű Placa Digilent AtlysTM . . . 31

Figura 17 Ű Interface USB . . . 32

Figura 18 Ű Módulo VmodCAMTM . . . 32

Figura 19 Ű Diagrama de Ćuxo de sinais através dos blocos da solução proposta . . 33

Figura 20 Ű Detalhamento da estrutura interna do bloco ImageProc . . . 34

Figura 22 Ű RTL dos módulos internos a ImageProc . . . 36

Figura 23 Ű Posicionamento da câmera em relação à orientação do perĄl de laser . . 36

Figura 24 Ű Implementação do deslizamento do kernel sobre a imagem de entrada . 37 Figura 25 Ű Sequência de pixels enviados ao bloco de Ąltragem. . . 37

Figura 26 Ű Soma dos resultados da multiplicação pelos coeĄcientes do Ąltro . . . . 38

Figura 27 Ű Disposição da vizinhaça de um pixel gerado na Ąltragem . . . 38

Figura 28 Ű Movimento dos pixels através dos registradores do módulo GaussianFilter 38 Figura 29 Ű Distribuição normal e as porcentagens da área total . . . 39

Figura 30 Ű Visualização dos módulos e sinais que implementam o Ąltro Gaussiano 41 Figura 31 Ű Módulo de vídeo anexado à estrutura do escâner. . . 41

Figura 32 Ű Desenho do suporte para o módulo VmodCAMTM feito no Catia V5 . . 42

Figura 33 Ű Ambiente de testes. Fonte: elaborada pelo autor . . . 42

Figura 35 Ű As áreas circuladas ilustram as falhas encontradas no álgoritmo . . . . 43

(8)

Lista de abreviaturas e siglas

DLP Data Level Parallelism

FPGA Field-Programmable Gate Array ILP Instruction Level Parallelism PC Computador de propósito geral RGB Red-Green-Blue

RTL Register-Transfer Level

VHDL VHSIC Hardware Description Language VHSIC Very High Speed Integrated Circuit

(9)

Lista de símbolos

Ú Comprimento de onda da luz

0 Raio do contorno de irradiação 1

e2 em frente de onda plana

Distância de propagação �(�) Raio do contorno 1

e2 após propagar uma distância �

�(�) Raio de curvatura da frente de onda após ter se propagado uma

(10)

Sumário

1 INTRODUÇÃO . . . 15 1.1 Aspectos Gerais. . . 15 1.2 Digitalização tridimensional . . . 15 1.3 Objetivo . . . 16 1.3.1 Objetivo Geral . . . 16 1.3.2 Objetivos Específicos . . . 17 1.4 Metodologia . . . 17 2 REVISÃO BIBLIOGRÁFICA . . . 19 2.1 Imagem de Intensidade . . . 19 2.2 Segmentação de Imagens . . . 19

2.2.1 Perfil de irradiação de um laser. . . 19

2.3 Paralelismo em operações de processamento de imagens . . . 21

2.3.1 Operações de baixo nível . . . 22

2.3.2 Operações de Nível intermediário. . . 23

2.3.3 Operações de Alto nível . . . 23

2.4 Componentes de um sistema de processamento de imagens . . . 23

2.4.1 FPGAs e processadores de propósito geral . . . 24

2.4.1.1 Processamento multithread em processador de propósito geral . . . 25

2.4.1.2 Field-Programmable Gate Arrays (FPGAs) . . . 25

2.4.1.2.1 Implementação de hierarquia em VHDL e reutilização de RTL . . . 25

2.5 Filtragem Espacial . . . 26

2.6 Filtro Gaussiano . . . 27

3 IMPLEMENTAÇÃO E RESULTADOS . . . 29

3.1 Obtenção das coordenadas � e � da linha. . . 29

3.2 Opções de setup . . . 30

3.2.1 Computador como fonte das imagens a serem processadas . . . 30

3.2.2 Módulo VmodCAMTM acoplado à placa Digilent AtlysTM . . . 30

3.2.2.1 Placa Digilent AtlysTM . . . . 31

3.2.2.2 Módulo de vídeo VmodCAMTM . . . . 32

3.3 Design structure . . . 33

3.3.1 CamCtl . . . 33

3.3.2 FBCtl . . . 33

3.3.3 SysCon . . . 34

(11)

16 SUMÁRIO

3.3.5 DVITransmitter . . . 34

3.3.6 Memória DDR2 128 MB . . . 34

3.4 Módulo ImageProc . . . 34

3.4.0.1 Orientação da Câmera . . . 36

3.5 Implementação do Filtro Espacial . . . 37

3.5.1 Critério de seleção do desvio padrão e tamanho do kernel . . . 39

3.6 Resultados e Testes . . . 41 3.6.1 Ambiente de teste . . . 41 3.6.2 Resultados . . . 42 4 CONCLUSÃO . . . 45 5 TRABALHOS FUTUROS . . . 47 REFERÊNCIAS . . . 49

(12)

17

1 Introdução

1.1

Aspectos Gerais

Um grande desaĄo tecnológico da atualidade consiste no desenvolvimento de siste-mas hábeis a reproduzir a capacidade humana de sentir e, principalmente, de interpretar o mundo (PEDRINI; SCHWARZ,2008). A visão humana, apesar de limitada por fatores ópticos e neurais, é capaz de detectar e interpretar uma incrível variedade de informações. O estudo de técnicas de automação e semi-automação do processo de análise de informações visuais requer não apenas a compreensão do aparelho visual humano, como também um levantamento das tecnologias que podem ser empregadas na implementação do sistema. Em tal etapa de levantamento, não só o sensor de aquisição de imagens, como também a arquitetura computacional é selecionada, considerando aspectos de restrição de espaço, consumo energético, capacidade de armazenamento e poder de processamento.

Aplicações de visão computacional, cujos algoritmos de processamento tem na-tureza exigente, expressam um fardo considerável nas implementações em tempo real. Tendências atuais em arquiteturas de computação complexa integram FPGAs como uma alternativa competitiva devido à Ćexibilidade de desenvolvimento e alto nível de para-lelismo, que é inerente aos algoritmos utilizados em processamento de imagem e visão computacional (GOKHALE; GRAHAM, 2005). Há muitas áreas de pesquisa de imple-mentações em FPGAs, como detecção de linha, processamento de visão estéreo, detecção de face rápida, segmentação de imagem, subtração de background, entre outras (LU et al.,

2013). Estas aplicações em tempo real demonstram a grande performance computacional da arquitetura baseada em FPGA.

1.2

Digitalização tridimensional

A grande funcionalidade de um digitalizador tridimensional a laser é a obtenção rápida e precisa de uma grande massa de dados de posição tridimensional que representa um objeto. Essa massa de dados, ou nuvem de pontos, pode então ser processada para a obtenção de um modelo tridimensional desse objeto. Esses modelos tridimensionais podem então ser utilizados em uma grande variedade de aplicações tanto na engenharia quanto em outras áreas do conhecimento (GINANI, 2008).

As imagens utilizadas para a geração do modelo tridimensional são obtidas pela varredura longitudinal e transversal do objeto por um laser de linha. O tipo de imagem obtida neste processo está ilustrada na Figura1a, e a Figura1brepresenta o resultado da

(13)

18 Capítulo 1. Introdução

(a) Imagem capturada (b) Imagem pré-processada

Figura 1 Ű Irradiação do laser sobre um objeto (YUDI, 2010)

extração de background da Figura 1a. A determinação das coordenadas do laser de linha traçados sobre o objeto a cada passo da varredura torna possível gerar a nuvem de pontos que o descreve no espaço tridimensional.

1.3

Objetivo

1.3.1 Objetivo Geral

O objetivo geral deste trabalho é propor um ambiente de aquisição de imagens e implementar um algoritmo em hardware para segmentação de imagens de intensidade usado em aplicação de digitalização de superĄcies 3D. As Figuras 2a e 2b ilustram, em sequência, varredura de um laser ao longo de um objeto. Estas imagens são exemplos do tipo de entrada do sistema. As saídas deste sistema serão as coordenadas dos pixels com maior intensidade, obtendo assim a localização do laser sobre o objeto.

(a) Imagem 1 (b) Imagem 2

Figura 2 Ű Sequência de imagens pré-processadas que ilustram a progressão do laser ao longo do objeto

(14)

1.4. Metodologia 19

Level), utilizando linguagem VHDL.

1.3.2 Objetivos Específicos

• Implementação de um Ąltro passa-baixas que atue nas imagens de entrada a Ąm de evitar detecção errônea das coordenadas do laser;

• Obtenção das coordenadas x e y do laser de linha através de um algoritmo em VHDL;

• Adequação da imagem de forma que seja mostrada em destaque a posição do laser no display.

1.4

Metodologia

A proposta de solução para a tarefa de segmentar a linha de laser de uma imagem está ilustrada na Figura 3. Há diversas classes de problemas que podem ser resolvidos através de técnicas de processamento de imagens aplicadas a imagens de intensidade em duas dimensões. Para a obtenção das coordenadas x e y de uma linha, optou-se pela segmentação baseada em características dos pixels. O perĄl de distribuição do feixe de luz emitido por um laser deve ser então conhecido, a Ąm de se determinar as características exploradas na segmentação.

O algoritmo de segmentação de linha será implementado em hardware utilizando a linguagem VHDL. As imagens a serem segmentadas serão capturadas por um módulo de câmera controlado pela FPGA. Além disto, a Ąm de possibilitar a visualização dos resultados em tempo real, um display será utilizado. A comunicação entre a FPGA e o display ocorrerá através de uma interface HDMI.

(15)

20 Capítulo 1. Introdução

(16)

21

2 Revisão BibliográĄca

2.1

Imagem de Intensidade

Em uma imagem monocromática de intensidade, cada pixel em uma matriz bi-dimensional ��� possui o valor de intensidade luminosa �(�, �) capturado pelo sensor (Equação (2.1)). Nas imagens coloridas que possuem informações em intervalos ou bandas distintas de frequência, é necessário uma função �(�, �) para cada banda. Por exemplo, as imagens coloridas no padrão RGB, são formadas por cores primárias aditivas: vermelho, verde e azul, como a sensibilidade dos três tipos cones do olho humano. Neste caso a representação da imagem é dada por uma matriz de ���, onde cada ponto da matriz é formado por um vetor de três valores, um para a intensidade de cada cor, formando assim uma imagem de três bandas. A imagem de intensidade luminosa monocromática é formada por uma única banda (SILVA,2000).

f(x,y) = ︀ ︀ ︀ ︀ ︀ ︀ ︀ ︀ �(0, 0) �(0, 1) . . . �(0, � − 1) �(1, 0) �(1, 1) . . . �(1, � − 1) ... ... ... ... �(� − 1, 0) �(� − 1, 1) . . . �(� − 1, � − 1) ︀ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ︀ (2.1)

2.2

Segmentação de Imagens

Segmentação subdivide uma imagem em suas regiões e objetos constituintes. O nível de subdivisão depende do problema que se deseja resolver, isto é, a segmentação deve parar quando os objetos de interesse para a aplicação forem isolados. Algoritmos de segmentação geralmente são baseados em uma das duas propriedades de valores de intensidade: discontinuidade e similaridade. Na primeira categoria, a abordagem é parti-cionar a imagem baseado na mudança abrupta de intensidade, como, por exemplo, nas bordas de um objeto. As principais abordagens na segunda categoria são baseadas no par-ticionamento de uma imagem em regiões similares de acordo com critérios predeĄnidos. Limiarização, crescimento de região, separação e mesclagem de regiões são exemplos de métodos utilizados nesta categoria (GONZALEZ; WOODS, 2001).

2.2.1 Perfil de irradiação de um laser

O feixe de luz emitido pelo laser inicia-se como uma onda plana com perĄl de irradiação transversal gaussiano, como ilustra a Figura4(IDEX OPTICS & PHOTONICS MARKETPLACE, 2015).

(17)

22 Capítulo 2. Revisão BibliográĄca

Figura 4 Ű PerĄl de irradiação Gaussiano de um laser. Fonte: (IDEX OPTICS & PHO-TONICS MARKETPLACE, 2015)

Para discutir as características de propagação do feixe de laser, deve-se deĄnir o seu diâmetro. Há duas deĄnições comumente aceitas. Uma deĄnição é o diâmetro no qual a intensidade de radiação está a 1/�2 (13.5%) do valor máximo, e a outra é o diâmetro no qual a intensidade está a 50% do valor máximo, como ilustra a Figura 5.

Figura 5 Ű Diâmetro de um feixe Gaussiano. Fonte: (IDEX OPTICS & PHOTONICS MARKETPLACE, 2015)

A difração faz com que ondas eletromagnéticas se espalhem transversalmente à medida que se propagam, de forma que é impossível ter um feixe perfeitamente colimado. A Figura 6ilustra o espalhamento transversal da onda (IDEX OPTICS & PHOTONICS MARKETPLACE, 2015). Uma frente de onda de um feixe de laser adquire curvatura e se espalha de acordo com as Equações (2.2) e (2.3), em que: � é a distância propagada a partir do plano onde a frente de onda é plana; Ú é o comprimento de onda da luz; �0 é o raio do contorno de irradiação a 1

e2 do valor máximo no plano em que a frente de onda é

plana; �(�) é o raio do contorno 1

e2 após ter se propagado uma distância �; e �(�) é o raio

(18)

2.3. Paralelismo em operações de processamento de imagens 23

feixe Gaussiano é então expressa pela Equação (2.4).

�(�) = �0(1 + ( Ú� Þ�2 0 )2 )1 2 (2.2) �(�) = �(1 + Þ� 2 0 Ú� ) (2.3) �(�) = �0 −2r2 w2 (2.4)

Figura 6 Ű Mudança no raio de frente de onda com a distância de propagação. Fonte: (IDEX OPTICS & PHOTONICS MARKETPLACE,2015)

2.3

Paralelismo em operações de processamento de imagens

Essencialmente, imagens e vídeos digitais são sinais multidimensionais com grande quantidade de dados, o que exige muitos recursos de processamento e de memória ( KEH-TARNAVAZ; GAMADIA, 2006).

Quando se trabalha com processamento de imagens em tempo real, um problema importante é lidar com a grande quantidade de dados e cálculos sob um alto rigor tem-poral. O conceito de processamento paralelo é uma das alternativas para se lidar com problemas envolvendo quantidades massivas de dados. Muito do que se pode fazer na implementação de sistemas eĄcientes de processamento está centrado em quão bem a im-plementação, de hardware e software, explora as diferentes formas de paralelismo em um algoritmo: paralelismo em nível de dados (DLP Ű Data Level Parallelism) e paralelismo em nível de instrução (ILP Ű Instruction Level Parallelism). O paralelismo em nível de dados é encontrado quando se pode aplicar a mesma operação a diferentes conjuntos de dados. Já o paralelismo em nível de instrução encontra-se na aplicação de distintas operações independentes de forma simultânea (ROSE; NAVAUX,2008).

(19)

24 Capítulo 2. Revisão BibliográĄca

É preciso conhecer as classes de operações de processamento de imagem para, então, identiĄcar o tipo de paralelismo adequado a cada classe. Com base na relação entre dados de entrada e de saída, pode-se estratiĄcar as operações em três níveis: baixo, intermediário e alto. A seguir serão descritos os níveis, assim como os tipos de paralelismo presentes em cada um.

2.3.1 Operações de baixo nível

As operações de baixo nível são aplicadas diretamente à imagem de entrada, re-sultando em uma nova imagem de saída. Esta classe de operações inclui transformações de cores, ajuste de contraste, Ąltragem, redução de ruído, realce de bordas, transformadas para domínio da frequência, entre outras. As operações deste nível são subdivididas em três tipos: pontuais, de vizinhança ou globais.

As operações pontuais transformam um píxel de entrada em um píxel de saída, sem que haja dependência dos píxeis vizinhos, conforme ilustra a Figura 7. Operações aritméticas, lógicas e limiarização estão incluídas nessa categoria. O paralelismo de dados pode ser explorado, pois as operações pontuais são executadas para cada píxel de modo independente (YUDI, 2010).

Figura 7 Ű Operação envolvendo um único pixel. Fonte: adaptada de (KEHTARNAVAZ; GAMADIA, 2006)

As operações de vizinhança utilizam, para se obter um pixel de saída, os valores dos pixels vizinhos do correspondente pixel na imagem de entrada, conforme ilustra a Figura8. Convolução e correlação espaciais, Ąltragem, suavização e realce de contorno são exemplos de operações que pertencem a esta classe. O paralelismo de dados é evidente devido à repetição das mesmas operações a diferentes conjuntos de dados da imagem de entrada (YUDI, 2010).

As operações globais fazem uso de todos os pixels de uma imagem de uma só vez, para se obter um único pixel de saída, conforme ilustra a Figura 9. A Transformada Rápida de Fourier é um exemplo de operação desta classe (YUDI, 2010).

Como descrito, as operações de baixo nível executam o mesmo algoritmo repetida-mente sobre todos os pixels da imagem de entrada independenterepetida-mente, e envolvem acesso intenso á memória. O parelelismo de dados é o mais indicado a esta categoria (YUDI,

(20)

2.4. Componentes de um sistema de processamento de imagens 25

Figura 8 Ű Operação envolvendo vizinhança. Fonte: adaptado de (KEHTARNAVAZ; GA-MADIA, 2006)

Figura 9 Ű Operação global. Fonte: adaptada de (KEHTARNAVAZ; GAMADIA, 2006)

2.3.2 Operações de Nível intermediário

No nível intermediário de operação, imagens são transformadas em um conjunto abstrato de dados, que retratam características de interesse da imagem de entrada. As operações são aplicadas em nível de píxel, e a saída apresenta uma quantidade reduzida de dados. Segmentação, extração de bordas, linhas e contornos, assim como outros atributos de interesse fazem parte desta classe de operações. O repetição de um algoritmo aplicado a porções independentes da imagem faz com que o paralelismo de dados seja o mais indicado para esta categoria (YUDI,2010).

2.3.3 Operações de Alto nível

Operações de alto nível realizam a interpretação de conjuntos abstratos de dados vindos do nível intermediário. Esta classe inclui o reconhecimento e classiĄcação de obje-tos, ou tomada de decisão de controle. Estas operações são inerentemente sequenciais e agem sobre uma quantidade reduzida de dados. O paralelismo em nível de instruções é o mais indicado a esta categoria (YUDI,2010).

2.4

Componentes de um sistema de processamento de imagens

A Figura 10apresenta a composição de um sistema de processamento de imagens de propósito geral. É importante ressaltar que a arquitetura do sistema pode variar com aplicação em que se deseja empregá-lo.

No processo de aquisição de imagens digitais, dois elementos são exigidos. O pri-meiro é um sensor indicado para a faixa de frequência da energia irradiada pelo objeto alvo

(21)

26 Capítulo 2. Revisão BibliográĄca

Figura 10 Ű Componentes de um sistema de processamento de imagens de propósito geral. Fonte: (GONZALEZ; WOODS, 2001)

da aquisição. O segundo é chamado digitalizador, o qual realiza a conversão analógico-digital dos valores obtidos pelo sensor. O componente Specialized image processing

hard-waregeralmente consiste no digitalizador mencionado, mais um hardware que realiza uma

série de operações primitivas como correção, reescalonamento, interpolação e outros algo-ritmos de formatação. A característica mais distintiva deste componente é a velocidade, pois por ele circula um alto Ćuxo de dados (GONZALEZ; WOODS,2001).

O componente Computer é um computador de propósito geral utilizado para a tarefa de processamento de imagem off-line. Em aplicações dedicadas, computadores es-pecialmente customizados são usados para atingir a performance requerida.

O Software se refere à implementação do algoritmo de processamento de imagem sobre os dados adquiridos.

O componente Mass Storage divide-se em três categoriais: armazenamento de rá-pido acesso; armazenamento on-line; e armazenamento de arquivo.

Por Ąm, Image displays, Hardcopy e Networking são os componentes utilizados para diversas formas de visualização, impressão e transmissão das imagens, respectivamente.

2.4.1 FPGAs e processadores de propósito geral

A escolha do componente computer no modelo da Figura 10 deve ser feita com base em características requeridas, tais como: poder de processamento, capacidade de ar-mazenamento, Ćexibilidade de desenvolvimento, preço, consumo de energia, entre outros. Neste contexto, serão comparados dois tipos de arquitetura: FPGAs e computadores de

(22)

2.4. Componentes de um sistema de processamento de imagens 27

propósito geral.

2.4.1.1 Processamento multithread em processador de propósito geral

Uma das vantagens de computadores de propósito geral sobre o FPGA é a maior liberdade para o desenvolvedor na escolha de linguagens de programação e plataformas de desenvolvimento. É possível utilizar softwares de manipulação de matrizes, aplicações e bibliotecas já bem estabelecidas e vastamente utilizadas para processamento digital de imagens. No entanto, a arquitetura deste tipo de processador é projetada para ser genérica e não oferece Ćexibilidade para customização em nível de hardware, não sendo a mais eĄciente para desempenhar atividades muito especíĄcas.

2.4.1.2 Field-Programmable Gate Arrays (FPGAs)

Os sistemas de lógica reconĄgurável são arranjos de componentes lógicos, inter-ligados por uma rede programável. Um dos principais dispositivos dessa família são os FPGAs. Suas características construtivas e de programação o tornam Ćexíveis e adaptá-veis às aplicações, permitindo a implementação dos algoritmos diretamente em hardware. Estes dispositivos oferecem uma grande presivibilidade de execução, característica essen-cial em sistemas com requisitos de tempo real. Por serem tão Ćexíveis, os FPGAs podem ser programados para explorar de modo eĄciente as diferentes formas de paralelismo pre-sentes nos algoritmos de processamento de imagens (YUDI, 2010).

Um FPGA consiste em um arranjo bidimensional de blocos lógicos, como mos-trado na Figura 11. Tais blocos são ligados por elementos de interconexão programáveis e os elementos nas bordas dos arranjos possuem algumas características adicionais para utilização como entradas e saídas dos dispositivos (blocos de entrada e saída) (ARAGAO,

1998).

A principal vantagem de se usar FPGAs em aplicações de processamento de ima-gens é devida à sua estrutura, que é capaz de explorar paralelismo temporal e espacial. Por exemplo, o FPGA poderia ser conĄgurado para particionar a imagem e distribuir as partes resultantes entre múltiplos pipelines, cujos dados podem ser processados simultane-amente. No entanto, entre as desvantagens, pode-se destacar o tempo de desenvolvimento, que em geral é maior em implementações com descrição de hardware; e a baixa capacidade de armazenamento, que no contexto de processamento de imagens é uma desvantagem bastante signiĄcativa.

2.4.1.2.1 Implementação de hierarquia em VHDL e reutilização de RTL

No design em hardware usando FPGAs é conveniente criar uma abstração de hierarquia antes mesmo de se iniciar o desenvolvimento em VHDL. Isto facilita a

(23)

reuti-28 Capítulo 2. Revisão BibliográĄca

Figura 11 Ű Estrutura de um FPGA. Fonte: (ARAGAO, 1998)

lização do código em outros projetos. Uma boa prática no desenvolvimento de protótipo em VHDL é desenvolver códigos mais independentes de dispositivos, ou seja, que boa parte dos códigos que compõem o projeto possam ser utilizados em qualquer arquitetura FPGA com o mínimo de modiĄcações. Desta forma, a migração para um novo dispositivo exige menos esforços (NELSON, 2000).

O modelo hierárquico utilizando VHDL pode ser implementado a partir de um có-digo com mais alto nível de abstração, que declara e instancia componentes cujas funciona-lidades estão deĄnidas em códigos hierarquicamente subordinados. Então, são atribuídos sinais do nível de hierarquia atual para outra arquitetura VHDL, a partir do mapeamento das portas do componente instanciado. Pode haver diversos níveis hierárquicos, porém, há sempre um bloco que encabeça a pirâmide, chamado top-level.

2.5

Filtragem Espacial

O mecanismo de Ąltragem espacial é ilustrado na Figura 12. O processo consiste em mover o kernel do Ąltro ponto a ponto na imagem, e em cada ponto (�, �), a resposta do Ąltro é dada pela soma dos produtos dos coeĄcientes da máscara e o valor do pixel correspondente na área coberta pela máscara do Ąltro. Note que o coeĄciente �(0, 0) coincide com o valor �(�, �) da imagem, indicando que a máscara está centrada em (�, �) no momento do cálculo da soma dos produtos.

(24)

2.6. Filtro Gaussiano 29

Figura 12 Ű Mecanismo de Ąltragem espacial. Fonte: adaptado de (GONZALEZ; WO-ODS,2001)

Em geral, Ąltragem linear de uma imagem f de tamanho ��� com uma máscara de tamanho ��� é dada pela Equação 2.5. Onde � = (� −1)/2�� = (�−1)/2. Para gerar uma imagem Ąltrada completa esta equação deve ser aplicada para � = 0, 1, 2, ..., � − 1 e � = 0, 1, 2, ..., � − 1. Desta forma, se assegura que a máscara processa todos os pixels na imagem (GONZALEZ; WOODS, 2001).

�(�, �) = as=−a bt=−b �(�, �)�(� + �, � + �) (2.5)

2.6

Filtro Gaussiano

O Ąltro Gaussiano pode ser utilizado como um Ąltro passa-baixas devido ao for-mato de sua resposta em frequência, expressa pela Equação 2.6, obtida a partir da trans-formada de Fourier da Equação 2.7, em que à é o desvio padrão, neste caso igual a 1, e a distribuição tem média zero, ou seja, está centrada em � = 0. Observa-se que a resposta em frequência é também uma distribuição Gaussiana com média zero (ALSHARIF,2014).

ℎ(�) =2Þà� exp(−2Þ2 à2 2 ) (2.6) �(�) = � exp−�2 2 ⎜ (2.7)

(25)

30 Capítulo 2. Revisão BibliográĄca

Explorando a dualidade entre tempo e frequência, expressa pela Equação 2.8, sendo �(�) o sinal a ser Ąltrado, no domínio do tempo, e ℎ(�) a resposta ao impulso do Ąltro Gaussiano, e F {�(�)} e F {ℎ(�)} as transformadas de Fourier de �(�) e ℎ(�), respectivamente, é sabido que se pode realizar a Ąltragem através da convolução entre

�(�) e ℎ(�). Desta forma, a Equação2.10será usada para gerar os coeĄcientes da máscara

utilizada na convolução (ALSHARIF, 2014).

F[ℎ(�, �) ∗ �(�, �)] = F [ℎ(�, �)]F [�(�, �)] (2.8) Na Ąltragem de imagens, a resposta ao impulso do Ąltro Gaussiano é uma função bidimensional, expressa pela Equação 2.9. Sua resposta em frequência é expressa pela Equação 2.10. �(�, �) = 2Þàxàyexp(−2Þ 2[�2 à2 x+ � 2 à2 y]) (2.9) ℎ(�, �) =2Þà1 exp ⎠ −122 à2 x + 2 à2 y ⎜⎜ (2.10)

Uma vez que a imagem é constituida por um conjunto discreto de pixels, é preciso discretizar também a distribuição Gaussiana bidimensional para se obter a máscara, ou kernel do Ąltro. Esta máscara teoricamente seria inĄnitamente extensa, devido ao fato de a distribuição Gaussiana jamais assumir valor zero, no entanto, para efeitos práticos, o kernel usado é uma versão truncada da distribuição.

O efeito da convolução da imagem com um Ąltro gaussiano é o borramento da mesma. O resultado do janelamento é uma média ponderada pelos coeĄcientes do kernel, em que o pixel central é ponderado por um valor maior que os pixels vizinhos. Desta forma, o ruído de alta frequência é reduzido, borrando a imagem como um todo, no entanto as bordas são preservadas(ALSHARIF, 2014).

(26)

31

3 Implementação e Resultados

3.1

Obtenção das coordenadas

� e � da linha

Conhecidas as características do laser, pode-se então propôr uma solução para o problema de segmentação. A Figura 13 ilustra um exemplo real de imagem da qual se deseja extrair as coordenadas � e � da linha de laser. Sabendo-se que o perĄl de irradiação do laser é descrito por uma distribuição Gaussiana, pode-se então detectar a posição dos pontos que compõem a reta através da busca das coordenadas dos pixeis com maior valor de intensidade. Caso a linha esteja na horizontal, a comparação deve ocorrer entre os valores de todos os pixels da coluna �. Caso esteja na vertical, a comparação deve ocorrer entre os valores de todos os pixels da linha �. A Figura14permite visualizar o processo de comparação. Ao se encontrar um pixel de maior intensidade, sua coordenada é guardada e o processo de comparação continua até que toda a imagem seja varrida.

Figura 13 Ű Imagem capturada e pré-processada do laser sobre o objeto. Fonte: Elaborada pelo autor

Figura 14 Ű Seleção do pixel de maior intensidade em uma coluna da imagem. Fonte: Elaborada pelo autor

(27)

32 Capítulo 3. Implementação e Resultados

3.2

Opções de setup

3.2.1 Computador como fonte das imagens a serem processadas

A princípio as imagens seriam obtidas pela câmera já montada na estrutura do escâner e transferidas para um computador. Através do protocolo USB 2.0, estas ima-gens seriam deslocadas para a memória DD2 128 MB da placa Atlys e processadas pelo FPGA. Os resultados do processamento seriam armazenados na memória Flash Numonyx N25Q128 de 128 Mbit, por interface SPI, ou diretamente transmitidos via USB de volta para o computador de origem, para dar prosseguimento ao processamento das imagens.

Tendo em vista o Ćuxo descrito, foi iniciado o estudo sobre o interfaceamento com a memória Flash Numonyx N25Q128, o controlador do periférico USB 2.0, Cypress FX2LP (CYPRESS,2016), e sobre os protocolos de comunicação SPI e USB 2.0. Foi implementada a comunicação com a memória Flash utilizando o protocolo serial Extended SPI, descrito em (NUMONYX,2010). Para a comunicação USB 2.0 foi escolhida a solução open source FPGALink (MCCLELLAND, 2016) que implementa o protocolo USB 2.0 e oferece uma API de controle de transferência de dados tanto para o FPGA, quanto para o computador. No entanto, tal abordagem não foi adotada devido ao tempo de transferência das imagens através do protocolo USB 2.0 ser um gargalo na implementação. Dada a a banda de transferência teórica oferecida pelo protocolo USB 2.0, 480MB/s (CYPRESS, 2016), e uma imagem com resolução de 1600x900 em tons de cinza, em que cada pixel é repre-sentado por 1 byte, o tempo necessários para a transferência de uma única imagem, com 1440000 bytes, é de aproximadamente 3 ms. Se considerada a hipótese de um processador Intel(R) Core(TM) i7-4720HQ 2.60 GHz executar um algoritmo simples, que utilize um ciclo de clock para cada pixel da imagem, seriam necessários 553.8 us para processar uma imagem. Sendo assim, não seria vantajoso executar este mesmo algoritmo em um FPGA, caso fosse necessário transferir a imagem via USB 2.0, pois o tempo de transferência por si só já tornaria a solução mais lenta que para o caso em que o algoritmo é executado no processador de propósito geral. Sabendo-se que os atuais processadores de propósito geral operam com clock na ordem de gigahertz, é possível concluir que o tempo de transferên-cia das imagens via USB 2.0 inviabilizaria a tarefa de acelerar o processo de digitalização tridimensional. Isto porque o tempo de transferência

3.2.2 Módulo VmodCAM

TM

acoplado à placa Digilent Atlys

TM

A solução escolhida foi então utilizar a placa Digilent AtlysTM para controlar o módulo de vídeo VmodCAMTM. Desta forma, as imagens são capturadas pelo módulo VmodCAMTM e armazenadas na memória DDR2 128MB, presente na placa Atlys. As imagens Ącam então disponíveis ao FPGA Spartan-6 XC6SLX45 para o processamento. A Figura15ilustra a solução.

(28)

3.2. Opções de setup 33

Figura 15 Ű Módulo VmodCAMTM acoplado à placa Digilent AtlysTM. Fonte: (

ALSHA-RIF,2014)

3.2.2.1 Placa Digilent AtlysTM

A placa Digilent AtlysTM (Ągura 16) é uma plataforma de desenvolvimento em hardware que possui o FPGA Xilinx Spartan-6 LX45. É compatível com as ferramentas CAD Xilinx, incluindo ChipScope, EDK e a licença gratuita ISE WebPackTM. O FPGA Spartan 6 LX45 é otimizada para alta performance lógica, contendo 2.1 Mbits de blocos RAM distribuídos e clock interno de 500MHz. Dentre os diversos periféricos disponíveis nesta placa, os seguintes destacam-se no contexto deste trabalho:

• 2 portas de entradas e 2 de saídas HDMI;

• Memória DDR2 de 128 Mbytes com palavras de 16-bits;

• Porta USB2 que pode ser utilizada para programação e transferência de dados;

• Porta USB-UART;

• 16Mbytes SPI Flash.

(29)

34 Capítulo 3. Implementação e Resultados

Este FPGA pode ser programada de três formas distintas, desde que os devidos jumpers sejam conectados corretamente: um computador conectado à porta JTAG pode conĄgurar o FPGA; um arquivo de conĄguração pode ser transferido para a memória Flash presente na placa; ou o arquivo de conĄguração pode ser transferido de um pendrive USB inserido na porta USB HID (Figura 17).

Figura 17 Ű Interface USB. Fonte: (DIGILENT, 2013)

3.2.2.2 Módulo de vídeo VmodCAMTM

O sinal de vídeo é capturado pelo módulo stereo VmodCAMTM produzido pela Diligent (18). Neste módulo há dois sensores de imagem Aptina MT9D112 2 Mega Pixels CMOS. A transferência dos dados capturados é realizada através de um cabo VHDCI de 68 pinos, que é conectado à placa AtlysTM. Este módulo é capaz de fornecer até 15 frames por segundo a uma resolução de 1600x1200. A captura e entrega das imagens dos dois sensores para o FPGA são simultâneas, e os sensores são controlados separadamente. Embora este módulo seja capaz de capturar imagens coloridas, o presente trabalho utiliza apenas os pixels da matriz vermelha. Esta abordagem foi adotada pois o laser utilizado no escâner emite luz na faixa de frequência da cor vermelha. Além disso, foi utilizado um Ąltro óptico que permite somente a passagem de ondas na faixa de frequência da cor vermelha.

(30)

3.3. Design structure 35

3.3

Design structure

A implementação da solução é dividida em módulos, conforme ilustra o diagrama de blocos da Figura 19.

Figura 19 Ű Diagrama de Ćuxo de sinais através dos blocos da solução proposta. Fonte: adaptado de (ALSHARIF, 2014)

A captura do vídeo é realizada em tempo real, assim como o processamento, que consiste em três etapas: Ąltragem da imagem por um Ąltro Gaussiano; detecção das coor-denadas e valor do pixel de maior intensidade; e a formação da imagem a ser visualizada no Display. O bloco de Processamento de imagem será discutido na seção 3.4. O resto dos módulos foram desenvolvidos por Digilent Inc.

3.3.1 CamCtl

Chamado Camera Control, este módulo conĄgura os dois sensores digitais de ima-gem Aptina MT9D112, e é capaz de fornecer até 15 frames por segundo a uma resolução de 1600x900 (DIGILENT, 2011).

3.3.2 FBCtl

Chamado Frame Bufer Control, este módulo representa um frame bufer. Um memória DDR2 é utilizada para armazenar os frames. O módulo Frame Bufer Control

(31)

36 Capítulo 3. Implementação e Resultados

foi construído de forma a disponibilizar dois frame bufers, um para receber o Ćuxo de frames vindo da fonte de vídeo, e outro apenas para leitura. A interface com este módulo é uma Ąla First-In-First-Out (ALSHARIF, 2014).

3.3.3 SysCon

Chamado System Control Unit (Unidade de Controle do Sistema), este módulo provê os sinais de clock e reset que controlam o sistema (ALSHARIF, 2014).

3.3.4 VideoTimingCtl

O chamado Video Timing control se certiĄca da sincronização dos sinais do sistema (ALSHARIF, 2014).

3.3.5 DVITransmitter

O DVI Transmitter é responsável por obter os dados das imagens RGB e convertê-los em um sinal adequado à transmissão via DVI ou HDMI (ALSHARIF,2014).

3.3.6 Memória DDR2 128 MB

Fora do domínio do FPGA, presente na Placa Digilent AtlysTM, a memoria DDR2 128 MB permite armazenar as entradas frame a frame, caso esta abordagem seja necessária em trabalhos futuros (ALSHARIF, 2014).

3.4

Módulo ImageProc

Para efeito de descrição do funcionamento do módulo ImageProc, cujo RTL é mostrado na Figura 22,o mesmo pode ser subdividido conforme ilustra o diagrama de blocos da imagem 20. O processo contido no módulo ImageProc realiza a contagem das coordenadas � e � do pixel da imagem a ser processada. A cada ciclo do clock um pixel entra no módulo para ser processado, e o valor de coordenadas de sua posição é atualizado. Uma vez que a resolução usada é de 1600�900, as coordenadas no eixo � assumem valores de 0 a 1599, enquanto no eixo � assumem valores de 0 a 899.

(32)

3.4. Módulo ImageProc 37

Figura 21 Ű RTL do módulo ImageProc

O módulo GaussianFilter implementa a Ąltragem espacial da imagem. Sua estru-tura e funcionamento são descritos na seção 3.5.

Foi discutido na seção3.1que o método escolhido neste trabalho para a geração do perĄl do laser sobre o objeto escaneado seria a comparação dos valores de intensidade de todos os pixels de uma linha. A hipótese adotada é que a área da imagem que representa o laser possui maior valor de intensidade que as demais regiões da imagem. Sendo assim, o módulo GetCoord executa a comparação dos valores de intensidade dos pixels de uma linha, e guarda o valor mais alto, assim como as coordenadas � e � deste pixel. Cada pixel que entra neste módulo é comparado a uma variável de referência, que é zerada ao início de cada linha. Se a variável de referência vale mais que a intensidade do pixel de entrada, o valor da mesma é mantido. Caso a intensidade do pixel de entrada valha mais que a variável de referência, o valor de intensidade do pixel passa a ser a nova referência, e suas coordenadas � e � são armazenadas em variáveis locais.

É importante salientar o sinal enable que é setado pelo processo contido no bloco ImageProc ao início de cada linha, ou seja, quando � = 0. Este sinal é responsável por atualizar o valor de intensidade e as coordenadas do pixel de maior intensidade que saem do bloco GetCoord. Em cada linha, quando a coordenada � do pixel capturado se iguala à coordenada � do pixel de maior intensidade da linha anterior, o processo contido em ImageProc zera a variável de referência. Da forma como algoritmo foi implementado o perĄl estará sempre deslocado em um pixel, pois a localização do pixel mais intenso só será representada na linha seguinte. Para efeito de visualização, este detalhe não prejudica signiĄcativamente o resultado.

O módulo Dlatch manipula a imagem para que os pixels de maior intensidade em uma linha sejam destacados na visualização do display. A variável enable é setada no processo de ImageProc quando a coordenada � do pixel capturado se iguala à coordenada � do pixel de maior intensidade da linha anterior. Quando a variável enable está habilitada este módulo destaca a localização do pixel de maior intensidade ao atribuir a cor azul

(33)

38 Capítulo 3. Implementação e Resultados

àquela posição.

Por Ąm, na Figura21pode-se observar o RTL da implementação do módulo Ima-geProc, em que os sinais e interconexões dos módulos internos são mostradas.

Figura 22 Ű RTL dos módulos internos a ImageProc

3.4.0.1 Orientação da Câmera

É importante salientar que o algoritmo de segmentação do perĄl de laser foi im-plementado com uma restrição de orientação da câmera. A Figura23 ilustra a ordem de entrada dos pixels do módulo GetCoord, que é responsável por determinar as coordena-das do pixel com maior intensidade. O fato de a câmera estar posicionada neste sentido garante que a comparação da intensidade seja realizada à medida que os pixels adentram o módulo GetCoord, não havendo a necessidade de armazenar dados.

(34)

3.5. Implementação do Filtro Espacial 39

3.5

Implementação do Filtro Espacial

Os valores de intensidade dos pixels da matriz RGB são capturados pelo sensor e enviados sequencialmente para o bloco de Ąltragem. O Ćuxo de pixeis alimenta os regis-tradores, conforme ilustra a Figura 24.

Figura 24 Ű Implementação do deslizamento do kernel sobre a imagem de entrada. Fonte: http://blog.teledynedalsa.com/2012/05/image-Ąltering-in-fpgas/

A ordem dos pixels da imagem que chega aos registradores segue o sentido cres-cente dos eixos � e �, linha a linha, como mostra a Figura 25. Os bufers lineares são essencialmente FIFOs que atrasam o Ćuxo de pixels no fator de um comprimento de linha.

Figura 25 Ű Sequência de pixels enviados ao bloco de Ąltragem. Fonte: http://blog.teledynedalsa.com/2012/05/image-Ąltering-in-fpgas/

A saída de cada registrador é conectada também a um multiplicador. Desta forma, ao passo em que os pixels se deslocam através dos registradores, estes são multiplicados pelos correspondentes coeĄcientes do kernel do Ąltro. A adição dos valores de saída dos multiplicadores, ilustrada pela Figura 26, resulta em uma iteração da convolução, con-forme ilustra a Figura 27.

(35)

40 Capítulo 3. Implementação e Resultados

Figura 26 Ű Soma dos resultados da multiplicação dos pixels da janela pelos coeĄcien-tes do kernel do Ąltro. Fonte: http://blog.teledynedalsa.com/2012/05/image-Ąltering-in-fpgas/

Figura 27 Ű Disposição da vizinhaça de um pixel gerado na Ąltragem. Fonte: (YUDI,2010)

Para ilustrar o deslocamento dos pixels ao longo dos registradores do módulo GaussianFilter foi elaborado um Testbench na ferramenta ISE ISE Design Suite 14.7. A cada ciclo do clock os pixels se deslocam através dos registradores, como ilustra a Ągura

28, em que a variável �i� corresponde a entrada de pixels no módulo de GaussianFilter;

as variáveis ��_���, correspondem ao sinal de saída de do n-ésimo registrador. Cada valor ��_��� é multiplicado pelo respectivo coeĄciente do kernel do Ąltro. Neste caso, a imagem possui uma largura de 4 pixels, desta forma, os pixels que adentram a segunda e terceira linha do kernel são atrasados em um fator de 4 pixels. O processo segue até que todos os pixels da imagem resultante da Ąltragem sejam obtidos.

(36)

3.5. Implementação do Filtro Espacial 41

3.5.1 Critério de seleção do desvio padrão e tamanho do kernel de um filtro

Gaussiano

A distribuição Gaussiana é contínua e se extende inĄnitamente. No entanto, para efeitos práticos, esta distribuição é truncada e discretizada, a Ąm de reduzir o custo computacional de Ąltragem. Neste sentido, há uma regra empírica que serve de referência para determinar o tamanho do kernel do Ąltro. Esta regra se baseia na propriedade 68-95-99.7 da distribuição normal.

A função de distribuição acumulada (FDA) descreve a probabilidade de uma va-riável aleatória assumir um valor inferior ou igual a determinado valor real � e é descrita pela equação �.

�(�) =x

−inf

�(�i)�� (3.1)

A Figura 29 ilustra uma distribuição normal e as porcentagens da FDA repre-sentadas para alguns intervalos. No intervalo em que a variável aleatória assume valores entre 0 a à, a FDA corresponde a 68% da distribuição, ou seja, em um evento, há uma probabilidade de 68% de a variável aleatória assumir um valor que esteja neste invervalo. Analogamente, para os intervalos de [0, 2à] e [0, 3à] as probabilidades são de 95% e 99.7%, respectivamente. Comumente um Ąltro que contenha os valores da distribuição gaussiana no intervalo de [0, 3à] são considerados adequados, pois a quantidade de informação ig-norada não é signiĄcativa.

Figura 29 Ű Distribuição normal e as porcentagens referentes a 68%, 95% e 99.7% da área total

Para Ąltragem de uma image, um kernel bidimensional é adotado. A função Gaus-siana pode ser descrita como o produto de duas funções GausGaus-sianas perpendiculares, e,

(37)

42 Capítulo 3. Implementação e Resultados

devido à simetria radial, os mesmos princípios aplicados a distribuição Gaussiana unidi-mensionais são aplicáveis à bidimensional.

Sendo assim, a propriedade 68-95-99.7 da distribuição normal permite determinar as dimensões do kernel de um Ąltro de imagem gaussiano com base no valor de desvio padrão adotado. Se seguida a regra empírica de que o intervalo [0, 3à] ser adequado para a construção do Ąltro, as dimensões do mesmo devem então ser iguais a 3à + 1 + 3à, dado que o elemento central do kernel corresponde ao valor máximo assumido pela função Gaussiana.

O valor de desvio padrão utilizado para gerar o kernel do Ąltro Gaussiano é esco-lhido de acordo com a aplicação, e por isso, exige o estudo sobre o espectro de frequência do tipo de imagem que se deseja Ąltrar. Conhecidas as frequências a serem eliminadas, o desvio padrão é então determinado.

Uma vez que este trabalho está focado em implementar a arquitetura em hardware do Ąltro espacial, foi escolhido um valor de desvio padrão que, ao utilizar como critério a propriedade 68-95-99.7 para dimensionar a janela, oferecesse o kernel mais simples possí-vel. Foi escolhido então o valor 0.5, com um kernel de dimensões 3�3, conforme mostrado na Tabela1. Se a regra de 3à fosse utilizada, o kernel deveria possuir tamanho 5x5, pois 3�à + 1 + 3�à = 5, no entanto, foram consideradas somente as informações em frequên-cia que estão a menos de 2à da média. Desprezando a informação em frequênfrequên-cia que se encontra acima de 2à, ainda 95% da informação não é preservada.

Com intuito de evitar aritmética de ponto Ćutuante, os coeĄcientes do kernel foram multiplicados por 256 e arredondados para o inteiro mais próximo. Os valores obtidos são representados pela tabela2. Para se obter os mesmos resultados da Ąltragem como o kernel da tabela 1 foi preciso dividir o valor de intensidade dos pixels da imagem resultante da Ąltragem pelo Ąltro da tabela 2 por 256. O processo completo de Ąltragem espacial é representado pela Figura30.

Tabela 1 Ű CoeĄcientes da máscara do Ąltro Gaussiano passa-baixas 0.0113 0.0838 0.0113

0.0838 0.6193 0.0838 0.0113 0.0838 0.0113

Tabela 2 Ű CoeĄcientes da máscara do Ąltro Gaussiano passa-baixas multiplicados por 256

3 21 3

21 158 21

(38)

3.6. Resultados e Testes 43

Figura 30 Ű Visualização dos módulos e sinais que implementam o Ąltro Gaussiano. Fonte: (ALSHARIF,2014)

3.6

Resultados e Testes

3.6.1 Ambiente de teste

Para possibilitar a aquisição das imagens e a visualização dos resultados em tempo real, foi montado um ambiente de testes. O mesmo consiste em um suporte que acopla o módulo de captura de vídeo ao escâner, conforme ilustra a Figura 31.

Figura 31 Ű Módulo de vídeo anexado à estrutura do escâner

O suporte (Ągura32a) é preso ao escâner através de presilhas, ilutradas na Figura

32b. O projeto das peças foi feito no CAD Catia V5, após realizadas as medições do módulo VmodCAM e da caixa a qual este módulo foi anexado. Foi ainda utilizada uma impressora 3D para imprimir os componentes do suporte. É importante salientar que a impressora utiliza o formato STL (STereoLithography). Sendo assim, o design das peças foi exportado pelo Catia V5 no formato requerido.

(39)

44 Capítulo 3. Implementação e Resultados

(a) Suporte do módulo VmodCAMTM

(b) Presilha do su-porte

Figura 32 Ű Desenho do suporte para o módulo VmodCAMTM feito no CAD Catia V5. Fonte: elaborada pelo autor

O ambiente de teste completo é mostrado nas Figuras33a e33b. Assim, a câmera está devidamente posicionada, e o display exibe os resultados do processamento em tempo real.

(a) Setup completo do ambiente de testes

(b) Braço robótico sobre a peça a ser escaneada

Figura 33 Ű Ambiente de testes. Fonte: elaborada pelo autor

3.6.2 Resultados

O resultado do processamento é visualizado em um display que recebe as imagens vindas do FPGA através de uma interface HDMI. As Figuras34ae34b, ilustram parte do escaneamento, com e sem o Ąltro óptico, respectivamente. As linhas azuis representam as áreas em que o algoritmo detectou as maiores intensidades, sabendo-se que a comparação ocorre linha a linha, ou seja, somente um ponto de máximo é escolhido para cada linha. Desta forma, o perĄl do laser Ąca destacado em azul do resto da imagem.

(40)

3.6. Resultados e Testes 45

(a) Resultado com o filtro óptico

(b) Resultado sem o fil-tro óptico

Figura 34 Ű Resultados visualizados no display. As linhas destacadas em azul representam o perĄl segmentado pelo algoritmo. Fonte: elaborada pelo autor

A proposta de solução foi implementada com sucesso. A segmentação do perĄl do laser foi visualizada no display em tempo real utilizando a placa Digilent Atlys e o módulo de vídeo VmodCAM. No entanto, o algoritmo algoritmo de segmentação não prevê algumas condições. Uma delas é que, em linhas em que o perĄl do laser não está presente, o algoritmo ainda assim destaca o ponto de máxima intensidade. Nessa situação, a coordenada do ponto de máxima intensidade não representa a localização do laser, como mostra a Figura Ągura:resultado3.

Figura 35 Ű Falhas encontradas no álgoritmo de segmentação do perĄl do laser. Fonte: elaborada pelo autor

Outra situação que ocorre quando ao longo de uma linha da imagem mais de um segmento do laser aparece, como mostra a Figura 35. Nestes casos, o algoritmo só é capaz de identiĄcar um ponto de máxima intensidade, e, sendo assim, o perĄl não

(41)

46 Capítulo 3. Implementação e Resultados

é inteiramente segmentado. Essa situação ocorre devido ao foco da câmera não estar perfeitamente alinhado à fonte de luz do laser, pois o suporte para o módulo VmodCAM utilizado para o teste foi montado a alguns centímetro da fonte de luz do laser. A Figura

36ilustra o efeito causado pelo desalinhamento. Percebe-se que a câmera encherga o perĄl do laser sobre o objeto em perspectiva. Sendo assim, a ocorrência de dois segmentos do perĄl em apenas uma linha pode ser causada por esse desalinhamento, uma vez que a câmera não encherga o perĄl do laser no mesmo plano em que este foi emitido.

Figura 36 Ű Efeito da distância entre a fonte de luz do laser e a câmera. Fonte: (GINANI,

(42)

47

4 Conclusão

O algoritmo de segmentação do perĄl de laser foi implementado em VHDL de acordo com a ideia proposta. O mesmo se mostra eĄciente nas áreas em que o perĄl do laser é contínuo ou não aparece em dois ou mais pontos ao longo de uma linha. No entanto, os resultados mostraram que o algoritmo não prevê algumas situações adversas.

Foi observado que, caso ao longo de uma linha varrida para encontrar o pixel de máxima intensidade o laser não esteja presente, o algoritmo detecta erroneamente a pre-sença de um ponto de perĄl. Essa situação pode ser resolvida por uma limiarização, ou seja, apenas pixels com intensidade maior que um limiar estabelecido podem ser conside-rados parte do perĄl do laser.

Outra observação foi que, caso por uma linha da imagem passe mais de um seg-mento do perĄl do laser, o algoritmo é capaz de detectar apenas um dos segseg-mentos, pois somente o pixel de máxima intensidade é selecionado. Sabe-se que a ocorrência de dois segmentos do perĄl em apenas uma linha é um efeito causado pelo desalinhamento entre a fonte de luz do lazer e a câmera. Desta forma, este efeito pode ser minimizado caso se trabalhe no sentido de diminuir a distância entre a câmera e o laser.

O Ąltro Gaussiano passa-baixas utilizado visava suavizar os picos de intensidade existentes na imagem, e assim evitar que o pixel de maior intensidade fosse confundido com ruídos de alta frequência. No entanto, com o uso do Ąltro óptico, o Ąltro passa-baixas implementado não apresentou grande avanço nos resultados. Uma possível explicação para tal observação é que não foi feito um estudo prévio sobre o espectro de frequência do tipo de imagem Ąltrada, e, desta forma, o kernel do Ąltro utilizado pode não ser adequado, pois não foi devidamente projetado. No entanto, é importante ressaltar que a arquitetura do Ąltro espacial implementada pode ser reutilizada, pois é possível inserir os coeĄcientes de kernels de outros Ąltros espaciais.

A escolha de empregar o módulo de vídeo VmodCAM controlado pela placa Digi-lent Atlys TM para capturar as imagens mostrou-se um avanço e direção à substituir do setup atual da arquitetura do sistema, que utiliza uma câmera com resolução e taxa de quadros inferiores ao módulo VmodCAM.

(43)

49

5 Trabalhos Futuros

Para trabalhos futuros, é sugerido que o algoritmo de segmentação do perĄl de laser seja aperfeiçoado. Uma possível solução para o falha no algoritmo em que um seg-mento do perĄl do laser é detectado quando este não está presente, pode-se implementar uma limiarização. Desta forma, somente fará parte do perĄl do laser pixels que possuam intensidade maior que determinado valor. Uma possível solução para o efeitos do desa-linhamento da fonte de laser e a câmera podem ser minimizados se a distância entre o sensor de imagem e o laser forem reposicionados de forma a diminuir a distância entre eles.

Neste projeto apenas o processo de segmentação do perĄl de laser foi implentado. Uma vez que o uso da placa Digilent Atlys e do módulo de vídeo VmodCAM foram validados para esta aplicação, pode-se então iniciar o trabalho no sentido de implementar outras etapas do processo de digitalização tridimensional.

Como dito, neste trabalho não foi realizado um estudo sobre o espectro de frequên-cia das imagens capturadas. Desta forma, o Ąltro Gaussiano utilizado nos teste pode não ser adequado a esta solução e, por isso, não apresentou melhoras nos resultados. Uma solução de trabalhos futuros seria realizar o estudo e selecionar o tamanho do kernel do Ąltro e desvio padrão adequados às imagens.

(44)

51

Referências

ALSHARIF, M. N. Real Time Image Processing for Lane Following. Dissertação (Mestrado) Ů Flinders University, 2014. Citado 6 vezes nas páginas 27, 28, 31, 33, 34

e 41.

ARAGAO, A. C. O. S. Uma Arquitetura Sistólica para Solução de Sistemas Lineares

Implementada com circuitos FPGAs. Dissertação (Mestrado) Ů Universidade de São

Paulo, 1998. Citado 2 vezes nas páginas 25 e26.

CYPRESS. Getting Started with FX2LP. Document no. 001-65209 rev. e. [S.l.], 2016. Citado na página 30.

DIGILENT. VmodCAM Reference Manual. [S.l.], 2011. Citado 2 vezes nas páginas 32

e 33.

DIGILENT. Atlys™ Board Reference Manual. [S.l.], 2013. REV C. Citado 2 vezes nas páginas 31e 32.

GINANI, L. S. Desenvolvimento de um Sistema de Digitalização Tridimensional de

Superfícies Baseado em Visão Computacional com Varredura a Laser para Uso em Metrologia Dimensional. Dissertação (Mestrado) Ů Universidade de Brasília, 2008.

Citado 2 vezes nas páginas 15 e44.

GOKHALE, M. B.; GRAHAM, P. S. Reconfigurable Computing - Accelerating

Computation with Field-Programmable Gate Arrays. [S.l.]: Editora Springer, 2005.

Citado na página 15.

GONZALEZ, R. C.; WOODS, R. E. Digital Image Processsing. Second edition. [S.l.]: Tom Robbins, 2001. Citado 3 vezes nas páginas 19,24 e27.

IDEX OPTICS & PHOTONICS MARKETPLACE. Gaussian Beam Optics. [S.l.], 2015. Citado 3 vezes nas páginas 19, 20e 21.

KEHTARNAVAZ, N.; GAMADIA, M. Real-Time Image and Video Processing: From

Research to Reality. First edition. [S.l.]: Morgan & Claypool, 2006. Citado 3 vezes nas

páginas 21, 22 e23.

LU, X. L. et al. Parallel hough transform-based straight line detection and its fpga implementation in embedded vision. Sensors, v. 13, n. 17, p. 25, Julho 2013. Citado na página 15.

MCCLELLAND, C. FPGALink Documentation. Release 20140311. [S.l.], 2016. Citado na página 30.

NELSON, A. E. Implementation of Image Processing Algorithm on FPGA Hardware. Dissertação (Mestrado) Ů Graduate School of Vanderbilt University, 2000. Citado na página 26.

Referências

Documentos relacionados

Pretendo, a partir de agora, me focar detalhadamente nas Investigações Filosóficas e realizar uma leitura pormenorizada das §§65-88, com o fim de apresentar e

A variável em causa pretende representar o elemento do modelo que se associa às competências TIC. Ainda que o Plano Tecnológico da Educação preveja a conclusão da

Nesse contexto, o presente trabalho tem como objetivo realizar testes de tração mecânica e de trilhamento elétrico nos dois polímeros mais utilizados na impressão

Os principais objectivos definidos foram a observação e realização dos procedimentos nas diferentes vertentes de atividade do cirurgião, aplicação correta da terminologia cirúrgica,

psicológicos, sociais e ambientais. Assim podemos observar que é de extrema importância a QV e a PS andarem juntas, pois não adianta ter uma meta de promoção de saúde se

Ninguém quer essa vida assim não Zambi.. Eu não quero as crianças

Para disciplinar o processo de desenvolvimento, a Engenharia de Usabilidade, também conceituada e descrita neste capítulo, descreve os métodos estruturados, a

Como pontos fortes, destacam-se a existência de iniciativas já em- preendidas em torno da aprovação de um Código de classificação e uma Ta- bela de temporalidade e destinação