sumÁrio · 2.1.4.dispositivos reconfiguráveis ... esta pesquisa trata especificamente da...

80
SUMÁRIO 1. INTRODUÇÃO........................................................................................................ 13 1.1. Contexto .................................................................................................................... 13 1.2. Problema motivador ................................................................................................. 15 1.3. Objetivos ................................................................................................................... 17 1.4. Metas ......................................................................................................................... 18 1.5. Justificativa ............................................................................................................... 18 1.6. Escopo ....................................................................................................................... 19 1.7. Organização do texto ................................................................................................ 19 2. REVISÃO BIBLIOGRÁFICA ................................................................................. 21 2.1. Conceitos teóricos ..................................................................................................... 21 2.1.1. Representação de uma imagem digital ....................................................................... 21 2.1.2. Interpolação e Reconstrução de imagens ................................................................... 24 2.1.3. Computação Reconfigurável ...................................................................................... 27 2.1.4. Dispositivos reconfiguráveis ...................................................................................... 29 2.1.5. Linguagem de descrição de hardware VHDL ......................................................... 32 2.2. Implementação de Filtros de Interpolação de Imagens utilizando Computação Reconfigurável .......................................................................................................... 33 3. ARQUITETURA DE HARDWARE RECONFIGURÁVEL PARA UM CIRCUITO INTERPOLADOR DE IMAGEM ....................................................... 37 3.1. Análise dos requisitos a serem atendidos pela arquitetura proposta ...................... 37 3.2. Arquitetura proposta para o interpolador ............................................................... 38 3.2.1. Características da Arquitetura do interpolador .......................................................... 43 3.2.2. Exemplo do processo de interpolação unidimensional .............................................. 45 3.3. Codificação da arquitetura em VHDL ..................................................................... 46 3.3.1. Trecho da programação em VHDL do bloco de Gerenciamento de coeficientes ........... ................................................................................................................................. 47 3.3.2. Trecho da programação em VHDL definindo as constantes que irão gerar os coeficientes de interpolação ....................................................................................... 48 3.3.3. Trecho da programação em VHDL para a geração do sinal d_ena pelo bloco de Controle ..................................................................................................................... 50 3.3.4. Trecho da programação em VHDL do bloco de processamento da Interpolação ...... 51 3.4. Principais blocos da arquitetura do circuito interpolador ...................................... 51 3.4.1. Bloco de memória de entrada..................................................................................... 52 3.4.2. Bloco de gerenciamento dos coeficientes ................................................................... 52 3.4.3. Bloco de controle ....................................................................................................... 54 3.4.4. Bloco de processamento da interpolação ................................................................... 55 3.5. Implementação da arquitetura (codificada em VHDL) no FPGA EP2C5F256C6 ..... ................................................................................................................................... 57 4. RESULTADOS ......................................................................................................... 59 4.1. Testes funcionais do bloco de processamento da interpolação ................................ 60 4.2. Testes funcionais do circuito interpolador de imagem ............................................ 64 4.2.1. Interpolador de ordem zero: vizinho mais próximo.................................................... 67 4.2.2. Testes com um interpolador de primeira ordem: Linear ............................................ 71 4.2.3. Testes com um interpolador de terceira ordem: Lanczos ........................................... 75 4.3. Testes com uma imagem real .................................................................................... 79

Upload: others

Post on 30-Apr-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

SUMÁRIO

1. INTRODUÇÃO........................................................................................................ 13

1.1. Contexto .................................................................................................................... 13 1.2. Problema motivador ................................................................................................. 15

1.3. Objetivos ................................................................................................................... 17 1.4. Metas ......................................................................................................................... 18

1.5. Justificativa ............................................................................................................... 18 1.6. Escopo ....................................................................................................................... 19

1.7. Organização do texto ................................................................................................ 19

2. REVISÃO BIBLIOGRÁFICA ................................................................................. 21

2.1. Conceitos teóricos ..................................................................................................... 21

2.1.1. Representação de uma imagem digital ....................................................................... 21 2.1.2. Interpolação e Reconstrução de imagens ................................................................... 24

2.1.3. Computação Reconfigurável ...................................................................................... 27 2.1.4. Dispositivos reconfiguráveis ...................................................................................... 29

2.1.5. Linguagem de descrição de hardware – VHDL ......................................................... 32

2.2. Implementação de Filtros de Interpolação de Imagens utilizando Computação

Reconfigurável .......................................................................................................... 33

3. ARQUITETURA DE HARDWARE RECONFIGURÁVEL PARA UM

CIRCUITO INTERPOLADOR DE IMAGEM ....................................................... 37

3.1. Análise dos requisitos a serem atendidos pela arquitetura proposta ...................... 37 3.2. Arquitetura proposta para o interpolador ............................................................... 38 3.2.1. Características da Arquitetura do interpolador .......................................................... 43

3.2.2. Exemplo do processo de interpolação unidimensional .............................................. 45 3.3. Codificação da arquitetura em VHDL ..................................................................... 46

3.3.1. Trecho da programação em VHDL do bloco de Gerenciamento de coeficientes ...........

................................................................................................................................. 47

3.3.2. Trecho da programação em VHDL definindo as constantes que irão gerar os

coeficientes de interpolação ....................................................................................... 48

3.3.3. Trecho da programação em VHDL para a geração do sinal d_ena pelo bloco de

Controle ..................................................................................................................... 50

3.3.4. Trecho da programação em VHDL do bloco de processamento da Interpolação ...... 51 3.4. Principais blocos da arquitetura do circuito interpolador ...................................... 51

3.4.1. Bloco de memória de entrada ..................................................................................... 52 3.4.2. Bloco de gerenciamento dos coeficientes ................................................................... 52

3.4.3. Bloco de controle ....................................................................................................... 54 3.4.4. Bloco de processamento da interpolação ................................................................... 55

3.5. Implementação da arquitetura (codificada em VHDL) no FPGA EP2C5F256C6 ..... ................................................................................................................................... 57

4. RESULTADOS ......................................................................................................... 59

4.1. Testes funcionais do bloco de processamento da interpolação ................................ 60 4.2. Testes funcionais do circuito interpolador de imagem ............................................ 64

4.2.1. Interpolador de ordem zero: vizinho mais próximo.................................................... 67 4.2.2. Testes com um interpolador de primeira ordem: Linear ............................................ 71

4.2.3. Testes com um interpolador de terceira ordem: Lanczos ........................................... 75 4.3. Testes com uma imagem real .................................................................................... 79

Page 2: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

4.3.1. Teste com interpolação em duas dimensões sobre bloco da imagem .......................... 80

4.3.2. Teste com interpolação linear unidimensional sobre uma imagem ........................... 82 4.4. Considerações finais .................................................................................................. 84

5. CONCLUSÕES ......................................................................................................... 85

5.1. Discussão dos resultados ........................................................................................... 85 5.2. Principais contribuições ............................................................................................ 87

5.3. Trabalhos futuros ..................................................................................................... 88

REFERÊNCIAS ................................................................................................................. 89

Page 3: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

13

1. INTRODUÇÃO

Este capítulo apresenta o contexto, o problema motivador, os objetivos, as metas a

serem atingidas, a justificativa e o escopo da pesquisa realizada no PPGEE (Programa de Pós

graduação em Engenharia Elétrica da PUC-Minas), para o projeto de uma arquitetura de

hardware reconfigurável, que permita a utilização de diferentes polinômios ou filtros que

“janelem” a função sinc, para realizar a interpolação de uma imagem digital alterando sua

resolução. Essa arquitetura deverá ser desenvolvida utilizando-se VHDL (VHSIC - Very High

Speed Integrated Circuits; HDL - Hardware Description Language), que é uma linguagem de

descrição de hardware padronizada adequada ao desenvolvimento e simulação de soluções, a

serem implementadas em dispositivos lógicos programáveis, independentemente de

fabricantes ou fornecedores de produtos.

1.1. CONTEXTO

Desde os primórdios da humanidade o homem sente a necessidade de representar o

seu ambiente e a si mesmo sob as mais diversas formas, talvez com o objetivo de perpetuar

seus momentos ou passar suas experiências para as gerações futuras. No início foram

utilizadas técnicas de pintura primitiva em paredes de cavernas, pedaços de pau ou couro de

animais. Com o passar do tempo essas técnicas aprimoraram-se e o ser humano pôde

representar de forma magistral suas imagens através de grandes pintores e escultores. Com a

invenção da fotografia e depois do cinema a facilidade para registrarem-se informações

expandiu-se rapidamente. Com o desenvolvimento da microeletrônica, a utilização de

dispositivos eletrônicos para processar, transmitir, armazenar e exibir imagens vem ocupando

um espaço até há pouco tempo exclusivo de profissionais. Assim, é cada vez mais familiar às

pessoas comuns o acesso a imagens digitais provenientes das mais diversas fontes

(GONZALEZ, 2002). Nos hospitais, os equipamentos eletrônicos, tais como os tomógrafos e

os equipamentos de ressonância, tornaram-se essenciais para a precisão de diagnósticos. Hoje

a câmera fotográfica digital tomou o lugar das câmeras fotográficas tradicionais nos eventos

familiares e profissionais. Controles eletrônicos de velocidade, que fotografam digitalmente o

Page 4: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

14

infrator, fazem parte do nosso dia a dia. O DVD (Digital Video Disc) substituiu os antigos

videocassetes agregando mais qualidade, a um custo mais reduzido, às imagens exibidas na

sala de estar. No Brasil de hoje encontra-se em processo de implantação a televisão digital

que certamente provocará uma nova revolução nos hábitos dos brasileiros.

Em todas essas aplicações, a imagem pode ser definida como uma função

bidimensional f(x,y), onde x e y são coordenadas espaciais (plano) e a amplitude de f, em

qualquer par de coordenadas (x,y) é chamada intensidade ou nível de cinza da imagem (no

caso das imagens monocromáticas) naquele ponto (DODGSON , 1992).

Existem dois tipos básicos de imagem: contínua (ou analógica) e discreta (ou digital).

A imagem contínua apresenta uma intensidade que assume um valor real em cada ponto do

plano real. A imagem que é apresentada para o olho humano ou para uma câmera de vídeo,

antes de qualquer processamento, é uma imagem contínua. Imagens digitais somente

apresentam valores de intensidade em um conjunto de posições espaciais discretas e essas

intensidades pertencem a um conjunto discreto de valores. Uma imagem armazenada no

buffer, de uma placa de processamento de vídeo para exibição em uma tela de um

computador, é uma imagem digital (DODGSON , 1992).

Deve-se observar que uma imagem digital é composta por um número finito de

elementos, cada um dos quais tem uma localização e um valor particular. Esses elementos são

conhecidos como elementos de imagem, elementos da figura, pels ou pixels. Pixel é o termo

mais largamente utilizado para nomear os elementos de uma imagem digital

(GONZALEZ, 2002).

Como já visto, uma imagem é, essencialmente, um sinal no domínio do espaço, isto é,

representa a variação de intensidade de luz e de cor no espaço. Portanto, para que uma

imagem seja processada usando-se um sistema analógico unidimensional, ela geralmente é

convertida em um sinal no domínio do tempo, pelo uso de algum processo de varredura.

Contudo, para se processar uma imagem digitalmente, não é necessário realizar essa

conversão, pois ela pode ser processada diretamente no domínio espacial como uma matriz de

números. Isso dá ao processamento digital de imagens um enorme poder. No processamento

digital de imagens, a representação de sinais bidimensionais, a filtragem e as transformadas

desempenham um papel central (JAIN, 1989).

Dentro da área de processamento de sinais a manipulação de imagens digitais é um

processo cada vez mais utilizado e pesquisado. A manipulação de imagens é um processo que

pode ser decomposto em cinco estágios: geração, armazenamento, processamento,

transmissão e exibição (MARTINS, 1998). O processo de manipulação de imagens só se

Page 5: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

15

tornou viável com o avanço das técnicas e processos para esse fim nos anos 70. Essas novas

tecnologias permitiram uma redução significativa no custo da manipulação e introduziram

novos dispositivos para exibição de imagens (OPPENHEIN, 1978).

Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa

responsável por transformar uma imagem digital em uma aproximação de uma imagem

analógica a ser exibida. Como se sabe, a digitalização de uma imagem analógica consiste em

amostrá-la em ambas as coordenadas, x e y, e também em sua amplitude, para poder ser

digitalizada. A digitalização dos valores das coordenadas é chamada amostragem e a

digitalização dos valores da amplitude é chamado quantização. A qualidade de uma imagem

digital, portanto, é determinada principalmente pelo número de amostras e níveis de

intensidade utilizados nos processos de amostragem e quantização (GONZALEZ, 2002). No

momento da reconstrução, ou seja, da geração de uma imagem analógica a partir das amostras

da imagem digital, deve-se observar que os dispositivos de exibição de imagem são finitos e

isso faz com que a resolução máxima alcançada dependa da resolução dos mesmos. Dessa

forma, ao exibirem-se imagens digitais, deve-se ajustar sua resolução de acordo com o

dispositivo utilizado, bem como os requisitos de sua aplicação específica. Portanto,

interpolação de imagens é uma técnica importante para a aplicação de conversão de resolução

também chamada de reamostragem (resampling) (MORI, T., 2007). A interpolação de

imagens é utilizada atualmente em aplicações para fins de entretenimento e/ou profissionais

(MARSI, S., 1996). Como exemplos, podem ser citadas a conversão de imagens de TV com

resolução padrão para imagens a serem exibidas em dispositivos com alta definição (HDTV)

(MARSI, S., 1996), a geração de imagens médicas com fins de diagnóstico

(LEHMANN, T.M., 1999) ou simplesmente a aplicação de zoom em áreas de maior interesse,

a fim de observar detalhes da imagem (RODRIGUES, L., BORGES, D.L.,

GONÇALVES, L. M., 2002). Para a exibição de imagens existem vários dispositivos dentre

as quais destacam-se os que utilizam Tubo de Raios Catódicos (CRT), os displays de cristal

líquido (LCD) e as telas de plasma.

1.2. PROBLEMA MOTIVADOR

O problema motivador para este trabalho é a constatação de que atualmente existem

dois tipos de implementação de dispositivos interpoladores de imagens: aqueles

Page 6: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

16

implementados em software e executados em hardware programável (HP), ou seja,

microprocessadores, e outros implementados diretamente em hardware fixo (HF). As

características de cada implementação devem ser analisadas sob o ponto de vista de sua

flexibilidade, desempenho e custo.

As implementações em software permitem uma grande flexibilidade, graças às

facilidades, inerentes aos programas, de alterar suas características funcionais. Essa solução,

entretanto, apresenta velocidade de processamento relativamente baixa e é relativamente

ineficiente, uma vez que o processador não será construído especificamente para o software

utilizado. Nesse aspecto, é importante ressaltar que baixos desempenhos implicam em atrasos

no processamento da imagem, os quais podem comprometer seriamente sua qualidade visual.

A segunda forma de implementação adotada é a utilização de filtros utilizando

hardware fixo. Essa implementação fornece alto desempenho relativo porque é personalizada

para o problema, é relativamente veloz na execução do processamento e possui custo de

implementação relativamente baixo. Contudo, apresentam pouca ou nenhuma flexibilidade

(DEHON, 1999) e a flexibilidade é uma característica muito importante na implementação

dos dispositivos interpoladores, uma vez que não existe um único tipo de interpolador que

apresente características ótimas para todas as aplicações em que seja necessária a exibição de

imagens. Portanto, caso a opção seja por dispositivos interpoladores em hardware fixo, pode

ser necessário um tipo de dispositivo específico para cada aplicação. Simples alterações em

suas características podem envolver um novo projeto, o que pode resultar em novo circuito.

Com base nessas observações, a grande questão é: que classe de implementação

escolher de modo a se beneficiar das vantagens das implementações em HP e HF e não sofrer

com suas desvantagens?

Esta dissertação propõe-se a apresentar uma solução possível, a qual consiste na

proposta e desenvolvimento da arquitetura de um circuito reconfigurável interpolador de

imagens digitais implementado em FPGA (Field Programmable Gate Array). Nesta pesquisa

serão utilizados conceitos de computação e arquitetura reconfigurável, para que seja possível

a reconfiguração do tipo de polinômio piecewise ou filtro de janelamento da função sinc a ser

utilizado, de acordo com os requisitos de cada aplicação.

Um FPGA é um complexo sistema construído em um chip que pode combinar

processadores, memória RAM, unidades lógicas aritméticas especializadas e obrigatoriamente

lógica reconfigurável. Quando um algoritmo é codificado utilizando recursos de hardware, o

FPGA pode processá-lo com uma velocidade 10 a 100 vezes maior que aquela obtida com

soluções em software (GOKHALE,2008).

Page 7: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

17

1.3. OBJETIVOS

Para que o trabalho de pesquisa tenha êxito, apresentam-se a seguir o objetivo

principal a ser alcançado e alguns objetivos secundários também importantes, que deverão ser

atingidos durante o progresso da pesquisa.

O objetivo principal deste trabalho de pesquisa é propor e desenvolver uma arquitetura

de hardware reconfigurável e parametrizável para alterar a resolução de imagens digitais

monocromáticas através da interpolação. Para realizar a alteração da resolução ou realizar a

reamostragem serão utilizados polinômios ou filtros que utilizam uma janela na função sinc.

O desenvolvimento da arquitetura será feito utilizando VHDL e implementada em FPGA.

Essa arquitetura deve ser capaz de utilizar diferentes filtros ou polinômios para realizar a

alteração da resolução de imagens, com o compromisso de apresentarem boa qualidade, alto

desempenho e flexibilidade. A arquitetura também deverá ser independente da tecnologia

adotada em sua implementação.

Como objetivos secundários, destacam-se:

a) Estudo do estado da arte sobre alguns filtros de interpolação utilizados frequentemente,

tais como: Interpolador de ordem zero (Vizinho mais próximo), Interpolador de primeira

ordem (Linear) e filtro com janela de Lanczos;

b) Estudo do estado da arte sobre as técnicas de implementação de circuitos em FPGA

utilizando VHDL;

c) Verificação funcional da arquitetura proposta através da simulação VHDL;

d) Novas simulações, após a síntese em FPGA, para assegurar o correto funcionamento do

circuito proposto;

e) Realização de testes funcionais no hardware proposto utilizando análise subjetiva e

objetiva dos resultados alcançados com relação à qualidade das imagens interpoladas.

f) Implementação de um protótipo em FPGA que realize a interpolação de imagens digitais

de acordo com os objetivos propostos

Page 8: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

18

1.4. METAS

A meta principal deste trabalho é a arquitetura de um circuito que seja reconfigurável

estaticamente para realizar a interpolação de imagens digitais. Para se chegar a essa meta

final, algumas metas secundárias deverão ser atingidas de forma a possibilitar o

desenvolvimento do circuito. Essas metas secundárias são listadas a seguir.

a) Arquitetura de hardware reconfigurável estaticamente, o que irá permitir a utilização de

diferentes polinômios ou filtros na reamostragem das imagens digitais;

b) Implementação da arquitetura em FPGA;

c) Obtenção de resultados na simulação VHDL;

d) Obtenção de um circuito que possa ser implementado em FPGA.

Portanto, a arquitetura do Circuito Interpolador de Imagens será a principal

contribuição deste trabalho.

1.5. JUSTIFICATIVA

Considerando o contexto, onde se mostrou o aumento acelerado da utilização de

imagens digitais nas mais diversas situações e, diante da necessidade de se realizar a

manipulação de imagens para adequá-la à sua aplicação, pode-se observar que esta pesquisa é

justificada pela importância da manipulação de imagens no mundo atual. Como também já

foi dito na Seção 1.2, soluções que realizam a reamostragem ou interpolação de imagens

deparam-se sempre com as alternativas de soluções flexíveis e relativamente lentas em

software, ou soluções com pouca ou nenhuma flexibilidade, mas com desempenho relativo

elevado. A alternativa a ser trabalhada nesta pesquisa propõe o desenvolvimento de uma

arquitetura de hardware reconfigurável que possa ser implementada em FPGA, o que busca

reunir as vantagens de desempenho e flexibilidade das implementações em software e em

hardware. Como base teórica desta pesquisa utilizam-se várias áreas de conhecimento, tais

