Aceleração do Processo de Construção de Núvem de Pontos...
Transcript of Aceleração do Processo de Construção de Núvem de Pontos...
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.
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.