44
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

Aceleração do Processo de Construção de Núvem de Pontos …bdm.unb.br/bitstream/10483/14959/1/2016_EricaDeOliveiraDaCosta_tcc.pdf · rápida e precisa de uma grande massa de

  • Upload
    dokhanh

  • View
    212

  • Download
    0

Embed Size (px)

Citation preview

Universidade de Brasília - UnB

Faculdade UnB Gama - FGA

Engenharia Eletrônica

Aceleração do Processo de Construção deNú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

É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çãoem (Engenharia Eletrônica) da Universidadede Brasília, como requisito parcial para ob-tenção do Título de Bacharel em (EngenhariaEletrônica).

Universidade de Brasília - UnB

Faculdade UnB Gama - FGA

Orientador: Prof. Dr. Gerardo Antonio Idrobo Pizo

Brasília, DF

2016

Érica de Oliveira da CostaAceleraçã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-50 p. : il. (algumas color.) ; 30 cm.

Orientador: Prof. Dr. Gerardo Antonio Idrobo Pizo

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

1. FPGA. 2. Digitalização tridimensional. I. Prof. Dr. Gerardo Antonio IdroboPizo. II. Universidade de Brasília. III. Faculdade UnB Gama. IV. Aceleração doProcesso de Construção de Núvem de Pontos para Digitalização TridimensionalUtilizando FPGA

CDU 02:141:005.6

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

mensional.

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.

Key-words: Image processing. Segmentation. FPGA. Three-dimensional scanning.

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

Figura 36 Ű Efeito da distância entre a fonte de luz do laser e a câmera. . . . . . . 44

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

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

tância �

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

3.3.4 VideoTimingCtl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

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

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 Figura 1a, e a Figura 1b representa o resultado da

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 aolongo do objeto

A modelagem do sistema na FPGA ocorrerá em nível RTL (Register Transfer

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.

20 Capítulo 1. Introdução

Figura 3 Ű Diagrama da proposta de solução

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 Figura 4 (IDEX OPTICS & PHOTONICS

MARKETPLACE, 2015).

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 & PHOTONICSMARKETPLACE, 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 6 ilustra 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

de curvatura da frente de onda após ter se propagado uma distância �. A distribuição do

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

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

�(�) = �0(1 + (Ú�

Þ�20

)2)1

2 (2.2)

�(�) = �(1 +Þ�2

0

Ú�) (2.3)

�(�) = �0�−2r

2

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

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 Figura 8.

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 independentemente, e envolvem acesso

intenso á memória. O parelelismo de dados é o mais indicado a esta categoria (YUDI,

2010).

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 10 apresenta 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

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-

ware geralmente 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

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

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

�(�, �) =a︁

s=−a

b︁

t=−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

(2.7)

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ção 2.10 será 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ày exp(−2Þ2[�2à2

x + �2à2

y ]) (2.9)

ℎ(�, �) =1√2Þà

exp

−12

�2

à2x

+�2

à2y

⎜⎜

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

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 Figura 14 permite 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: Elaboradapelo autor

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

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 VmodCAMTM acoplado à placa Digilent AtlysTM

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 Figura 15 ilustra a solução.

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.

Figura 16 Ű Placa Digilent Atlys. Fonte: (DIGILENT, 2013)

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.

Figura 18 Ű Módulo VmodCAMTM. Fonte: (DIGILENT, 2011)

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

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.

Figura 20 Ű Detalhamento da estrutura interna do bloco ImageProc.

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ção 3.1 que 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

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

àquela posição.

Por Ąm, na Figura 21 pode-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 Figura 23 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.

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

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.

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.

Figura 28 Ű Movimento dos pixels através dos registradores do módulo GaussianFilter

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 áreatotal

Para Ąltragem de uma image, um kernel bidimensional é adotado. A função Gaus-

siana pode ser descrita como o produto de duas funções Gaussianas perpendiculares, e,

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 Tabela 1. 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ência 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 tabela 2. 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 Figura 30.

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

0.0113 0.0838 0.01130.0838 0.6193 0.08380.0113 0.0838 0.0113

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

3 21 321 158 213 21 3

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 (Ągura 32a) é 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.

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 Figuras 33a e 33b. Assim, a câmera

está devidamente posicionada, e o display exibe os resultados do processamento em tempo

real.

(a) Setup completo do ambiente detestes

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

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 Figuras 34a e 34b, 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.

3.6. Resultados e Testes 45

(a) Resultado com ofiltro óptico

(b) Resultado sem o fil-tro óptico

Figura 34 Ű Resultados visualizados no display. As linhas destacadas em azul representamo 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

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

36 ilustra 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,2008)

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 segmentos, 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.

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.

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, 34e 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ãoPaulo, 1998. Citado 2 vezes nas páginas 25 e 26.

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 32e 33.

DIGILENT. Atlys™ Board Reference Manual. [S.l.], 2013. REV C. Citado 2 vezes naspáginas 31 e 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 e 44.

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 e 27.

IDEX OPTICS & PHOTONICS MARKETPLACE. Gaussian Beam Optics. [S.l.], 2015.Citado 3 vezes nas páginas 19, 20 e 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 naspáginas 21, 22 e 23.

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

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

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

NUMONYX. Numonyx N25Q128. Rev. 1.0. [S.l.], 2010. Citado na página 30.