como: processamento digital de sinais, processamento digital de imagens, projeto de sistemas

digitais, arquitetura de computadores e computação reconfigurável. Analisando-se pesquisas

que tratam de manipulação de imagens utilizando circuitos reconfiguráveis, verifica-se que

essa é uma área ainda recente, mas em grande expansão no mundo. Entretanto, quando se

Page 9: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

19

buscam trabalhos de pesquisadores brasileiros, não se encontra uma grande quantidade de

publicações, apesar do crescente interesse pela área.

1.6. ESCOPO

Neste trabalho de pesquisa será proposta a arquitetura de um Circuito Interpolador de

Imagens digitais que seja reconfigurável e parametrizável, além de apresentar bom

desempenho relativo. Embora a implementação de um circuito em um tipo específico de

FPGA seja uma das metas da pesquisa, a arquitetura proposta deverá apresentar características

independentes do dispositivo adotado (fabricante, família, tecnologia eletrônica) e ainda ser

reconfigurável estaticamente. Portanto, o circuito será desenvolvido e testado utilizando uma

tecnologia específica, mas poderá ser também implementado utilizando outros dispositivos

equivalentes. Utilizaram-se nos testes várias classes de sinais: (i) sinais unidimensionais; (ii)

imagens ou segmentos de imagens estáticas e acromáticas, escolhidas dentre as figuras de

teste usualmente utilizadas na verificação de circuitos de processamento de imagens e (iii)

imagens sintéticas geradas pelo Matlab. Vale aqui ressaltar que tanto os sinais de entrada

quanto os de saída são discretos, compostos por número finito de pixels. Para análise dos

resultados utilizaram-se a análise subjetiva (inspeção visual) e a análise objetiva (métricas de

qualidade). A utilização da análise subjetiva justifica-se porque frequentemente a qualidade

percebida pelo sistema visual humano nem sempre está de acordo com os resultados de

qualidade obtidos com a análise objetiva, quando se comparam duas imagens interpoladas

(DODGSON,1997).

1.7. ORGANIZAÇÃO DO TEXTO

No Capítulo 2 desta dissertação, inicialmente, será apresentada uma revisão

bibliográfica dos principais conceitos de imagens, da teoria de reconstrução de sinais, da

utilização de filtros e polinômios para realizar a interpolação de pixels e dos princípios de

computação reconfigurável. Posteriormente será realizada uma apresentação sucinta sobre

FPGAs de dois principais fabricantes, Xilinx e Altera. Finalmente serão apresentados alguns

Page 10: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

20

trabalhos correlatos que tratam de algoritmos ou da implementação de circuitos que realizam

a interpolação de pixels em imagens digitais, utilizando dispositivos lógicos programáveis e

computação reconfigurável.

No Capítulo 3, inicialmente, será proposta a arquitetura de hardware reconfigurável

e parametrizável para a interpolação de imagens digitais monocromáticas através da utilização

de polinômios ou de filtros que utilizam uma janela na função sinc. Inicialmente serão

apresentados os requisitos a serem atendidos por essa arquitetura e seu o diagrama em blocos,

mostrando cada uma das partes que a constituem. Por fim serão apresentados alguns trechos

da programação em VHDL e partes da estrutura do hardware gerado, além do mapa de

utilização de recursos em um FPGA da família Cyclone II do fabricante Altera.

No Capítulo 4 será apresentada a verificação funcional da arquitetura do circuito

interpolador de imagem. Inicialmente são apresentados os testes que verificaram o principal

bloco da arquitetura proposta, que é o Bloco de Processamento da Interpolação.

Posteriormente será realizada uma série de testes, utilizando todos os demais blocos da

arquitetura proposta, para interpolar uma única linha de imagem acromática gerada no

Matlab, cuja intensidade varia segundo uma função cosenoidal. Os resultados são

apresentados por meio de gráficos gerados no Matlab, o que permite uma análise visual

subjetiva, e também através de medições de MSE (Mean Square Error - Erro médio

quadrático) e de PSNR (Peak Signal to Noise Ratio - Relação pico sinal-ruído), o que

possibilita uma análise quantitativa.

No Capítulo 5 é apresentada a conclusão, que contém a discussão dos resultados

obtidos, comparando os possíveis ganhos alcançados com a utilização da arquitetura proposta

aos ganhos obtidos nos trabalhos relacionados. Nesse capítulo também é comentado o alcance

dos objetivos e das metas propostos nesta pesquisa. Em seguida, apresentam-se as principais

contribuições desta dissertação e, por fim, são listados alguns possíveis trabalhos futuros.

Finalmente são listadas as referências desta pesquisa.

Page 11: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

21

2. REVISÃO BIBLIOGRÁFICA

Este capítulo será dividido em duas seções:

A primeira apresentará uma revisão teórica sobre conceitos fundamentais de

representação, digitalização e reconstrução de imagens, bem como de computação

reconfigurável, incluindo também um breve resumo sobre os FPGAs dos dois principais

fabricantes, Xilinx e Altera. Também serão mostrados alguns conceitos importantes sobre a

linguagem de programação VHDL.

Na segunda seção serão apresentados alguns trabalhos correlatos que tratam de

algoritmos ou da implementação de circuitos para a interpolação de pixels, utilizando

dispositivos lógicos programáveis e computação reconfigurável.

2.1. CONCEITOS TEÓRICOS

2.1.1. Representação de uma imagem digital

Imagens são uma distribuição espacial de irradiação no plano. Matematicamente

falando, a distribuição da irradiação espacial pode ser descrita como uma função E contínua

de duas coordenadas espaciais, x1 e x2, ou seja, E(x1,x2). Contudo, os processadores não

podem tratar valores contínuos, mas somente valores digitais, ou seja, discretos tanto no

domínio da amplitude, quanto no domínio da(s) coordenada(s) espaciais. Isso faz com que

seja necessário representar uma imagem como um conjunto de amostras discretas em

amplitude, em que o pixel representa a irradiação em uma determinada posição

(JÄHNE, 2002). Em uma abordagem mais simplificada, os pixels são localizados em uma

grade retangular, conforme a Figura 1.

Figura 1– Pixels distribuídos em uma grade retangular

Fonte: Elaborado pelo autor

Page 12: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

22

A melhor maneira de definir a localização do pixel é por meio de matrizes

(JÄHNE, 2002) e, portanto uma imagem digital é representada pelas localizações dos pixels

em linhas e colunas de uma matriz. A Figura 2 ilustra uma matriz de N (linhas) por M

(colunas), portanto composta por N x M elementos.

Aqui é adequado apresentar a definição de pixels vizinhos na matriz. O conjunto de

pixels denominado “4 vizinhos de p”, em que p está localizado na posição (x,y), é formado

pelos pixels localizados nas coordenadas espaciais:

(x+1, y), (x-1,y), (x, y+1), (x, y-1)

Cada pixel vizinho fica a uma unidade de distância de (x,y), e alguns dos vizinhos de p

podem estar fora da imagem digital, quando p estiver localizado na borda dessa imagem.

(GONZALEZ, 2002).

Para que seja criada uma imagem digital, é necessário primeiramente capturar uma

imagem contínua utilizando algum dispositivo de captura de imagem, como uma câmera ou

um scanner. A seguir, é necessário converter o dado capturado para um formato digital

(GONZALEZ, 2002), o que envolve dois processos: amostragem (discretização das

coordenadas espaciais) e quantização (discretização da amplitude). A idéia básica por trás da

amostragem e da quantização é ilustrada na Figura 3. A Figura 3(a) mostra uma imagem

contínua, f(x,y). A função unidimensional mostrada na Figura 3(b) é um gráfico dos valores da

amplitude (níveis de cinza) do sinal contínuo ao longo do segmento AB da Figura 3(a). As

variações aleatórias são devido a ruído na imagem.

)1,1(..).........2,1()1,1()0,1(

)1,2(..).........2,2()1,2()0,2(

)1,1(..).........2,1()1,1()0,1(

)1,0(..).........2,0()1,0()0,0(

),(

MNfNfNfNf

Mffff

Mffff

Mffff

yxf

Figura 2 – Matriz com NxM elementos

Fonte: Elaborado pelo autor

Page 13: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

23

Para amostrar essa função são tomados pontos igualmente espaçados ao longo da linha

AB, como mostrado na Figura 4(a). A localização de cada amostra é representada pelas

divisões no eixo localizado na parte inferior da figura e as amostras são exibidas como

pequenos quadrados brancos sobrepostos à função, na Figura 4(a). O conjunto desses pontos

discretos representa a função amostrada.

Entretanto, os valores das amostras ainda apresentam variação contínua dentro da

faixa de valores de cinza. Para converter esses valores para o formato digital, os níveis de

cinza também devem ser convertidos (quantizados) para valores discretos. Assim, o lado

direito da Figura 4(a) mostra a escala de cinza dividida em oito níveis discretos, variando do

Figura 4–Amostragem e quantização de uma linha e linha digitalizada

Fonte: GONZALEZ, 2002.

(a) (b)

Figura 3– Imagem contínua e amostragem de uma linha

Fonte: GONZALEZ, 2002.

(a) (b)

Page 14: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

24

preto ao branco. As divisões do eixo vertical indicam o valor específico definido para cada

um dos oito níveis de cinza a serem utilizados para representar as amostras. A definição sobre

qual valor utilizar é feita considerando-se a proximidade vertical da amostra com a divisão da

escala. As amostras digitais resultantes dos processos de amostragem e quantização são

mostradas na Figura 4(b). Se esse processo for repetido linha a linha, igualmente espaçadas,

produz-se uma imagem digital em duas dimensões (GONZALEZ, 2002).

A definição sobre o tamanho da imagem (N x M) e sobre o número de níveis a ser

utilizado no processo de quantização não obedece a nenhum critério prévio, a não ser que

devem ser inteiros e positivos. Entretanto, devido a considerações de hardware nos processos

de amostragem, processamento e armazenamento, o número de níveis de cinza é, tipicamente,

um número inteiro potência de dois. Uma imagem com 256 níveis de cinza (28), possui

profundidade 8 e é chamada uma imagem de 8 bits. (GONZALEZ, 2002).

2.1.2. Interpolação e Reconstrução de imagens

Reconstrução de imagens é o processo de produzir uma superfície de intensidade

contínua a partir de uma imagem digital. O problema de reconstruir uma função definida

continuamente a partir de um conjunto de dados discretos é inevitável, sempre que alguém

necessita manipular dados utilizando informações não presentes de forma explícita

originalmente. Nos dias de hoje, em que se vê um aumento constante na digitalização de

dados e informações para facilitar o armazenamento, processamento, análise e transmissão da

informação, não é difícil encontrar exemplos de aplicação onde esse problema ocorra.

Existem duas grandes categorias de reconstrutores: os interpolantes e os aproximados.

Os interpolantes geram superfícies com intensidades que interceptam os valores dos pontos

amostrados; ao passe que os aproximados geram superfícies com valores de intensidade que

podem ou não interceptar os valores de intensidade dos pontos amostrados

(DODGSON, 1992).

A abordagem mais freqüentemente utilizada para tratá-lo é a utilização da

interpolação, onde uma função é utilizada a fim de complementar uma função discreta nos

pontos onde a informação não está presente (MEIJERING, 2002). Na literatura consultada, o

Page 15: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

25

termo “interpolar” é freqüentemente utilizado com significado equivalente ao termo

“reconstruir”.

Desse modo, serão destacadas a seguir algumas definições do termo “interpolar”, que

ajudarão na compreensão deste trabalho:

a) Interpolar é predizer (ou estimar) o valor da variável em estudo num ponto não amostrado

(LANDIM, 2002);

b) A interpolação é um tipo de processamento de imagens que produz funções contínuas a

partir de pixels discretos (MORI, T., 2007).

Em (BURROUGH, 1986) comenta-se que as funções de interpolação podem ser

definidas como globais ou locais. A função global é dependente de todos os pontos

amostrados, sendo que a alteração de um valor de entrada afeta o mapa inteiro. As funções

locais são definidas para pequenas porções dos mapas, sendo aplicadas sucessivamente até

cobrir toda a área do mesmo. Uma alteração em um valor de entrada afeta apenas o resultado

de um subconjunto. Essas regiões podem ser definidas por raios de influência, ou por

quantidade de amostras vizinhas.

A função sinc, cuja expressão é dada na Equação 1, é uma função global que apresenta

a forma de onda ideal para interpolação no domínio espacial ou do tempo.

A Figura 5 mostra a forma de onda da função sinc.

sinc(x)=

1; para x=0

xoutroqualquerpara;x

xsin

(1)

Page 16: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

26

O problema de utilizar essa função é que ela tem suporte infinito. Com isso ela não

pode ser utilizada em circuitos práticos, apesar de possibilitar a exata reconstrução da imagem

(MEIJERING , 1999). Uma alternativa para seu uso prático seria truncá-la. Contudo caso se

realize simplesmente o “truncamento” da função, os erros introduzidos na interpolação

poderiam resultar em uma imagem com distorções devido ao fenômeno de Gibbs

(MEIJERING, 2000). Distorções devido ao fenômeno de Gibbs causam a introdução de

artefatos com alta freqüência espacial (PRATT, 2001).

A fim de minimizar esse problema e obter-se uma reconstrução aceitável em termos de

custo computacional e precisão matemática, utilizam-se funções com suporte compacto que se

aproximem da função sinc tanto quanto possível. Várias funções implementando

aproximações da função sinc foram então desenvolvidas, o que deu origem aos polinômios

interpoladores piecewise de diversas ordens, como por exemplo, os de ordem zero, bi-linear,

quadrático e cúbico (MORI, T., 2007). Outra forma de se obterem aproximações da função

sinc é multiplicar a função sinc por uma função janela com suporte compacto. Várias janelas

são utilizadas dentre as quais podem ser citadas: Blackman, Hamming, Hanning, Retangular e

Lanczos (MEIJERING,1999, MICCAI, 1999). Nesse caso o valor do pixel interpolado

dependerá então diretamente do polinômio ou da janela utilizada (LANDIM, 2002).

Finalmente, o número de pixels interpolados entre dois pixels originais será utilizado

para definir o “Fator de Interpolação” utilizado neste trabalho. O Fator de Interpolação será

um parâmetro equivalente ao número de pixels interpolados acrescido de uma unidade.

Figura 5– Forma de onda da função sinc

Fonte: Elaborado pelo autor

Page 17: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

27

2.1.3. Computação Reconfigurável

Computação reconfigurável é um modelo de computação importante para a

implementação de circuitos computacionais. Tradicionalmente têm sido realizadas

implementações de circuitos em hardware VLSI (Very Large Scale Integration)

customizados, ASICs (Application-Specific Integrated Circuits), em gate-arrays ou em

softwares para processadores DSPs – (Digital Signal Processors), para microcontroladores,

microprocessadores de propósito geral ou dedicados.

Recentemente, os FPGAs (Field Programmable Gate Array) introduziram uma nova

alternativa para a implementação de circuitos, utilizando características comuns às

implementações de hardware e em software. Sistemas implementados em FPGAs pretendem

aproximar-se do desempenho das soluções implementadas em hardware e/ou da flexibilidade

das soluções implementadas em software (MARTINS, 2003).

A implementação de circuitos em FPGAs levou a uma nova classe de implementação

de circuitos, chamada de circuito reconfigurável. Essas implementações têm como principais

características:

a) Poderem ser modificadas para resolver qualquer problema após a fabricação do circuito

(DEHON, 1999).

b) Serem altamente customizáveis pelo projetista em suas soluções. (DEHON, 1999).

Um Hardware reconfigurável baseado em FPGA possibilita a execução direta de um

algoritmo, uma vez que a lógica reprogramável pode ser reconfigurada um número ilimitado

de vezes, permitindo que um mesmo dispositivo execute diferentes algoritmos

(GOKHLE, 2008).

Os sistemas reconfiguráveis podem ser implementados somente em hardware

reconfigurável, mas podem ser híbridos, implementando parte da solução em hardware

reconfigurável e parte da solução através de software para hardware programável (por

exemplo, processadores ou hardware fixo não programável). Para que sejam desenvolvidas

soluções em hardware reconfigurável são freqüentemente utilizadas as linguagens de

descrição de hardware, como VHDL – (VHSIC - Very High Speed Integrated Circuits; HDL

- Hardware Description Language). Programas escritos nessas linguagens para FPGAs são

compilados usando-se uma ferramenta que gera os bits de configuração para um dispositivo

Page 18: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

28

específico. VHDL é uma linguagem estruturada que oferece a possibilidade de descrever o

hardware, com a possibilidade de que ele seja simulado antes de sua síntese. Dessa forma, as

etapas de validação e verificação são facilitadas, tanto em termos de funcionamento, quanto

em termos de tempos de atraso dos componentes e desempenho, sem a necessidade da

prototipação inicial do hardware (MARTINS, 2003).

Conforme (CHEN, 2002) o maior limitador das implementações em software é que

elas geralmente levam muito tempo para serem processadas. Chen cita como exemplo uma

simulação de leitura em disco rígido, que implementada em software levaria alguns dias. Para

minimizar o tempo de processamento, Chen propõe a realização da implementação do

simulador de leitura em disco rígido utilizando um FPGA Xilinx Virtex E XCV-1000E. Nesse

trabalho ainda é reforçada a idéia de que a utilização de computação reconfigurável em FPGA

é a maneira de se melhorar o desempenho e a flexibilidade de um dispositivo, sem a

necessidade de se ter um “hardware duplicado”. Ele realiza duas formas de reconfiguração:

“reinicialização”, onde são redefinidos os conteúdos das look up table (LUT), e “re-

estruturação”, onde é redefinido o uso das estruturas do FPGA de forma a se conseguir um

melhor uso dos recursos.

A reconfiguração dos FPGAs também pode ser classificada como estática ou

dinâmica. Na reconfiguração estática, o dispositivo é reconfigurado antes de começar a

realizar o processamento dos dados. Nesse tipo de reconfiguração o dispositivo é

primeiramente configurado e mantém seu estado e funcionalidades enquanto essas

características sejam necessárias. Caso se necessite reconfigurá-lo para que realize outra

funcionalidade, o dispositivo deve parar de executar suas operações, ser reconfigurado e,

somente depois, retornado à atividade de computação para executar a nova seqüência de

operações (MARTINS, 2003).

Na reconfiguração dinâmica, por sua vez, o dispositivo não necessita ser parado para

que a nova configuração seja realizada. Ao contrário, realiza-se a reconfiguração apenas de

uma área que não esteja processando nenhum dado, simultaneamente à execução do

processamento. Esse tipo de reconfiguração também é conhecido como on-the-fly (HAUCK,

S.; DEHON, A., 2008).

Page 19: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

29

2.1.4. Dispositivos reconfiguráveis

Um FPGA é um complexo sistema construído em um chip que pode combinar

processadores, memórias, unidade lógica aritmética e lógica reconfigurável

(GOKHLE, 2008). Diferentemente dos microprocessadores um FPGA não é programado com

um conjunto de instruções, mas com a descrição de uma arquitetura de hardware baseada em

componentes básicos. Atualmente dispositivos FPGAs com capacidade equivalente a milhões

de portas lógicas estão disponíveis (MAGANDA, 2005; XILINX, 2008; ALTERA, 2008 ).

A arquitetura de um FPGA varia de fabricante para fabricante, mas tipicamente possui

uma arquitetura interna composta de uma matriz de blocos lógicos configuráveis (CLB-

Configurable Logic Block) rodeado por uma rede de interconexão programável. Essa rede é

formada por blocos de interconexão. Ao redor de todo o circuito existem ainda os blocos de

entrada e saída (IOB- Input Output Block), que também são programáveis e servem como

interface entre a lógica interna do dispositivo e o mundo exterior (MARTINS, 2003).

A Figura 6 mostra a arquitetura de um FPGA da família Virtex II.

Como mostrado na Figura 6 o dispositivo possui blocos de entrada/saída (input/output-

IOB) e blocos lógicos configuráveis (Configurable Logic Blocks -CLBs).

A lógica interna configurável é composta por 4 grandes elementos:

Figura 6 – Arquitetura de um FPGA da família Virtex II

Fonte: Xilinx

Page 20: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

30

a) Configurable Logic Blocks (CLB): fornecem os elementos funcionais para lógica síncrona

