PDF Full-Text

Transcrição

PDF Full-Text
Performance Analysis of Algorithms over FPGA
for Removing Salt and Pepper Noise
E. Ieno Junior, L. M. Garces, A. J. Cabrera and T. C. Pimenta
Abstract— This paper shows the possibility to improve the
accuracy of medical diagnosis on contaminated radiographic
image with salt and pepper noise using FPGA-based filters.
Investigation is carried out using filters described widely in the
literature, such as Blur, Smooth and Gaussian linear filters and
nonlinear median filter implemented on FPGA in an attempt to
eliminate the noise. Implementations are checked on a
development board with Spartan 6slx100fgg484-3 FPGA and a
low-power optimized version Spartan 6slx100lfgg484-1l. The
results are verified through the filtered images, resources
consumption and the lowest response time. The implementation
methodology
uses
model-based
engineering
involving
MATLAB/Simulink and System Generator software using the
XSGlmgLib library to perform co-simulation. The results show
that the FPGA implementation of the median filter has a good
tradeoff between resource consumption and noise removal
efficiency.
Keywords— Filters, Image
Generator, MATLAB/Simulink.
Processing,
FPGA,
System
I. INTRODUÇÃO
O
PROCESSAMENTO de imagem é um assunto de
interesse nas mais diferentes áreas do conhecimento, indo
desde equipamentos de inspeção visual, aquisição e análise de
imagens médicas, biometria, segurança, fotografia, cinema à
vídeo games baseados em realidade aumentada [1], [2], [3],
[4], [5], [6]. Na área médica um dos objetivos principais do
processamento da imagem é melhorar a sua qualidade para
aumentar a percepção e a interpretação, por exemplo, de
resultados de exames médicos. Exames estes que podem
definir a localização e extensão de lesões ósseas com maior
precisão [7].
Os filtros são processos que tem por finalidade salientar
determinados aspectos em imagens digitais ou reduzir ruídos.
Estes ruídos podem ser introduzidos na imagem durante o
processo de aquisição, devido a limitações de hardware; no
processo de quantização e digitalização, pelo excesso de
compressão da imagem; problemas na transmissão, entre
outros [8]. Durante a transmissão de dados, por exemplo, os
pixels podem ser alterados causando uma diferença brusca dos
tons entre os seus vizinhos. Nesta situação, quando os pixels
são modificados para zero ou o máximo, este ruído é
denominado sal e pimenta (salt and pepper). Nome recebido
devido a sua aparência com pontos brancos e pretos
superpostos na imagem [8].
E. Ieno Junior, Centro Federal de Educação Tecnológica de Minas Gerais
(CEFET MG), Varginha, Minas Gerais, Brasil, [email protected]
L. M. Garces, Instituto Superior Politécnico “José Antonio Echeverría”
(CUJAE), Havana, Cuba, [email protected]
A. J. Cabrera, Instituto Superior Politécnico “José Antonio Echeverría”
(CUJAE), Havana, Cuba, [email protected]
T. C. Pimenta, Universidade Federal de Itajubá (UNIFEI), Itajubá, Minas
Gerais, Brasil, [email protected]
Os filtros de ordenamento, em particular o de mediana,
permite diminuir o ruído impulsivo e de alta frequência
conhecido como salt and pepper da imagem sem alterar muito
as características de seu contorno [9]. Este processo tem
aplicação em diversos setores, entre os quais, a medicina
utiliza para eliminar ruídos de imagens radiográficas [8].
Assim, neste trabalho é verificada a melhora da percepção da
imagem para filtros de mediana com janela 3x3 e 5x5
implementados em FPGA (Field Programmable Gate Array).
No entanto, estes filtros quando comparados ao Blur, Smooth
e Gaussiano apresenta como maior problema a complexidade
do circuito de hardware para encontrar o valor mediano entre
os pixels vizinhos [10]. Deste modo, ordenar todos os valores
da vizinhança pode-se tornar relativamente lento, reduzindo o
desempenho. Portanto, são verificados também neste trabalho
a frequência máxima alcançada por cada filtro e os recursos
utilizados no processamento da imagem.
O desenvolvimento de aplicações para o processamento de
imagem se torna um desafio visto que as linguagens mais
empregadas para programar FPGAs (VHDL/Verilog) não
possuem o nível de abstração adequado. O aumento constante
da complexidade dos projetos e o tempo cada vez menor
exigido para o desenvolvimento de um produto (time-tomarket), necessita que um fluxo rápido e simplificado de
projeto seja empregado. Desta forma, as etapas para o
desenvolvimento de um projeto que geralmente incluem a
especificação de requisitos, prototipação, implementação,
testes e verificações são realizadas simultaneamente ao
utilizar-se a engenharia baseada em modelos [7], [11], [12].
Eventuais restrições exigidas pela escolha de um dispositivo, a
simulação contínua durante o desenvolvimento do projeto e a
geração de código automática para a arquitetura alvo, tendem
a diminuir o tempo de desenvolvimento. Desta forma, neste
trabalho será utilizado o software MATLAB®/Simulink®, já
que é uma ferramenta de simulação e desenvolvimento
baseada em modelos. Além disso, há um ambiente gráfico e
uma série de blocos parametrizáveis com soluções parciais
para certas aplicações, incluindo o processamento de imagens.
Contudo, a ferramenta de síntese System Generator® da Xilinx
através de blocos da biblioteca do Simulink® possibilita a
geração automática do código, por exemplo, em VHDL [13].
Para verificar a possibilidade de melhorar o diagnóstico
médico sobre imagens radiográficas contaminadas com ruído
salt and pepper são analisadas as diferenças visuais e do Erro
Médio Quadrático (MSE - Mean Square Error) entre os
resultados dos filtros implementados em FPGA. Assim, uma
imagem radiográfica de corpo inteiro disponibilizada por um
banco de imagens liberado para estudo na Internet em [14] é
utilizada. Esta imagem é caracterizada pelos tons de cinza
mais claros determinando o contorno da estrutura óssea e os
mais escuros, o contorno do corpo sobrepostos em fundo
preto. Características estas que podem tornar ineficaz a
utilização de filtros lineares que afetam o contorno da imagem
[7], [8].
A redução do consumo de potência é crucial em
determinadas aplicações, especialmente em dispositivos
móveis, onde o tempo de funcionamento do circuito depende
do tempo de duração da carga da bateria do dispositivo. Nesta
situação podem ser desenvolvidas soluções em diferentes
níveis de abstração: sistema, algoritmo, arquitetura, lógico,
circuito e tecnologia; sendo que as maiores oportunidades para
uma redução significativa encontram-se nos primeiros níveis
[15]. No entanto, uma FPGA otimizada para obter um maior
rendimento de carga da bateria pode ter o sistema
implementado comprometido em termos de tempo de resposta.
Do exposto, é realizada a síntese dos filtros na placa de
desenvolvimento Spartan 6slx100fgg484-3 e numa versão que
trabalha com FPGA otimizada para redução do consumo de
energia (low-power), a 6slx100lfgg484-1l, afim de verificar o
impacto na frequência de operação.
Este trabalho está organizado da seguinte forma: na seção
II são apresentados os conceitos envolvendo os filtros lineares
e as máscaras que serão utilizadas na implementação. A
operação realizada pelo filtro não linear de valor mediano é
apresentada na seção III. A metodologia utilizada e a
implementação realizada para o filtro de valor mediano são
apresentadas na seção IV. Os resultados obtidos através da
implementação considerando uma FPGA otimizada para um
menor consumo de energia são apresentados na seção V. Por
fim, as conclusões são apresentadas na seção VI.
II. FILTROS LINEARES
A manipulação de imagens utilizando a operação de
convolução ou do valor central dos pixels ordenados pode ser
considerada simples. No entanto, quando se trata de sistemas
desenvolvidos em FPGA, cada etapa, incluindo o préprocessamento, deve ser pensada de forma a utilizar a menor
quantidade de recursos disponíveis. Vislumbrando o sistema
como um todo, com a otimização realizada em cada etapa,
haverá a redução do tempo de resposta final. Assim, por
exemplo, o processamento de imagens em tempo real pode
tornar-se viável [16].
Uma imagem digital é definida como uma função
bidimensional A(x,y), com valores finitos, onde x e y são as
coordenadas espaciais. A função A pode ser representada
como uma matriz (1) m x n onde cada elemento representa a
intensidade de um pixel [8].
(1)
a 0 ,1  a 0, n −1 
 a 0, 0

 a
