SlideShare una empresa de Scribd logo
1 de 6
Descargar para leer sin conexión
PROPOSTA DE ARQUITETURA DE SEGMENTAÇÃO RÁPIDA DE IMAGENS POR CORES EM FPGA
IGO AMAURÍ D. S. LUZ, P. C. M. A. FARIAS, LAUÊ RAMI S. C. D. JESUS, JOÃO MARCELO S. SOUZA, JOAQUIM
RANYERE S. D. OLIVEIRA, NELSON A. F. NETO.
1. PPGEE - Programa de Pós Graduação em Engenharia Elétrica, Escola Politécnica, Universidade Fe-
deral da Bahia
E-mails: igoamauri@gmail.com, paulo.farias@ufba.br, {lauerami, joaomssouza, jranyere, nelso-
nafn}@gmail.com
Abstract The technique of segmentation of images by color is used in several solutions that make use of computer vision in
real time, for example, object detection and identification parameters of the image. Thus, it is necessary to use hardware solutions
associated with an efficient algorithm. This paper propose an architecture for hardware implementation of a fast algorithm for
segmentation of images by color. The project proposes the inclusion of the same in FPGA (Cyclone II – DE-2) using Verilog, a
hardware description language HDL. The embedded application is composed of a module responsible for processing and four
memories, responsible for storing data used by design. In this paper we will discuss theories related to work, the methodology
used for development the design and functional verification, the results obtained and finally the conclusions of work.
Keywords Segmentation of Color, Computer Vision, Processing of Images, Field-Programmable Gate Array, RTL Design.
Resumo A técnica de segmentação de imagens por cores é utilizada em diversas soluções que fazem uso de visão computacio-
nal em tempo real, por exemplo, detecção de objetos e identificação de parâmetros na imagem. Dessa forma, faz-se necessário o
uso de soluções em hardware, associadas a um algoritmo eficiente. Esse artigo propõe uma arquitetura para a implementação em
hardware de um algoritmo de segmentação rápida de imagens por cores. O projeto propõe a inserção do mesmo em FPGA
(Cyclone II - DE-2) através do Verilog, uma linguagem de descrição de hardware HDL. A aplicação embarcada é composta de
um módulo responsável pelo processamento e quatro memórias, responsáveis por armazenar os dados utilizados pelo design.
Nesse artigo serão abordadas as teorias relacionadas ao trabalho, a metodologia de desenvolvimento do design e verificação fun-
cional utilizada, os resultados obtidos e por fim a conclusão do trabalho.
Palavras-chave Segmentação de Cores, Visão Computacional, Processamento de Imagens, FPGA, Projeto RTL.
1 Introdução
A segmentação de imagens por cores é uma téc-
nica essencial em diversas áreas que fazem uso da
visão computacional. Através dela é possível identi-
ficar objetos, regiões de interesse, entre outras carac-
terísticas de uma cena/imagem. Além disso, aplica-
ções em tempo real que interagem com o mundo
físico utilizam a segmentação por cores como uma
das suas principais técnicas. Um exemplo é a Ro-
boCup (Kitano et al., 1997). A segmentação de ima-
gens por cores foi usada, também, por Said et al.
(2012). Nesse trabalho foi desenvolvido um sistema
voltado para robôs autônomos que detecta e rastreia
múltiplos objetos em ambientes não controlados e em
tempo real.
A função básica da segmentação é classificar
cada pixel de uma imagem em classes de cores pre-
viamente definidas. Para tal, utilizam-se técnicas
como a limiarização linear da cor, a qual consiste no
particionamento do espaço de cor com limites linea-
res, e a classificação dos vizinhos próximos, na qual
o pixel é classificado de acordo com a sua proximi-
dade em relação à localização específica no espaço
de cor de exemplares de pixels previamente determi-
nados (Brown and Koplowitz, 1979). Outras técnicas
podem ser encontradas em Bruce et al. (2000).
A escolha do espaço de cor a ser utilizado de-
pende das características do projeto, do tipo de digi-
talização, da aplicação, entre outros fatores. Dentre
os espaços de cores existentes, destacam-se: Hue
Saturation Intensity (HSI), Red Green Blue (RGB),
YCbCr e Hue Saturation Value (HSV) (Zhou et al.,
2005).
As abordagens de Visão Computacional para a
segmentação de cores são comumente desenvolvidas
em software, utilizando sistemas de propósito geral,
baseados em linguagens de programação de alto
nível, como Java, C, C++, Python, entre outras. Essas
soluções não são eficientes para problemas que ne-
cessitem do desenvolvimento de um hardware em-
barcado, a exemplo de uma aplicação específica de
reconhecimento e triagem/seleção de itens ou situa-
ções que requerem o uso de arquiteturas reconfigurá-
veis, tais como Field-Programmable Gate Array
(FPGA). Como exemplo, o dispositivo desenvolvido
pela Newton Laboratories capaz de fornecer dados de
rastreamento de cor em tempo real (Newton, 1999)
ou a proposta de Zhou et al. (2005) de uma solução
de alta performance em hardware para a classificação
de imagens por cor utilizada em robôs móveis que se
utiliza de processamento paralelo.
Sluzek and Minh (2006) também desenvolveram
solução em hardware para segmentação de cores.
Nesse trabalho, foi desenvolvido um dispositivo
capaz de fornecer imagens processadas na mesma
taxa em que quadros de vídeos são capturados. Dessa
forma, alcançando o desempenho necessário para a
aplicação. Ma et al (2011) desenvolveram um dispo-
sitivo de processamento de imagem voltado para
pessoas que possuem deficiência visual, o qual pode
ser usado, por exemplo, para ajudar a identificação
das cores pelas pessoas que possuem esta deficiência.
Anais do XX Congresso Brasileiro de Automática
Belo Horizonte, MG, 20 a 24 de Setembro de 2014
2534
A fim de propor uma solução para os problemas
dos equipamentos de processamento de imagens que
apresentam alto consumo de energia e custo, Yan
Liping and Song Kai (2010), desenvolveram um
sistema de processamento de imagem em plataforma
embarcada. Propondo, assim, uma alternativa em
plataformas para o desenvolvimento, por exemplo,
de sistemas em tempo real.
Nesse contexto, esse trabalho apresenta uma
proposta de arquitetura para solução em hardware de
segmentação por cores baseada no algoritmo propos-
to por Bruce et al. (2000). Esse algoritmo tem como
proposta fazer com que o processo de segmentação
seja mais rápido através da redução da quantidade de
operações realizadas.
Foi definida a utilização desse algoritmo devido
a sua natureza viabilizar o embarque do mesmo em
FPGA, pois a sua estrutura baseia-se em operações
lógicas simples. Outro fator preponderante foi o fato
deste ser utilizado no sistema SSL-Vision da Ro-
boCup, e também por fazer parte da biblioteca
CMVision (Zickler et. al., 2010).
O processo de construção desse trabalho se deu
através do desenvolvimento do modelo em Matlab e,
a partir deste, o Register Transfer Level (RTL) utili-
zando o Verilog como linguagem de descrição de
hardware (HDL). O módulo RTL é genérico e pode
ser utilizado com diferentes dispositivos FPGA.
Após a finalização do RTL foi realizada a verificação
funcional do design utilizando a metodologia basea-
da em golden model.
A organização do texto foi feito da seguinte ma-
neira: A Seção 2 apresenta conceitos relativos ao
FPGA; a Seção 3 aborda a metodologia do trabalho,
detalhando o algoritmo implementado e a arquitetura
proposta; a Seção 4 apresenta os resultados experi-
mentais obtidos; e por fim, a Seção 5 apresenta a
conclusão do trabalho.
2 Arquitetura de Hardware Reconfigurável
FPGA foi um dos recursos utilizados para a realiza-
ção deste projeto. O dispositivo FPGA apresenta uma
matriz bidimensional de células lógicas e programá-
veis (Chu, 2008). Um projeto pode ser implementado
neste dispositivo através da especificação da função
das células lógicas, definindo as conexões de cada
porta lógica. Atualmente, a utilização desta tecnolo-
gia de hardware tem crescido entre os projetistas de
diversas áreas como telecomunicações, processamen-
to de sinais e imagens, robótica, equipamentos médi-
cos, automotiva, bem como na área de projetos de
circuitos integrados digitais no geral, entre outros
(Monmasson e Cirstea, 2007).
O FPGA e os Processadores Digitais de Sinais
(DSP) são capazes de fornecer os recursos necessá-
rios para implementação do projeto proposto. Tais
dispositivos permitem ao projetista desenvolver e
simular projetos sofisticados de maneira rápida e
eficiente. No entanto, uma característica relevante
para o projeto é a flexibilidade fornecida pelo FPGA.
Dessa forma, esse dispositivo proporciona a adição,
remoção ou alteração das funcionalidades, não im-
pactando no tempo de projeto, possibilitando a reali-
zação de diferentes ciclos de desenvolvimento e a
execução de testes através das prototipagens com o
objetivo de verificar o funcionamento da implemen-
tação física.
3 Metodologia
A metodologia faz uso das técnicas descritas em
(Bruce et al., 2000) e metodologias de sistemas para
hardware embarcado, FPGAs.
3.1 Algoritmos de Segmentação
O algoritmo de segmentação utiliza as técnicas de
classificação rápida de cores desenvolvidas por Bru-
ce et al. (2000). Este minimiza os cálculos em tempo
real, que determinam o processo de decisão dos es-
paços de cores, mas, em contrapartida, faz uso de
tabelas para determinar a classificação, as quais de-
vem ser calculadas previamente. Do ponto de vista
dos dispositivos embarcados, estes requisitos são
factíveis para uso, mesmo com as limitações de
hardware/processamento encontradas em tais, tor-
nando esse algoritmo aplicável em FPGAs, micro-
controladores, dentre outros.
O trabalho desenvolvido por Bruce et al. (2000)
baseia-se na utilização de limiares em três dimen-
sões, como por exemplo, o RGB e YUV. O mesmo
não limita qual espaço de cor deve ser utilizado, mas,
a título de exemplo, utilizou o YUV. Nessa proposta,
os autores definiram que cada elemento do espaço de
cor seria um valor inteiro de 32 bits, ou seja, redu-
zindo a representação das cores para um universo de
32 cores.
Na modelagem do sistema optou-se por usar o
formato de cores YCbCr, pois o mesmo é usado nos
padrões Joint Photographic Experts Group (JPEG) e
Moving Picture Experts Group (MPEG), o que facili-
ta o uso do procedimento em aplicações que tenham
esse formatos como fonte de dados. Cada componen-
te é reduzido do espaço de cor original para um ta-
manho predeterminado pelo limiar, que é definido
pela aplicação antes da geração das tabelas de classi-
ficação.
Na aplicação, o espaço de cores é reduzido de
16.777.216 para 64, onde cada combinação de Y, Cb
e Cr determina um novo espaço de cor de 64 posi-
ções. Ou seja, as cores na imagem original são rea-
grupadas em um novo universo de apenas 64 cores
distintas. Para isso são utilizadas 3 tabelas (uma para
Y, uma para Cb e outra para Cr) que indicam as
quais grupos de cores cada componente pode perten-
cer e a intersecção entre os possíveis grupos define o
segmento de cor do componente. As tabelas de ma-
peamento são definidas por um processamento exa-
ustivo, apresentado na subseção 3.1.
Para a execução do algoritmo foi representado o
pixel com 24 bits e cada componente de cor (Y, Cb e
Anais do XX Congresso Brasileiro de Automática
Belo Horizonte, MG, 20 a 24 de Setembro de 2014
2535
Cr) com 8 bits, (256 possibilidades) o que permite
representar 16.777.216 cores possíveis por pixel.
Cada valor associado a um componente do espaço de
cores YCbCr de um dado pixel referencia um ende-
reço de sua respectiva memória de 64 bits.
Em uma imagem em YCbCr, a execução do al-
goritmo percorre pixel a pixel, da esquerda para
direita e de cima para baixo, onde cada pixel de 24
bits, com componentes Y, Cb e Cr (de 8 bits cada)
endereçam suas respectivas tabelas de mapeamento.
Cada tabela retorna uma palavra contendo a informa-
ção de qual cor o componente esta associado, a figu-
ra 1 representa esse processo. A relação posição do
bit versus cor associada utiliza o espectro Hue do
sistema de cor HSV, como representada na Figura 1.
O modelo que determina esta associação é explanado
na subseção 3.1.1.
Figura 1. Relação posição binária versus cor associada
As cores associadas para Y, Cb e Cr são compa-
radas bit a bit fazendo-se a interseção (operação
lógica ‘E’) para determinar a palavra resultante,
também de 64 bits, de modo que contenha somente
uma posição com bit válido, indicando o segmento
do pixel (ver Figura 2).
O segmento ao qual o pixel pertence é usado pa-
ra endereçar uma tabela que retorna a respectiva cor
no sistema YCbCr. Esta cor, que identifica o seg-
mento, é substituída no lugar do antigo pixel na ima-
gem, dependendo do modo de operação. A Figura 2
representa estes passos e indica como é feita a com-
posição do sistema de segmentação.
Figura 2. Fluxograma do Processo de Segmentação
Ao final do processamento de todos os pixels, a
imagem segmentada pode ser exibida de duas for-
mas: mostrando todos os segmentos ou apenas o
selecionado.
3.1.1 Mapeamento das Classes de Cores
Uma das etapas do trabalho proposto é a construção
das tabelas de mapeamento, concentrando o maior
esforço computacional. Para definir o mapeamento
das classes de cores são realizadas iterações exausti-
vas com todas as possibilidades inerentes ao universo
de cor escolhido, o YCbCr.
Como mencionado na subseção 3.1, e indicado
na Figura 1, existe uma relação entre a posição da cor
versus a cor associada. Esta relação é determinada
por um mapeador que a cada iteração de cor YCbCr
define o novo universo.
A Figura 3 ilustra o processo de iteração das
16.777.216 possibilidades do YCbCr e a definição
dos novos universos de cores para cada um destes
componentes. Como pode ser visto, o mapeador
provê a relação de cada uma das 16.777.216 cores
em 256 e posteriormente em 64. O resultado retorna
as respectivas tabelas de 64x256 de Y, Cb e Cr. As
tabelas resultantes são utilizadas no processo final de
segmentação, como descrito na subseção 3.1.
Figura 3. Algoritmo Exaustivo de Caracterização do espaço de cor
YCbCr.
O mapeador utiliza o componente de cor Hue
(Matriz) do espaço HSV para definir o novo universo
de cor reduzido. Dada uma cor em YCbCr, ela é
transformada em HSV, os componentes S (Satura-
tion) e V (Value) são descartados e o componente
Hue é mantido para representar a escala de segmen-
tos. Considerando o espaço de cor definido pelo
canal Hue como sendo de 256 possibilidades (8 bits),
utiliza-se o threshold determinado e então é realizada
a discretização do componente para 64 possibilida-
des. Cada cor das 64 possibilidades é representada
por um bit, ou seja, a presença do bit válido (valor 1)
em alguma das posições, indica a existência da cor
correspondente.
Para cada uma das possíveis combinações de
YCbCr, identifica-se a cor e preenche a palavra de 64
bits no endereço da memória referente a cada um dos
componentes (Y, Cb e Cr), desse modo, as posições
identificadas são marcadas com o bit válido na res-
pectiva cor, sendo assim, são geradas as tabelas para
cada Y, Cb e Cr, como indicado na Figura 4.
Anais do XX Congresso Brasileiro de Automática
Belo Horizonte, MG, 20 a 24 de Setembro de 2014
2536
Figura 4. Redução do espaço de Cor
Ao final, o uso das palavras binárias de 64 bits
para representar a cor, facilita a utilização em siste-
mas de hardware dedicado, por fazerem uso de com-
ponentes lógicos simples (comparação com ‘E’
(AND) Bitwise) na decisão das classes e espaços de
cor. O processamento de massa e exaustivo é realiza-
do de maneira off-line por um sistema auxiliar, dei-
xando somente operações lógicas simples para o
sistema de hardware dedicado que irá executar as
operações de segmentação em tempo real, este, que
normalmente é provido de poucos recursos computa-
cionais.
3.2 Desenvolvimento do Modelo e do De-
sign/Arquitetura
Figura 5. Arquitetura
A arquitetura de hardware foi desenvolvida conforme
a figura 5. Uma memória RAM armazena uma ima-
gem no formato YCbCr usando 24 bits de represen-
tação (8 bits para cada componente). Essa imagem é
processada pixel a pixel, no módulo Segmentation, e
substituída na memória RAM pelos valores obtidos
da cor correspondente em uma tabela de cores arma-
zenada em uma memória ROM interna ao módulo. O
mapeamento de classes de cores é armazenado sepa-
radamente em três ROMs, o que permite que o valor
correspondente do pixel seja utilizado diretamente
como endereço da classe de cor.
O resultado obtido pela agregação das classes
através de uma operação AND não retorna o valor
ideal com apenas uma cor classificada, devido a não-
linearidade do algoritmo gerador das classes. Desse
modo, sobre o valor obtido é calculado uma mediana
otimizada para a execução em hardware, consumindo
no máximo N pulsos de relógio, sendo N o número
de cores do espaço de cor.
O controle do hardware é feito através dos co-
mandos:
 start - comando de inicialização do sis-