e combinacional, incluindo também elementos de armazenamento básicos.

b) Block SelectRAM: são módulos de memória fornecendo 18kbit de elementos de

armazenamento.

c) Multiplier: são multiplicadores dedicados de 18 bit x 18 bit.

d) Digital Clock Manager (DCM): Fornece calibração automática, soluções digitais para

compensação de atrasos (delay) na distribuição do sinal de relógio, multiplicação e divisão

do relógio e ajuste do deslocamento de fase do relógio.

Todos os elementos programáveis, incluindo os recursos de roteamento, são

controlados por valores armazenados em células de memória estática. Esses valores são

carregados nas células de memória durante a configuração e podem ser recarregados para

alterar as funções dos elementos programáveis.

Entre os dispositivos reconfiguráveis comerciais mais utilizados no mundo, destacam-

se os fabricados pelas empresas Xilinx (XILINX, 2008), Altera (ALTERA, 2008), Actel

(ACTEL,2008) e Atmel (ATMEL, 2007).

Como nesta pesquisa serão utilizados um FPGA da família Cyclone II da Altera e a

ferramenta de desenvolvimento Quartus II, disponível no laboratório LSDC do PPGEE, a

estrutura da família Cyclone será detalhada a fim de facilitar a compreensão da solução

proposta, que será apresentada no Capítulo 3.

Essa família de FPGAs foi produzida com vistas à rápida disponibilidade e ao baixo

custo, com base em informações e solicitações dos clientes da Altera. Ela é compatível com o

software Quartus II disponibilizado gratuitamente no site da Altera (www.altera.com).

Segundo informações da própria Altera, o baixo custo e o alto desempenho da família

Cyclone II tornam a sua escolha ideal em diversas aplicações, dentre as quais, o

processamento de imagens.

Sua arquitetura é bidimensional, baseada em linhas e colunas, e possui interconexões

entre blocos lógicos (LABs), blocos de memória e multiplicadores. Possui uma rede global de

relógio permitindo a utilização de até 4 PLLs (Phased Locked Loops). Esses PLLs permitem

uma grande flexibilidade na obtenção de sinais de relógio com freqüências múltiplas ou sub-

múltiplas da freqüência de um sinal original. Além disso, pode operar à freqüência máxima de

260MHz e possui blocos de memória M4K (dual-port, 260 MHz) com até 1,1 Mbits de RAM

disponível, sem redução da disponibilidade lógica. Uma característica interessante e que será

útil nesta pesquisa é a presença de 150 multiplicadores.

Page 21: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

31

A Tabela 1 mostra uma comparação entre os diversos FPGAs da família Cyclone II,

destacando a coluna que mostra as características do dispositivo utilizado nesta pesquisa. São

apresentadas as seguintes características: quantidade de elementos lógicos LEs, blocos RAM,

total de bits da RAM, quantidade de multiplicadores internos e PLLs disponíveis em cada

dispositivo o que facilita a comparação entre eles.

Pode-se observar que o dispositivo EP2C5 é o que apresenta menor capacidade entre

todos dessa família, mas que possui os recursos necessários para o desenvolvimento desta

pesquisa.

A Figura 7 apresenta o mapa de distribuição, em que é mostrada a arquitetura com a

localização dos diversos elementos internos dos FPGAs da família Cyclone II.

O objetivo de mostrar esse mapa de distribuição é permitir localizar os diversos

elementos lógicos utilizados na implementação dentro do mapa de ocupação, que será

mostrado no Capítulo 3. O mapa de ocupação irá mostrar dentro do mapa de distribuição o

local onde se encontram os elementos lógicos utilizados no projeto permitindo uma análise

visual da ocupação dos mesmos.

Características da família de FPGA Cyclone II

Característica EP2C5 EP2C8 EP2C15 EP2C20 EP2C35 EP2C50 EP2C70

LEs 4608 8256 14448 18752 33216 50528 68416

Blocos RAM

M4K (4kbits

mais 512 bits de

paridade)

26 36 52 52 105 129 250

Total de bits da

RAM 119.808 165.888 239.616 239.616 483.840 594.432 1.152.000

Multiplicadores

internos 13 18 26 26 35 86 150

PLLs 2 2 4 4 4 4 4

Tabela 1 – Características da família de FPGA Cyclone II

Fonte: Altera

Page 22: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

32

2.1.5. Linguagem de descrição de hardware – VHDL

A linguagem VHDL deve seu desenvolvimento à necessidade de uma

ferramenta de projeto e documentação para projeto VHSIC, do Departamento de Defesa dos

Estados Unidos na década de 1980. Ela é uma linguagem de descrição de hardware

padronizada, possibilita o intercâmbio de informações referentes ao comportamento de um

circuito entre fabricantes, fornecedores de sistemas e empresas de projetos (AMORE, 2005) .

As duas principais aplicações da VHDL estão relacionadas aos dispositivos lógicos

programáveis (incluindo FPGAs) e ASICs. A linguagem VHDL é adequada para

desenvolvimento e simulação de circuitos. Uma característica que diferencia as linguagens de

descrição de hardware das linguagens de programação seqüencial de computadores é que

nessas, as instruções são processadas seqüencialmente e naquelas, elas são processadas de

forma concorrente (paralela), com exceção de regiões específicas do código. Por isso a

linguagem VHDL é frequentemente chamada de código e não de programa

(PEDRONI, 2004).

Um código em VHDL pode ser escrito usando, basicamente, dois modelos de

descrição: estrutural e comportamental.A descrição estrutural informa a interligação dos

componentes, de forma a estabelecer uma hierarquia no projeto. A complexidade dessas

descrições pode ir de um simples registrador onde são informadas a entrada e a saída, a um

completo processador, contendo a interligação de blocos complexos como memórias,

unidades lógicas aritméticas etc (AMORE, 2005). Já no modelo comportamental, não é

Figura 7 – Arquitetura interna da família Cyclone II

Fonte: Altera

Page 23: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

33

necessário descrever a organização física e topológica do sistema, mas somente o seu

comportamento. Um código que utiliza esse tipo de descrição possui o mesmo formato de um

programa fonte escrito em uma linguagem de programação de alto nível, como C++. Nesse

caso o projetista não necessita profundos conhecimentos de hardware. Geralmente a

possibilidade de mesclar esses dois modelos facilita o desenvolvimento de projetos mais

complexos (AMORE, 2005).

2.2. IMPLEMENTAÇÃO DE FILTROS DE INTERPOLAÇÃO DE IMAGENS UTILIZANDO

COMPUTAÇÃO RECONFIGURÁVEL

A seguir são apresentados alguns trabalhos que utilizaram computação reconfigurável

e/ou FPGA em circuitos que implementam sistemas para a interpolação de imagens.

Marsi (MARSI, 1996) apresenta um algoritmo para interpolação de imagens

preservando as bordas da figura. Sua abordagem baseia-se na observação de que qualquer

imagem no mundo real é derivada de uma imagem com mais alta resolução, sobre a qual se

aplica um filtro passa baixa e a seguir decimação. O filtro passa baixa tem o objetivo de evitar

o aliasing e a decimação, de reduzir a resolução da imagem. Quando uma borda está presente,

a operação de filtragem modifica os valores dos pixels adjacentes a ela de acordo com a

posição da borda na imagem de alta resolução. Com isso, após a decimação, os valores dos

pixels da imagem de baixa resolução carregam informação da posição da borda. Isso torna

possível realizar uma interpolação mais precisa do que uma simples interpolação linear.

Dessa forma, o algoritmo proposto por Marsi realiza uma média não linear dos pixels

adjacentes ao pixel a ser interpolado.

O algoritmo foi implementado em um circuito ASIC devido a limitações dos FPGAs

disponíveis à época. Inicialmente, para maior facilidade, foi descrito o hardware para o caso

unidimensional e depois apresentadas considerações para aplicações em duas dimensões.

O projeto privilegiou o tempo de processamento em relação ao custo final, uma vez

que as possíveis aplicações do algoritmo estão relacionadas à exibição de vídeos, o que

certamente exige alto desempenho.

Para simplificar o projeto e aumentar o desempenho do circuito, todas as operações

foram realizadas utilizando ponto fixo. Todas as entradas e saídas foram quantizadas, como

Page 24: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

34

usualmente é feito, em 256 níveis de intensidade, usando barramentos de 8 bits para a

transmissão dos dados.

O resultado do trabalho foi um circuito de interpolação de imagens que apresentou

resultados superiores aos obtidos com técnicas convencionais tais como os interpoladores

lineares, uma vez que preserva as bordas na imagem interpolada. Foram mostrados os

resultados de simulações em uma e duas dimensões, bem como da implementação em

hardware.

Outro algoritmo para interpolação de imagens com a preservação de bordas,

adaptativo localmente, foi apresentado em (RODRIGUES,L., 2002). No trabalho é citada a

utilidade de aplicação do zoom em imagens, desde as utilizadas para entretenimento até as

utilizadas em análises científicas. Um problema mostrado é o fato de que, quando uma

imagem é interpolada, ela mantém suas características em baixas freqüências, mas atenua as

componentes de altas freqüências, devido ao comportamento dos interpoladores como filtros

passa baixa. O algoritmo proposto em (RODRIGUES,L., 2002) pretende minimizar os efeitos

dessa atenuação em altas freqüências, trabalhando de forma adaptativa localmente, utilizando

detecção de bordas através de análise matemática. Esse algoritmo foi proposto para escala de

cinza e fator de interpolação será sempre igual a 2. Os testes para demonstrar a eficiência do

algoritmo utilizaram a imagem de teste “Lena” e também uma imagem aérea. Foram

realizadas interpolações com técnicas de ordem zero até terceira ordem e os resultados foram

comparados com os obtidos com o algoritmo proposto. Como visualmente era difícil

quantificar as diferenças entre os métodos, foram calculadas a relação sinal ruído (SNR) e a

correlação cruzada entre a imagem original e as imagens interpoladas. Como conclusão final,

os resultados obtidos pelo método de interpolação adaptativo localmente (LAI) estão entre os

melhores no quesito “correlação cruzada”, sendo ainda mais simples de ser implementado e

menos complexo, segundo os autores, quando comparado aos métodos do vizinho mais

próximo, bi-linear, cúbico, cúbico B-spline e Linear. Esses métodos clássicos são detalhados

na literatura básica sobre processamento de imagens (PRATT, 2001 e GONZALEZ, 2002).

Outro trabalho correlato importante é o desenvolvimento da arquitetura de um circuito

reconstrutor de imagens digitais em tempo real que implementa a técnica de reconstrução de

imagens denominada “Reconstrutor Sinc Finito Amostrado Normalizado Bidimensional”

(RSFAN-2D) em (MARTINS, 1998).

Para a implementação foram realizadas algumas otimizações visando a aumentar a

velocidade de execução das operações. Por exemplo, a tarefa de interpolação foi

Page 25: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

35

implementada em cinco estágios. O primeiro estágio realiza todas as multiplicações

necessárias em paralelo e os estágios seguintes implementam as etapas de adição. Os pixels

amostrados também foram armazenados, a fim de evitar a busca constante a esses pixels a

cada novo cálculo de pixels interpolados.

Analisando o circuito reconstrutor como uma caixa preta, observa-se que o fluxo de

dados na saída corresponde exatamente aos pixels da imagem reconstruída, que é formada

pelos pixels amostrados intercalados pelos pixels interpolados. Observa-se, portanto, que a

taxa de pixels reconstruídos na saída é maior que a taxa de pixels amostrados na entrada.

A arquitetura proposta para a operação de reconstrução de imagem possui três

estágios: estágio de armazenamento das amostras da imagem, estágio de interpolação e

estágio de multiplexação, que intercala pixels amostrados e pixels interpolados, de acordo

com o fator de interpolação escolhido, a fim de criar a imagem interpolada.

A arquitetura do circuito foi desenvolvida e implementada em dispositivos

programáveis ALTERA, com a síntese a partir da descrição em VHDL.

Toda a arquitetura proposta foi verificada a partir da implementação correta da técnica

RSFAN 2D. Os ganhos em termos de desempenho, quando comparados com a

implementação em software, também foram apresentados. Outra característica importante a

ser ressaltada é que as otimizações realizadas na arquitetura permitiram que a maior

complexidade computacional da técnica RSFAN 2D perdesse o seu impacto e permitisse a

implementação em tempo real, até mesmo para altas taxas de exibição.

Em (HUDSON, LEHN, ATHANAS, 1998), foi apresentado um dispositivo para

realizar a interpolação de imagens utilizando um dispositivo XC6264 da Xilinx. Esse trabalho

também realiza a interpolação de uma imagem introduzindo novos pixels entre os pixels

existentes, aumentando assim sua resolução. Para reduzir a complexidade computacional,

todas as operações de multiplicação e divisão são realizadas utilizando-se potência de 2, o que

é feito por simples e rápidas operações de deslocamento de bit. Todo o processo de

interpolação utiliza o princípio da separabilidade, onde primeiro é realizada a interpolação dos

pixels nas linhas e então, o resultado dessa interpolação unidimensional é utilizado para

realizar a interpolação dos pixels nas colunas. Ele cita ainda, como vantagem da

independência de cada linha em relação às demais, a possibilidade de ser utilizado o

paralelismo no processamento dessas operações. Para o projeto do dispositivo interpolador de

imagens foram utilizadas ferramentas de desenvolvimento disponíveis e familiares a ele. O

dispositivo desenvolvido permite quaduplicar a resolução de imagens de 128 x 128 pixels,

Page 26: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

36

transformando-as em imagens de 512 x 512 pixels. A imagem original, que é carregada em

um bloco de memória disponível no FPGA utilizado, é lida e o resultado armazenado em

outro bloco de memória interno. A imagem final, após ser interpolada, é armazenada em um

bloco externo de memória. O tempo de processamento para a interpolação das linhas e

colunas é citado como dado importante no resultado final. Algumas reconfigurações

dinâmicas são realizadas pelo dispositivo proposto, reduzindo a utilização de recursos no

FPGA, mas introduzindo um atraso no processamento. Segundo os autores, a definição sobre

utilização de mais recursos ou menor tempo de processamento deve ser observada com

cuidado pelo projetista.

O trabalho (MAGANDA, 2005) propõe uma arquitetura em hardware para

implementação de uma interpolação bicúbica. A arquitetura proposta é aplicada a imagens

monocromáticas e é implementada em um FPGA da Xilinx Virtex-II Pro, codificado

utilizando linguagens VHDL e Handel-C. Foi também utilizada a ferramenta Xilinx ISE para

obter as estatísticas de consumo de recurso.

Nesse trabalho são mostradas as vantagens de se utilizar FPGA no lugar de

implementações em software, tendo sido comparados os desempenhos de algumas

implementações. Como uma das principais vantagens na utilização de circuitos

implementados em FPGA para processamento de imagens, são citadas a sua grande

flexibilidade e sua capacidade de possibilitar a implementação de estruturas paralelas de

processamento, o que aumenta muito o desempenho. O trabalho descreve o fato de que

existem inúmeras técnicas de interpolação que são utilizadas para aumentar ou diminuir o

tamanho de uma imagem, ressaltando as técnicas “Vizinho mais próximo”, bilinear e

bicúbica. Em sua implementação também foi utilizada a representação com ponto fixo. Foram

utilizadas imagens monocromáticas e nos cálculos se utilizaram multiplicadores internos do

FPGA escolhido. O tempo para execução da interpolação, no FPGA proposto, a uma

freqüência de 100MHz, foi 10 vezes menor que o tempo gasto na execução da interpolação

em software, utilizando-se um Pentium 4 a 2,4 GHz.

Page 27: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

37

3. ARQUITETURA DE HARDWARE RECONFIGURÁVEL PARA UM CIRCUITO

INTERPOLADOR DE IMAGEM

Neste capítulo será apresentada uma arquitetura de hardware reconfigurável e

parametrizável para a interpolação de imagens digitais monocromáticas através da utilização

de aproximações da função sinc. Essas aproximações podem ser funções polinomiais

piecewise ou funções que criam uma janela na função sinc. Entretanto qualquer outro tipo de

interpolador baseado em coeficientes poderá ser utilizado. Inicialmente serão apresentados os

requisitos a serem atendidos por essa arquitetura. Em seguida serão mostradas, por meio de

diagramas em blocos, cada um dos blocos que compõem a arquitetura, com detalhamento das

soluções utilizadas em cada bloco. Por fim serão apresentados alguns trechos da programação

em VHDL e da implementação da arquitetura em FPGA, além do mapa de utilização de

recursos de um FPGA da família Cyclone II do fabricante Altera.

3.1. ANÁLISE DOS REQUISITOS A SEREM ATENDIDOS PELA ARQUITETURA PROPOSTA

O primeiro requisito funcional a ser atendido é a possibilidade de interpolação de

imagens monocromáticas estáticas, representadas com profundidade de oito bits por pixel,

utilizando diferentes polinômios piecewise ou filtros que criam uma janela na função sinc.

Analisando diversos trabalhos relacionados à interpolação (MEIJERING/NIESSEN, 1999),

(MEIJERING/KAREL, 1999), (SHAN CHAI, 2006) foi possível verificar que em todos eles

o grau máximo dos polinômios ou filtros utilizados é limitado, uma vez que podem existir

polinômios e filtros de qualquer grau. Vale ressaltar aqui que o grau ou a ordem de um

polinômio ou filtro é igual ao seu termo com mais alto grau. Decidiu-se, dessa forma, limitar

neste trabalho o grau máximo do polinômio ou filtro em três. Contudo, permanece aberta a

possibilidade de alterações futuras para que a arquitetura suporte graus maiores. A limitação

do grau máximo é necessária para definirem-se os recursos lógicos necessários, já que a

quantidade de pixels da imagem original a ser considerada na geração de um pixel interpolado

está diretamente relacionada com a limitação do grau máximo do polinômio ou filtro.

O segundo requisito funcional é que a utilização de filtros ou polinômios distintos não

pode implicar em uma alteração no hardware proposto. Ou seja, o hardware deve ser flexível

a fim de suportar alterações desse tipo, que podem abranger desde mudanças do polinômio ou

Page 28: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

38

tipo de filtro a simples mudanças de grau, ou do fator de interpolação. Portanto, a solução irá

utilizar uma arquitetura de hardware reconfigurável estaticamente, de forma que o dispositivo

primeiramente seja configurado e então mantenha seu estado e funcionalidades, enquanto

essas características forem desejadas. Caso seja necessário reconfigurá-lo para a utilização de

outro polinômio ou tipo de filtro, ou para alterações do grau ou fator de interpolação, o

dispositivo deve parar de executar suas operações, a seguir ser reconfigurado e finalmente

retornar à atividade, executando a nova seqüência de operações. Aqui se optou por utilizar

polinômios de grau zero (Vizinho mais próximo) devido a sua simplicidade de implementação

(MEIJERING/NIESSEN, 1999), de primeiro grau (Linear) por ser o mais

utilizado(MEIJERING/NIESSEN, 1999) e um filtro de terceira ordem que utilize a janela de

Lanczos devido a disponibilidade dos coeficientes e por utilizar quatro pixels na construção

do pixels interpolado. A Equação 2 mostra o cálculo do pixel interpolado segundo Lanczos

O terceiro requisito é que a solução proposta seja independente do fabricante e da

tecnologia do dispositivo lógico programável. Para atender esse requisito, será utilizada na

descrição da arquitetura a linguagem VHDL padrão ou seja não serão utilizadas qualquer

instrução proprietária de algum fabricante. O motivo dessa escolha foi a flexibilidade

oferecida por essa linguagem na descrição do comportamento do hardware de circuitos

eletrônicos digitais. A linguagem suporta diferentes tipos de dados e permite estruturar o

projeto de tal forma que ele possa ser facilmente adaptado para outros ambientes de

desenvolvimento, independentemente da tecnologia e do dispositivo utilizado na

implementação.

3.2. ARQUITETURA PROPOSTA PARA O INTERPOLADOR

A Figura 8 apresenta a arquitetura de hardware proposta para o circuito interpolador

de imagem. Para a realização da interpolação bidimensional será utilizado o Princípio da

Separabilidade de forma que o processamento bidimensional seja desmembrado em dois

processamentos unidimensionais (DODGSON, 1992). Dessa forma, primeiro é realizada a