a1,1  a1,n −1 
1, 0
A=
 


 


a m −1, 0 a m −1,1  a m −1,n −1 
Os métodos de processamento desempenham várias tarefas
visando melhorar as informações contidas nos pixels visando
facilitar a interpretação humana ou de sistemas autônomos [8].
Estes métodos são baseados na transformação matemática
sobre os pixels da imagem dependendo do tamanho da janela
(2).
x−
(2)
p
p
q
q
≤i≤ x+ , y− ≤ j≤ y+
2
2
2
2
Os valores de p e q são 0, 2, 4, 6, ... e definem o tamanho
da janela.
As técnicas de processamento são normalmente
classificadas conforme a complexidade da operação, tamanho
da janela e linearidade. A complexidade das operações é
dividida em baixa: aquisição da imagem e pré-processamento;
média: segmentação e extração de características; e alto nível:
reconhecimento, classificação e interpretação dos dados. O
tamanho da janela (p+1 x q+1) envolve operações pontual
(p=q=0) e com os pixels vizinhos [7]. A operação linear
depende da transformação da imagem, sendo classificada em
operações lineares, a convolução e a correlação e não-linear,
ordenamento dos pixels, limiarização e morfológicas.
A operação matemática de convolução (3) é apresentada
sobre as duas funções A(x,y) e C(x,y) descritas em:
p
q
i=
j=
(3)
2
2
A( x, y ) ∗ C ( x, y ) =
  C (i, j )A( x − i, y − j )