tema, deve acontecer com a imagem
previamente carregada na memória.
 one_color - indica se a imagem será
substituída por todas as segmentações
correspondentes ou por somente uma
cor escolhida.
 color - indica qual cor será utilizada
dentre as possível no espaço de cor caso
a opção de one_color seja definida.
 finish - o hardware indica que a ima-
gem já está totalmente substituída na
memória.
O hardware desenvolvido foi sintetizado no
FPGA Cyclone II EP2C35F672C6 e obteve uma
netlist com 395 elementos lógicos dentre os quais
364 funções combinacionais e 151 registradores
dedicados o que equivale a 1% do total de recursos
disponíveis no FPGA.
O tempo médio de ciclos de relógio foi de 63
pulsos por pixel da imagem o que permite a realiza-
ção da segmentação de uma imagem de 480x320
pixels em 9,6 ms a 100 MHz.
Figura 6. Visão Geral do Projeto
3.3 Verificação do Design
Com o propósito de validar o módulo RTL, foi reali-
zada a verificação funcional da implementação da
segmentação de cores em hardware. Para isso, foi
desenvolvido um testbench simples para que pudesse
fazer a interface do RTL com o Matlab e também
estimular as entradas do módulo. A figura 7 ilustra o
a arquitetura.
Figura 7. Ambiente de Verificação
O Testbench foi desenvolvido tendo como mo-
delo de referência um modelo em Matlab do algorit-
mo de segmentação de cores proposto. Dessa forma,
Anais do XX Congresso Brasileiro de Automática
Belo Horizonte, MG, 20 a 24 de Setembro de 2014
2537
ao passo em que o módulo RTL gera as saídas, estas
são comparadas com as saídas do modelo em Matlab
e assim é feita a validação dos resultados.
Como pode ser observado na figura 7, foi neces-
sário integrar o Matlab com o ambiente de verifica-
ção para que fossem geradas as entradas a serem
estimuladas no RTL. Nesse contexto, o Matlab reali-
za a leitura do arquivo de imagem e o converte no
espaço de cores YCbCr, e então, o ambiente de veri-
ficação acessa a saída do Matlab e estimula a entrada
do RTL.
Após a segmentação das cores da imagem, o
RTL tem como saída a imagem também no espaço de
cores YCbCr, sendo assim, para que fosse possível
visualizar o resultado, utilizou o Matlab para acessar
essa saída e mostrar a imagem resultante.
4 Resultados
O ambiente para verificação do produto, descrito na
seção 3.3, foi desenvolvido utilizando a ferramenta
de verificação Incisive Simulator da Cadence, junta-
mente com o Matlab. O Matlab gerou as memórias
necessárias para a execução do RTL, e também, a
figura de entrada em YCbCr para que fosse proces-
sada. Essa ferramenta foi responsável também pela
transformação do arquivo da imagem segmentada
gerada pelo RTL, no formato .hex, para o formato
.jpg. A ferramenta de simulação foi responsável por
executar o testbench, dessa forma, fazendo a integra-
ção dos componentes e também estimulando o RTL.
Dessa forma, os resultados foram obtidos utilizando
esse processo de simulação.
Um primeiro teste realizado utilizou-se como
imagem de entrada a Figura 8.
Figura 8. Imagem Original (Círculos Coloridos)
Como resultado da segmentação da Figura 8,
temos a imagem segmentada mostrada na Figura 9.
Figura 9. Imagem Segmentada (Círculos Coloridos)
A Figura 9 mostra que o produto desenvolvido
segmentou as cores presentes na figura 8 de forma
satisfatória.
Outro teste foi realizado, utilizando a Figura 10
como entrada.
Figura 10. Segundo Teste - Imagem Original
Como resultado da segmentação da Figura 10,
temos a Figura 11.
Figura 11. Segundo Teste - Imagem Segmentada
Após a validação do funcionamento do módulo,
foi realizada a síntese do RTL para o FPGA da famí-
lia Cyclone II com identificador do dispositivo
EP2C35F672C6. A Tabela 1 mostram os resultados
encontrados ao final da síntese.
Tabela 1. Resultado da síntese para FPGA.
Elementos Utilização
Total de elementos lógi-
cos
395 / 33,216 (1%)
Total de funções combi-
nacionais
364 / 33,216 (1%)
Dedicated logic registers 151 / 33,216 (<1%)
Total de registradores 151
Total de pinos 297 / 475 (63%)
Através dos resultados da síntese apresentados
na Tabela 1, pode-se observar a baixa utilização dos
recursos do FPGA. A reduzida quantidade de ele-
mentos lógicos utilizados, juntamente com as reduzi-
das funções lógicas, deve-se ao fato de que o algo-
ritmo implementado possui poucas operações lógi-
cas, executando, basicamente, operações de compa-
ração.
A utilização de menos de 1% dos registradores
deve-se ao fato de que o design, basicamente, regis-
Anais do XX Congresso Brasileiro de Automática
Belo Horizonte, MG, 20 a 24 de Setembro de 2014
2538
tra os sinais de interface com a memória RAM, que
representa a imagem.
5 Conclusão
Esse trabalho apresenta uma proposta de arquitetura
em hardware para segmentação rápida de imagens
por cores baseado no algoritmo proposto por Bruce
et al. (200). Através deste é possível classificar cada
pixel da imagem de forma rápida, pois o mesmo
propõe reduzidas operações de comparações no pro-
cesso de classificação dos pixels. Sendo assim, base-
ados nesse artigo foi desenvolvida uma solução pró-
pria para o problema.
Nesse trabalho foi desenvolvido o RTL e a fim
de verificar o mesmo, foi construiu-se, também, um
modelo de referência em Matlab para que fossem
comparados os resultados. Com isso, garantindo o
correto funcionamento do sistema.
Com relação à aplicação de segmentação, o tra-
balho proposto por Bruce et al. (2000) minimiza o
processamento de tempo real, através da utilização
de operadores lógicos simples, se tornando uma
alternativa para implementação em dispositivos de
lógica reduzida, como FPGAs, mas em contrapartida,
exige o uso de um pré-processamento das tabelas de
mapeamento por meio de um sistema auxiliar, além
de requisitar o uso de memórias para o armazena-
mento das tabelas. Ou seja, o custo computacional do
processamento é substituído pela utilização das me-
mórias.
A partir dos resultados apresentados, observa-se
que o proposito do trabalho foi alcançado. Foram
executados os testes citados e todos eles tiveram
resultados satisfatórios, ou seja, a segmentação de
cores das imagens testadas foi realizada com êxito
pelo RTL.
Como melhoria e próximos passos desse traba-
lho, propõe-se executar testes utilizando a placa de
FPGA, para observar o comportamento e o desempe-
nho do módulo. Outro ponto seria a mudança da
arquitetura implementada para adicionar uma interfa-
ce com uma câmera no FPGA, para que assim, possa
ser realizada a segmentação em tempo real. Para isso,
é necessário fazer adaptações no módulo RTL desen-
volvido e também implementar a interface com a
câmera no FPGA.
Referências Bibliográficas
Brown, T. and Koplowitz, J. (1979). The weighted
nearest neighbor rule for class dependent sample
sizes. IEEE Transactions on Information Theory,
pp 617-619.
Bruce, J., Balch, T. and Veloso, M. (2000). Fast and
Inexpensive Color Image Segmentation for In-
teractive Robots. In: Proceedings of the 2000
IEEE / RSJ Int. Conf. on Intelligent Robots and
Systems (IROS 2000), vol. 3, pp 2061–2066.
Chu, P. P. (2008). FPGA prototyping by Verilog
examples. Wiley-Interscience. ISBN 978-0-470-
18532-2.
Kitano, H., Kuniyoshi, Y., Noda, I., Asada, M.,
Matsubara, H. and Osawa, E. (1997). RoboCup:
A challenge problem for AI. AI Magazine,
18(1), pp 73–85
Liping, Y., Kai, S. (2010). Design and Realization of
Image Processing System Based on Embedded
Platform. Information Technology and Applica-
tions (IFITA), 2010 International Forum on
(Volume:2 ), Pages 446-449.
Ma, Y., En Wang, E., Wang, Y. (2011). An embed-
ded image processing device for color vision de-
ficiency. Biomedical Engineering and Informat-
ics (BMEI), 2011 4th International Conference
on (Volume:2 ), Pages 1041 – 1045.
Monmasson, E. and Cirstea, M. N. (2007). FPGA
Design Methodology for Industrial Control Sys-
tems - A Review. IEEE Transactions On Indus-
trial Electronics, Vol. 54, NO. 4.
Newton Laboratories. (1999) Cognachrome image
capture device. http://www.newtonlabs.com.
Said, T., Ghoniemy, S., Karam, O. (2012). Real-time
multi-object detection and tracking for autono-
mous robots in uncontrolled environments.
Computer Engineering & Systems (ICCES),
2012 Seventh International Conference on, Pag-
es 67-72.
Sluzek, A., Minh, P.K.D. (2006). Embedded Vision
Module for Robot-soccer. Computer Systems
and Applications, 2006. IEEE International Con-
ference on, Pages 159-162.
Zickler, S., Laue, T., Birbach, O., Wongphati, M.,
Veloso, M. (2010) SSL-Vision: The Shared Vi-
sion System for the RoboCup Small Size
League. RoboCup 2009: Robot Soccer World
Cup XIII, Pages 425-436.
Zhou, Q., Yuan, K., Wang, H. and Hu, H. (2005).
FPGA-based colour image classification for mo-
bile robot navigation. IEEE International Con-
ference on Industrial Technology, ICIT, pp.
921-925.
Anais do XX Congresso Brasileiro de Automática
Belo Horizonte, MG, 20 a 24 de Setembro de 2014
2539