interpolação em cada uma das linhas (ou colunas). Em seguida, sobre a nova imagem já

interpolada em uma direção, é realizada a interpolação em cada um dos segmentos (colunas

)2()1()()1(

16

1

16

9

16

9

16

1ointerpoladPixel NNNN pppp (2)

Page 29: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

39

ou linhas) na outra direção. Por utilizar menos hardware e aqui, simplificar muito o

processamento, esse método é utilizado em vários trabalhos correlatos, como, por exemplo

(MARSI, 1996), (LEHMANN, 1999) e (SHAN CHAI, 2006).

Na Figura 8, a imagem a ser interpolada é escrita diretamente no Bloco de Memória

endereçado pelo Bloco de Controle. O Bloco de Controle gera todos os sinais de controle e é

responsável pela parametrização da interpolação. Todos os parâmetros relacionadas ao

tamanho dos Blocos de Memória, tipo de coeficientes e fator de interpolação são aqui

inseridas. Aqui também são gerados os sinais que selecionam o Bloco de Memória e definem

o destino dos pixels interpolados para serem utilizados durante o processo de interpolação. O

Bloco de Gerenciamento dos Coeficientes é onde são inseridos todos os valores dos

coeficientes que serão utilizados no processo de interpolação. Podem-se inserir diversos

conjuntos de coeficientes, os quais serão selecionados através do fator de interpolação

inserido no Bloco de Controle. Poderão ser utilizadas N réplicas do conjunto: Blocos de

Memória, Mux de entrada, Blocos de Processamento da Interpolação e Demux de saída,

operando de diversas formas paralelas, caso um aumento do desempenho seja desejado.

Obviamente, isso levará ao aumento na utilização dos recursos lógicos a serem utilizados nas

implementações.

Bloco de Gerenciamento

dos Coeficientes Bloco de

Controle

Bloco de Processamento da

Interpolação

Bloco de

Processamento da

Interpolação

N x Blocos

Mux de

entrada

Mux de

entrada

x N

Demux

de saída

x N

Demux

de saída

Bloco de memória

Bloco de memória

x N Entrada

Saída

Figura 8 – Diagrama em blocos da arquitetura de hardware do circuito interpolador de imagens

Fonte: Elaborado pelo autor

Page 30: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

40

A Figura 9 detalha o diagrama em blocos mostrado na Figura 8, evidenciando os

recursos lógicos para realizar a interpolação de uma imagem, no caso de N(número de

réplicas) igual a um. A interpolação de uma imagem, que é um procedimento bidimensional,

será desmembrada em dois processamentos unidimensionais: inicialmente será interpolada

cada uma de suas linhas, e depois, cada uma das colunas resultantes do processamento sobre

as linhas. O Bloco de Memória é composto pela Memória de Entrada e pela Memória

Intermediária. A primeira armazena a imagem a ser interpolada e a segunda armazena os

dados referentes ao resultado do primeiro processamento unidimensional (interpolação sobre

as linhas). No Bloco de Controle são inseridos todos os parâmetros que irão configurar o

circuito interpolador. O tamanho da Memória de Entrada será utilizado no cálculo do tamanho

da Memória Intermediária, que é utilizada como uma área onde os dados interpolados

horizontalmente são armazenados para serem interpolados verticalmente, de acordo com o

princípio da separabilidade. Essas informações serão utilizadas pelos contadores que

endereçam as memórias. Também é gerado o sinal que informa o tipo da operação no Bloco

de Memória: escrita (no caso de acesso à Memória Intermediária) ou leitura (no caso de

acesso à Memória de Entrada). Deve-se observar que o multiplexador colocado à saída do

Bloco de Memória irá selecionar a origem do pixel a ser interpolado (Memória de Entrada ou

Memória Intermediária, no caso de interpolação, respectivamente, de uma linha ou de uma

coluna). Para realizar corretamente a interpolação, o Bloco de Processamento da Interpolação

recebe do Bloco de Controle o sinal “Tamanho da linha” (ou da coluna) a ser interpolada.

Essa parametrização evita que o último pixel de cada linha (ou coluna) seja interpolado com o

primeiro pixel da linha (ou coluna) seguinte. Após o Bloco de Processamento da Interpolação

receber a informação de que o primeiro pixel lido da memória já está disponível para

processamento, através do sinal “Primeiro pixel da linha”, inicia-se o processo de interpolação

multiplicando os pixels vizinhos a ele pelos respectivos coeficientes. Esses coeficientes são

definidos de acordo com o polinômio ou filtro escolhido e também levam em consideração o

fator de interpolação. A escolha de outro conjunto de coeficientes implicará a necessidade de

se realizar uma reconfiguração estática do circuito interpolador no FPGA. Outro parâmetro a

ser informado ao circuito interpolador é o Fator de interpolação. Esse parâmetro é utilizado

pelo Bloco de Gerenciamento dos Coeficientes para selecionar o conjunto de coeficientes a

serem utilizados no cálculo dos pixels interpolados e também pelo Bloco de Controle para

calcular o tamanho da Memória Intermediária. O Bloco de Processamento da Interpolação

utiliza os coeficientes enviados pelo Bloco de Gerenciamento dos Coeficientes como pesos a

serem multiplicados pelos pixels vizinhos ao pixel amostrado. Finalmente há o

Page 31: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

41

Demultiplexador de saída, que é controlado pelo sinal “Controle do Demux de saída”. O

Demux é responsável por direcionar o fluxo de pixels interpolados para a Memória

Intermediária ou para a saída do circuito de acordo com a fase do processo de interpolação.

Page 32: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

42

Figura 9 – Diagrama em blocos da arquitetura do circuito interpolador

Fonte: Elaborado pelo autor

Bloco de Gerenciamento

dos Coeficientes

C_0

C_1

C_2

C_3

Pixels da imagem a

ser interpolada

Memória

Intermediária

Memória de

Entrada

Fator de

interpolação

Tamanho da

memória

intermediária

Tamanho da

linha ou da

coluna

Primeiro pixel da

linha

Leitura ou escrita

Endereçamento

Endereçamento

Mux da

memória

Multiplicador Somador

Bloco de Processamento

da Interpolação

Pixels da imagem

interpolada nas

linhas

Seleção da

memória

Bloco de Controle

Demux

de saída

Pixels da imagem

interpolada

Bloco de Memória

Controle do

Demux de saída

Tamanho da

memória de

entrada

Page 33: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

43

3.2.1. Características da Arquitetura do interpolador

No escopo desta dissertação, serão desenvolvidos apenas os blocos responsáveis pelo

processamento unidimensional do processo de interpolação e utilizando N=1. Esses blocos,

que compõem a arquitetura do circuito interpolador de imagens, foram destacados em tons de

cinza na Figura 8. Esse recorte deve-se unicamente ao tempo disponível para a conclusão do

mestrado, sem prejuízo da verificação do circuito com relação à sua funcionalidade e ao

atendimento aos requisitos iniciais. Os demais blocos serão incorporados ao circuito

interpolador em trabalhos futuros. A arquitetura responsável pela interpolação unidimensional

é mostrada na Figura 10.

Observa-se que foram desenvolvidos e simulados em FPGA os seguintes blocos:

a) Bloco de Memória de Entrada,

b) Bloco de Controle,

c) Bloco de Gerenciamento dos Coeficientes,

d) Bloco de Processamento da Interpolação unidimensional.

C_0, C_1, C_2, C_3

Bloco de Gerenciamento dos

Coeficientes

Fator de

interpolação Tamanho da

memória

Tamanho

da linha ou

da coluna

Primeiro pixel da

linha

Bloco de Controle

Endereçamento

da memória

Bloco de memória

de Entrada

N x M

Multiplicador Somador

Bloco de Processamento da Interpolação unidimensional

Pixels da imagem

interpolada

Figura 10 – Diagrama em blocos da arquitetura do circuito interpolador

Fonte: Elaborado pelo autor

Page 34: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

44

O Bloco de Memória de Entrada permite a inserção de imagens externas. Esse bloco

não é endereçado para escrita pelo Bloco de Controle, mas apenas para leitura. Ou seja, a

imagem já deve estar inserida na memória para que o circuito possa iniciar o seu

funcionamento.

O Bloco de Controle continua tendo a função de gerar todos os sinais de controle e,

nesta arquitetura para o processamento da interpolação unidimensional, ficou responsável por:

a) endereçar a memória de entrada para leitura dos pixels da imagem;

b) informar ao Bloco de Processamento da Interpolação o tamanho da linha ou da coluna;

c) informar ao Bloco de Processamento da Interpolação o instante em que o primeiro pixel

da linha está disponível para processamento, a fim de determinar o valor do pixel

interpolado;

d) informar ao Bloco de Gerenciamento dos Coeficientes o fator de interpolação.

No Bloco de Gerenciamento dos Coeficientes são inseridos os coeficientes de

diferentes polinômios ou filtros antes do início do processamento da mesma forma que a

imagem é inserida no Bloco de Memória de Entrada.

O último bloco desenvolvido e implementado é o Bloco de Processamento da

Interpolação. Esse bloco realiza as operações de multiplicação e soma necessárias para

calcular os pixels interpolados, alinhando-os para a criação do fluxo de dados seriais na saída.

Com a solução proposta, os pixels interpolados podem sofrer influência de até quatro

pixels vizinhos do mesmo segmento de imagem que pode ser linha ou coluna. Essa

quantidade é configurável por meio da utilização de coeficientes adequados, o que depende do

polinômio ou filtro escolhido. Definindo-se que a posição do pixel corrente seja representada

pela variável N, os quatro pixels vizinhos que podem ser considerados para realização da

interpolação são: p(N-1), p(N), p(N+1), p(N+2), ou seja um pixel antecessor (à esquerda) ao pixel

corrente p(N), o próprio pixel p(N) e dois pixels consecutivos (à direita) do pixel p(N). Um

polinômio ou filtro de primeiro grau utiliza dois pixels vizinhos para realizar a interpolação,

ou seja, os pixels utilizados são: p(N) e p(N+1). Um polinômio ou filtro de segundo grau utiliza

três pixels vizinhos para realizar a interpolação. Nessa implementação, os pixels utilizados

são: p(N-1), p(N) e p(N+1). Já um polinômio ou filtro de terceiro grau utiliza quatro pixels

próximos para realizar a interpolação cujas posições são: p(N-1), p(N), p(N+1) e p(N+2). Todos os

cálculos são realizados com a utilização de ponto fixo. Os valores dos multiplicadores que

Page 35: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

45

irão definir o peso de cada pixel vizinho na construção do pixel interpolado serão

representados com 10 bits, pois são números inteiros variando entre -255, 0 e 256. Os valores

negativos justificam-se porque vários polinômios ou filtros que criam uma janela na função

sinc, mencionada no Capítulo 2, apresentam valores negativos. A inclusão do número 256,

que tornou obrigatória a inclusão de mais um bit, é necessária porque há pontos em que o

coeficiente vale 1. Deve-se ressaltar que o resultado final para o valor calculado do pixel

interpolado está entre 0 e 255, como é usual na representação de imagens monocromáticas,

com oito bits, para fins de observação pelo Sistema Visual Humano. O número de pixels

interpolados a serem inseridos entre dois pixels originais também pode variar entre um e três

pixels, dependendo do fator de interpolação. O tamanho dos segmentos de imagem a serem

interpolados também é um valor parametrizável através da entrada do tamanho da memória e

do tamanho das linhas da memória, que definirão, também, quantos segmentos

unidimensionais (linhas ou colunas) serão interpolados. Como o tempo de processamento está

diretamente ligado ao tamanho das imagens utilizadas, os testes apresentados nesta

dissertação utilizarão na maioria das vezes pequenas porções de imagens, que serão

interpoladas apenas em uma dimensão. A realização de testes com pequenos blocos de

imagens deve-se unicamente ao tempo disponível para a conclusão do projeto e em nada

restringe a sua utilização, ou mesmo altera a validade dos resultados obtidos.

3.2.2. Exemplo do processo de interpolação unidimensional

A Figura 11 mostra o processo de interpolação em um segmento linear de pixels. Entre

cada dois pixels no segmento original, pixel corrente p(N) e pixel consecutivo p(N+1), foi

introduzido um pixel interpolado, com valor igual à média entre os valores dos pixels p(N) e

p(N+1), a fim de que o tamanho do segmento original fosse duplicado. Não cabem aqui detalhes

sobre a forma como essa interpolação foi realizada, uma vez que o objetivo dessa ilustração é

apenas dar maior clareza ao processo e facilitar a compreensão futura do processo de

interpolação realizado pela arquitetura do hardware do circuito interpolador. Vale ressaltar

que, no fluxo de pixels do segmento de imagem interpolado, após o último pixel do segmento

original, devem ser inseridos um ou mais pixels interpolados, dependendo do fator de

interpolação pretendido. Para que isso seja possível são acrescentados pixels “estendido” após

Page 36: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

46

o último pixel do segmento original. Na solução proposta, poderão ser utilizados nenhum, um

ou dois pixels “estendidos”, para fatores de interpolação iguais a 1, 2 ou 3, respectivamente.

No exemplo específico da Figura 11, como o fator de interpolação é dois (deseja-se duplicar o

número de pixels do segmento original), será acrescentado apenas um pixel “estendido”.

3.3. CODIFICAÇÃO DA ARQUITETURA EM VHDL

A linguagem escolhida para descrever, simular e sintetizar a arquitetura de hardware

proposta para o circuito reconfigurável de interpolação de imagens foi o VHDL. O motivo

dessa escolha foi a flexibilidade oferecida por essa linguagem na descrição do comportamento

de hardware de circuitos eletrônicos digitais, uma vez que suporta diferentes tipos de dados e

permite estruturar o projeto de tal forma que ele possa ser facilmente adaptado para outros

ambientes de desenvolvimento, independentemente da tecnologia, do fabricante e do

dispositivo utilizado na implementação. Além disso, a plataforma de desenvolvimento da

Altera tem a capacidade de simular o comportamento de um circuito sob teste com uma

ferramenta de simulação funcional, conhecida como Quartus II, o que possibilita testar

diversas situações antes do projeto final.

Neste trabalho, como o objetivo principal é a proposta de uma arquitetura de hardware

reconfigurável dedicada para a implementação de um circuito interpolador de imagem,

escolheu-se o modelo híbrido comportamental e estrutural, para a descrição do hardware em

VHDL. Também se tomou a precaução de utilizar somente as operações do VHDL que

pudessem ser sintetizadas, a fim de possibilitar sua implementação futura em circuitos reais.

A seguir serão mostrados alguns trechos da programação em VHDL dos blocos constituintes

da arquitetura apresentada na Figura 10.

0 50

0 0 50 Segmento original da imagem com 4 pixels

0 25

50

0

50

0

25

50

Fator de interpolação: 2

Segmento da imagem final, com os 4 pixels

originais e outros 4 interpolados