i =−
p
q
j =−
2
2
O símbolo ( ∗ ) indica a operação de convolução, onde
C(i,j) é o núcleo de convolução do filtro (4), caracterizado
pelos coeficientes Cij:
(4)
C
 C

C
p
q
 − 2 ,− 2
C p q
− +1, −
C= 2 2
 

 C p ,− q
 2 2
C
p q
− , − +1
2 2
p
q
− +1, − +1
2
2

Cp
2
q
, − +1
2
 C


p q
− ,
2 2
p
q
− +1,
2
2

Cp
q
,
2 2


.




A seleção do núcleo de convolução define a transformação
que será realizada sobre a imagem, a qual é utilizada para
diferentes propostas.
Do exposto, tem-se que a operação dos filtros lineares
baseia-se na soma dos produtos entre os pixels de uma janela e
uma máscara que contém uma quantidade de pixels vizinhos.
A janela dos pixels de entrada é sempre do mesmo tamanho
que a máscara ou núcleo de convolução. Assim, o pixel de
saída representa a convolução das intensidades com seus
pixels vizinhos [8], [15], [17].
A Figura 1. 1 a seguir exemplifica a operação de
convolução utilizada pelo filtro linear. Assim, para um núcleo
de convolução de tamanho 3x3, o valor normalizado do pixel
central é de 56.
Figura 1. Filtro de convolução.
Os valores dos demais pixels são obtidos com o
deslocamento do núcleo de convolução por toda a imagem.
Desta forma, para um núcleo de convolução de tamanho 3x3
uma nova operação é realizada a cada entrada de 3 novos
pixels paralelamente [1].
Estes filtros utilizam uma variedade de núcleos de
convolução para calcular os resultados de acordo com a
função desejada. Os núcleos de convolução utilizados para a
implementação dos filtros Blur, Smooth e Gaussiano são
apresentados na Figura 2. 2 a seguir.
sua implementação são facilmente reconfiguráveis. Além
disso, esta ferramenta permite a geração automática do código,
por exemplo, em VHDL [22], [23]. Assim, utilizando o
Simulink® é realizado o processo de síntese e a verificação da
implementação na placa propriamente dita (HW in Loop). A
Figura 4 apresenta o fluxo do projeto através do MATLAB®,
Simulink®, System Generator®, ISE e ModelSim™ [21], [23],
[24].
Figura 2. Núcleos de convolução para filtros de ruído ou suavização.
III. FILTRO NÃO LINEAR
O processamento de uma imagem através do ordenamento
espacial é baseado na substituição dos pixels de uma área
determinada pelo tamanho da janela por uma posição
requerida entre os valores ordenados. Um caso específico é o
filtro de mediana avaliado em [18], onde a posição requerida
está no centro da janela [8], [10], [15], [17].
A Figura 3 a seguir exemplifica a operação de ordenamento
e obtenção do valor mediano em uma janela 3x3.
Figura 3. Filtro de mediana.
Figura 4. Fluxo do desenvolvimento de projeto com System Generator® [1].
A realização da co-simulação em hardware é feita através
do bloco do Simulink® XSG (Xilinx System Generator) ISE
versão 14.7, que realiza a compilação do sistema de
processamento. Na configuração são selecionados o modelo
da placa e a FPGA, além do tipo de conexão com o
dispositivo. Assim, concluída a compilação, o sistema cria um
novo bloco denominado Model hwcosim que deverá ser
substituído no sistema de processamento conforme apresenta a
Figura 5. Ao executar a simulação do modelo em hardware, o
bloco XSG se encarrega de realizar a síntese, roteamento e a
configuração do sistema processado na placa conectada. Desta
forma, ocorre o fluxo de entrada de dados do espaço de
trabalho do MATLAB® (From Workspace) para a placa
(Model hwcosim), onde é processado por hardware e retorna
ao MATLAB® (To Workspace) apresentando os resultados
[16], [21], [24], [25].
Observe que o valor do pixel central será de 60, diferente
do calculado para o filtro de convolução que foi de 56.
O filtro de mediana é muito popular porque possui uma
excelente capacidade de redução de certos ruídos. Além disso,
consegue borrar menos a imagem que os filtros lineares de
suavização com janela de mesmo tamanho [8].
IV. PROCESSAMENTO DE IMAGEM PROPOSTO
A metodologia de implementação baseada em modelos
utilizando bibliotecas do Simulink® é utilizada neste trabalho
agregando os resultados de simulação em hardware com a
otimização de recursos em área e velocidade. A entrada da
imagem é feita por software e implementada em MATLAB®
2013 [1], [19], [20]. Nesta metodologia, o processamento de
imagens é realizado com o bloco System Generator® da
Xilinx, permitindo a utilização de blocos otimizáveis e
parametrizáveis de acordo com a necessidade do projetista
[21]. Assim, é alcançada a aceleração no tempo de
desenvolvimento do algoritmo otimizado, já que os blocos de
Figura 5. Implementação da Co-Simulação em hardware [1].
A diferença entre a simulação e a co-simulação não é
apresentada pelo resultado funcional, mas sim, pela diferença
entre os tempos de resposta. Isto ocorre porque a síntese influi
no posicionamento e roteamento dos blocos lógicos
específicos de cada dispositivo físico.
As implementações desenvolvidas em FPGA são baseadas
nas arquiteturas apresentadas em [1]. Dentre os vários filtros
implementados em hardware é apresentada na Figura 6 a
arquitetura para o filtro de mediana utilizando blocos
desenvolvidos com a biblioteca XSGlmgLib para Simulink®.
Figura 6. Implementação do filtro de mediana em FPGA.
Para iniciar o processamento, a imagem serializada através
de um vetor coluna indexado na área de trabalho do
MATLAB® é transmitida para a FPGA. Como são
processados 9 pixels simultaneamente, a imagem inicialmente
é paralelizada na FPGA utilizando os armazenadores (Line
Buffer). Após as 3 primeiras colunas da imagem original se
encontrarem armazenadas é iniciado o processo de filtragem
com os dados válidos. Neste processo, a cada 3 novos pixels
são verificados o valor menor, o mediano e o maior entre os 9
pixels da janela 3x3. Esta verificação é realizada através de
três blocos de comparação (Relational) que indicam em sua
saída o menor a cada 2 pixels. Assim, é formado o endereço
através do bloco de concatenação (Concat) de três bits
indicando na saída dos 3 multiplexadores (Mux) parciais o
valor mínimo, o mediano e o máximo. Estes valores são
utilizados na entrada do último multiplexador, o qual
apresenta em sua saída o valor mediano entre os 9 pixels.
Após a realização da filtragem, a imagem é enviada para
área de trabalho do MATLAB®, onde é redimensionada,
excluindo as informações computadas durante o tempo de
armazenamento inicial.
V. RESULTADOS OBTIDOS
A inserção de ruído é realizada na área de trabalho do
MATLAB® através da função imnoise (Imagem, ‘salt &
pepper’, 0.005). Assim, a imagem radiográfica original é
contaminada com o ruído salt and pepper inicialmente com a
densidade de 0,005. Este parâmetro afeta aproximadamente
0,005 vezes a quantidade de pixels da imagem. Os resultados
visuais são apresentados na Figura 7.
Figura 7. Resultados visuais dos filtros implementados em FPGA para ruído
de densidade 0,005.
Analisando os resultados para os três filtros baseados na
operação matemática de convolução: Blur, Smooth e
Gaussiano, observa-se maior redução da influência do ruído
para o filtro Blur. No entanto, o resultado para este filtro é
uma imagem borrada. Para o filtro Smooth existe uma
quantidade de ruído considerável embora mantenha os
contornos da imagem. Assim, o melhor resultado visual é
apresentado pelo filtro Gaussiano, que além de manter a
definição dos contornos, consegue aproximar mais os tons de
cinza do ruído da região escura predominante no fundo da
imagem. Assim, a percepção visual é de que há a maior
redução do ruído.
Embora em algumas aplicações o resultado apresentado
pelo filtro Gaussiano possa ser aceitável, ainda existe ruído
para ser eliminado. Assim, para tentar melhorar a imagem
com o ruído já filtrado pelo Gaussiano, esta é processada
novamente pelo filtro de mediana 3x3. No entanto, a imagem
ainda apresenta pontos de ruído a cargo de um aumento da
utilização dos recursos da FPGA com a sintetização de dois
estágios de filtragem. Do exposto, é aplicado diretamente na
imagem original com ruído, o filtro de mediana 3x3, o qual
resulta na imagem com menor percepção visual de ruído.
Partindo do princípio que o melhor resultado é utilizando o filtro não linear de
mediana, analisado anteriormente, a imagem original é contaminada com uma
densidade de ruído de 0,5, ou seja, 100 vezes a inicial. A
Figura 8. Etapas de filtragem de mediana com janela de 3x3 para ruído de
densidade 0,5.
Como a inserção de etapas de filtragem aumenta a
utilização de recursos da FPGA, é realizada a implementação
de um filtro de mediana com janela de tamanho 5x5. A Figura
9 a seguir apresenta o resultado com apenas uma etapa de
filtragem sobre a imagem original contaminada com ruído salt
and pepper de densidade 0,5.
Figura 8 a seguir apresenta as etapas de filtragem. Estas
etapas representam o número de vezes que a imagem ruidosa
foi submetida à filtragem com janela 3x3.
Gaussiano: Imagem Original-saída do filtro Gaussiano.
5x5.
Mediana: Imagem Original-saída do filtro de mediana 5x5.
TABELA I
MSE PARA OS FILTROS IMPLEMENTADOS EM FPGA
Filtro
Original
Etapa 1
Etapa 2
Etapa 3
Etapa 4
Figura 9. Uma etapa de filtragem de mediana com janela 5x5 para ruído de
densidade 0,5.
Na Figura 9 observa-se uma imagem com boa parte do
ruído eliminada em apenas uma etapa de processamento.
Assim, a implementação de uma arquitetura com janela 5x5
comparada a 3x3, pode ser mais eficiente em termos de
recursos ocupados. Isto ocorre porque a utilização de várias
etapas de filtragem com janela 3x3 necessárias para atingir
resultado semelhante, pode ultrapassar os recursos
consumidos a mais com a janela de tamanho 5x5.
A análise dos resultados das imagens filtradas não pode ser
confiada apenas à percepção humana, pois esta pode variar de
pessoa para pessoa [26]. Desta forma, para estabelecer um
parâmetro para analisar a qualidade da imagem filtrada será
utilizado o MSE dado pela expressão matemática apresentada
em (5), onde M e N são os números de linhas e colunas
respectivamente.
∑
,
,
(5)
,
∗
Para considerar duas imagens matematicamente iguais, o
valor do MSE deve ser igual a zero. Desta forma, é realizada a
subtração entre a imagem original (I1) e a de saída (I2) dos
vários filtros implementados neste trabalho. Contudo, o erro
médio quadrático representa as diferenças entre o sinal ideal
(sem ruído) e o ruidoso após cada tentativa de filtragem. A
TABELA I apresenta os valores do MSE com a imagem
original contaminada com densidade 0,5 para:
Original: Imagem Original-Imagem com ruído salt and
pepper de densidade 0,5.
Etapa 1: Imagem Original-saída do primeiro estágio do
filtro de mediana 3x3.
Etapa 2: Imagem Original-saída do segundo estágio do
filtro de mediana 3x3.
Etapa 3: Imagem Original-saída do terceiro estágio do filtro
de mediana 3x3.
Etapa 4: Imagem Original-saída do quarto estágio do filtro
de mediana 3x3.
Etapa 5: Imagem Original-saída do quinto estágio do filtro
de mediana 3x3.
Blur: Imagem Original-saída do filtro Blur 5x5.
Smooth: Imagem Original-saída do filtro Smooth 5x5.
MSE
2806,1
1208,6
992,83
1106,4
1337,6
Filtro
Etapa 5
Blur
Smooth
Gaussiano
Mediana
MSE
1591,1
624,15
1238,3
794,88
233,96
Observa-se na TABELA I, que para o MSE calculado entre
a imagem original e a ruidosa com densidade de 0,5
(2806,01), que todos os filtros conseguem aproximar a
imagem original da ideal, ou seja, sem ruído. No entanto, o
filtro de mediana com janela de tamanho 3x3 diminui o ruído
com a eficiência começando a ser reduzida a partir da terceira
etapa, onde o MSE começa a aumentar. Este fato reflete o
aumento da ocorrência de alterações dos detalhes finos na
imagem filtrada. Com relação aos filtros lineares, o melhor
resultado matemático é para o Blur, já que o seu núcleo de
convolução altera menos os pixels da imagem, no entanto, há
uma perda de nitidez dos contornos da estrutura óssea,
conforme apresentado na Figura 7. Do exposto, com MSE
igual a 233,96, o filtro de mediana com janela de tamanho 5x5
consegue aproximar mais a imagem filtrada da ideal.
Após as análises visual e estatística dos resultados das
implementações dos filtros, são apresentados na TABELA II a
quantidade de recursos disponíveis, ocupados e a frequência
máxima alcançada em duas placas de desenvolvimento
Spartan-6 baseadas em FPGA. Sendo que a placa Spartan
6slx100lfgg484-1l emprega uma FPGA otimizada para
trabalhar com redução no consumo de energia. Através da
análise dos dados desta tabela, observa-se que a utilização de
recursos reflete a complexidade das arquiteturas dos filtros
implementados. Assim, o filtro de mediana de janela 5x5
apresenta a maior utilização de recursos entre todos. No
entanto, nenhum dos filtros implementados compromete em
termos do consumo de recursos a utilização da FPGA para a
implementação de outras etapas. Além disso, pode-se
verificar, que a frequência máxima é reduzida 2,3 vezes para
todos os filtros, exceto o de mediana de janela 5x5 que atinge
a redução de 1,4 aproximadamente para FPGA otimizada para
redução do consumo de energia na placa Spartan
6slx100lfgg484-1l. Desta forma, a escolha da FPGA não pode
ser pensada apenas com relação ao consumo de energia, já que
isto pode comprometer o tempo de resposta de um sistema de
processamento implementado.
TABELA II
RESULTADOS DOS RECURSOS UTILIZADOS PELOS FILTROS
IMPLEMENTADOS EM FPGA
Filtros
Recursos
6slx100lfgg484-1l
Utilizado
Freq.
6slx100fgg484-3
Utilizado
Freq.
Blur
5x5
Smooth
5x5
Gaussian
5x5
Mediana
3x3
Mediana
5x5
Flip-flop
LUT
Slice
Flip-flop
LUT
Slice
Flip-flop
LUT
Slice
Flip-flop
LUT
Slice
Flip-flop
LUT
Slice
160
227
0,42%
161
510
0,94%
160
374
0,72%
48
120
0,30%
510
1776
4,26%
(MHz)
250,063
250,063
250,063
250,063
67,944
160
227
0,43%
161
410
1%
160
374
0,75%
48
120
0,26%
510
1772
4,02%
(MHz)
578,035
578,035
578,035
578,035
95,066
O presente trabalho foi realizado com o apoio da CAPES
(Programa MES/Cuba), CNPq e FAPEMIG.
REFERÊNCIAS
[1]
[2]
[3]
[4]
VI. CONCLUSÃO
A melhora do diagnóstico médico através de imagens
radiográficas contaminadas com ruído salt and pepper é
conseguida empregando filtros descritos amplamente na
literatura e implementados em hardware reconfigurável.
Destes filtros, os de valor mediano com janela de tamanho 3x3
e 5x5 apresentam melhores resultados que os filtros lineares
analisados. No entanto, o resultado final dependerá do nível de
contaminação do sinal pelo ruído. Assim, dependendo dos
detalhes visuais requeridos para a análise da imagem, a opção
mais viável ficará a cargo dos recursos disponíveis na FPGA,
a qual possui grande demanda de recursos por outras etapas
sendo implementadas em sistemas complexos.
O cálculo do MSE para filtros que afetam o contorno da
imagem, como o Blur, apresenta um valor inferior. No
entanto, não representa a melhor percepção visual. Desta
forma, não há como escolher o melhor filtro apenas utilizando
o MSE. Assim, mesmo a percepção visual sendo subjetiva,
pode auxiliar na análise onde há um padrão de imagem
estabelecido a ser recuperado.
A preocupação no desenvolvimento de projetos para
hardware reconfigurável envolvem a otimização em consumo
de recursos e o tempo de resposta da arquitetura dos
algoritmos. Assim, ao realizar a sintetização na FPGA, os
recursos ocupados e a frequência máxima atingida passam a
representar o sucesso da arquitetura otimizada. No entanto,
deve-se observar que no desenvolvimento de equipamentos
portáteis o consumo de energia poderá ser prioritário, podendo
comprometer o tempo de resposta do sistema.
A metodologia adotada para implementar e verificar a
utilização dos recursos em hardware e o tempo de resposta
favorece a aceleração do desenvolvimento de algoritmos
através de modelos facilmente parametrizáveis. Além disso, a
possibilidade de simulação com outras FPGAs em diferentes
placas de desenvolvimento escolhidas através da ferramenta
de síntese, traz o benefício de adequação de um modelo que
atenda às necessidades da implementação mesmo antes da
aquisição do dispositivo.
AGRADECIMIENTOS
[5]
[6]
[7]
[8]
[9]
[10]
[11]
[12]
[13]
[14]
[15]
[16]
[17]
[18]
[19]
L. M. Garcés, S. Sánchez, and P. B. Jiménez, “Library for model-based
design of image processing algorithms on FPGAs. Biblioteca para
diseño basado en modelos de algoritmos de procesado de imágenes en
FPGA,” Revista de la Facultad de Ingeniería Universidad Antioquia,
Antioquia, pp. 36–47, Sep-2013.
K. Pulli, A. Baksheev, K. Kornyakov, and V. Eruhimov, “Real-time
computer vision with OpenCV,” Communications of the ACM, vol. 55,
no. 6, p. 61, 2012.
F. Hamdaoui, A. Khalifa, A. Sakly, and A. Mtibaa, “Real Time
Implementation of Medical Images Segmentation Based on PSO,” in
International Conference on Control, Decision and Information
Technologies (CoDIT), 2013, pp. 36–42.
C. V. Chicote, A. T. Moreo, and P. S. Palma, “Image Processing
Application Development: From Rapid Prototyping to SW/HW Cosimulation and Automated Code Generation,” Pattern Recognition and
Image Analysis Lecture Notes in Computer Science, Proceedings
Second Iberian Conference (IbPRIA 2005) Estoril, Portugal, vol. 3522,
pp. 659–666, 2005.
P. D. Mahamuni, R. P. Patil, and H. S. Thakar, “Moving Object
Detection Using Background Subtraction Algorithm Using Simulink,”
International Journal of Research in Engineering and Technology
(IJRET), vol. 3, no. 6, pp. 594–598, 2014.
T. Singh, S. Sanju, and B. Vijay, “A New Algorithm Designing for
Detection of Moving Objects in Video,” International Journal of
Computer Applications, vol. 96, no. 2, pp. 4–11, 2014.
D. G. Bailey, Design for Embedded Image Processing on FPGAs, 1st
ed. Solaris South Tower, Singapore: John Wiley & Sons (Asia) Pte Ltd,
2011, pp. 1–496.
R. C. Gonzalez and R. E. Woods, Digital Image Processing, 3rd ed.
Tennessee: Prentice Hall, 2009.
G. Kaur and P. R. Gupta, “Statistical Filter for Removing Noise in
Digital Image,” International Journal of Engineering Research and
Development, vol. 7, no. 7, pp. 45–48, 2013.
C. Chakrabarti, “High Sample Rate Array Architectures for Median
Filters,” IEEE Transactions on Signal Processing, vol. 42, no. 3, pp.
707–712, 1994.
S. L. Anusha and C. H. Sowmya, “Review of An Efficient Object
Detection Using System Generator,” International Journal of Research
& Development Organization (IJRDO), vol. 2, no. 4, 2015.
R. C. Gonzalez, R. E. Woods, and S. L. Eddins, Digital Image
Processing Using Matlab, 2nd ed. Gatesmark, 2009.
H. Nguyen.T.K., C. Belleudy, and T. V Pham, “Performance and
Evaluation Sobel Edge Detection on Various Methodologies,”
International Journal of Electronics and Electrical Engineering, vol. 2,
no. 1, pp. 15–20, 2014.
MedPix™. “Open Access Medical Images & Teaching File”.
Disponível em: http://rad.usuhs.mil/medpix/parent.php3?mode=tf2&
action=pre& acr_pre=0&been_here=-1#top. Acessado em 25 de maio
de 2015.
D. G. Bailey, Design for Embedded Image Processing on FPGAs, 1st
ed. Singapore: John Wiley & Sons (Asia) Pte Ltd, 2011, pp. 72–
74,231–261,264–271.
F. Hamdaoui, A. Khalifa, A. Sakly, and A. Mtibaa, “Real time
implementation of medical images segmentation based on PSO,” in
2013 International Conference on Control, Decision and Information
Technologies (CoDIT), 2013, pp. 36–42.
L. M. Garcés, A. J. Cabrera, S. Sánchez, and P. B. Jiménez, “Diseño de
bloques de convolución para procesado de imágenes con FPGA,”
Revista de Ingeniería Electrónica, Automática y Comunicaciones
(RIELAC), vol. XXXII, no. 3/2011, La Habana, pp. 56–69, 2011.
G. Chinnasamy and M. Gowtham, “Performance comparison of various
filters for removing salt & pepper noise,” International Journal of
Multidisciplinary Research and Development, vol. 2, no. 1, pp. 152–
155, 2015.
S. K. Areefabegam and T. Narendrakumar, “FPGA Based Design and
Implementation of Image Edge Detection Using Xilinx System
Generator,” International Journal of New Trends in Electronics and
Comunication, vol. 2, pp. 18–21, 2014.
[20] M. I. Alali, K. M. Mhaidat, and I. A. Aljarrah, “Implementing Image
Processing Algorithms in FPGA Hardware,” in IEEE Jordan
Conference on Applied Electrical Engineering and Computing
Technologies (AEE CT), 2013, pp. 1–5.
[21] K. Benkrid and S. Belkacemi, “Design and implementation of a 2D
convolution core for video applications on FPGAs,” in Third
International Workshop on Digital and Computational Video, 2002.
DCV 2002. Proceedings., 2002, no. November, pp. 85–92.
[22] C. A. Ramos, J. C. Moya, J. M. Ramos, J. C. Pedraza, S. L. Canchola,
and J. E. Vargas, “Metodología de una Etapa Básica de un Sistema de
Procesamiento de Imágenes Basado en FPGA,” in 9o Congreso
Nacional de Mecatrónica, Puebla, México, 2010, pp. 235–240.
[23] J. Albaladejo, D. de Andrés, L. Lemus, and J. Salvi, “Codesign
methodology for computer vision applications,” Microprocessors and
Microsystems, vol. 28, no. 5–6, pp. 303–316, 2004.
[24] T. Saidani, D. Dia, W. Elhamzi, M. Atri, and R. Tourki, “Hardware Cosimulation For Video Processing Using Xilinx System Generator,”
Proceedings of the Word Congress on Engineering, vol. I, London, pp.
3–7, 2009.
[25] N. P. Raut and A. V Gokhale, “FPGA Implementation for Image
Processing Algorithms Using Xilinx System Generator,” IOSR Journal
of VLSI and Signal Processing (IOSR-JVSP), vol. 2, no. 4, pp. 26–36,
2013.
[26] T. Jeyaseelan and G. Priyanga, “FPGA Implementation of Medical
Image Fusion Based on NSCT,” International Journal of Advanced
Research Trends in Engineering and Technology, vol. II, no. I, pp.
185–192, 2015.
Egídio Ieno Junior é graduado em Engenharia Elétrica pelo
Instituto Nacional de Telecomunicações (INATEL), Santa
Rita do Sapucaí, Minas Gerais, Brasil, em 2001. Onde
também obteve o título de Mestre em Telecomunicações, em
2003. Atualmente é professor do Centro Federal de Educação
Tecnológica de Minas Gerais (CEFET MG) e participante do
projeto de pesquisa entre Brasil e Cuba, onde suas pesquisas
se concentram na área de otimização de algoritmos baseados em FPGA para o
processamento de imagens.
Luis Manuel Garces é graduado em Engenharia de Automação pelo Instituto
Superior Politécnico “José Antonio Echeverría” (CUJAE), Marianao, La
Habana, Cuba, em 2006. Onde também obteve o título de Mestre em Sistemas
Digitais em 2011. Atualmente é professor assistente do Departamento de
Automação e Computação (ISPJAE) e desenvolve o tema de seu doutorado
em aceleração de algoritmos mediante hardware reconfigurável para o
processamento de vídeo.
Alejandro Jose Cabrera é graduado em Engenharia
Elétrica, Doutor em Ciências Técnicas pelo Instituto
Superior Politécnico “José Antonio Echeverría” (CUJAE),
Marianao, La Habana, Cuba. Atualmente é professor
responsável pelo Departamento de Automação e
Computação (ISPJAE) e desenvolve pesquisas sobre
otimização em hardware/software.
Tales Cleber Pimenta é graduado e mestre em Engenharia
Elétrica pela Universidade Federal de Itajubá (UNIFEI),
Itajubá, Minas Gerais, Brasil. Doutor em Engenharia Elétrica
pela Universidade de Ohio. É professor na Universidade
Federal de Itajubá desde 1985 nas áreas de circuitos digitais e
projeto de circuitos integrados. Atualmente desenvolve
pesquisas na área de microeletrônica voltada para aplicações
médicas.