Más contenido relacionado

Similar a CBA 2014

Sistema Escalável para Processamento de Vídeo
Sistema Escalável para Processamento de VídeoSistema Escalável para Processamento de Vídeo
Sistema Escalável para Processamento de Vídeofabioudesc
 
SEAC: Um Simulador Online para Ensino de Arquitetura de Computadores
SEAC: Um Simulador Online para Ensino de Arquitetura de ComputadoresSEAC: Um Simulador Online para Ensino de Arquitetura de Computadores
SEAC: Um Simulador Online para Ensino de Arquitetura de ComputadoresEduardo de Lucena Falcão
 
Análise Comparativa de Persistência de Dados Entre Hibernate e NHibernate
Análise Comparativa de Persistência de Dados Entre Hibernate e NHibernateAnálise Comparativa de Persistência de Dados Entre Hibernate e NHibernate
Análise Comparativa de Persistência de Dados Entre Hibernate e NHibernateRicardo Rinco
 
Tema 10 Automação Da Engenharia
Tema 10   Automação Da EngenhariaTema 10   Automação Da Engenharia
Tema 10 Automação Da Engenhariabruno2003sp
 
Atena: um sistema para suporte ao planejamento na área de Gestão de Projeto
Atena: um sistema para suporte ao planejamento na área de Gestão de ProjetoAtena: um sistema para suporte ao planejamento na área de Gestão de Projeto
Atena: um sistema para suporte ao planejamento na área de Gestão de ProjetoFabrício Barth
 