(O pixel central, em vermelho, não está

errado?

0 25

50

0

50

0

50

Figura 11 – Exemplo de interpolação em um pequeno segmento linear de imagem

Fonte: Elaborado pelo autor

Page 37: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

47

3.3.1. Trecho da programação em VHDL do bloco de Gerenciamento de

coeficientes

A Figura 12 mostra um trecho do código em VHDL do Bloco de Gerenciamento dos

Coeficientes, instanciado como gen_coef_r00, com a definição de suas entradas e saídas. Aqui

se utiliza o sinal de reset geral (nrst) e os sinais utilizados para definir o fator de interpolação

(interp_r) e a posição dos pixels interpolados (pix_pos).

O Bloco de Gerenciamento dos Coeficientes gera como saídas os valores dos

coeficientes que serão utilizados na construção dos pixels interpolados. Considerando-se que

o pixel original corrente encontra-se na posição (N), os pixels originais que podem ser usados

para determinação dos pixels interpolados a serem inseridos entre o pixel original na posição

(N) e o pixel original na posição (N+1) são os pixels nas posições (N-1), (N), (N+1) e (N+2).

Dessa forma, são gerados como saída do Bloco de Gerenciamento dos Coeficientes os

seguintes sinais:

c_0 coeficiente que, no Bloco de Processamento da Interpolação, irá multiplicar o pixel na

posição (N+2),

c_1 coeficiente que, no Bloco de Processamento da Interpolação, irá multiplicar o pixel na

posição (N+1),

Figura 12 – Trecho em VHDL definindo as entradas e saídas do bloco gen_coef_r00.

Fonte: Elaborado pelo autor

ENTITY gen_coef_r00 IS

PORT( --Entradas:

clk_in : IN STD_LOGIC; --Clock

nrst : IN STD_LOGIC; --Reset ativo nível baixo

interp_r : IN INTEGER RANGE 1 TO 4; -- Fator de interpolação

pix_pos : IN INTEGER RANGE 0 TO 3; -- Posição do pixel (0..interp_r -1)

--Saídas

c_0 :OUT INTEGER RANGE -255 TO 256 --coeficiente 0 (256*coeficiente)

c_1 :OUT INTEGER RANGE -255 TO 256 --coeficiente 1 (256*coeficiente)

c_2 :OUT INTEGER RANGE -255 TO 256 --coeficiente 2 (256*coeficiente)

c_3 :OUT INTEGER RANGE -255 TO 256 --coeficiente 3 (256*coeficiente)

);

END gen_coef_r00;

Page 38: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

48

c_2 coeficiente que, no Bloco de Processamento da Interpolação, irá multiplicar o pixel na

posição (N) e

c_3 coeficiente que, no Bloco de Processamento da Interpolação, irá multiplicar o pixel na

posição (N-1).

Poderão ser inseridos no Bloco de Gerenciamento dos Coeficientes todos os conjuntos

de coeficientes que possam ser utilizados pelo circuito interpolador, mantendo-se apenas um

dos conjuntos ativos e comentando-se as linhas referentes aos demais conjuntos. A seleção

dos coeficientes adequados é realizada no processo de reconfiguração estática realizado antes

do início do processo de interpolação.

3.3.2. Trecho da programação em VHDL definindo as constantes que irão gerar

os coeficientes de interpolação

A Figura 13 mostra um trecho do código em VHDL onde são inseridas as constantes

que serão iguais aos coeficientes para a interpolação linear (ou seja, de 1ª ordem), com o fator

de interpolação igual a dois, ou seja, após cada pixel original será inserido um pixel

interpolado a fim de duplicar o tamanho do segmento original.

Essas constantes serão utilizadas para calcular o peso da influência dos pixels vizinhos na

formação do pixel interpolado, de acordo com os coeficientes dos polinômios ou filtros

utilizados. Os índices utilizados na nomenclatura dessas constantes serão explicados a seguir.

---------constantes referentes aos coeficientes para interpolação com razão de interpolação

igual a 2 (Linear)

--------------------------------------------------------------------

CONSTANT c0_20 : INTEGER := 0;

CONSTANT c1_20 : INTEGER := 0;

CONSTANT c2_20 : INTEGER := 256;

CONSTANT c3_20 : INTEGER := 0;

CONSTANT c0_21 : INTEGER := 0;

CONSTANT c1_21 : INTEGER := 128;

CONSTANT c2_21 : INTEGER := 128;

CONSTANT c3_21 : INTEGER := 0;

Grupo 1: Coeficientes para a

repetição do pixel original na

posição (N)

Figura 13 – Trecho em VHDL definindo os valores das constantes do Bloco gen_coef_r00

para interpolação linear com fator de interpolação dois.

Fonte: Elaborado pelo autor

Grupo 2: Coeficientes para a

inserção do pixel interpolado,

calculado como a média entre os

pixels nas posições (N) e (N+1)

Page 39: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

49

Os índices nas constantes utilizam o seguinte padrão: cA_BC

A: pode variar entre zero e três e refere-se à posição do pixel que será multiplicado pelo valor

do coeficiente de interpolação de acordo com a Tabela 2. Ressalte-se que N é a posição do

pixel original corrente.

B: refere-se ao fator de interpolação usado, podendo variar de um a quatro;

C: refere-se à posição onde será inserido o pixel interpolado que utilizar as constantes

definidas aqui. Seu valor pode variar de zero a três, sendo que zero sempre representa o pixel

original, que é repetido na imagem interpolada, e os demais valores representam os pixels

interpolados.

Os coeficientes utilizados para interpolação linear com fator de interpolação 2,

mostrados na Figura 13, são divididos em dois grupos: no primeiro grupo, apenas o

coeficiente c2_20, que tem valor igual a 256, irá contribuir para a determinação do pixel na

saída, uma vez que os outros tem valor igual a zero. Isso significa que o pixel (N) será

repetido na imagem interpolada, uma vez que no Bloco de Processamento da Interpolação,

que receberá como entradas os coeficientes c_0, c_1, c_2 e c_3, o valor calculado para o pixel

será ((256/256)*P(N)). O segundo grupo de coeficientes permitirá a inserção de um pixel

interpolado, cujo valor, calculado pelo Bloco de Processamento da Interpolação, será igual a

((128/256) * P(N) + (128/256) * P(N+1)). Nesse caso, como a interpolação é linear, o pixel

interpolado terá valor em escala de cinza igual à média dos valores dos pixels P(N) e P(N+1).

A Posição

0 N+2

1 N+1

2 N

3 N-1

Tabela 2 – Valores de A para definir a posição do pixel

Fonte: Elaborada pelo autor

Page 40: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

50

3.3.3. Trecho da programação em VHDL para a geração do sinal d_ena pelo

bloco de Controle

Um trecho do código em VHDL que realiza a geração do sinal d_ena pelo Bloco de

Controle instanciado como add_cntr_r00 é mostrado na Figura 14. Esse sinal é utilizado pelo

Bloco de Processamento da Interpolação para o controle do fluxo de pixels e define o instante

onde será inserido o pixel original e os demais pixels interpolados. O sinal d_ena, informa ao

Bloco de Processamento da Interpolação, em lógica positiva, que um dado válido está

disponível e pronto para ser utilizado no processo. Nesse instante é repetido o pixel original.

Quando o sinal d_ena está em nível baixo é inserido um ou mais pixels interpolados, segundo

o fator de interpolação selecionado.

Observa-se que o duty cycle do sinal d_ena depende diretamente do fator de

interpolação, selecionado por meio do sinal interp_r. Aqui foi utilizado um contador auxiliar

chamado pix_pos_cnt, que vai contar de zero até o fator de interpolação menos 1, para variar

o duty cycle do sinal d_ena de acordo com a quantidade de pixels interpolados a serem

inseridos.

Figura 14 – Trecho em VHDL mostrando a geração do sinal d_ena. Fonte: Elaborado pelo autor

Page 41: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

51

3.3.4. Trecho da programação em VHDL do bloco de processamento da

Interpolação

A Figura 15 mostra um trecho do código em VHDL do Bloco de Processamento da

Interpolação instanciado como gen_interp_r00, com a definição de suas entradas e saídas.

Nesse bloco, o sinal d_out corresponde à saída do fluxo de pixels do circuito

interpolador, em que estão presentes tanto os pixels originais quanto os pixels interpolados, já

inseridos corretamente em suas posições, de acordo com o fator de interpolação e utilizando-

se os polinômios ou filtros escolhidos.

3.4. PRINCIPAIS BLOCOS DA ARQUITETURA DO CIRCUITO INTERPOLADOR

A solução implementada em hardware para o circuito interpolador é apresentada a

seguir, detalhando-se cada um dos blocos sintetizados a partir da programação em VHDL e

terminando por mostrar a efetiva utilização de espaço e recursos no FPGA EP2C5F256C6 da

ENTITY gen_interp_r00 IS

PORT (

-- Entradas:

clk_in : IN STD_LOGIC; -- Clock

nrst : IN STD_LOGIC; -- Reset ativo em nível baixo

d_in : IN INTEGER RANGE 0 TO 255; -- Entrada de pixels

d_ena : IN STD_LOGIC; -- Habilitação para novo dado

first_pix : IN STD_LOGIC; -- Identifica o primeiro pixel da linha

c_0 : IN INTEGER RANGE -255 TO 256; --coeficiente 0 Posição(N+2)

c_1 : IN INTEGER RANGE -255 TO 256; --coeficiente 1 Posição(N+1)

c_2 : IN INTEGER RANGE -255 TO 256; --coeficiente 2 Posição(N)

c_3 : IN INTEGER RANGE -255 TO 256; --coeficiente 3 Posição(N-1)

-- Saídas:

d_out : OUT INTEGER RANGE 0 TO 255 -- Saída de pixels da imagem

--reconstruída incluindo a copia dos pixels originais e a inserção dos

--interpolados

);

END gen_interp_r00;

-------------------------------------------------------------------------

Figura 15 – Trecho em VHDL definindo as entrada e saídas do Bloco gen_interp_r00. Fonte: Elaborado pelo autor

Page 42: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

52

família Cyclone da Altera, disponível para uso no LSDC do Programa de Pós Graduação em

Engenharia Elétrica da PUC-Minas (PPGEE).

O FPGA escolhido para implementação da arquitetura do circuito interpolador de

imagem foi o EP2C5F256C6 da família Cyclone II da Altera. O dispositivo EP2C5F256C6 é

o mais simples da família Cyclone II e foi escolhido devido à presença de multiplicadores e

memória interna, além de estar disponível no laboratório do PPGEE.

3.4.1. Bloco de memória de entrada

A Figura 16 mostra a representação do Bloco de Memória de Entrada instanciado,

onde fica armazenada a imagem a ser interpolada. São parâmetros dessa arquitetura o

tamanho total da imagem (linhas x colunas) e o tamanho das linhas. No presente caso, trata-se

de um segmento linear com 64 pixels, representados em níveis de cinza com oito bits cada.

A delimitação do tamanho de cada linha da imagem é um parâmetro configurável no

Bloco de Controle do interpolador, mostrado mais à frente no item 3.4.3. Nos testes

apresentados nesta dissertação, serão utilizados como entradas sinais unidimensionais de até

512 colunas ou sinais bidimensionais com até 256 linhas e no mínimo 8 colunas (pixels).

Contudo, em qualquer situação, a imagem original será interpolada em uma única direção, a

cada vez, já que se trata da implementação da arquitetura do circuito interpolador

unidimensional.

3.4.2. Bloco de gerenciamento dos coeficientes

A Figura 17 mostra o Bloco de Gerenciamento dos coeficientes, instanciado como

gen_coef_r00 .

8 b

its

64

wo

rds

Block type: AUTO

address[5..0]

clock

q[7..0]

pix_in_mem

inst4

Figura 16 – Bloco de Memória de Entrada que armazena a imagem a ser interpolada

Fonte: Elaborado pelo autor

Page 43: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

53

O Bloco de Gerenciamento dos Coeficientes tem uma função extremamente

importante na arquitetura aqui proposta. É nele que são inseridas as constantes referentes aos

coeficientes que serão utilizados para o cálculo dos pixels interpolados.

Os valores dessas constantes, como detalhado no item 3.3.2, são iguais aos valores dos

coeficientes dos polinômios ou filtros, que variam em módulo entre 0 e 1, multiplicados por

256 e arredondados para o inteiro mais próximo. Isso foi necessário porque todos os cálculos

são realizados com inteiros e ponto fixo. Para todas as situações, ou seja, independente da

ordem do polinômio, o Bloco de Gerenciamento dos Coeficientes gera como saídas quatro

coeficientes (c_0, c_1, c_2 e c_3), disponibilizando-os simultaneamente ao Bloco de

Processamento da Interpolação. Sendo assim, nos casos em que nem todos os coeficientes

seriam necessários, como nos processos de interpolação de ordem zero, de primeira ou de

segunda ordem, para os quais seriam usados apenas um, dois ou três coeficientes,

respectivamente, os outros coeficientes deverão ser carregados com valor zero. A

representação dos coeficientes utiliza 10 bits porque a faixa de valores possíveis são números

inteiros que vão de -255 a 256. Foi prevista essa ampla faixa de coeficientes porque valores

negativos são comuns em funções de interpolação polinomiais piecewise ou filtros que criam

uma janela na função sinc. Dessa forma, a princípio não será necessário prever qual função

polinomial ou filtro será utilizado. Contudo, a faixa de valores dos coeficientes pode ser

reduzida caso exista interesse em definir previamente os polinômios ou filtros que criam uma

janela na função sinc. Deve-se lembrar de que a soma dos valores dos pixels vizinhos

multiplicados por seu respectivo peso na construção do pixel interpolado nunca ultrapassa

255, que é o valor máximo da profundidade dos tons de cinza utilizado neste trabalho.

Entretanto, como na arquitetura proposta utiliza-se ponto fixo e os coeficientes nem sempre

são números inteiros, pode ocorrer que o valor do pixel interpolado ultrapasse ligeiramente

255 ou fique menor do que zero. Essa condição foi prevista e por isso foi inserida uma

limitação dos valores máximo e mínimo possíveis para os pixels interpolados.

clk_in

nrst

interp_r[2..0]

pix_pos[1..0]

c_0[9..0]

c_1[9..0]

c_2[9..0]

c_3[9..0]

gen_coef_r00

inst1

Figura 17– Bloco de Gerenciamento dos coeficientes

Fonte: Elaborado pelo autor

Page 44: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

54

Existem ainda outras duas entradas no Bloco de Gerenciamento dos Coeficientes que

merecem destaque: interp_r e pix_pos. É através da entrada interp_r que o bloco é informado

sobre o fator de interpolação pretendido, o qual pode variar de um a quatro, correspondendo à

inserção, respectivamente, de zero a três pixels interpolados entre cada dois pixels do

segmento original. Parece estranho o fator de interpolação poder ter valor igual à unidade,

mas a repetição dos pixels originais sem a inserção de pixels interpolados foi um teste

importante no desenvolvimento da temporização do projeto, tendo sido mantida. A entrada

pix_pos, por sua vez, serve para alinhar corretamente os coeficientes que serão utilizados no

processo de geração dos pixels interpolados.

3.4.3. Bloco de controle

A Figura 18 mostra o Bloco de Controle instanciado como add_cntrl_r00, utilizado

para o controle geral do interpolador.

O Bloco de Controle também necessita da informação relativa ao fator de

interpolação, que é informado através do sinal interp_r. Como o tamanho da imagem pode ser

variável, existe aqui a possibilidade de se informar o tamanho da memória onde se encontra a

imagem a ser interpolada, utilizando-se o sinal rd_mem_size. Esse dado é utilizado para gerar

o sinal rd_add(X..0), que tem por objetivo controlar o endereçamento do Bloco de Memória

de Entrada. No Bloco de Controle mostrado na Figura 18 a memória está definida para ter 64

posições, as quais são endereçadas pelo vetor de bits rd_add(5..0). Contudo, esse parâmetro

pode ser alterado para atender à especificação definida anteriormente, de que a arquitetura

possa implementar a interpolação sobre uma imagem de tamanho variável. Outro parâmetro

configurável é o tamanho das linhas do Bloco de Memória de Entrada através do sinal

lin_mem_size. Aqui é possível definir o formato do Bloco de Memória de Entrada com

diferentes configurações de linhas e colunas. No Bloco de Controle mostrado na Figura 18, o

Figura 18 – Bloco que gera todos os sinais de controle do interpolador

Fonte: Elaborado pelo autor

clk_in nrst interp_r[2..0] rd_mem_size[6..0] lin_mem_size[6..0]

rd_add[5..0]

pix_pos[1..0] d_ena

first_pix

add_cntrl_r00

inst

Page 45: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

55

tamanho máximo da linha é de 128 colunas porque utiliza um vetor de 7 bits, mas esse valor

pode ser reconfigurado. Apesar do nome lin_mem_size, ele também pode servir para informar

o tamanho das colunas, no caso do processamento da interpolação no sentido vertical. A saída

pix_pos serve para temporizar corretamente os coeficientes que serão utilizados no processo

de geração dos pixels interpolados, como descrito no Bloco de Gerenciamento dos

Coeficientes, mostrado no item 3.4.2. A saída first_pix é utilizada para informar ao Bloco de

Processamento da Interpolação, que o pixel que está sendo disponibilizado para

processamento corresponde ao primeiro pixel da linha. Esse sinal evita que o último pixel de

determinada linha seja interpolado com o primeiro pixel da linha seguinte, já que a memória

armazena os valores dos pixels em posições contíguas, uma vez que não há divisões entre

linhas e colunas, como habitualmente a imagem é representada. Por último, o Bloco de

Controle gera o sinal d_ena, que informa ao Bloco de Processamento da Interpolação, em

lógica positiva, que um dado válido está disponível e pronto para ser utilizado no processo.

3.4.4. Bloco de processamento da interpolação

A Figura 19 mostra o Bloco de Processamento da Interpolação, instanciado como

gen_interp_r00, que é o bloco que realiza efetivamente a interpolação e gera o fluxo de pixels

da imagem com maior resolução a partir do processo de interpolação.

Esse bloco utiliza como entradas todos os sinais de controle e variáveis que foram

gerados anteriormente nos blocos mostrados nas seções 3.4.1 a 3.4.3. Os pixels vindos do

Bloco de Memória de Entrada entram nesse bloco através de um barramento de oito bits

clk_in nrst d_in[7..0] d_ena first_pix c_0[9..0] c_1[9..0] c_2[9..0] c_3[9..0]

d_out[7..0]

gen_interp_r00

inst

Figura 19 – Bloco que realiza a interpolação e gera o fluxo de pixels à saída do

interpolador

Fonte: Elaborado pelo autor

Page 46: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

56

d_in(7..0). A quantidade de pixels interpolados a serem calculados depende do fator de

interpolação e é controlado pelo sinal d_ena no Bloco de Processamento da Interpolação. A

variação do duty dycle do sinal d_ena é que irá controlar a inserção de pixels originais e pixels

interpolados em sua posição correta. O sinal first_pix vindo do Bloco de Controle informa o

instante exato da disponibilização do primeiro pixel da linha ou coluna da imagem para o

processamento da interpolação. Como já foi mencionado, isso evita a interpolação do último

pixel de uma linha ou coluna com o primeiro da linha ou coluna seguinte. De acordo com o

polinômio ou filtro escolhido, os pixels recebidos do Bloco de Memória de Entrada são

multiplicados pelos coeficientes recebidos do Bloco de Gerenciamento dos Coeficientes. Os

resultados desses produtos, que refletem a contribuição de cada pixel vizinho para a

determinação do pixel interpolado, são então somados e o resultado dividido por 256 para

produção do valor do pixel interpolado. Um diagrama representando esse processo é mostrado

na Figura 20.

A saída do Bloco de Processamento da Interpolação é um fluxo de pixels seqüencial

(d_out), composto pelos valores dos pixels originais intercalados pelos valores dos pixels

interpolados, de acordo com o fator de interpolação e o polinômio ou filtro utilizado.

Pixels da imagem armazenada na

memória de entrada

Multiplicação pelos

coeficientes

p(N-1)* C_3 p (N) * C_2 p(N+1) * C_1

p(N+2).* C_0

C_3 C_2 C_1 C_0

Coeficientes

[p(N-1)* C_3 + p (N) * C_2 + p(N+1) * C_1 + p(N+2).* C_0]/256

Soma dos resultados das multiplicações

Pixels da imagem

interpolada

Figura 20 – Diagrama em blocos da geração dos pixels interpolados

Fonte: Elaborado pelo autor

Page 47: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

57

3.5. IMPLEMENTAÇÃO DA ARQUITETURA (CODIFICADA EM VHDL) NO FPGA

EP2C5F256C6

A implementação da arquitetura proposta é baseada na utilização de dispositivos

lógicos reconfiguráveis do tipo FPGAs uma vez que demanda reconfiguração após a

fabricação do dispositivo e também flexibilidade. Esses dispositivos lógicos reconfiguráveis

oferecem desempenho comparável com o oferecido por dispositivos de propósito específico

(Application Specific Integrated Circuit - ASIC), integração de mais funções, tal como

processador e memória, reduzido consumo de potência e custos competitivos (MARTINS,C.

A. P. S. 2003).

O FPGA escolhido para implementação da arquitetura do circuito interpolador de

imagem foi o EP2C5F256C6 da família Cyclone II da Altera. O dispositivo EP2C5F256C6 é

o mais simples da família Cyclone II e foi escolhido devido à presença de multiplicadores e

memória interna, além de estar disponível no laboratório do PPGEE.

A família Cyclone II é a evolução da família Cyclone com mais elementos lógicos, mais pinos

de entrada e saída e mais memória mantendo, entretanto preços bastante competitivos com

outros fabricantes. Além disso, seu consumo de potência foi mantido baixo apesar do

aumento de desempenho. Ele possui 4096 elementos lógicos, 119.808 bits de memória RAM,

13 multiplicadores e 2 PLLs.

É mostrado na Figura 21 o mapa de ocupação do FPGA EP2C5F256C6 da família Cyclone da

Altera, quando configurado para realizar o processamento unidimensional da interpolação

sobre uma imagem com 512 bits e fator de interpolação igual a 2. Verifica-se que a área

ocupada é relativamente baixa comparada à quantidade de recursos lógicos disponíveis.

Figura 21 – Mapa de ocupação no dispositivo da família Cyclone II utilizado

Fonte: Elaborado pelo autor

Page 48: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

58

O quadro 1 mostra de maneira quantitativa os recursos efetivamente utilizados no

dispositivo EP2C5F256C6 da família Cyclone da Altera.

Verifica-se aqui, de forma quantitativa, que a utilização de recursos foi muito baixa,

como havia sido constatado visualmente no mapa de ocupação do dispositivo. Um detalhe a

ser ressaltado é que o relatório de compilação, mostrado no Quadro 1, menciona 26

multiplicadores, enquanto havia sido dito anteriormente que este FPGA possuía 13

multiplicadores. A justificativa para isso é que a tabela de ocupação mostra multiplicadores de

9 bits e os multiplicadores citados na documentação do dispositivo referem-se a

multiplicadores de 18 bits. Apesar da pouca ocupação de recursos lógicos, utilizou-se mais da

metade do total de pinos disponíveis. A memória utilizada no exemplo acima representa o

tamanho da imagem de entrada e foi de apenas 512 bits correspondendo a 64 pixels.

Entretanto, um aumento do tamanho da memória pode ser implementado até a capacidade

máxima do dispositivo. Novamente deve-se ressaltar que um dos principais motivos que

justificam a utilização desse dispositivo é a sua existência nos laboratórios do PPGEE, o que

viabilizará desenvolvimentos futuros.

Flow Status Successful - Wed Nov 05 10:13:56 2008

Quartus II Version 8.0 Build 231 07/10/2008 SP 1 SJ Web

Edition

Revision Name interp_1d

Top-level Entity Name interp_1d

Family Cyclone II

Met timing requirements Yes

Total logic elements 177 / 4,608 ( 4 % )

Total combinational functions 144 / 4,608 ( 3 % )

Dedicated logic registers 77 / 4,608 ( 2 % )

Total registers 77

Total pins 86 / 158 ( 54 % )

Total virtual pins 0

Total memory bits 512 / 119,808 ( < 1 % )

Embedded Multiplier 9-bit elements 4 / 26 ( 15 % )

Total PLLs 0 / 2 ( 0 % )

Device EP2C5F256C6

Timing Models Final

Quadro 1 – Recursos utilizados no dispositivo da família Cyclone

Fonte: Elaborado pelo autor

Page 49: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

59

4. RESULTADOS

Neste capítulo é apresentada a verificação funcional e de qualidade da imagem

interpolada da arquitetura do circuito interpolador de imagem proposta no Capítulo 3. Na

Seção 4.1 são apresentados os testes que verificaram o principal bloco da arquitetura proposta

na Seção 3.2.1 que é o Bloco de Processamento da Interpolação. Em um primeiro momento

esse bloco foi verificado isoladamente dos demais blocos da arquitetura apresentada na

Figura 10, utilizando-se um interpolador linear com fatores de interpolação iguais a dois e

três, correspondendo, respectivamente, à inserção de um e dois pixels interpolados entre dois

pixels originais consecutivos.

Na seção 4.2 é apresentada uma série de testes, utilizando todos os demais blocos da

Figura 10, para realizar a interpolação em uma única linha de uma imagem acromática gerada

sinteticamente no Matlab, com variações dos tons de cinza seguindo uma função cossenoidal

de baixa freqüência e, posteriormente, de alta frequência. São mostrados os resultados obtidos

em interpolações de ordem zero (vizinho mais próximo), de primeira ordem (linear) e de

terceira ordem (Lanczos). Esses resultados são apresentados por meio de gráficos gerados no

Matlab, o que permite uma análise visual subjetiva, e também através de medições dos

parâmetros MSE (Mean Square Error) e PSNR (Peak to Signal Noise Ratio), o que possibilita

também uma análise quantitativa. Na primeira fase dos testes, utilizou-se fator de interpolação

igual a dois e, posteriormente, apenas para os coeficientes de Lanczos, foram obtidos

resultados com fator de interpolação igual a quatro.

Por último, foram realizados testes com a imagem real “Fishing Boat”, que é uma das

imagens normalmente utilizadas em trabalhos relacionados a processamento de imagens,

cujos resultados são mostrados na Seção 4.3. Esses testes foram separados em duas fases. A

primeira fase realizou a interpolação bidimensional, com fator de interpolação igual a dois,

sobre uma região da imagem “Fishing Boat”, com dimensão igual a 64 x 16 pixels. Nesse

caso, como a arquitetura proposta para a interpolação bidimensional apresentada na Figura 8

foi implementada somente para N=1 e para uma dimensão, utilizou-se a arquitetura

implementada para a interpolação unidimensional, apresentada na Figura 10, duas vezes

consecutivas: inicialmente para realizar a interpolação sobre as linhas e depois, para realizar a

interpolação sobre as colunas da imagem resultante da interpolação no sentido horizontal. Na

Page 50: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

60

Figura 22 – Diagrama temporal do Bloco de Processamento da Interpolação

utilizando interpolação linear com fator de interpolação igual a dois

Fonte: Elaborado pelo autor

segunda fase dos testes com a imagem “Fishing Boat”, foi realizado um teste da interpolação

linear sobre todas as colunas da imagem.

O objetivo foi aumentar a resolução da imagem, originalmente com 256 x 128 pixels para

uma imagem com 256 x 256 pixels. Esse teste comparou de forma quantitativa os resultados

obtidos na Matlab e aqueles obtidos na simulação do circuito interpolador de imagens.

4.1. TESTES FUNCIONAIS DO BLOCO DE PROCESSAMENTO DA INTERPOLAÇÃO

Os resultados dos testes realizados serão mostrados através do diagrama de simulação

temporal produzido com o ambiente de desenvolvimento Quartus II da Altera, apresentados

nas Figuras 22 e 24.

Como mencionado, na primeira fase dos testes, o Bloco de Processamento da

Interpolação foi verificado isoladamente dos demais blocos componentes da arquitetura. O

principal objetivo foi verificar a estrutura que seria responsável por realizar a interpolação

propriamente dita. Sendo assim, os sinais de entrada, compostos pelos sinais de controle

d_ena e first_pix (Primeiro pixel da linha), os valores dos pixels de entrada d_in e os valores

das constantes c_0, c_1, c_2 e c_3, coeficientes do polinômio, que serão utilizadas para

calcular os pesos a serem atribuídos aos pixels das posições (N+2), (N+1), (N) e (N-1),

respectivamente, foram inseridos diretamente no simulador. Ressalta-se que os valores dos

pesos equivalem aos valores dos coeficientes divididos por 256. O fator de interpolação, por

sua vez, é informado indiretamente ao Bloco de Processamento da Interpolação através do

duty cycle do sinal de controle d-ena. Considerando a definição de duty cycle de um sinal

Page 51: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

61

como sendo a razão entre o instante de tempo em que o sinal permanece em nível lógico alto

durante um período completo e o período do sinal (SEDRA, 2007) definiu-se que se o duty

cycle do sinal d_ena for 50%, 33% ou 25% indicará, respectivamente a utilização de fator de

interpolação igual a 2, 3 ou 4.

Na Figura 22, por exemplo, o duty cycle do sinal d_ena foi de 50% e, portanto, o fator

de interpolação usado foi igual a 2. É necessário observar que os valores instantâneos dos

coeficientes variam segundo o código VHDL da Figura 13.

Conforme se observa na Figura 22, os primeiros testes utilizaram uma seqüência de

linhas de entrada com sete valores de pixels: 60, 90, 120, 150, 180, 150, 120. O sinal de

controle first_pix, quando em nível alto, identifica que o primeiro pixel da linha está

disponível para processamento. Cada linha foi interpolada utilizando-se um interpolador

linear (o que é determinado pelos coeficientes de entrada c_0, c_1, c_2 e c_3) com fator de

interpolação igual a dois (uma vez que o duty-cycle do sinal d_ena é de 50%). Sendo assim, o

fluxo de pixels de saída, mostrado no vetor d-out, corresponde à cópia de cada pixel do sinal

original (localizado na posição (N)), seguido do pixel interpolado (média entre os dados das

posições (N) e (N+1)), para 1 N tamanho da linha. Os valores que representam os pixels da

imagem interpolada começam a ficar disponíveis na saída d_out, seis ciclos de clock após a

identificação do primeiro pixel da linha. Ou seja, o circuito interpolador apresenta uma

latência de seis períodos de clock. A verificação funcional do Bloco de Processamento da

Interpolação mostrou que a seqüência de pixels de saída foi coerente com a seqüência de

pixels de entrada, interpolada através da interpolação linear com fator de interpolação igual a

2, conforme destacado na Figura 23. Nessa figura desconsiderou-se a latência do circuito

interpolador para facilitar a visualização da correspondência entre o fluxo de pixels da entrada

e o fluxo de pixels da saída.

A partir da Figura 23 pode-se comprovar que um pixel interpolado com valor igual a

75 foi inserido entre os dois primeiros pixels adjacentes da entrada, cujos valores são 60 e 90,

respectivamente. O pixel com valor igual a 75 é exatamente igual à média aritmética simples

Figura 23 – Sequência dos pixels na entrada e na saída do Bloco de Processamento da

Interpolação utilizando interpolação linear com fator de interpolação igual a dois.

Fonte: Elaborado pelo autor

Seqüência de pixels na entrada d_in

Seqüência de dados na saída d_out

Page 52: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

62

dos pixels com valores iguais a 60 e 90. Analisando-se a seqüência de pixels na entrada e na

saída, vê-se que o processo se repete, e o fluxo de pixels na saída do Bloco de Processamento

da Interpolação corresponde ao fluxo de pixels na entrada do bloco com a inserção de um

pixel interpolado entre cada dois pixels de entrada consecutivos. Observa-se ainda que a taxa

de pixels na saída (um pixel a cada período de clock), é o dobro da taxa de pixels na entrada.

Outra análise importante é o comportamento do circuito interpolador de imagem ao final de

uma linha. Deve-se observar com cuidado esse ponto, uma vez que os pixels da imagem de

entrada são armazenados na memória de forma seqüencial, ou seja, o primeiro pixel de cada

linha é consecutivo ao último pixel da linha anterior. Dessa forma, o controle de início de

cada linha é feito externamente à memória, através do sinal first_pix. Como o fator de

interpolação é igual a dois, deve ser inserido um pixel interpolado após o último pixel da

linha. No caso do interpolador linear, isso é realizado com a repetição do valor do último

pixel da linha. Contudo, o valor do(s) pixel(s) interpolado(s) após o último pixel original da

linha pode(m) variar de acordo com o tipo de interpolador e com o fator de interpolação

utilizados.

Um novo teste para verificar o funcionamento do Bloco de Processamento da

Interpolação foi utilizando interpolação linear, sobre a mesma seqüência de pixels de entrada,

mas agora com fator de interpolação igual a três, cujo diagrama de simulação temporal está

mostrado na Figura 24. Nessa situação deveriam ser inseridos dois pixels interpolados (pi)

1 i 2, entre os pixels originais (p), localizados nas posições (N), e (N+1), para

1 N tamanho da linha. Os valores dos pixels interpolados (p(i1) e p(i2)) são mostrados nas

Equações 3 e 4.

Observa-se que os pesos dos pixels p(N) e p(N+1) são iguais a 2/3 e 1/3, respectivamente,

para a determinação do pixel interpolado p(i1), mas são iguais a 1/3 e 2/3, respectivamente,

para o cálculo do pixel interpolado p(i2). Uma vez que uma das características da arquitetura é

trabalhar com ponto fixo, esses pesos na prática são informados através da utilização de

coeficientes inteiros (c_1 e c_2) inseridos na codificação VHDL do Bloco de Gerenciamento

)1()()1(3

1

3

2 NNi ppp

)1()()2(3

2

3

1 NNi ppp

(3)

(4)

Page 53: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

63

dos Coeficientes. Esses coeficientes correspondem ao produto dos respectivos pesos por 256,

que então são arredondados para o inteiro mais próximo. O Bloco de Processamento da

Interpolação recebe como sinal de entrada esses coeficientes e executa a divisão por 256, a

fim de calcular o peso dos pixels nas posições (N+1) e (N), respectivamente. Sendo assim,

inicialmente faz-se c_1=0 e c_2=256, o que levará à cópia do pixel localizado na posição (N).

A seguir faz-se c_1=85 e c_2=171 e finalmente, c_1=171 e c_2=85, o que levará à inserção

do primeiro e do segundo pixels interpolados, respectivamente, conforme Equações 3 e 4. O

duty cycle do sinal d_ena foi 33% para temporizar corretamente a inserção dos pixels na

geração do fluxo serial de pixels na saída (d_out).

A partir da Figura 24, observa-se que os pixels na saída d_out começam a aparecer

após oito ciclos de clock. A latência maior do circuito interpolador de imagem com fator de

interpolação igual a três, se comparada ao caso em que o fator de interpolação é igual a dois,

deve-se ao maior número de operações realizadas no primeiro caso. Como pode ser visto na

Figura 4.3 o pixel inicial do sinal de entrada d_in, tem valor igual a 60, e está sincronizado

com a ocorrência do sinal first_pix que indica o início de uma linha. Nesse teste foram

utilizadas linhas compostas por apenas seis pixels e, portanto o último pixel da linha tem valor

igual a 120.

Observa-se no fluxo de dados de saída (d_out) que entre o primeiro pixel da linha e o

seu consecutivo foram inseridos dois pixels interpolados com valores iguais a 69 e 80, em

concordância com o fator de interpolação igual a três e com os coeficientes introduzidos. Um

erro pode ser verificado no valor do primeiro pixel interpolado que deveria ser 70 e foi

calculado como 69. Esse erro representa um percentual de apenas 0,4% do valor de pico do

valor real. A explicação para esse erro vem do fato de que o peso de cada pixel de entrada

para a formação do valor do pixel interpolado corresponde ao resultado da divisão entre os

respectivos coeficientes do interpolador (c_1 e c_2) e 256. Essa operação utiliza ponto fixo e

Figura 24 – Diagrama temporal do Bloco de Processamento da Interpolação

utilizando interpolação linear com fator de interpolação igual a três

Fonte: Elaborado pelo autor

Page 54: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

64

arredonda o resultado para o inteiro mais próximo. Como os coeficientes utilizados, 1/3 e 2/3,

multiplicados por 256 não produzem números inteiros surge o erro acima citado. Outra

observação importante é que, com o fator de interpolação igual a três, a taxa de pixels de

saída, que equivale à freqüência do sinal de clock, é três vezes a taxa de pixels na entrada.

O comportamento do Bloco de Processamento da Interpolação ao final de uma linha

da imagem de entrada também é analisado. A Figura 25 mostra a seqüência dos pixels na

entrada e ao final de uma linha, desconsiderando-se o período de latência.

A partir da Figura 25 é possível observar que após o último pixel da entrada, com

valor igual a 120, são inseridos dois pixels interpolados com esse mesmo valor, atendendo aos

requisitos do fator de interpolação igual a três. A repetição do valor do último pixel por duas

vezes é conseqüência do tipo de interpolação e do número de pixels levado em consideração

para a criação do pixel interpolado. Futuramente a forma de tratamento das bordas da imagem

poderá ser configurável.

4.2. TESTES FUNCIONAIS DO CIRCUITO INTERPOLADOR DE IMAGEM

Após os resultados corretos obtidos nos primeiros testes do Bloco de Processamento

da Interpolação, com interpolação linear, foram planejados novos testes para verificar a

arquitetura completa do circuito interpolador de imagem apresentada na Figura 10 para

realizar a interpolação de pixels em uma linha de imagem, com fator de interpolação igual a

dois, utilizando-se três tipos de interpoladores: Interpolador de ordem zero (vizinho mais

próximo), interpolador de primeira ordem (linear) e interpolador de terceira ordem (Lanczos).

A imagem a ser interpolada foi inserida no Bloco de Memória de Entrada. Os coeficientes,

Seqüência de pixels na entrada d_in

Seqüência de pixels na saída

Figura 25 – Sequência de pixels ao final de uma linha na entrada e na saída do Bloco de

Processamento da Interpolação utilizando interpolação linear com fator de interpolação igual a três.

Fonte: Elaborado pelo autor

Page 55: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

65

correspondendo aos respectivos pesos multiplicados por 256 e arredondados para o inteiro

mais próximo, foram inseridos no Bloco de Gerenciamento de Coeficientes. Todos os sinais

de controle foram gerados automaticamente pelo Bloco de Controle, de acordo com o fator de

interpolação e o tamanho da linha a ser interpolada, que também corresponde, nesse caso, ao

tamanho total da memória.

Não foram realizados testes com polinômios interpoladores de segunda ordem porque

o objetivo aqui era verificar o funcionamento do circuito interpolador de imagem,

reconfigurando-se estaticamente o tipo de interpolador a ser utilizado, bem como o fator de

interpolação. Não é objetivo principal dessa dissertação a comparação visual ou quantitativa

entre diferentes tipos de interpoladores.

A verificação dos resultados da interpolação foi feita de três maneiras diferentes:

a) Análise subjetiva através da inspeção visual, comparando-se a imagem original à imagem

interpolada (KHIEOVONGPHACHANH, 2008,);

b) Análise objetiva, utilizando-se como indicadores o MSE, dado pela Equação 5, e a

correspondente PSNR, dada pela Equação 6, entre a imagem original e a imagem

interpolada (KHIEOVONGPHACHANH, 2008, WEI-YU HAN, 1997);

em que: M é o número de linhas; N é o número de colunas; i, j são as coordenadas da

posição (linha, coluna), x é o pixel na imagem original e é o pixel na imagem

interpolada.

c) Comparação entre os resultados da interpolação realizada no Matlab, utilizando

algoritmos desenvolvidos durante este trabalho, e a interpolação realizada pelo circuito

interpolador de imagem. Para essa comparação foram utilizadas análises subjetivas através

da inspeção visual e quantitativa através da comparação das medições do MSE e da PSNR

das duas imagens interpoladas.

N

j

M

i

jixjixNM

MSE1

2

1

)),(ˆ),((1

(5)

MSEdBPSNR

2255log10)(

(6)

Page 56: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

66

Para a realização dos testes, foram geradas no Matlab duas linhas de imagem com 128

amostras igualmente espaçadas variando segundo uma função cossenoidal com picos nos

valores 0 (preto) e 255(branco), mas com freqüências distintas. Os resultados obtidos nos

cálculos dos valores das amostras foram arredondados para o inteiro mais próximo.

A primeira linha de pixels correspondeu a aproximadamente 1,25 período da função

cossenoidal e nos testes apresentados, será denominada “Linha 1”. A segunda linha de pixels

correspondeu a aproximadamente 12,5 períodos, e nos testes apresentados será denominada

“Linha 2”. Ressalta-se que nesta fase dos testes, os sinais “Linha 1” e “Linha 2” serão

interpolados um de cada vez, utilizando-se separadamente o Circuito Interpolador de Imagens.

A distribuição dessas 128 amostras de cada linha de pixels está mostrada na Figura 26.

A seguir essas duas linhas de imagem foram subamostradas à razão 2:1, ou seja,

tomando-se uma amostra e descartando-se a amostra seguinte. Dessa forma, ao interpolar as

linhas da imagem subamostrada com o uso de interpoladores usando fator de interpolação

igual a dois, a quantidade de amostras pôde ser recuperada. As linhas sub-amostradas são

mostradas na Figura 27.

Deve-se ressaltar que no procedimento de subamostrar esses sinais foi obedecido o

Teorema da Amostragem de Nyquist (PRATT, W. 2001), uma vez que a freqüência de

amostragem foi superior à freqüência do sinal. Nesse sentido, um interpolador ideal deve ser

0 32 64 96 1280

64

128

192

256Linha 1

0 32 64 96 1280

64

128

192

256Linha 2

Figura 26 – Sinais “Linha 1” e “Linha 2” com 128 amostras

Fonte: Elaborado pelo autor

Page 57: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

67

capaz de reconstruir o sinal original com 128 amostras sem nenhuma distorção. Observa-se no

sinal “Linha 2” que os pontos de mínimo do sinal original não fazem parte do sinal

subamostrado, o que causa uma aparente distorção no sinal. Utilizando o circuito interpolador

de imagens, será possível verificar a eficiência de alguns interpoladores usuais para a

interpolação desses sinais.

4.2.1. Interpolador de ordem zero: vizinho mais próximo

Para a utilização da interpolação de ordem zero é necessário inicialmente carregar no

Bloco de Gerenciamento dos Coeficientes os valores que serão utilizados pelo circuito

interpolador de imagem no cálculo dos pesos para esse tipo de interpolação. Como a

interpolação é realizada sobre o sinal unidimensional, subamostrado, o tamanho da linha de

pixels de entrada é igual a 64. Portanto definiu-se no Bloco de Memória de entrada o tamanho

de 64 bytes para o armazenamento dos pixels de entrada do Bloco de Processamento da

Interpolação. A Figura 28 mostra o resultado da simulação temporal da interpolação do sinal

“Linha 1”.

Figura 27 – Sinais “Linha 1” e “Linha 2” subamostrados com 64 amostras

Fonte: Elaborado pelo autor

Page 58: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

68

Nesse diagrama o sinal rd_mem_size é enviado pelo Bloco de Controle ao contador

que endereça a memória de entrada informando o tamanho do Bloco de Memória de Entrada.

O sinal lin_mem_size é enviado ao Bloco de Processamento da Interpolação, para permitir a

correta operação na interpolação do último pixel da linha, impedindo que ele seja interpolado

com o pixel da linha seguinte.

O sinal interp_r (Fator de interpolação) é enviado pelo Bloco de Controle para o Bloco de

Gerenciamento dos Coeficientes a fim de selecionar corretamente os valores a serem

utilizados no cálculo dos pesos. Os pixels de entrada aparecem no sinal d_mem e os pixels de

saída no sinal d_out, que representam, respectivamente, a entrada de dados e a saída do Bloco

de Processamento da Interpolação. Na entrada, o valor do primeiro pixel (255) é repetido até

que o Bloco de Processamento da Interpolação receba a informação de que ele está estável na

entrada do Bloco de Processamento da Interpolação, através do sinal first_pix. Inicialmente

deve-se observar a latência de seis ciclos de clock entre a liberação do primeiro pixel para

processamento, representada pela passagem de nível lógico alto para nível lógico baixo do

sinal first_pix, e o primeiro pixel válido na saída d_out. Esse primeiro pixel corresponde à

cópia do primeiro pixel do sinal de entrada. A partir desse instante observa-se na Figura 28

que os pixels na saída correspondem à interpolação dos pixels da entrada utilizando fator de

interpolação dois e o método do vizinho mais próximo. Um detalhe importante a ser

observado é que a taxa de pixels na saída d_out é dobro da taxa de pixels na entrada d_mem

apesar de visualmente parecer na Figura 28 que elas são iguais. Isto é, a cada pulso de clock,

um pixel é inserido no fluxo de pixels da saída (seja ele um pixel pertencente à imagem

original ou a um pixel interpolado), mas a leitura de um pixel da imagem original no Bloco de

Figura 28 –Diagrama temporal da interpolação do sinal “Linha 1” utilizando interpolador

de ordem zero e fator de interpolação igual a 2.

Fonte: Elaborado pelo autor

Page 59: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

69

Memória de Entrada ocorre somente a cada dois ciclos de clock do circuito. Deve-se lembrar

que o duty cycle do sinal d_ena está diretamente relacionado ao fator de interpolação e, no

teste em questão, ele é igual a 50%, o que representa fator de interpolação igual a 2.

Para verificar o funcionamento do circuito interpolador de imagem, o sinal à saída do

Bloco de Processamento da Interpolação, já com 128 amostras, foi comparado ao sinal

“Linha 1” original (com 128 amostras gerado no Matlab). A Figura 29 mostra o sinal

“Linha 1” original e sobreposto ao sinal “Linha 1” interpolado.

As amostras originais são representadas por um pequeno círculo e as amostras do sinal

interpolado são representadas com um x. Observa-se que o sinal interpolado corresponde à

repetição de cada amostra do sinal original subamostrado, acompanhado do pixel interpolado

que, nesse caso, é a repetição do vizinho mais próximo (pixel à esquerda da posição onde é

inserido o pixel interpolado).

Após a finalização dos testes de interpolação do sinal “Linha 1”, procederam-se os

testes de interpolação do sinal “Linha 2”. Para isso, foram carregadas no Bloco de Memória

de Entrada as amostras do sinal “Linha 2”, também subamostrado, correspondendo a 64

pontos. O resultado da simulação temporal da interpolação do sinal “Linha 2” é mostrado na

Figura 30.

Figura 29 – Sinal “Linha 1” original (o) e sinal “Linha 1” interpolado (x) correspondente

utilizando interpolador de ordem zero e fator de interpolação igual a 2.

Fonte: Elaborado pelo autor

Page 60: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

70

Verifica-se aqui, mais uma vez, que os resultados à saída do circuito interpolador

apresentam-se conforme o esperado, uma vez que o fluxo de pixels na saída sempre apresenta

o pixel original seguido do pixel interpolado (repetição do valor adjacente à esquerda).

Aqui também se observa uma latência de seis ciclos de clock; idêntica à observada na

interpolação do sinal “Linha 1”. Isso ocorre porque o fator de interpolação é o mesmo e o

tempo de processamento da interpolação é o mesmo em ambos os casos.

Finalmente o sinal interpolado à saída foi comparado, utilizando o Matlab, ao sinal

original com 128 amostras. A Figura 31 mostra as amostras do sinal original sobrepostas às

amostras do sinal subamostrado interpolado.

Figura 30 – Diagrama temporal da interpolação do sinal “Linha 2” utilizando interpolador

de ordem zero e fator de interpolação igual a 2.

Fonte: Elaborado pelo autor

Figura 31 – Sinal “Linha 2” original (o) e Sinal “Linha 2” interpolado (x) correspondente

utilizando interpolador de ordem zero e fator de interpolação igual a 2.

Fonte: Elaborado pelo autor

Page 61: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

71

Da mesma forma que na Figura 29, as amostras originais são representadas por um

pequeno círculo e as amostras do sinal interpolado por um x.

Nos resultados apresentados nas Figuras 29 e 31, relativos à utilização de um

interpolador de ordem zero, observa-se, a partir de inspeção visual, uma distorção do sinal

sub-amostrado interpolado em relação ao sinal original. Essa distorção levou a um MSE igual

a 62,86, correspondendo a uma PSNR igual a 69,42dB para o sinal “Linha 1” interpolado e a

um MSE igual a 1550,90, correspondendo a uma PSNR igual a 37,36dB para o sinal “Linha

2” interpolado.

Foram realizadas ainda as interpolações, utilizando o vizinho mais próximo e com

fator de interpolação dois, dos sinais “Linha 1” e “Linha 2”, subamostrados, utilizando

programa desenvolvido no Matlab. Os resultados de MSE e PSNR foram exatamente os

mesmos, uma vez que, nesse caso, não é realizado nenhum cálculo para determinação do pixel

interpolado.

4.2.2. Testes com um interpolador de primeira ordem: Linear

Neste teste foram utilizados como entrada os mesmos sinais “Linha 1” e “Linha 2”

subamostrados conforme mostrados na Figura 27. Para alterar o tipo de interpolação é

necessária apenas a alteração dos valores dos coeficientes no Bloco de Gerenciamento dos

Coeficientes, de forma que o interpolador realize a interpolação linear. Foi mantido neste teste

o fator de interpolação igual a 2, bem como o tamanho da linha igual e o tamanho do Bloco de

Memória de Entrada iguais a 64.

O diagrama temporal com o resultado da simulação é mostrado na Figura 32.

Pode-se ver que a latência de seis ciclos de clock permanece, pois a quantidade de

operações realizadas para calcular os pixels na saída não dependem do tipo de interpolação a

ser realizada, e sim do fator de interpolação. Verifica-se também que o sinal d_out

corresponde à repetição dos pixels de entrada intercalados pelos pixels interpolados, cujos

valores agora correspondem à média dos valores dos pixels originais adjacentes, presentes no

sinal de entrada d_mem.

Uma das verificações efetuadas foi a comparação entre o sinal interpolado gerado na saída do

interpolador e o sinal “Linha 1” original, com 128 amostras, gerado no Matlab.

Page 62: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

72

O gráfico da Figura 33 mostra as amostras do sinal original, representadas por um

pequeno círculo, e do sinal interpolado, representadas com um “x”.

Observa-se visualmente que os pixels interpolados aproximaram-se bastante dos pixels

presentes no sinal original. Como já era esperado a interpolação linear apresentou melhores

resultados na reconstrução do sinal “Linha 1”, quando comparada à interpolação utilizando o

método do vizinho mais próximo, uma vez que o pixel interpolado é a média aritmética

simples entre os dois pixels adjacentes.

Figura 32 – Diagrama temporal da interpolação do sinal “Linha 1” utilizando interpolador

de primeira ordem e fator de interpolação igual a 2.

Fonte: Elaborado pelo autor

Figura 33 – Sinal “Linha 1” original (o) e Sinal “Linha 1” interpolado (x) correspondente,

utilizando interpolador de primeira ordem e fator de interpolação igual a 2.

Fonte: Elaborado pelo autor

Page 63: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

73

O mesmo teste anteriormente descrito para a interpolação do sinal “Linha 1” foi feito

para o sinal “Linha 2” e o resultado da simulação temporal é mostrado na Figura 34.

Verifica-se que após a latência de seis ciclos de clock os pixels válidos surgem na

saída d_out. Vale ressaltar que o primeiro pixel na entrada d_mem não se altera, ou seja,

nenhum pixel novo é lido, até que o sinal de controle first_pix comute de nível lógico alto

para nível lógico baixo. Ressalta-se ainda que um novo pixel na saída ocorre a cada ciclo de

clock (50ns na simulação realizada), ao passo que um novo pixel de entrada é lido a cada dois

ciclos de clock (100ns na simulação realizada). Pode-se observar que na saída d_out foi

inserido um pixel interpolado entre cada dois pixels originais. O valor do pixel interpolado

corresponde à média aritmética simples dos pixels originais adjacentes truncado na parte

inteira.

O sinal interpolado gerado na saída do interpolador foi então comparado ao sinal

“Linha 2”, original com 128 amostras, gerado no Matlab. O gráfico da Figura 35 mostra as

amostras do sinal original, representadas por um pequeno círculo e do sinal interpolado,

representadas com um “x”.

É possível observar que à saída do circuito interpolador ocorreram pixels interpolados

bastante distintos dos pixels presentes no sinal original. Isso ocorreu porque o interpolador de

primeira ordem não foi capaz de reconstruir sem erros as 128 amostras do sinal original

“Linha 2” a partir do sinal subamostrado, em que não estavam presentes nenhum dos pixels

com valor nulo, conforme apresentado na Figura 31. Ressalte-se, contudo que os erros não são

unicamente devidos à implementação em hardware, mas principalmente, à natureza do

Figura 34 – Diagrama temporal da interpolação do sinal “Linha 2” utilizando interpolador

de primeira ordem e fator de interpolação igual a 2.

Fonte: Elaborado pelo autor

Page 64: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

74

algoritmo de interpolação linear. Esse tipo de interpolação só seria capaz de calcular os

valores de amostras interpoladas sem erro caso o sinal de entrada fosse linear.

Como era esperado, nos resultados apresentados nas Figuras 33 e 35, relativos à

utilização de um interpolador de primeira ordem para gerar 128 amostras a partir de sinais

subamostrados com 64 amostras, observa-se, a partir de inspeção visual que as amostras

interpoladas à saída do circuito aproximaram-se mais das amostras do sinal original no caso

do sinal “Linha 1” (baixa freqüência), do que no caso do sinal “Linha 2” (alta freqüência).

Essa diferença na qualidade do interpolador linear pode ser quantificada através dos cálculos

do MSE e da PSNR. Para o sinal “Linha 1” obteve-se um MSE igual a 0,59, correspondendo a

uma PSNR igual a 116,17dB e para o sinal interpolado “Linha 2” obteve-se um MSE igual a

178,20, correspondendo a uma PSNR igual a 59,00dB.

O Erro Médio Quadrático, que corresponde à média dos erros existentes entre os

pixels interpolados, calculados a partir das amostras do sinal subamostrado com 64 amostras,

e os pixels do sinal original, com 128 amostras, deve-se, como já mencionado, a duas origens

Figura 35 – Sinal “Linha 2” original (o) e Sinal “Linha 2” interpolado (x) correspondente,

utilizando interpolador de primeira ordem e fator de interpolação igual a 2.

Fonte: Elaborado pelo autor

Page 65: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

75

distintas: primeiro à própria natureza do algoritmo de interpolação e segundo, às limitações da

implementação em hardware, como por exemplo, a limitação do número de bits para a

representação das grandezas envolvidas no processo. Para a compreensão do que representam

as perdas de implementação, foram realizadas simulações no Matlab com interpoladores

lineares usando fator de interpolação igual a 2 para processar os sinais subamostrados

“Linha 1” e “Linha 2”. Como o Matlab processa em ponto flutuante, nesse caso não ocorrem

perdas de implementação, diferentemente do circuito interpolador, que processa em ponto

fixo e só trabalha, nesta implementação, com grandezas inteiras. Os resultados obtidos com a

simulação do algoritmo de interpolação linear no Matlab foram os seguintes:

MSE igual a 0,48 (correspondendo a uma PSNR igual a 118,23dB) na interpolação do

sinal “Linha 1” e um MSE igual a 179,61 (correspondendo a uma PSNR igual a 58,92dB) na

interpolação do sinal “Linha 2”.

4.2.3. Testes com um interpolador de terceira ordem: Lanczos

Como último teste para verificar o circuito interpolador de imagem carregaram-se no

Bloco de Gerenciamento dos Coeficientes as constantes que seriam utilizadas para o cálculo

dos pesos de acordo com o filtro com janela de Lanczos. Esse interpolador é de terceira

ordem, ou seja, para calcular o valor de um dado interpolado, considera o efeito de quatro

outros dados originais adjacentes. Os pixels originais considerados são: pixel(N-1); pixel(N);

pixel(N+1) e pixel(N+2), em que N é a posição do pixel corrente, sabendo-se que o(s) pixel(s)

interpolado(s) será(ão) inserido(s) entre os pixels das posições (N) e (N+1). Nos testes,

também foi utilizado um fator de interpolação igual a 2. A simulação temporal do circuito,

mostrada na Figura 36, utilizou como entrada o sinal “Linha 1” apresentado na Figura 27a.

Com o fator de interpolação igual a dois, apenas um pixel interpolado será inserido

entre cada dois pixels originais do sinal subamostrado. De acordo com os coeficientes de

Lanczos esse pixel interpolado Pi terá seu valor calculado com base na Equação 7:

)2()1()()1(

16

1

16

9

16

9

16

1ointerpoladPixel NNNN pppp (7)

Page 66: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

76

Assim como no caso do interpolador de ordem zero e do interpolador linear, o circuito

apresentou uma latência de seis períodos de clock, contados entre o instante em que os pixels

estavam disponíveis e válidos para o processamento na entrada d_mem e o instante em que os

pixels referentes ao sinal interpolado começam a ser gerados na saída (d_out).

O sinal interpolado gerado na saída do interpolador foi então comparado ao sinal

“Linha 1”, original com 128 amostras, gerado no Matlab. O gráfico mostrando as amostras do

sinal original e do sinal interpolado é mostrado na Figura 37. As amostras originais são

representadas por um pequeno círculo e as amostras do sinal interpolado são representadas

com um x.

Figura 37 – Sinal “Linha 1” original (o) e Sinal “Linha 1” interpolado (x) correspondente,

utilizando interpolador de terceira ordem e fator de interpolação igual a 2.

Fonte: Elaborado pelo autor

Figura 36 – Diagrama temporal da interpolação do sinal “Linha 1” utilizando interpolador

de terceira ordem e fator de interpolação igual a 2.

Fonte: Elaborado pelo autor

Page 67: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

77

Observa-se visualmente que praticamente não existe erro entre a amostra do sinal original e a

amostra do sinal interpolado.

A seguir, os mesmos testes foram realizados utilizando-se como entrada o sinal “Linha

2” subamostrado com 64 amostras, apresentado na Figura 4.6b. Nesse caso, o resultado da

simulação temporal do circuito interpolador utilizando os coeficientes de Lanczos é mostrado

na Figura 38.

O sinal interpolado gerado na saída do interpolador foi então comparado ao sinal

Linha 2, original com 128 amostras, gerado no Matlab. O gráfico da Figura 39 apresenta as

amostras do sinal original, representadas por um pequeno círculo, e do sinal interpolado

representadas com um “x”. Nos resultados apresentados nas Figuras 37 e 39, relativos à

utilização de um interpolador de terceira ordem, observa-se a partir de inspeção visual que

ambos os sinais, “Linha 1” e “Linha 2”, foram reconstruídos aproximando-se dos sinais

originais. Essa observação pode ser quantificada através dos cálculos do MSE e da PSNR.

Para o sinal Linha 1 obteve-se um MSE igual a 0,45, correspondendo a uma PSNR igual a

118,74dB e para o sinal interpolado Linha 2 obteve-se um MSE igual a 45,79,

correspondendo a uma PSNR igual a 72,58dB. Pela análise destes resultados constata-se que

para o sinal Linha 1 os resultados do interpolador linear e de Lanczos aproximam-se bastante

(o segundo apresentou um ganho de cerca de 2,6dB). Já para o sinal Linha 2 o interpolador de

terceira ordem Lanczos apresenta muito melhores resultados (ganho em torno de 19,6dB)

como pode ser constatado pela análise subjetiva dos sinais.

Figura 38 – Diagrama temporal da interpolação do sinal “Linha 1” utilizando interpolador

de terceira ordem e fator de interpolação igual a 2.

Fonte: Elaborado pelo autor

Page 68: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

78

A seguir foram realizadas as interpolações utilizando o interpolador de terceira ordem

segundo o filtro de janelamento de Lanczos com fator de interpolação dois para

processamento dos sinais “Linha 1” e “Linha 2” subamostrados apresentados na Figura 67,

utilizando um algoritmo desenvolvido no Matlab. Obviamente, foram encontradas diferenças

entre os pixels interpolados determinados pelo circuito interpolador e os pixels interpolados

calculados pelo Matlab, uma vez que o circuito processa apenas inteiros e não utiliza ponto

flutuante, ao contrário do Matalab. Os resultados de MSE e PSNR foram então calculados

obtendo-se um MSE igual a 0,37 correspondendo a uma PSNR igual a 120,89dB para a

interpolação do sinal “Linha 1”, e um MSE igual a 44,83 correspondendo a uma PSNR igual a

72,80dB para a interpolação do sinal “Linha 2”. Verifica-se que o erro introduzido pela

utilização de ponto fixo é bastante pequeno face à simplificação introduzida nos cálculos e,

por conseqüência, à otimização de tempo e recursos no processamento.

Observa-se visualmente que, comparando-se o interpolador de terceira ordem às duas

técnicas de interpolação anteriormente testadas, que são o interpolador de ordem zero e o

interpolador linear, o interpolador de terceira ordem, que utiliza os coeficientes de Lanczos,

apresenta melhores resultados, gerando pixels interpolados com valores mais próximos dos

Figura 39 -Sinal “Linha 2” original (o) e Sinal “Linha 2” interpolado (x) correspondente,

utilizando interpolador de terceira ordem e fator de interpolação igual a 2.

Fonte: Elaborado pelo autor

Page 69: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

79

valores do sinal original, com 128 amostras. A razão para isso é que esse interpolador é o que

mais se aproxima, dentre os implementados, da função de interpolação ideal, que é a função

sinc.

Deve-se salientar, mais uma vez, que não é objetivo deste trabalho comparar diversos

métodos e/ou polinômios de interpolação, mas os dados obtidos além de comprovarem o

funcionamento do circuito interpolador de imagem proposto, ainda permitem realizar essa

análise comparativa como pode ser visto na Tabela 3.

Sinal Linha 1 Linha 2

Interpolador FPGA MATLAB FPGA MATLAB

Ordem zero (vizinho

mais próximo)

MSE 62,86 62,86 1550,90 1550,90

PSNR (dB) 69,42 69,42 37,36 37,36

Primeira ordem

(linear)

MSE 0,59 0,48 178,20 179,61

PSNR (dB) 116,17 118,23 59,00 58,92

Terceira ordem

(Lanczos)

MSE 0,45 0,37 45,79 44,83

PSNR (dB) 118,74 120,89 72,58 72,80

4.3. TESTES COM UMA IMAGEM REAL

Após os bons resultados dos testes da primeira fase, com o Bloco de Processamento da

Interpolação, e posteriormente, com os testes do circuito interpolador de imagem trabalhando

com sinais unidimensionais, realizaram-se novos testes utilizando-se uma imagem real. A

imagem escolhida foi a imagem acromática “Fishing boat”, mostrada na Figura 40, imagem

clássica e bastante conhecida por quem trabalha no processamento digital de imagens.

Tabela 3 – Tabela comparativa dos resultados quantitativos obtidos

Fonte: Elaborada pelo autor

Page 70: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

80

É importante ressaltar, contudo, que será usado o circuito interpolador para sinais

unidimensionais, cuja arquitetura de hardware reconfigurável foi apresentada na Figura 10.

Valendo-se do Princípio da Separabilidade, serão processadas primeiro as colunas da imagem

“Fishing boat” e posteriormente, serão processadas as linhas resultantes do processamento no

sentido vertical.

4.3.1. Teste com interpolação em duas dimensões sobre bloco da imagem

Na imagem “Fishing boat”, inicialmente foi escolhido um pequeno bloco composto

por 32 linhas e 16 colunas, totalizando 512 pixels ou 512 bytes, uma vez que cada pixel da

imagem é codificado utilizando 8 bits. Esse bloco, a partir de agora denominado “bloco

original”, foi então subamostrado tanto verticalmente quanto horizontalmente à razão 2:1, ou

seja, tomando-se uma amostra e descartando-se a amostra seguinte. Dessa forma, passou a ter

apenas 16 linhas e 8 colunas.

Inicialmente realizou-se a interpolação sobre as colunas da imagem e depois, sobre as

linhas da imagem já interpolada no sentido vertical. A interpolação utilizou os coeficientes de

Lanczos com fator de interpolação igual a dois. Isso produziu um bloco interpolado com

dimensões iguais às do bloco original.

Figura 40 – Imagem Fishing boat utilizada nos testes com imagens reais.

(Fonte: Signal and Image Processing Institute at the University of Southern California).

Page 71: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

81

Os pixels da saída do circuito interpolador de imagens foram comparados com os

pixels do bloco original para o cálculo do valor de MSE=159,01. Esse erro corresponde a uma

PSNR de 60,14dB.

Um trecho da memória contendo parte do bloco de imagem com os pixels originais é

mostrado na Tabela 4 e, com os pixels interpolados, na Tabela 5.

162 163 163 161 157 167 159 166 166 169 150 103 88 139 169 163

167 156 167 162 158 158 168 159 161 172 154 111 76 172 161 170

164 158 158 168 157 156 161 171 152 174 176 123 100 170 166 169

163 156 159 163 157 157 163 163 162 184 165 138 111 165 167 169

157 168 159 160 159 163 164 163 170 181 168 152 142 149 158 159

160 163 159 161 163 167 165 172 171 173 161 171 158 147 147 145

163 159 158 161 166 160 172 171 176 180 173 170 155 158 138 134

163 164 161 156 171 168 175 170 176 190 176 162 158 147 137 127

161 167 158 164 166 173 175 167 180 193 159 164 151 146 133 129

160 167 158 169 159 183 163 180 170 177 157 152 151 142 143 127

Os valores marcados em cinza representam os pixels originais que foram mantidos após a

realização da subamostragem do bloco de imagem original.

162 162 163 159 157 157 159 163 166 162 150 112 88 124 169 174

163 161 160 157 156 157 159 158 157 164 163 122 91 124 168 172

164 161 158 156 157 159 161 155 152 168 176 135 100 128 166 170

160 159 158 156 157 159 162 160 159 169 173 144 120 138 163 165

157 158 159 158 159 161 164 167 170 171 168 153 142 148 158 159

159 158 158 159 162 165 168 170 173 173 170 160 151 148 147 147

163 160 158 161 166 169 172 174 176 175 173 164 155 145 138 136

162 159 157 161 167 171 175 179 180 174 167 161 155 144 135 133

161 159 158 161 166 170 175 179 180 170 159 154 151 141 133 131

161 158 157 158 161 162 163 164 164 155 147 142 138 131 126 124

Nesse teste não foi realizada uma comparação com os resultados obtidos no Matlab uma vez

que, devido ao curto tempo disponível, não foi desenvolvido um algoritmo para realizar a

interpolação utilizando os coeficientes de Lanczos. Além disso, mais uma vez ressaltamos

que, o objetivo dos testes é verificar o funcionamento do circuito interpolador de imagens e a

comparação com os resultados obtidos no Matlab não é necessária em todas as situações

testadas.

Tabela 4 – Valores dos pixels no bloco original

Tabela 5 – Valores dos pixels no bloco de imagem após aplicar a interpolação

Fonte: Elaborada pelo autor

Fonte: Elaborada pelo autor

Page 72: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

82

4.3.2. Teste com interpolação linear unidimensional sobre uma imagem

Como último teste para verificar o circuito interpolador de imagem foi utilizada a

imagem “Fishing boat” completa, ou seja, com 256 linhas por 256 colunas. Essa imagem foi

sub-amostrada em suas colunas à razão de 2:1, transformando-se em uma imagem com 256

linhas e 128 colunas. Os valores dos níveis de cinza dos pixels que compõem essa imagem

foram inseridos no Bloco de Memória de Entrada do circuito interpolador de imagem, a fim

de que fosse realizada uma interpolação linear sobre as colunas da imagem subamostrada,

com fator de interpolação igual a dois. Nesse teste utilizou-se a interpolação linear porque os

resultados do circuito interpolador de imagens serão comparados com os resultados obtidos

através da aplicação do algoritmo desenvolvido no Matlab para realização da interpolação

linear. A mesma imagem subamostrada foi carregada no Matlab a fim de que tivesse suas

colunas interpoladas com fator de interpolação igual a dois, utilizando-se o algoritmo do

interpolador linear desenvolvido no próprio ambiente Matlab.

Após realizadas as interpolações, ambas as imagens, a primeira gerada pelo circuito

interpolador e a segunda gerada pelo Matlab, voltaram a ter 256 linhas e 256 colunas. Os

valores dos níveis de cinza de cada pixel das imagens interpoladas pelo Matlab e pelo circuito

interpolador de imagem simulado no FPGA foram comparados através do cálculo do valor do

MSE e da PSNR, conforme apresenta a Tabela 6.

Comparando-se os resultados obtidos através do Matlab com os resultados obtidos

através da simulação do circuito interpolador de imagens com hardware reconfigurável

verificam-se valores de MSE e PSNR praticamente iguais.

Interpolação Matlab Circuito

interpolador

MSE 160,60 160,55

PSNR (dB) 60,04 60,04

Tabela 6 – Comparação do MSE e da PSNR das imagens com as colunas interpoladas

Fonte: Elaborada pelo autor

Page 73: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

83

As imagens obtidas através da interpolação do Matlab e utilizando o circuito

interpolador de imagem são mostradas na Figura 41 apenas para permitir uma análise visual

subjetiva.

O histograma das duas imagens é mostrado na Figura 42 onde se confirma a

similaridade entre as imagens interpoladas.

Figura 42 – Histograma das imagens boat interpoladas no circuito interpolador de

imagens com hardware reconfigurável e o Matlab.

Fonte: Elaborado pelo autor

Figura 41 – Imagens com as colunas interpoladas utilizando o circuito interpolador de imagem com

hardware reconfigurável (a) e o Matlab (b),com fator de interpolação dois e interpolador linear

Fonte: Elaborado pelo autor

Page 74: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

84

4.4. CONSIDERAÇÕES FINAIS

Todos os testes realizados, desde o teste inicial do Bloco de Processamento da

Interpolação operando dissociado dos demais blocos da arquitetura, até o teste final com uma

imagem real, permitem afirmar que o circuito interpolador de imagem com arquitetura de

hardware reconfigurável atende aos requisitos de reconfigurabilidade e flexibilidade,

funcionando de acordo com o planejado. Foi introduzida na solução final a parametrização do

tamanho do Bloco de Memória de Entrada e do tamanho da linha da imagem, o que permite

configurar diferentes formatos de imagem na entrada do circuito.

A arquitetura reconfigurável através da alteração dos coeficientes a serem utilizados na

interpolação torna o hardware bastante flexível e ágil para realizar interpolações utilizando

coeficientes de diferentes polinômios ou filtros que criam uma janela na função sinc. Uma das

qualidades do circuito é que um mesmo hardware é utilizado para realizar diferentes tipos de

interpolação independentemente da ordem do polinômio ou filtro do qual são extraídos os

coeficientes. Além disso, o tempo de processamento varia unicamente com o fator de

interpolação escolhido e, uma vez que esse parâmetro mantém-se inalterado, a latência para o

início do fluxo com os pixels interpolados inseridos entre os pixels do sinal de entrada, à saída

do circuito, permanece inalterada para diferentes polinômios ou filtros que criam uma janela

na função sinc.

A solução adotada neste projeto utiliza 177 elementos lógicos, 77 registradores e 4

multiplicadores do FPGA escolhido. Também possibilita sua implementação em um circuito

onde duas ou mais linhas da imagem a ser interpolada poderiam ser processadas

simultaneamente utilizando processamento paralelo e reduzindo o tempo necessário para se

obter a imagem interpolada na saída. Deve-se aqui salientar que qualquer interpolador de até

terceira ordem pode ser implementado na arquitetura de hardware reconfigurável

desenvolvida. A limitação imposta pelas características do projeto refere-se a utilização de

operações com números inteiros e ponto fixo.

Page 75: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

85

5. CONCLUSÕES

Este capítulo inicialmente apresenta uma discussão dos resultados obtidos neste

trabalho, comentando-se o alcance dos objetivos e metas traçadas inicialmente e realizando-se

uma comparação com alguns trabalhos relacionados. Serão apresentadas também as principais

contribuições desta dissertação em relação a outros projetos de interpoladores mostrados no

Capítulo 2 e por fim, serão listados alguns possíveis trabalhos futuros.

5.1. DISCUSSÃO DOS RESULTADOS

Este trabalho teve como objetivo o desenvolvimento da arquitetura de hardware

reconfigurável de um circuito de interpolação de imagens digitais utilizando hardware

reconfigurável estaticamente e implementada em FPGA. Essa arquitetura foi proposta a fim

de possibilitar a realização de interpolação em uma imagem com diversos tipos de polinômios

piecewise ou filtros que criam uma janela na função sinc através de reconfiguração do

hardware. O desenvolvimento da arquitetura utilizou, para fins de simplificação e sem perda

nenhuma de qualidade, o Princípio da Separabilidade. Segundo esse princípio, dois

processamentos unidimensionais, primeiro no sentido vertical e por último no sentido

horizontal, ou vice-versa, podem ser executados consecutivamente para produzir, ao final, a

interpolação bidimensional.

Dessa forma, uma arquitetura simplificada, que realiza a interpolação unidimensional,

foi implementada em FPGA. Todos os blocos que compõem essa arquitetura foram

codificados em VHDL e apresentados, sob alguns aspectos considerados importantes, no

Capítulo 3, em que se destacou o Bloco de Processamento da Interpolação, que é aquele

responsável pelo processamento do algoritmo de interpolação propriamente dito. Nesse

capítulo foi mostrado como devem se comportar os diversos blocos que compõem a

arquitetura, apresentando também uma visão geral da solução final implementada.

A implementação de parametrização para o tamanho da memória de entrada, onde fica

armazenada a imagem a ser interpolada não estava prevista inicialmente. Contudo, o

parâmetro “Tamanho da memória” foi introduzido no Bloco de Memória de Entrada, de

forma que uma imagem de qualquer tamanho possa ser interpolada, bastando para isso utilizar

memória com capacidade adequada e alterar o valor desse parâmetro. Foi introduzido ainda o

Page 76: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

86

parâmetro “Tamanho da linha” da imagem a ser interpolada, o que também não estava

previsto, dando maior flexibilidade ao circuito.

O principal bloco da arquitetura é o Bloco de Processamento da Interpolação,

responsável pelo processamento do algoritmo de interpolação propriamente dito. No

Capítulo 4, foram apresentados testes para verificar o funcionamento desse bloco

isoladamente, bem como em associação aos demais blocos que compõem a arquitetura do

Circuito Interpolador.

O requisito principal da arquitetura proposta, que é a possibilidade de reconfiguração

estática, também foi alcançado e pode ser realizada simplesmente alterando-se os coeficientes

que serão utilizados nos cálculos dos valores dos pixels interpolados, diretamente no Bloco de

Gerenciamento dos Coeficientes e realizando-se a geração de um novo bitstream.

Portanto, com a arquitetura proposta, é possível realizar a interpolação de sinais

unidimensionais (ou de imagens que possuem apenas uma única linha), bem como de sinais

bidimensionais, utilizando-se o circuito inicialmente para interpolar colunas (ou linhas) e por

último, interpolar linhas (ou colunas) resultantes da interpolação anterior. O grau máximo do

interpolador foi definido em três para que fosse possível limitar os recursos lógicos

necessários e tornar factível a implementação em FPGA.

Assim, considerando-se a arquitetura do circuito interpolador reconfigurável proposta

e projetada neste trabalho, apresentada em detalhes no Capítulo 3 e ainda, os resultados

obtidos através da simulação temporal do circuito apresentados no Capítulo 4, pode-se afirmar

que os objetivos e metas propostas foram alcançados e até superados em alguns momentos.

O trabalho que mais se aproximou da arquitetura proposta nesta dissertação foi a

arquitetura desenvolvida em (MARTINS, 1998) que apresentou um circuito reconstrutor de

imagens utilizando uma nova técnica chamada RSFAN-2D. Nesse trabalho a imagem

interpolada também é composta por pixels originais e interpolados e os cálculos de

multiplicação e adição são realizados separadamente. O trabalho, apesar de utilizar as técnicas

de paralelismo de operações, não desenvolveu técnicas de reconfiguração do hardware o que

o tornou específico para esta técnica de reconstrução. Na arquitetura proposta nesta

dissertação, a flexibilidade proporcionada pela reconfiguração apresenta-se como principal

diferença e vantagem.

O trabalho apresentado em (RODRIGUES, 2002), preocupa-se em tratar de forma

diferenciada as bordas da figura a fim de melhorar suas características em alta freqüência

quando a figura é interpolada. A semelhança entre esse trabalho e o aqui proposto limita-se às

Page 77: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

87

técnicas utilizadas para verificação da qualidade das imagens interpoladas. Também foram

utilizados os métodos de inspeção visual e medição de parâmetros quantitativos.

Por último, o trabalho apresentado em (MAGANDA, 2005), assemelha-se ao dessa

dissertação por realizar a interpolação, segundo a técnica da interpolação bicúbica, de uma

imagem monocromática utilizando ponto fixo em todas as operações. Também foram

utilizados os multiplicadores disponíveis no FPGA. O trabalho foi desenvolvido utilizando a

plataforma de desenvolvimento da Xilinx e permite a reconfiguração estática do fator de

interpolação. A arquitetura aqui proposta, além de permitir a reconfiguração do fator de

interpolação, também permite a reconfiguração da técnica de interpolação a ser utilizada

proporcionando uma maior flexibilidade ao circuito.

5.2. PRINCIPAIS CONTRIBUIÇÕES

As principais contribuições desta dissertação são:

a) Proposta e desenvolvimento da arquitetura de um circuito com hardware reconfigurável

estaticamente para realizar a interpolação de imagens digitais com diferentes filtros que

criam uma janela na função sinc ou polinômios piecewise de interpolação de imagens,

possibilitando um aumento na flexibilidade do circuito digital;

b) Simulação e implementação do circuito que realiza a interpolação de imagens em FPGA