Artigo - PROJETO DE UM HARDWARE ACELERADOR DO ALGORITMO DE DISTÂNCIA EUCLIDIA...
Artigo - PROJETO DE UM HARDWARE ACELERADOR DO ALGORITMO DE DISTÂNCIA EUCLIDIA...Artigo - PROJETO DE UM HARDWARE ACELERADOR DO ALGORITMO DE DISTÂNCIA EUCLIDIA...
Artigo - PROJETO DE UM HARDWARE ACELERADOR DO ALGORITMO DE DISTÂNCIA EUCLIDIA...GiovanniGuimares2
 
CAD/CAE/CAM (CAD,CAE,CAM; CAD-CAE-CAM)
CAD/CAE/CAM (CAD,CAE,CAM; CAD-CAE-CAM)CAD/CAE/CAM (CAD,CAE,CAM; CAD-CAE-CAM)
CAD/CAE/CAM (CAD,CAE,CAM; CAD-CAE-CAM)Carlos Calácio
 
Aplicação da Automação em uma Impressora 3D
Aplicação da Automação em uma Impressora 3DAplicação da Automação em uma Impressora 3D
Aplicação da Automação em uma Impressora 3DJéferson Daronch
 
Objeto de Aprendizagem no Ensino de Processamento Digital de Imagens
Objeto de Aprendizagem no Ensino de Processamento Digital de ImagensObjeto de Aprendizagem no Ensino de Processamento Digital de Imagens
Objeto de Aprendizagem no Ensino de Processamento Digital de ImagensPedro Henrique Cacique Braga
 