utilizando linguagem de programação VHDL, no ambiente de simulação Quartus II, da

Altera;

c) Análise dos resultados obtidos na imagem interpolada de forma subjetiva e qualitativa o

que permitiu quantificar a qualidade das imagens interpoladas pelo circuito;

d) Comparações com trabalhos correlatos mostrando vantagens e características adicionais;

e) Preparação e submissão de artigos em congressos e periódicos relacionados à área de

pesquisa.

Page 78: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

88

5.3. TRABALHOS FUTUROS

Esta pesquisa abre a possibilidade de realização de diversos trabalhos futuros na área

de interpolação de imagens digitais. Dentre os possíveis trabalhos futuros agora vislumbrados

destacam-se:

a) Análise do impacto dos tempos de reconfiguração no desempenho computacional da

arquitetura de hardware reconfigurável do circuito interpolador de imagens digitais;

b) Aumento do grau máximo do interpolador uma vez que existem recursos disponíveis no

FPGA para isso;

c) Implementação completa do circuito interpolador bidimensional previsto no diagrama em

blocos da Figura 8;

d) Desenvolvimento de interface que permita a armazenagem da imagem interpolada em

memória externa ao FPGA;

e) Desenvolvimento de um sub-sistema que permita a leitura direta da imagem a ser

interpolada a partir de um dispositivo de armazenamento, como um disco rígido, uma