Similar a CBA 2014 (20)

Modelagem e elaboração de componentes
Modelagem e elaboração de componentesModelagem e elaboração de componentes
Modelagem e elaboração de componentes
 
Trabalho PI I
Trabalho PI ITrabalho PI I
Trabalho PI I
 
Sistema Escalável para Processamento de Vídeo
Sistema Escalável para Processamento de VídeoSistema Escalável para Processamento de Vídeo
Sistema Escalável para Processamento de Vídeo
 
SEAC: Um Simulador Online para Ensino de Arquitetura de Computadores
SEAC: Um Simulador Online para Ensino de Arquitetura de ComputadoresSEAC: Um Simulador Online para Ensino de Arquitetura de Computadores
SEAC: Um Simulador Online para Ensino de Arquitetura de Computadores
 
Workshop de Pós Graduação - 2011
Workshop de Pós Graduação - 2011Workshop de Pós Graduação - 2011
Workshop de Pós Graduação - 2011
 
Análise Comparativa de Persistência de Dados Entre Hibernate e NHibernate
Análise Comparativa de Persistência de Dados Entre Hibernate e NHibernateAnálise Comparativa de Persistência de Dados Entre Hibernate e NHibernate
Análise Comparativa de Persistência de Dados Entre Hibernate e NHibernate
 
Tema1
Tema1Tema1
Tema1
 
Aula 05
Aula 05Aula 05
Aula 05
 
Dfd
DfdDfd
Dfd
 
Tema 10 Automação Da Engenharia
Tema 10   Automação Da EngenhariaTema 10   Automação Da Engenharia
Tema 10 Automação Da Engenharia
 
Aprototipagem
AprototipagemAprototipagem
Aprototipagem
 
Atena: um sistema para suporte ao planejamento na área de Gestão de Projeto
Atena: um sistema para suporte ao planejamento na área de Gestão de ProjetoAtena: um sistema para suporte ao planejamento na área de Gestão de Projeto
Atena: um sistema para suporte ao planejamento na área de Gestão de Projeto
 
Artigo - PROJETO DE UM HARDWARE ACELERADOR DO ALGORITMO DE DISTÂNCIA EUCLIDIA...
Artigo - PROJETO DE UM HARDWARE ACELERADOR DO ALGORITMO DE DISTÂNCIA EUCLIDIA...Artigo - PROJETO DE UM HARDWARE ACELERADOR DO ALGORITMO DE DISTÂNCIA EUCLIDIA...
Artigo - PROJETO DE UM HARDWARE ACELERADOR DO ALGORITMO DE DISTÂNCIA EUCLIDIA...
 
CAD/CAE/CAM (CAD,CAE,CAM; CAD-CAE-CAM)
CAD/CAE/CAM (CAD,CAE,CAM; CAD-CAE-CAM)CAD/CAE/CAM (CAD,CAE,CAM; CAD-CAE-CAM)
CAD/CAE/CAM (CAD,CAE,CAM; CAD-CAE-CAM)
 
Geotrans piloto-bh
Geotrans piloto-bhGeotrans piloto-bh
Geotrans piloto-bh
 
Computação gráfica
Computação gráficaComputação gráfica
Computação gráfica
 
RAD
RADRAD
RAD
 
Improvement of Image Using Fuzzy Techniques Networks
Improvement of Image Using Fuzzy Techniques Networks Improvement of Image Using Fuzzy Techniques Networks
Improvement of Image Using Fuzzy Techniques Networks
 
Aplicação da Automação em uma Impressora 3D
Aplicação da Automação em uma Impressora 3DAplicação da Automação em uma Impressora 3D
Aplicação da Automação em uma Impressora 3D
 
Objeto de Aprendizagem no Ensino de Processamento Digital de Imagens
Objeto de Aprendizagem no Ensino de Processamento Digital de ImagensObjeto de Aprendizagem no Ensino de Processamento Digital de Imagens
Objeto de Aprendizagem no Ensino de Processamento Digital de Imagens
 

CBA 2014

  • 1. PROPOSTA DE ARQUITETURA DE SEGMENTAÇÃO RÁPIDA DE IMAGENS POR CORES EM FPGA IGO AMAURÍ D. S. LUZ, P. C. M. A. FARIAS, LAUÊ RAMI S. C. D. JESUS, JOÃO MARCELO S. SOUZA, JOAQUIM RANYERE S. D. OLIVEIRA, NELSON A. F. NETO. 1. PPGEE - Programa de Pós Graduação em Engenharia Elétrica, Escola Politécnica, Universidade Fe- deral da Bahia E-mails: igoamauri@gmail.com, paulo.farias@ufba.br, {lauerami, joaomssouza, jranyere, nelso- nafn}@gmail.com Abstract The technique of segmentation of images by color is used in several solutions that make use of computer vision in real time, for example, object detection and identification parameters of the image. Thus, it is necessary to use hardware solutions associated with an efficient algorithm. This paper propose an architecture for hardware implementation of a fast algorithm for segmentation of images by color. The project proposes the inclusion of the same in FPGA (Cyclone II – DE-2) using Verilog, a hardware description language HDL. The embedded application is composed of a module responsible for processing and four memories, responsible for storing data used by design. In this paper we will discuss theories related to work, the methodology used for development the design and functional verification, the results obtained and finally the conclusions of work. Keywords Segmentation of Color, Computer Vision, Processing of Images, Field-Programmable Gate Array, RTL Design. Resumo A técnica de segmentação de imagens por cores é utilizada em diversas soluções que fazem uso de visão computacio- nal em tempo real, por exemplo, detecção de objetos e identificação de parâmetros na imagem. Dessa forma, faz-se necessário o uso de soluções em hardware, associadas a um algoritmo eficiente. Esse artigo propõe uma arquitetura para a implementação em hardware de um algoritmo de segmentação rápida de imagens por cores. O projeto propõe a inserção do mesmo em FPGA (Cyclone II - DE-2) através do Verilog, uma linguagem de descrição de hardware HDL. A aplicação embarcada é composta de um módulo responsável pelo processamento e quatro memórias, responsáveis por armazenar os dados utilizados pelo design. Nesse artigo serão abordadas as teorias relacionadas ao trabalho, a metodologia de desenvolvimento do design e verificação fun- cional utilizada, os resultados obtidos e por fim a conclusão do trabalho. Palavras-chave Segmentação de Cores, Visão Computacional, Processamento de Imagens, FPGA, Projeto RTL. 1 Introdução A segmentação de imagens por cores é uma téc- nica essencial em diversas áreas que fazem uso da visão computacional. Através dela é possível identi- ficar objetos, regiões de interesse, entre outras carac- terísticas de uma cena/imagem. Além disso, aplica- ções em tempo real que interagem com o mundo físico utilizam a segmentação por cores como uma das suas principais técnicas. Um exemplo é a Ro- boCup (Kitano et al., 1997). A segmentação de ima- gens por cores foi usada, também, por Said et al. (2012). Nesse trabalho foi desenvolvido um sistema voltado para robôs autônomos que detecta e rastreia múltiplos objetos em ambientes não controlados e em tempo real. A função básica da segmentação é classificar cada pixel de uma imagem em classes de cores pre- viamente definidas. Para tal, utilizam-se técnicas como a limiarização linear da cor, a qual consiste no particionamento do espaço de cor com limites linea- res, e a classificação dos vizinhos próximos, na qual o pixel é classificado de acordo com a sua proximi- dade em relação à localização específica no espaço de cor de exemplares de pixels previamente determi- nados (Brown and Koplowitz, 1979). Outras técnicas podem ser encontradas em Bruce et al. (2000). A escolha do espaço de cor a ser utilizado de- pende das características do projeto, do tipo de digi- talização, da aplicação, entre outros fatores. Dentre os espaços de cores existentes, destacam-se: Hue Saturation Intensity (HSI), Red Green Blue (RGB), YCbCr e Hue Saturation Value (HSV) (Zhou et al., 2005). As abordagens de Visão Computacional para a segmentação de cores são comumente desenvolvidas em software, utilizando sistemas de propósito geral, baseados em linguagens de programação de alto nível, como Java, C, C++, Python, entre outras. Essas soluções não são eficientes para problemas que ne- cessitem do desenvolvimento de um hardware em- barcado, a exemplo de uma aplicação específica de reconhecimento e triagem/seleção de itens ou situa- ções que requerem o uso de arquiteturas reconfigurá- veis, tais como Field-Programmable Gate Array (FPGA). Como exemplo, o dispositivo desenvolvido pela Newton Laboratories capaz de fornecer dados de rastreamento de cor em tempo real (Newton, 1999) ou a proposta de Zhou et al. (2005) de uma solução de alta performance em hardware para a classificação de imagens por cor utilizada em robôs móveis que se utiliza de processamento paralelo. Sluzek and Minh (2006) também desenvolveram solução em hardware para segmentação de cores. Nesse trabalho, foi desenvolvido um dispositivo capaz de fornecer imagens processadas na mesma taxa em que quadros de vídeos são capturados. Dessa forma, alcançando o desempenho necessário para a aplicação. Ma et al (2011) desenvolveram um dispo- sitivo de processamento de imagem voltado para pessoas que possuem deficiência visual, o qual pode ser usado, por exemplo, para ajudar a identificação das cores pelas pessoas que possuem esta deficiência. Anais do XX Congresso Brasileiro de Automática Belo Horizonte, MG, 20 a 24 de Setembro de 2014 2534
  • 2. A fim de propor uma solução para os problemas dos equipamentos de processamento de imagens que apresentam alto consumo de energia e custo, Yan Liping and Song Kai (2010), desenvolveram um sistema de processamento de imagem em plataforma embarcada. Propondo, assim, uma alternativa em plataformas para o desenvolvimento, por exemplo, de sistemas em tempo real. Nesse contexto, esse trabalho apresenta uma proposta de arquitetura para solução em hardware de segmentação por cores baseada no algoritmo propos- to por Bruce et al. (2000). Esse algoritmo tem como proposta fazer com que o processo de segmentação seja mais rápido através da redução da quantidade de operações realizadas. Foi definida a utilização desse algoritmo devido a sua natureza viabilizar o embarque do mesmo em FPGA, pois a sua estrutura baseia-se em operações lógicas simples. Outro fator preponderante foi o fato deste ser utilizado no sistema SSL-Vision da Ro- boCup, e também por fazer parte da biblioteca CMVision (Zickler et. al., 2010). O processo de construção desse trabalho se deu através do desenvolvimento do modelo em Matlab e, a partir deste, o Register Transfer Level (RTL) utili- zando o Verilog como linguagem de descrição de hardware (HDL). O módulo RTL é genérico e pode ser utilizado com diferentes dispositivos FPGA. Após a finalização do RTL foi realizada a verificação funcional do design utilizando a metodologia basea- da em golden model. A organização do texto foi feito da seguinte ma- neira: A Seção 2 apresenta conceitos relativos ao FPGA; a Seção 3 aborda a metodologia do trabalho, detalhando o algoritmo implementado e a arquitetura proposta; a Seção 4 apresenta os resultados experi- mentais obtidos; e por fim, a Seção 5 apresenta a conclusão do trabalho. 2 Arquitetura de Hardware Reconfigurável FPGA foi um dos recursos utilizados para a realiza- ção deste projeto. O dispositivo FPGA apresenta uma matriz bidimensional de células lógicas e programá- veis (Chu, 2008). Um projeto pode ser implementado neste dispositivo através da especificação da função das células lógicas, definindo as conexões de cada porta lógica. Atualmente, a utilização desta tecnolo- gia de hardware tem crescido entre os projetistas de diversas áreas como telecomunicações, processamen- to de sinais e imagens, robótica, equipamentos médi- cos, automotiva, bem como na área de projetos de circuitos integrados digitais no geral, entre outros (Monmasson e Cirstea, 2007). O FPGA e os Processadores Digitais de Sinais (DSP) são capazes de fornecer os recursos necessá- rios para implementação do projeto proposto. Tais dispositivos permitem ao projetista desenvolver e simular projetos sofisticados de maneira rápida e eficiente. No entanto, uma característica relevante para o projeto é a flexibilidade fornecida pelo FPGA. Dessa forma, esse dispositivo proporciona a adição, remoção ou alteração das funcionalidades, não im- pactando no tempo de projeto, possibilitando a reali- zação de diferentes ciclos de desenvolvimento e a execução de testes através das prototipagens com o objetivo de verificar o funcionamento da implemen- tação física. 3 Metodologia A metodologia faz uso das técnicas descritas em (Bruce et al., 2000) e metodologias de sistemas para hardware embarcado, FPGAs. 3.1 Algoritmos de Segmentação O algoritmo de segmentação utiliza as técnicas de classificação rápida de cores desenvolvidas por Bru- ce et al. (2000). Este minimiza os cálculos em tempo real, que determinam o processo de decisão dos es- paços de cores, mas, em contrapartida, faz uso de tabelas para determinar a classificação, as quais de- vem ser calculadas previamente. Do ponto de vista dos dispositivos embarcados, estes requisitos são factíveis para uso, mesmo com as limitações de hardware/processamento encontradas em tais, tor- nando esse algoritmo aplicável em FPGAs, micro- controladores, dentre outros. O trabalho desenvolvido por Bruce et al. (2000) baseia-se na utilização de limiares em três dimen- sões, como por exemplo, o RGB e YUV. O mesmo não limita qual espaço de cor deve ser utilizado, mas, a título de exemplo, utilizou o YUV. Nessa proposta, os autores definiram que cada elemento do espaço de cor seria um valor inteiro de 32 bits, ou seja, redu- zindo a representação das cores para um universo de 32 cores. Na modelagem do sistema optou-se por usar o formato de cores YCbCr, pois o mesmo é usado nos padrões Joint Photographic Experts Group (JPEG) e Moving Picture Experts Group (MPEG), o que facili- ta o uso do procedimento em aplicações que tenham esse formatos como fonte de dados. Cada componen- te é reduzido do espaço de cor original para um ta- manho predeterminado pelo limiar, que é definido pela aplicação antes da geração das tabelas de classi- ficação. Na aplicação, o espaço de cores é reduzido de 16.777.216 para 64, onde cada combinação de Y, Cb e Cr determina um novo espaço de cor de 64 posi- ções. Ou seja, as cores na imagem original são rea- grupadas em um novo universo de apenas 64 cores distintas. Para isso são utilizadas 3 tabelas (uma para Y, uma para Cb e outra para Cr) que indicam as quais grupos de cores cada componente pode perten- cer e a intersecção entre os possíveis grupos define o segmento de cor do componente. As tabelas de ma- peamento são definidas por um processamento exa- ustivo, apresentado na subseção 3.1. Para a execução do algoritmo foi representado o pixel com 24 bits e cada componente de cor (Y, Cb e Anais do XX Congresso Brasileiro de Automática Belo Horizonte, MG, 20 a 24 de Setembro de 2014 2535
  • 3. Cr) com 8 bits, (256 possibilidades) o que permite representar 16.777.216 cores possíveis por pixel. Cada valor associado a um componente do espaço de cores YCbCr de um dado pixel referencia um ende- reço de sua respectiva memória de 64 bits. Em uma imagem em YCbCr, a execução do al- goritmo percorre pixel a pixel, da esquerda para direita e de cima para baixo, onde cada pixel de 24 bits, com componentes Y, Cb e Cr (de 8 bits cada) endereçam suas respectivas tabelas de mapeamento. Cada tabela retorna uma palavra contendo a informa- ção de qual cor o componente esta associado, a figu- ra 1 representa esse processo. A relação posição do bit versus cor associada utiliza o espectro Hue do sistema de cor HSV, como representada na Figura 1. O modelo que determina esta associação é explanado na subseção 3.1.1. Figura 1. Relação posição binária versus cor associada As cores associadas para Y, Cb e Cr são compa- radas bit a bit fazendo-se a interseção (operação lógica ‘E’) para determinar a palavra resultante, também de 64 bits, de modo que contenha somente uma posição com bit válido, indicando o segmento do pixel (ver Figura 2). O segmento ao qual o pixel pertence é usado pa- ra endereçar uma tabela que retorna a respectiva cor no sistema YCbCr. Esta cor, que identifica o seg- mento, é substituída no lugar do antigo pixel na ima- gem, dependendo do modo de operação. A Figura 2 representa estes passos e indica como é feita a com- posição do sistema de segmentação. Figura 2. Fluxograma do Processo de Segmentação Ao final do processamento de todos os pixels, a imagem segmentada pode ser exibida de duas for- mas: mostrando todos os segmentos ou apenas o selecionado. 3.1.1 Mapeamento das Classes de Cores Uma das etapas do trabalho proposto é a construção das tabelas de mapeamento, concentrando o maior esforço computacional. Para definir o mapeamento das classes de cores são realizadas iterações exausti- vas com todas as possibilidades inerentes ao universo de cor escolhido, o YCbCr. Como mencionado na subseção 3.1, e indicado na Figura 1, existe uma relação entre a posição da cor versus a cor associada. Esta relação é determinada por um mapeador que a cada iteração de cor YCbCr define o novo universo. A Figura 3 ilustra o processo de iteração das 16.777.216 possibilidades do YCbCr e a definição dos novos universos de cores para cada um destes componentes. Como pode ser visto, o mapeador provê a relação de cada uma das 16.777.216 cores em 256 e posteriormente em 64. O resultado retorna as respectivas tabelas de 64x256 de Y, Cb e Cr. As tabelas resultantes são utilizadas no processo final de segmentação, como descrito na subseção 3.1. Figura 3. Algoritmo Exaustivo de Caracterização do espaço de cor YCbCr. O mapeador utiliza o componente de cor Hue (Matriz) do espaço HSV para definir o novo universo de cor reduzido. Dada uma cor em YCbCr, ela é transformada em HSV, os componentes S (Satura- tion) e V (Value) são descartados e o componente Hue é mantido para representar a escala de segmen- tos. Considerando o espaço de cor definido pelo canal Hue como sendo de 256 possibilidades (8 bits), utiliza-se o threshold determinado e então é realizada a discretização do componente para 64 possibilida- des. Cada cor das 64 possibilidades é representada por um bit, ou seja, a presença do bit válido (valor 1) em alguma das posições, indica a existência da cor correspondente. Para cada uma das possíveis combinações de YCbCr, identifica-se a cor e preenche a palavra de 64 bits no endereço da memória referente a cada um dos componentes (Y, Cb e Cr), desse modo, as posições identificadas são marcadas com o bit válido na res- pectiva cor, sendo assim, são geradas as tabelas para cada Y, Cb e Cr, como indicado na Figura 4. Anais do XX Congresso Brasileiro de Automática Belo Horizonte, MG, 20 a 24 de Setembro de 2014 2536
  • 4. Figura 4. Redução do espaço de Cor Ao final, o uso das palavras binárias de 64 bits para representar a cor, facilita a utilização em siste- mas de hardware dedicado, por fazerem uso de com- ponentes lógicos simples (comparação com ‘E’ (AND) Bitwise) na decisão das classes e espaços de cor. O processamento de massa e exaustivo é realiza- do de maneira off-line por um sistema auxiliar, dei- xando somente operações lógicas simples para o sistema de hardware dedicado que irá executar as operações de segmentação em tempo real, este, que normalmente é provido de poucos recursos computa- cionais. 3.2 Desenvolvimento do Modelo e do De- sign/Arquitetura Figura 5. Arquitetura A arquitetura de hardware foi desenvolvida conforme a figura 5. Uma memória RAM armazena uma ima- gem no formato YCbCr usando 24 bits de represen- tação (8 bits para cada componente). Essa imagem é processada pixel a pixel, no módulo Segmentation, e substituída na memória RAM pelos valores obtidos da cor correspondente em uma tabela de cores arma- zenada em uma memória ROM interna ao módulo. O mapeamento de classes de cores é armazenado sepa- radamente em três ROMs, o que permite que o valor correspondente do pixel seja utilizado diretamente como endereço da classe de cor. O resultado obtido pela agregação das classes através de uma operação AND não retorna o valor ideal com apenas uma cor classificada, devido a não- linearidade do algoritmo gerador das classes. Desse modo, sobre o valor obtido é calculado uma mediana otimizada para a execução em hardware, consumindo no máximo N pulsos de relógio, sendo N o número de cores do espaço de cor. O controle do hardware é feito através dos co- mandos:  start - comando de inicialização do sis- tema, deve acontecer com a imagem previamente carregada na memória.  one_color - indica se a imagem será substituída por todas as segmentações correspondentes ou por somente uma cor escolhida.  color - indica qual cor será utilizada dentre as possível no espaço de cor caso a opção de one_color seja definida.  finish - o hardware indica que a ima- gem já está totalmente substituída na memória. O hardware desenvolvido foi sintetizado no FPGA Cyclone II EP2C35F672C6 e obteve uma netlist com 395 elementos lógicos dentre os quais 364 funções combinacionais e 151 registradores dedicados o que equivale a 1% do total de recursos disponíveis no FPGA. O tempo médio de ciclos de relógio foi de 63 pulsos por pixel da imagem o que permite a realiza- ção da segmentação de uma imagem de 480x320 pixels em 9,6 ms a 100 MHz. Figura 6. Visão Geral do Projeto 3.3 Verificação do Design Com o propósito de validar o módulo RTL, foi reali- zada a verificação funcional da implementação da segmentação de cores em hardware. Para isso, foi desenvolvido um testbench simples para que pudesse fazer a interface do RTL com o Matlab e também estimular as entradas do módulo. A figura 7 ilustra o a arquitetura. Figura 7. Ambiente de Verificação O Testbench foi desenvolvido tendo como mo- delo de referência um modelo em Matlab do algorit- mo de segmentação de cores proposto. Dessa forma, Anais do XX Congresso Brasileiro de Automática Belo Horizonte, MG, 20 a 24 de Setembro de 2014 2537
  • 5. ao passo em que o módulo RTL gera as saídas, estas são comparadas com as saídas do modelo em Matlab e assim é feita a validação dos resultados. Como pode ser observado na figura 7, foi neces- sário integrar o Matlab com o ambiente de verifica- ção para que fossem geradas as entradas a serem estimuladas no RTL. Nesse contexto, o Matlab reali- za a leitura do arquivo de imagem e o converte no espaço de cores YCbCr, e então, o ambiente de veri- ficação acessa a saída do Matlab e estimula a entrada do RTL. Após a segmentação das cores da imagem, o RTL tem como saída a imagem também no espaço de cores YCbCr, sendo assim, para que fosse possível visualizar o resultado, utilizou o Matlab para acessar essa saída e mostrar a imagem resultante. 4 Resultados O ambiente para verificação do produto, descrito na seção 3.3, foi desenvolvido utilizando a ferramenta de verificação Incisive Simulator da Cadence, junta- mente com o Matlab. O Matlab gerou as memórias necessárias para a execução do RTL, e também, a figura de entrada em YCbCr para que fosse proces- sada. Essa ferramenta foi responsável também pela transformação do arquivo da imagem segmentada gerada pelo RTL, no formato .hex, para o formato .jpg. A ferramenta de simulação foi responsável por executar o testbench, dessa forma, fazendo a integra- ção dos componentes e também estimulando o RTL. Dessa forma, os resultados foram obtidos utilizando esse processo de simulação. Um primeiro teste realizado utilizou-se como imagem de entrada a Figura 8. Figura 8. Imagem Original (Círculos Coloridos) Como resultado da segmentação da Figura 8, temos a imagem segmentada mostrada na Figura 9. Figura 9. Imagem Segmentada (Círculos Coloridos) A Figura 9 mostra que o produto desenvolvido segmentou as cores presentes na figura 8 de forma satisfatória. Outro teste foi realizado, utilizando a Figura 10 como entrada. Figura 10. Segundo Teste - Imagem Original Como resultado da segmentação da Figura 10, temos a Figura 11. Figura 11. Segundo Teste - Imagem Segmentada Após a validação do funcionamento do módulo, foi realizada a síntese do RTL para o FPGA da famí- lia Cyclone II com identificador do dispositivo EP2C35F672C6. A Tabela 1 mostram os resultados encontrados ao final da síntese. Tabela 1. Resultado da síntese para FPGA. Elementos Utilização Total de elementos lógi- cos 395 / 33,216 (1%) Total de funções combi- nacionais 364 / 33,216 (1%) Dedicated logic registers 151 / 33,216 (<1%) Total de registradores 151 Total de pinos 297 / 475 (63%) Através dos resultados da síntese apresentados na Tabela 1, pode-se observar a baixa utilização dos recursos do FPGA. A reduzida quantidade de ele- mentos lógicos utilizados, juntamente com as reduzi- das funções lógicas, deve-se ao fato de que o algo- ritmo implementado possui poucas operações lógi- cas, executando, basicamente, operações de compa- ração. A utilização de menos de 1% dos registradores deve-se ao fato de que o design, basicamente, regis- Anais do XX Congresso Brasileiro de Automática Belo Horizonte, MG, 20 a 24 de Setembro de 2014 2538
  • 6. tra os sinais de interface com a memória RAM, que representa a imagem. 5 Conclusão Esse trabalho apresenta uma proposta de arquitetura em hardware para segmentação rápida de imagens por cores baseado no algoritmo proposto por Bruce et al. (200). Através deste é possível classificar cada pixel da imagem de forma rápida, pois o mesmo propõe reduzidas operações de comparações no pro- cesso de classificação dos pixels. Sendo assim, base- ados nesse artigo foi desenvolvida uma solução pró- pria para o problema. Nesse trabalho foi desenvolvido o RTL e a fim de verificar o mesmo, foi construiu-se, também, um modelo de referência em Matlab para que fossem comparados os resultados. Com isso, garantindo o correto funcionamento do sistema. Com relação à aplicação de segmentação, o tra- balho proposto por Bruce et al. (2000) minimiza o processamento de tempo real, através da utilização de operadores lógicos simples, se tornando uma alternativa para implementação em dispositivos de lógica reduzida, como FPGAs, mas em contrapartida, exige o uso de um pré-processamento das tabelas de mapeamento por meio de um sistema auxiliar, além de requisitar o uso de memórias para o armazena- mento das tabelas. Ou seja, o custo computacional do processamento é substituído pela utilização das me- mórias. A partir dos resultados apresentados, observa-se que o proposito do trabalho foi alcançado. Foram executados os testes citados e todos eles tiveram resultados satisfatórios, ou seja, a segmentação de cores das imagens testadas foi realizada com êxito pelo RTL. Como melhoria e próximos passos desse traba- lho, propõe-se executar testes utilizando a placa de FPGA, para observar o comportamento e o desempe- nho do módulo. Outro ponto seria a mudança da arquitetura implementada para adicionar uma interfa- ce com uma câmera no FPGA, para que assim, possa ser realizada a segmentação em tempo real. Para isso, é necessário fazer adaptações no módulo RTL desen- volvido e também implementar a interface com a câmera no FPGA. Referências Bibliográficas Brown, T. and Koplowitz, J. (1979). The weighted nearest neighbor rule for class dependent sample sizes. IEEE Transactions on Information Theory, pp 617-619. Bruce, J., Balch, T. and Veloso, M. (2000). Fast and Inexpensive Color Image Segmentation for In- teractive Robots. In: Proceedings of the 2000 IEEE / RSJ Int. Conf. on Intelligent Robots and Systems (IROS 2000), vol. 3, pp 2061–2066. Chu, P. P. (2008). FPGA prototyping by Verilog examples. Wiley-Interscience. ISBN 978-0-470- 18532-2. Kitano, H., Kuniyoshi, Y., Noda, I., Asada, M., Matsubara, H. and Osawa, E. (1997). RoboCup: A challenge problem for AI. AI Magazine, 18(1), pp 73–85 Liping, Y., Kai, S. (2010). Design and Realization of Image Processing System Based on Embedded Platform. Information Technology and Applica- tions (IFITA), 2010 International Forum on (Volume:2 ), Pages 446-449. Ma, Y., En Wang, E., Wang, Y. (2011). An embed- ded image processing device for color vision de- ficiency. Biomedical Engineering and Informat- ics (BMEI), 2011 4th International Conference on (Volume:2 ), Pages 1041 – 1045. Monmasson, E. and Cirstea, M. N. (2007). FPGA Design Methodology for Industrial Control Sys- tems - A Review. IEEE Transactions On Indus- trial Electronics, Vol. 54, NO. 4. Newton Laboratories. (1999) Cognachrome image capture device. http://www.newtonlabs.com. Said, T., Ghoniemy, S., Karam, O. (2012). Real-time multi-object detection and tracking for autono- mous robots in uncontrolled environments. Computer Engineering & Systems (ICCES), 2012 Seventh International Conference on, Pag- es 67-72. Sluzek, A., Minh, P.K.D. (2006). Embedded Vision Module for Robot-soccer. Computer Systems and Applications, 2006. IEEE International Con- ference on, Pages 159-162. Zickler, S., Laue, T., Birbach, O., Wongphati, M., Veloso, M. (2010) SSL-Vision: The Shared Vi- sion System for the RoboCup Small Size League. RoboCup 2009: Robot Soccer World Cup XIII, Pages 425-436. Zhou, Q., Yuan, K., Wang, H. and Hu, H. (2005). FPGA-based colour image classification for mo- bile robot navigation. IEEE International Con- ference on Industrial Technology, ICIT, pp. 921-925. Anais do XX Congresso Brasileiro de Automática Belo Horizonte, MG, 20 a 24 de Setembro de 2014 2539