mídia óptica ou uma memória flash;

f) Desenvolvimento de um sub-sistema que permita a exibição direta da imagem interpolada

em um dispositivo de exibição de imagens como uma tela de computador.

Page 79: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

89

REFERÊNCIAS

AMORE, Robert d’. VHDL: descrição e síntese de circuitos digitais. Rio de Janeiro: LTC,

2005.

ALTERA. Cyclone II FPGAs at Cost That Rivals ASICs.

Disponível em http://www.altera.com/devices/fpga/cyclone2/cy2-index.jsp. Acesso em: 01 de

outubro, 2008.

CHEN, J.; MOON,J.; BAZARGAN,K. A reconfigurable FPGA-based readback signal

generator for hard drive read channel simulator. Proceedings of the 39th annual Design

Automation Conference. New York, v.24, n.3, p. 349-354, june 2002.

DEHON, A.; WAWRZYNEK, J. Reconfigurable Computing: What, Why and Implications

for Design Automation. Proceedings 36th Design Automation Conference. New York,

v.35, n.1, p. 610-615, 1999.

DODGSON, N.A. Image Resampling. Technical Report. Cambridge, U.K, n.261, p. 1-76,

aug. 1992.

DODGSON, N.A. Quadratic Interpolation for Image Resampling. IEEE Transactions on

Image Processing, Cambridge, U.K , v.6, n. 9, p. 1322-1326, sept. 1997

GOKHALE, M. et al. Hardware Technologies for High-Performance Data-Intensive

Computing. Washington , v.41, n.4, p.60-68, IEEE Computer Society, 2008

GONZALEZ, R.C.;WOODS, R.E. Digital image processing. 2.ed. Pearson Education, 2002.

HAUCK, S.; DEHON, A. Reconfigurable Computing: The Theory and Practice of

FPGA-Based Computing. 1 ed. Burlington, MA, Elsevier, 2008.

HUDSON, R.D; LEHN, D.I; ATHANAS, P.M. A Run-Time Reconfigurable Engine for

Image Interpolation. IEEE Symposium on FPGAs for Custom Computing Machines.

Proceedings , Napa Valley, CA , USA, p.88-95, apr,1998.

JÄHNE, Bernd. Digital image processing. 5.ed, New York, Springer, 2002.

KHIEOVONGPHACHANH, Vimontha; HAMAMOTO, Kazuhiko Kondo Shozo. Study on

Image Quality for Medical Ultrasonic Echo Image Compression by Wavelet Transform.

International Symposium on Communications and Information Technologies, Lao,

p. 160-165, oct, 2008.

LANDIM, P. M. B. Introdução à Confecção de Mapas pelo Software Surfer. Texto didático

08. Laboratório de geomatemática, Rio Claro: UNESP, p. 22, 2002.

LEHMANN, T.M; GÖNNER, C; SPITZER, K. SURVEY: Interpolation Methods in Medical

Image Processing. IEEE Transactions on Medical imaging, Germany,v. 18, n. 11, nov.

1999.

Page 80: SUMÁRIO · 2.1.4.Dispositivos reconfiguráveis ... Esta pesquisa trata especificamente da exibição de imagens digitais, que é a etapa responsável por transformar uma imagem digital

90

MAGANDA, Marco A.N.; ESTRADA, Miguel O.A. Real-Time FPGA-based Architecture for

Bicubic Interpolation: An Application for Digital image Scaling. IEEE- Proceedings of the

2005 International Conference on Reconfigurable Computing and FPGAs, Puebla City,

p.8-15, sept. 2005.

MARSI, S; CARRATO, S; RAMPONI. G. VLSI Implementation of a non linear image

interpolation filter. IEEE Transactions on Consumer Electronics, Trieste, v. 42, n. 3, p.

721-728, aug. 1996.

MARTINS, Carlos A.P.S. Subsistema de Exibição de Imagens Digitais com

Desacoplamento de Resolução –SEID-DR. Tese de doutorado apresentada à Universidade

de São Paulo, São Paulo,1998.

MARTINS, Carlos A. P. S et al. Computação Reconfigurável: conceitos, tendências e

aplicações. XXII Jornada de Atualização em Informática (JAI). 22. ed. Campinas:

Sociedade Brasileira de Computação, 2003. v. XXII, cap. 6 p. 339-388.

MEIJERING, Erik H. W. et al. Quantitative Comparison of Sinc-Approximating Kernels for

Medical Image Interpolations. Lecture Notes in Computer Science, Berlin, v.1679, p. 210-

217, sept.1999.

MEIJERING, Erik H. W.; ZUIDERVELD, J. Karel; VIERGEVER, Max A. Image

reconstruction by Convolution with Symmmetrical Piecewise nth-Order Polinomial Kernerl.

IEEE Transactions on imaging processing, Utrecht , v. 8, n. 2, p. 192-201, feb. 1999.

MEIJERING, Erik H. Spline interpolation in mediacal imaging: Comparasion with other

convolution-based approaches. Signal Processing X: Theories and Apllications-

Proceedings of EUSIPCO, Tampere, Finland ,v. IV, p. 1089-1996, sept. 2000.

PEDRONI, Volney A. Circuit design with VHDL. USA-MA: MIT Press, 2004.

PRATT, W. Digital image processing. 3.ed. USA: John Wiley and sons inc, 2001.

RODRIGUES, Leízza; BORGES, Díbio L.; GONÇALVES, Luiz M. A Locally Adaptive

Edge-preserving Algorithm for Image Interpolation. Proceedings of the XV Brazilian

Symposium on Computer Graphics and Image Processing (SIBGRAPI’02), Fortaleza,

Brasil, p.300-305, oct. 2002.

SEDRA, Adel S. SMITH, Kenneth C. Microeletrônica. 5. ed. Brasil: Pearson Education,

p. 752-753, 2007.

SHAN, Chai et al. Robustness of a Perceptually Lossless Medical Image Coder: Interpolation.

International Symposium on Intelligent Signal Processing and Communication Systems

(ISPACS), Yonago, Japan, p.931-934, dec.2006.

HAN, Wei-Yu; LIN, JA-Chen. Minimum-maximum exclusive mean filter to remove impulse

noise from highly corrupted images. Electronics letters, v. 33, n. 2. p.124-125, jan. 1997.

XILINX. Product Support & Documentation.

Disponível em http://www.xilinx.com/support/index.htm#nav=sd-nav-link-156334&tab=tab-

sd. Acesso em: 10 de março, 2008.