Projeto de uma Arquitetura Dedicada à Compressão de Imagens no Padrão JPEG2000

Tamanho: px
Começar a partir da página:

Download "Projeto de uma Arquitetura Dedicada à Compressão de Imagens no Padrão JPEG2000"

Transcrição

1 UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA PROGRAMA DE PÓS-GRADUAÇÃO EM COMPUTAÇÃO SANDRO VILELA DA SILVA Projeto de uma Arquitetura Dedicada à Compressão de Imagens no Padrão JPEG2000 Dissertação apresentada como requisito parcial para a obtenção do grau de Mestre em Ciência da Computação Prof. Dr. Sergio Bampi Orientador Porto Alegre, novembro de 2005.

2 CIP CATALOGAÇÃO NA PUBLICAÇÃO Silva, Sandro Vilela da Arquiteturas de Processadores Dedicados à Compressão de Imagens no Padrão JPEG2000 / Sandro Vilela da Silva Porto Alegre: Programa de Pós-Graduação em Computação, f.:il. Dissertação (mestrado) Universidade Federal do Rio Grande do Sul. Programa de Pós-Graduação em Computação. Porto Alegre, BR RS, Orientador: Sergio Bampi. 1. JPEG Compressão de Imagens 3. Transformada Wavelet Discreta. I. Bampi, Sergio. II. Título. UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL Reitor: Prof. José Carlos Ferraz Hennemann Vice-Reitor: Prof. Pedro Cezar Dutra Fonseca Pró-Reitora de Pós-Graduação: Profa. Valquíria Linck Bassani Diretor do Instituto de Informática: Prof. Philippe Olivier Alexandre Navaux Coordenador do PPGC: Prof. Flávio Rech Wagner Bibliotecária-Chefe do Instituto de Informática: Beatriz Regina Bastos Haro

3 AGRADECIMENTOS Ao término deste trabalho, quero prestar o meu agradecimento a todas as pessoas, que colaboraram direta ou indiretamente neste trabalho. Inicialmente quero agradecer ao Centro Federal de Educação Tecnológica de Pelotas (CEFET-RS) por me proporcionar a oportunidade de desenvolver este trabalho em tempo integral. Ao Intituto de Informática da Universidade Federal do Rio Grande do Sul por me aceitar dentro de seu quadro discente. Ao CNPQ e seu programa nacional de microeletrônica, sem o qual esta caminhada teria sido mais difícil. Aos meus colegas do curso de Eletrônica do CEFET-RS por me apoiarem no desenvolvimento deste trabalho. Aos meus amigos e parentes, que me incentivaram nesta jornada. Aos professores do PPGC por sua dedicação e incentivo. Aos novos amigos que conheci no GME, pelo companheirismo criado durante todo este tempo e que tiveram contribuição fundamental neste trabalho. Ao meu orientador, prof Sérgio Bampi, que inspirou e me ajudou a trilhar todo o caminho para a realização deste trabalho. Aos meus pais, Francisco, que foi a inspiração para toda a minha caminhada e Ceci por me ajudar a enxergar o mundo de outras maneiras. À minha filha Nathalie, por me permitir ver a beleza do mundo. Ao meu filho Lorenzzo, que me trouxe muitas alegrias durante o mestrado. À minha esposa e grande companheira Mara, que durante todo o tempo que esteve a meu lado sempre me apoiou em todas as realizações, trazendo felicidade, carinho e amor para a minha vida. E a todas as pessoas que, de alguma forma, contribuíram para a minha formação e que, portanto, indiretamente, contribuiram para o sucesso deste trabalho.

4 SUMÁRIO LISTA DE ABREVIATURAS E SIGLAS... 6 LISTA DE SÍMBOLOS... 9 LISTA DE FIGURAS LISTA DE TABELAS RESUMO ABSTRACT INTRODUÇÃO COMPRESSÃO DE IMAGENS Amostragem do Sinal Sistema Visual Humano Classificação das imagens Redundância em imagens Métodos de Compressão sem perdas Métodos de Compressão com perdas Padrões para Compressão de imagens Padrão JPEG Padrão JPEG ELEMENTOS PARA A COMPRESSÃO DE IMAGENS SEGUNDO O PADRÃO JPEG Transformadas aplicadas no processamento de imagens Transformada Wavelet Quantização Codificação Aritmética Codificação Aritmética Binária QM-Coder ARQUITETURAS PARA A DWT DE UMA DIMENSÃO Banco de filtros RPA Arquiteturas para a DWT de uma dimensão Arquiteturas de filtros paralelos... 56

5 4.3.2 Arquiteturas de Arranjos Sistólicos Arquiteturas Comerciais ARQUITETURA DO COMPRESSOR DE IMAGENS COM PERDAS Implementação da Transformada Wavelet Discreta Banco de filtros Lifting D-DWT Quantização Implementação do codificador de entropia BPC - Bit-Plane Coding BAC - Binary Aritmetic Coding Implementação do Compressor de Imagens CONCLUSÕES E TRABALHOS FUTUROS REFERÊNCIAS ANEXO FORMATOS COMUNS PARA ARQUIVOS GRÁFICOS E IMAGENS

6 LISTA DE ABREVIATURAS E SIGLAS AMA ASIC BAC BCP Bitmap CCD CCITT CUP DCT 1D-DCT 2D-DCT DFT DMA DWT 1D-DWT 2D-DWT EAB EBCOT FDCT FFT FIR Adder - Multiplier - Adder Application Specific Integrated Circuit ou Circuito Integrado de Aplicação Específica Binary Arithmetic Coding ou Codificação Aritmética Binária Bit-Plane Coding ou Codificação de plano de bits mapa de bits charge-coupled device International Telegraph and Telephone Consultative Committee CleanUp Pass Discrete Cosine Transform ou Transformada Discreta do Cosseno Uni dimensional Discrete Cosine Transform ou Transformada Discreta do Cosseno unidimensional Bidimensional Discrete Cosine Transform ou Transformada Discreta do Cosseno bidimensional Discrete Fourier Transform ou Transformada Discreta de Fourier Direct Memory Access ou Acesso Direto à Memória Discrete Wavelet Transform ou Transformada Wavelet Discreta Unidimensional Discrete Wavelet Transform ou Transformada Wavelet Discreta Unidimensional Bidimensional Discrete Wavelet Transform ou Transformada Wavelet Discreta Bidimensional Embedded Array Block ou Blocos de Arranjo Embarcado Embedded Block Coding with Optimized Truncation Forward Discrete Cosine Transform ou Transformada Discreta do Cosseno Direta Fast Fourier Transform ou Transformada Rápida de Fourier Finite Impulse Response

7 FPGA FSM ICT IDCT IEC ISO ITU JBIG JFIF JPEG KLT LE LPS LSB MER MP3 MPS MPEG MRC MRP MSB MSE PAL PE pixel PSNR RAM RCT RGB RLE Field Programmable Gate Array ou Arranjo de Portas Programáveis por Campo Finite State Machine ou Máquina de Estados Finitos Irreversible color transformation ou Transformação de Cores Irreversível Inverse Discrete Cosine Transform ou Transformada Discreta de Fourier Inversa International Electrotechnical Commission International Organization for Standardization ou Organização Internacional para Padronização International Telecommunication Union Joint Bi-level Image Processing Groupt JPEG File Interchange Format Joint Photographic Expert Group Karhunen-Loeve Transform ou Transformada Karhunen-Loeve Logic Element ou Elemento Lógico Less probable Symbol ou Símbolo de menor probabilidade Least Significant Bit ou Bit menos significativo Mars Exploration Rover ou Veículo de Exploração de Marte Moving Photographic Expert Group More probable Symbol ou Símbolo de maior probabilidade Moving Picture Experts Group Magnitude Refinement Coding ou Codificação por Refinamento de Magnitude. Magnitude Refinement Pass ou Passagem para Refinamento da Magnitude More Significant Bit ou Bit mais significativo Mean Squared Error ou erro médio quadrático Phase Alternating Line Processing Element ou Elemento de Processamento picture element ou elemento da imagem peak signal to noise ratio ou relação sinal ruído de pico Random Access Memory ou Memória de Acesso Randômico Reversible color transformation ou Transformação de Cores Reversível Red-Green-Blue (padrão de formação de cores em imagem de vídeo) Run Length Encoder

8 RMSE RPA SPP SNR VLC VLSI Root Mean Squared Error ou raiz quadrada do erro médio quadrático Recursive Pyramid Algorithm ou Algoritmo da Pirâmide Recursiva Significance Propagation Pass ou Passagem para Propagação da Significância signal to noise ratio ou relação sinal ruído Variable Length Coder ou codificador de comprimento variável Very Large Scale Integration ou Integração em muito Larga Escala

9 LISTA DE SÍMBOLOS ψ função Wavelet φ função escala Wf(u,s) Transformada Wavelet Sf(u,ξ) Transformada de Fourier janelada W função escala Wh função wavelet # número de elementos

10 LISTA DE FIGURAS Figura 2.1: Diagrama do olho humano...21 Figura 2.2: Diagrama de uma câmera fotográfica Figura 2.3: Compressor padrão JPEG baseline Figura 2.4: Diagrama geral do compressor padrão JPEG Figura 3.1: Fluxograma de análise e resolução de problemas...35 Figura 3.2: Decomposição e Reconstrução Wavelet...40 Figura 3.3: Decomposição Wavelet Figura 3.4: Decomposição em multiresolução de 3 oitavas Figura 3.5: Decomposição 2D...42 Figura 3.6: Decomposição 2D em 4 oitavas...42 Figura 3.7: Esquema Lifting Figura 3.8: Estrutura lifting utilizada no compressor com perdas...45 Figura 3.9: Processo de codificação aritmética Figura 4.1: Espelhamento das bordas do vetor de entrada Figura 4.2: Seqüência do RPA para 3 oitavas Figura 4.3: Seqüência do RPA para 3 oitavas Figura 4.4: Ordenação de uma linha da saída da 1D-DWT de 3 oitavas Figura 4.5: Arquitetura Paralela de três oitavas Figura 4.6: Estrutura do Elemento de Processamento (SYED, 1995)...58 Figura 4.7: Arquitetura por Arranjo sistólico de três oitavas e 4 TAPs Figura 4.8: Estrutura do Elemento de Processamento (PE) para quatro oitavas Figura 4.9: Arquitetura por Arranjo sistólico com 6 TAPs Figura 5.1: 2D-DWT de 4 oitavas utilizando o RPA Figura 5.2: 1D-DWT por banco de filtros FIR...65 Figura 5.3: Gráfico de operações para o cálculo da 1D-DWT Figura 5.4: Operador AMA para a Arquitetura lifting Figura 5.5: Arquitetura lifting 1D-DWT Figura 5.6: Operador AMA para multiplicação por alfa Figura 5.7: Descrição da operação do Operador AMA alfa...74 Figura 5.8: Estrutura de somas internas para o Operador AMA alfa Figura 5.9: Operador AMA alfa simplificado Figura 5.10: Pipelinezação do operador AMA alfa...79 Figura 5.11: Arquitetura lifting 1D-DWT pipeline Figura 5.12: 2D-DWT em blocos...84 Figura 5.13: Arquitetura 2D-DWT...86 Figura 5.14: Algoritmo para a geração do endereçamento das linhas...88 Figura 5.15: Organização de memória de uma imagem 32x32 pós DWT de 3 oitavas. 89 Figura 5.16: Lena: resolução 256x256 pixels com 255 tons de cinza...94

11 Figura 5.17: Lena: 2D-DWT aplicada às linhas (computado no MATLAB)...95 Figura 5.18: Lena: 2D-DWT aplicada às linhas (simulado no Quartus II) Figura 5.19: Padrões de varredura no processamento do code-block 7 x Figura 5.20: Fluxograma de operação do BPC...99 Figura 5.21: Fluxograma do algoritmo SPP Figura 5.22: Diagrama para cálculo das vizinhanças Figura 5.23: Fluxograma do algoritmo MRP Figura 5.24: Fluxograma do algoritmo CUP Figura 5.25: Sinais para interconexão do bloco BPC Figura 5.26: Fluxograma para operação do bloco BPC Figura 5.27: Sinais para interconexão do bloco BAC Figura 5.28: Fluxograma para operação do bloco BAC Figura 5.29: Compressor JPEG2000 em uma implementação serializada Figura 5.30: Interface entre os blocos do Compressor JPEG Figura 5.31: Interface entre os blocos BPC e BAC Figura 5.32: Compressor JPEG Figura 5.33: Frames resultantes da 2D-DWT de três oitavas

12 LISTA DE TABELAS Tabela 4.1: Seqüência de computação do RPA para 3 oitavas...54 Tabela 4.2: Soft IPs para a implementação da 2D-DWT...61 Tabela 4.3: Soft IPs para a implementação do compressor JPEG2000 da Barco Silex.61 Tabela 4.4: Soft IPs para a implementação do compressor JPEG2000 da CAST Inc...61 Tabela 5.1: Coeficientes Daubechies 9/7 para banco de filtros FIR...64 Tabela 5.2: Coeficientes Daubechies 9/7 para Lifting...66 Tabela 5.3: Constantes Lifting...70 Tabela 5.4: Resultados das Implementações (APEX 20KE)...82 Tabela 5.5: Resultados das Implementações da 2D-DWT (STRATIX EP1S20) Tabela 5.6: Estimação de Probabilidade para o BPC Tabela 5.7: Determinação dos contextos do algoritmo Zero Coding Tabela 5.8: Determinação dos contextos do algoritmo Sign Coding Tabela 5.9: Determinação dos contextos do algoritmo Magnitude Refinement Coding Tabela 5.10: Resultados de Saída do BPC Tabela 5.11: Resultados da Implementação dos principais módulos do Compressor..110

13 RESUMO O incremento das taxas de transmissão e de armazenamento demanda o desenvolvimento de técnicas para aumentar a taxa de compressão de imagens e ao mesmo tempo mantenha a qualidade destas imagens. O padrão JPEG2000 propõe a utilização da transformada wavelet discreta e codificação aritmética para alcançar altos graus de compressão, proporcionando que a imagem resultante tenha qualidade razoável. Este padrão permite tanto compressão com perdas como compressão sem perdas, dependendo apenas do tipo de transformada wavelet utilizada. Este trabalho propõe a implementação de blocos internos em hardware para compor um compressor de imagens com perdas seguindo o padrão JPEG2000. O principal componente deste compressor de imagens é a transformada wavelet discreta irreversível em duas dimensões, que é implementada utilizando um esquema lifting a partir dos coeficientes Daubechies 9/7 descritos na literatura. Para proporcionar altas taxas de compressão para a transformada irreversível, são utilizados coeficientes reais que são originalmente propostos em representação de ponto-flutuante. Neste trabalho, estes coeficientes foram implementados em formato de ponto-fixo arredondado, o que resulta erros que foram estimados e controlados. Neste trabalho, várias arquiteturas em hardware para a descrição da transformada wavelet discreta irreversível em duas dimensões foram implementadas para avaliar a relação entre tipo de descrição, consumo de área e atraso de propagação. A arquitetura de melhor relação custo benefício requer células de um dispositivo FPGA, podendo operar a até 78,72 MHz, proporcionando uma taxa de processamento de 28,2 milhões de amostras por segundo. Esta arquitetura resultou em um nível de erro médio quadrático de 0,41% para cada nível de transformada. A arquitetura implementada para o bloco do codificador de entropia foi sintetizada a partir de uma descrição comportamental, gerando um hardware capaz de processar até 843 mil coeficientes de entrada por segundo. Os resultados indicam que o compressor de imagens com perdas seguindo o padrão JPEG2000, utilizando os blocos implementados nesta dissertação e operando na máxima freqüência de operação definida, pode codificar em média 1,8 milhões de coeficientes por segundo, ou seja, até 27 frames de 256x256 pixels por segundo. Esta limitação na taxa de codificação é definida pelo codificador de entropia, que possui um algoritmo mais complexo, necessitando de um trabalho complementar para melhorar sua taxa de codificação aumentando o paralelismo do hardware. Palavras Chave: Compressão de Imagens, JPEG2000, Transformada Wavelet, DWT.

14 Design of a dedicated architecture to Image compression in the JPEG2000 Standard ABSTRACT The increasing demands for higher data transmission rates and higher data storage capacity call for the development of techniques to increase the compression rate of images while at the same time keeping the image quality. The JPEG2000 Standard proposes the use of the discrete wavelet transform and of arithmetic coding to reach high compression rates, providing reasonable quality to the resulting compressed image. This standard allows lossy as well as loss-less compression, dependent on the type of wavelet transform used. This work considers the implementation of the internal hardware blocks that comprise a lossy image compressor in hardware following the JPEG2000 standard. The main component of this image compressor is the two dimensional irreversible discrete wavelet transform, that is implemented using a lifting scheme with the Daubechies 9/7 coefficients presented in the literature. To provide high compression rates for the irreversible transform, these coefficients originally proposed in their floating-point representation are used. In this work, they are implemented as fixed-point rounded coefficients, incurring in errors that we estimate and control. In this work, various hardware architectures for the two dimensional irreversible discrete wavelet transform were implemented to evaluate the tradeoff between the type of description, area consumption and delay. The architecture for the best trade-off requires 2,090 logic cells of a FPGA device, being able to operate up to MHz, providing a processing rate of 28.2 million of samples per second. This architecture resulted in 0.41% of mean quadratic error for each transformed octave. The architecture implemented for the block of the entropy encoder was synthesized from a behavioral description, generating the hardware able to process up to 843 thousands of input coefficients per second. The results indicate that the lossy image compressor following JPEG2000 standard, using the blocks implemented in this dissertation and operating in the maximum clock frequency can codify, in average, 1.8 million coefficients per second, or conversely, up to 27 frames of 256x256 pixels per second. The rate-limiting step in this case is the entropy encoder, which has a more complex algorithm that needs further work to be sped up with more parallel hardware. Keywords: Image compression, JPEG2000, Wavelet Transform, DWT.

15 15 1 INTRODUÇÃO Desde a antigüidade, o homem busca incessantemente a criação de novos meios para tornar a vida cada vez mais facilitada. Um dos primeiros grandes avanços da humanidade foi a criação e utilização de ferramentas. Desde então a criação de novas idéias, ferramentas e tecnologias se tornaram constante. Porém a cada idéia e a cada ferramenta descoberta, novas possibilidades surgiam, exigindo a criação de tecnologias ainda mais novas para facilitar o desenvolvimento e o uso das ferramentas criadas. Atualmente, vivemos em um mundo onde a tecnologia cresce a uma taxa elevada, potencializada pelos diversos meios para o intercâmbio das informações. Assim, a troca de informações é uma necessidade constante e a quantidade no tráfego de dados cresce continuamente. Deste modo, faz-se cada vez mais necessário aumentar esta taxa de intercâmbio de informações, ou seja, que a transmissão, recepção e armazenamento de documentos eletrônicos ocorram com a maior rapidez possível para quantidades cada vez maiores de dados, mantendo uma confiabilidade em níveis aceitáveis para o usuário. Considerando que a demanda por transmissão e processamento de informações aumenta constantemente, é necessário que novas tecnologias sejam incorporadas aos processos de transmissão, recepção e armazenamento dos dados. Estas novas tecnologias devem alinhar-se em duas estratégias básicas: Aumentar a velocidade de transmissão (utilizando redes de comunicação de dados de alta velocidade); Reduzir o volume dos dados a serem transmitidos (utilizando compressão de dados). Para o aumento da velocidade de transmissão é necessário o desenvolvimento das tecnologias dos meios de transmissão, sejam físicos ou não, como fibras óticas, dispositivos wireless, modems de alta velocidade, roteadores, protocolos dedicados, etc. Porém o aumento da velocidade de transmissão proporcionado pelo desenvolvimento das tecnologias dos meios de transmissão não atende totalmente a demanda do crescimento da taxa de intercâmbio de informações. Para a redução do tráfego e do requisito de armazenamento dos dados é necessária também uma compressão dos dados originais. De um modo geral a compressão de dados é feita a partir da retirada ou substituição de porções redundantes do conjunto total de dados, ou seja, é possível substituir grandes cadeias de bits por cadeias menores, sem perda da informação. A partir desta idéia geral, é possível utilizar dois processos distintos.

16 16 O processo de compressão sem perdas, que visa obter um conjunto de dados comprimidos que pode ser reconstruído exatamente igual ao conjunto original de bits. O processo de compressão com perdas, que visa obter um conjunto de dados comprimidos que pode ser reconstruído de modo semelhante ao conjunto original de bits, porém nunca exatamente igual. A compressão com perdas possibilita a obtenção de grandes taxas de compressão, podendo alcançar até 100 vezes ou mais, dependendo do algoritmo utilizado e do grau de fidelidade requerido. As técnicas tradicionais para compressão de imagens exploram a redundância estatística presente em imagens reais (ex: representação digitalizada de uma fotografia), que também podem ser definidas como imagens em tons contínuos. Esta redundância em imagens também é conhecida como correlação, pode ser traduzida como a semelhança entre dois pixels adjacentes (pixel correlation). Os principais processos para compressão de imagens alteram a representação digital da imagem do domínio espacial para o domínio das freqüências, de modo que na representação no domínio das freqüências as informações de correlação entre pixels podem ser reduzidas e até mesmo eliminadas (compressão ideal) (SALOMON, 2000). A eficiência de um compressor de imagens depende da quantidade de energia da imagem que a transformada pode concentrar em um número reduzido de coeficientes. De modo geral, a aplicação de uma transformada matemática a uma imagem em tons contínuos resulta em uma representação com grandes amplitudes nos valores próximos à origem e com baixas amplitudes em valores distantes da origem. Para proporcionar uma maior redução da quantidade total de dados, é possível descartar algumas informações sem ocasionar perda significativa na qualidade da imagem reconstruída. Nos métodos de compressão com perdas, a quantização dos coeficientes é o principal método para redução da quantidade de bits necessária para representar os coeficientes resultantes da transformada. Considerando que a técnica de compressão com perdas introduz alterações irreversíveis em uma imagem, é comum imaginarmos que a compreensão da imagem ficaria comprometida. Porém, ao processar informações sensoriais, o cérebro humano realiza interpolação entre estas informações, de modo que não é necessária a observação de todos os pontos de uma imagem para compreendê-la, provando a existência de uma redundância natural nas informações sensoriais. Assim, a eliminação de algumas porções de informações do conjunto de dados que compõe uma imagem pode ser compensada pela análise mental do cérebro humano, então estas informações podem ser desprezadas sem prejuízo de compreensão (GONZALES, 1992). Alguns tipos de imagens permitem que determinado nível de perda possa ser considerado aceitável. As transformadas matemáticas utilizadas nos algoritmos de compressão podem ter sua precisão reduzida sem ocorrer perda significativa da informação da imagem, uma vez que esta perda de informação pode ser suprimida pelo erro previsto nos processos de amostragem e quantização. O erro inserido no processo de compressão pode ser medido por meio do PSNR (Peak Signal to Noise Ratio) da imagem reconstruída. Em 2000 surgiu um dos mais eficientes padrões de compressão de imagens em tons contínuos, conhecido como JPEG2000 (ITU-T, 2000). Este padrão de compressão de imagens define a transformada Wavelet Discreta (DWT) em duas dimensões como o algoritmo padrão para a transformação do domínio espacial para o domínio das freqüências para reduzir a correlação entre os elementos da imagem. O padrão

17 17 JPEG2000 permite compressão com ou sem perdas, bastando para isso modificar os coeficientes da transformada e os coeficientes de quantização. O padrão anterior ao padrão JPEG2000 para a compressão de imagens com e sem perdas é o padrão JPEG, descrito em ITU-T (1992). Uma das principais diferenças entre estes dois padrões é o tipo de transformada utilizada. Como já citado anteriormente, o padrão JPEG2000 utiliza a transformada wavelet enquanto o padrão JPEG utiliza a transformada do cosseno. Esta mudança do tipo de transformada permite que o padrão JPEG2000 alcance taxas de compressão maiores que o padrão JPEG. A implementação da transformada Wavelet Discreta (DWT) em duas dimensões (2D-DWT) pode ser obtida por aplicações sucessivas de uma mesma 1D-DWT com rotação de 90 o, conforma demonstrado em SALOMON (2000), logo uma arquitetura em hardware para a implementação da 2D-DWT pode ter por base uma implementação em hardware da 1D-DWT. Diversas arquiteturas para a implementação da 1D-DWT podem ser encontradas na literatura, como arquiteturas utilizando banco de filtros, como apresentado em MASUD (2004) e MOTRA (2003), arquiteturas utilizando o Algoritmo da Pirâmide Recursivo (RPA) descrito em VISHWANATH (1994) e implementado em FRIDMAN (1994), KNOWLES (1990) e SYED (1995) e arquiteturas utilizando o esquema lifting, como apresentado em DILLEN (2003) e LAKSHMINARAYANAN (2003). Quanto à etapa de quantização, no padrão JPEG2000 sem perdas, o valor do coeficiente de quantização é sempre igual a um e no padrão com perdas, este coeficiente depende da qualidade requerida para a imagem reconstruída. O codificador de entropia definido no padrão JPEG2000 é implementado a partir de uma variação do algoritmo QM coder (ACHARYA, 2005) que realiza a codificação aritmética dos coeficientes provenientes dos blocos de transformada wavelet e quantização. Este trabalho propõe a implementação de um compressor de imagens seguindo o padrão JPEG2000 com perdas. Este compressor foi projetado em VHDL utilizando a ferramenta QUARTUS II (ALTERA, 2005-b) para ser inicialmente sintetizado para FPGAs da ALTERA (2005-a), e posteriormente ser prototipada para ASIC utilizando o pacote de ferramentas da CADENCE (CADENCE, 2005). Para isso os blocos internos do compressor foram projetados inicialmente segundo uma descrição comportamental para permitir que a ferramenta de síntese utilize os recursos internos dos FPGAs e posteriormente foram projetados segundo uma descrição estrutural para permitir a prototipação para ASIC. Este trabalho é dividido nos seguintes capítulos: No capítulo 2 são apresentadas as propriedades e elementos envolvidos na visualização de imagens, os principais padrões para compressão de imagens e as métricas de como medir a qualidade de uma imagem em uma compressão com perdas. No capítulo 3 são apresentadas as principais transformadas utilizadas no processamento de imagens, dando destaque especial para a transformada Wavelet e o esquema de lifting. No capítulo 4 são mostradas algumas arquiteturas encontradas na literatura para a implementação de uma DWT de uma dimensão.

18 18 No capítulo 5 apresenta a implementação do compressor de imagens proposto neste trabalho, bem como a implementação dos blocos constituintes do compressor de imagens: DWT de duas dimensões, bloco quantizador e codificador de entropia. No capítulo 6 são apresentadas as conclusões do trabalho e as propostas para desenvolvimento futuro.

19 19 2 COMPRESSÃO DE IMAGENS Genericamente, compressão de dados é um processo para converter um conjunto de dados de uma origem qualquer em uma representação reduzida e equivalente destes dados, de modo a: aumentar a capacidade de armazenamento de grandes quantidades de informações, independente do espaço disponível que pode ser usado para este fim; reduzir o tempo de transferência da informação, devido à redução da quantidade de dados a ser transmitida. Estas duas idéias representam o ponto de partida para o desenvolvimento dos métodos de compressão de dados. Todos os métodos para compressão de dados são baseados em um mesmo princípio, que é a remoção da redundância do conjunto de dados de entrada. A menor quantidade de bits necessária para representar um conjunto de bits de entrada é chamada de entropia (TAUBMAN, 2002). A entropia de um símbolo a i é definida como P i log 2 P i, onde P i é a probabilidade de ocorrência do símbolo a i em um conjunto de dados. A entropia de um conjunto de dados depende das probabilidades individuais de cada elemento individualmente. Assim: n E = i= 1 Pi log2 Pi A eficiência de um compressor de dados pode ser medida pelo tamanho da representação resultante. Assim, quanto mais próxima esta representação estiver do valor da entropia, mais eficiente será o compressor. Para proporcionar alta eficiência de compressão, cada tipo de dados (texto, imagem, códigos executáveis, etc...) que um arquivo pode conter, requer um método de compressão específico e cada método de compressão se adapta melhor a um determinado tipo de dados. De modo geral, os métodos de compressão de dados podem ser divididos em dois grupos, compressão sem perdas, quando os dados após descompressão são idênticos aos dados originais e compressão com perdas, quando os dados após descompressão são diferentes dos dados originais. Para fins de compressão de imagens, uma imagem digital pode ser definida de modo simplificado como um arranjo bidimensional de pixels, dispostos em m linhas e n colunas, onde a relação m x n é chamada de resolução da imagem. Cada pixel é

20 20 amostrado com uma quantidade finita de bits, que define sua precisão (ex: 8-bits de precisão). Na compressão de imagens podem ser utilizados os métodos de compressão com ou sem perdas. 2.1 Amostragem do Sinal O processo de amostragem da imagem é feito por uma varredura linear da esquerda para a direita e de cima para baixo de um conjunto de fotorreceptores que são sensibilizados pela reflexão ou emissão de fótons em um objeto real. A amplitude de saída de cada foto-receptor de imagem define o valor de cada pixel. A leitura dos pixels ocorre por amostragem do sinal dos fotorreceptores cadenciado pelo sinal de clock do sistema. Assim, a informação da imagem, que é organizada espacialmente, é convertida para uma representação da informação organizada serialmente. Esta representação serial pode ser armazenada linearmente em um arquivo, representando um mapa de bits (bitmap). Porém a digitalização aproxima o valor real do pixel para um valor discreto que pode é representado por um conjunto de bits, por exemplo: 1 bit, onde cada pixel pode ser preto ou branco; n bits, onde cada pixel pode assumir 2 n tons ou cores (n pode assumir os valores 2, 4, 8, 12, 16, 24 e 32). Devido à quantidade de bits para representar cada pixel ser um valor finito, o processo de amostragem necessariamente descarta uma grande quantidade de informação (PENNEBAKER, 1992). Logo, o processo de amostragem insere intrinsecamente erros na imagem digitalizada. 2.2 Sistema Visual Humano Uma câmera eletrônica possui sua estrutura e operação similar ao olho. Ambos são baseados em dois componentes principais: um conjunto de lentes e um sensor de imagem. O conjunto de lentes captura uma porção da luminosidade emanada de um objeto e foca o sensor de imagens. Os fótons emanados do objeto incidem sobre a superfície do sensor de imagem, onde o padrão de luminosidade é transformado em um sinal de vídeo, eletrônico ou neural. A quantidade de fótons que incidem sobre o sensor de imagem pode ser regulada pela íris. Este ajuste é importante devido à faixa de intensidade luminosa do ambiente ser maior que a faixa de sensibilidade do sensor de imagens. Os fótons que penetram pela íris e passam pelas lentes incidem sobre o sensor de imagens.

21 21 Figura 2.1: Diagrama do olho humano. (WIKIPEDIA, 2005-a). Conforme a Figura 2.1, que mostra a estrutura interna do olho humano, o sensor de imagens é chamado de retina. Na retina existem dois tipos de células de detecção de luminosidade no olho humano: os cones e os bastonetes. Os cones são células especializadas na detecção de cores, porém necessitam de uma razoável quantidade de luminosidade, enquanto os bastonetes, que são células especializadas na detecção de tons (claro e escuro), funcionam com uma quantidade mínima de luminosidade (próximo da escuridão absoluta). Cada célula de detecção de luminosidade, seja cone ou bastonete, possui aproximadamente 3µm de diâmetro e a retina possui uma área de aproximadamente 9 cm 2. Isso significa que a retina tem aproximadamente 100 milhões de receptores. Diretamente no centro da retina existe uma pequena região formada principalmente de cones, chamada fovea (poço em Latim) responsável pela alta resolução do ponto central da visão. Apesar da fovea possuir uma área muito pequena, um movimento espasmódico chamado saccades, permite que este ponto faça uma varredura em toda região de informação pertinente. O limite superior da capacidade de perceber detalhes em uma imagem é determinado pela sensibilidade do sistema visual a alterações na intensidade da imagem. De acordo com PENNEBAKER (1992), o pico de contraste na sensibilidade ocorre próximo a 5 ciclos/grau e a sensitividade cai a zero para freqüências acima de 100 ciclos/grau. Isto significa que a sensibilidade do olho é maior para os objetos com aproximadamente 0,2 cm a 1m de distância. Considerando na distância de 1m, podemse distinguir objetos de até 0,01cm e neste caso o tamanho ideal de imagem fica em torno de 40 cm.

22 22 Figura 2.2: Diagrama de uma câmera fotográfica. (WIKIPEDIA, 2005-c) A Figura 2.2 mostra a estrutura interna de uma câmera fotográfica, onde mostra o percurso da luz passando através das múltiplas lentes (1), refletida por um conjunto com espelho (2), lentes para ajuste do foco (5 e 6) e um prisma (7) para ser observada no visor (8). Quando ocorre o disparo da foto, o espelho se move na direção da seta e o obturador (3) se abre permitindo que a luz atinja o filme fotográfico (4). Neste tipo de câmera, a resolução da foto depende principalmente da quantidade de pontos que o filme fotográfico permite. Nas câmeras fotográficas digitais, o obturador e o filme fotográfico foram substituídos por um charge-coupled device (CCD), que é um dispositivo de estado sólido, formado por um arranjo de sensores que convertem a energia luminosa em energia elétrica, organizada na forma de um código binário. Cada sensor do arranjo converte uma região luminosa em um pixel e devido a isso insere dois tipos de erro na imagem resultante. Cada pixel possui um único valor de luminosidade, logo considerando o ponto central de cada pixel e que cada pixel apresenta uma área, ocorre um efeito de descontinuidade entre pixels adjacentes, além disso, cada pixel é representado por um conjunto limitado de bits, requerendo que a representação do sinal luminoso em binário seja arredondada. Estes dois erros são minimizados com o aumento da resolução dos CCDs. Atualmente as câmeras digitais possuem CCDs com resolução de 8Mpixels e com o passar do tempo são produzidos CCDs com resolução cada vez maior. Porém apesar da tecnologia propor que em um futuro próximo possam existir sensores eletrônicos que alcancem a resolução do olho humano (aproximadamente 100 milhões de receptores), as células de detecção de luminosidade no olho humano ainda apresentam uma resposta linear (contínua) às variações de luminosidade, ao contrário dos receptores eletrônicos que apresentam resposta descontínua (dependente da quantidade de bits de resolução do sensor). Segundo GONZALES (1992), o cérebro humano, quando realiza a interpretação das informações sensoriais, apresenta a característica de ignorar informações constantes, ou seja, ao olhar para uma cena já observado anteriormente, o cérebro ignora a maioria dos elementos, procurando apenas os elementos novos. Esta idéia pode ser expandida

23 23 para imagens individuais, de modo que uma imagem em tons contínuos não requer que todos os seus pontos sejam analisados individualmente, ocorrendo assim uma interpolação de forma inconsciente, proporcionando uma rápida interpretação da imagem. Esta interpolação pode ser explorada de modo que imagens com resoluções menores possam ser interpretadas sem grande prejuízo para a compreensão. 2.3 Classificação das imagens Existem vários tipos de arquivos de computador, dentre estes existem vários padrões para o armazenamento de imagens (no Anexo são apresentados os padrões mais conhecidos). Independentemente destes padrões para armazenamento, as imagens podem ter uma classificação relativa ao processo de geração da própria imagem. De acordo com SALOMON (2000), as imagens quanto ao processo de geração podem se classificar em: Imagens bi-level Imagens grayscale Imagens em tons contínuos Imagens em tons descontínuos Imagens cartoon-like As imagens bi-level, também conhecidas como monocromáticas, são as imagens em que cada pixel pode assumir somente dois valores, normalmente preto e branco. Cada pixel da imagem é representado por um bit. Imagens em tons contínuos podem conter muitos tons de cores próximas e pixels adjacentes podem apresentar diferença de apenas uma unidade (tornando difícil a visualização da mudança de tom). Uma imagem pode conter áreas onde os tons variam continuamente permitindo a visualização da variação do tom. Este tipo de imagem é normalmente originário de uma imagem natural, adquirida por fotografia digital ou por digitalização de uma fotografia. Nas imagens em grayscale, cada pixel pode assumir qualquer valor em uma escala de 2 n tons de cinza (ou outra cor), ou seja, cada pixel é representado por um conjunto de n bits. O valor de n normalmente é 4, 8, 12, 16 ou 24. Imagem em tons descontínuos, também chamadas imagens gráficas ou sintéticas, são normalmente imagens artificiais, podendo ter muitas cores e tons, porém não possui o ruído e borrados característicos de imagens naturais. Nestes tipos de imagens, pixels adjacentes normalmente apresentam o mesmo valor, ou variam significantemente. Imagem cartoon-like é aquela que apresenta grandes porções uniformes, onde os pixels de cada área apresentam o mesmo valor, porém áreas adjacentes podem possuir cores muito diferente.

24 Redundância em imagens Como já foi explicitada anteriormente, a compressão de dados se baseia na remoção de redundâncias da imagem original. Esta redundância pode ocorrer de formas diferentes: Redundância estatística: Quando existe um conjunto de valores pertencentes à faixa dinâmica da imagem original, que não são utilizados, ocorre uma situação de redundância estatística. Este tipo de redundância pode ser eliminado pela representação do conjunto de amostras originais por um conjunto de valores com número reduzido de bits. Irrelevância visual: Ocorre quando a resolução da imagem excede os limites da acuidade visual humana, ou quando o dispositivo para a visualização da imagem possui capacidade de resolução menor que a imagem original. Neste caso a redução da resolução da imagem não acarreta nenhuma alteração aparente na visualização da imagem. Irrelevância para aplicações específicas: Em imagens que possuem porções irrelevantes para aplicação específica da imagem, como imagens para diagnóstico médico, reconhecimento de alvos, etc..., pode ocorrer a redução significativa na resolução, ou até mesmo a eliminação destas porções da imagem sem causar nenhum tipo de perda na interpretação da imagem. Irrelevância na resolução de cores da imagem: O sistema visual humano possui menor sensibilidade a cores do que a tons (TAUBMAN, 2002). Assim a transformação do padrão de representação de cores da imagem, do padrão RGB para o padrão YCbCr, permite tratar separadamente os componentes de cor da imagem. Estes componentes de cor (Cb e Cr) podem sofrer uma sub-amostragem, a assim uma redução significativa na representação da imagem com pouco impacto na compreensão da imagem. Redundância espacial: De um modo geral, imagens em tons contínuos apresentam a característica de correlacionamento entre pixels vizinhos. Isso significa que o espectro de freqüência deste tipo de imagem apresenta coeficientes de grandes amplitudes nas baixas freqüências e coeficientes de baixa amplitude nas freqüências elevadas. Esta característica permite a exploração de transformadas matemáticas para transformar a representação da imagem do domínio espacial para o domínio das freqüências. De modo geral, o sistema visual humano é menos sensível a coeficientes de freqüências elevadas, assim estes coeficientes podem ser reduzidos, ou até mesmo eliminados, sem causar perda significativa na compreensão da imagem. 2.5 Métodos de Compressão sem perdas Os métodos de compressão sem perdas somente eliminam as informações redundantes presentes na representação original, de modo a possibilitar a reconstrução da imagem original por um processo de descompressão. Os métodos de compressão sem perdas são aplicáveis a dados de textos, programas executáveis, imagens que requerem alta definição (como imagens médicas digitais), arquivos de banco de dados e outros arquivos que não admitem a perda de dados.

25 25 Os métodos de compressão sem perdas se baseiam em técnicas como codificação RLE, codificações estatísticas (como codificação Huffman, codificação aritmética, etc...) e codificações baseadas em dicionário. O método Run Length Encoding (RLE) segue a premissa de que se um determinado símbolo d é repetido n vezes consecutivamente, todas as n ocorrências consecutivas podem ser substituídos por um par nd. Neste método as cadeias de pixels contendo a mesma informação de cor são substituídas por um contador seguido de uma amostra do pixel codificado. Os métodos estatísticos se baseiam na idéia de substituir por uma representação compacta os símbolos ou grupo de símbolos de maior probabilidade de ocorrência no conjunto de dados de entrada. A qualidade da compressão resultante deste método depende da qualidade do modelo estatístico que cada método utiliza. Os métodos baseados em dicionário selecionam conjuntos de símbolos e codificam cada conjunto individualmente usando um dicionário. Um dicionário mantém as equivalências dos conjuntos de símbolos e permite que novas entradas ocorram. As principais vantagens destes métodos é a facilidade de programação (utilizando algoritmos de procura e substituição) e a simplicidade de decodificação. 2.6 Métodos de Compressão com perdas Os métodos de compressão com perdas somente podem ser utilizados onde perda de dados não gera perda significativa de informação. Neste conceito se enquadram arquivos de imagens, áudio e vídeo. Este tipo de compressão é utilizado considerando as seguintes razões (TAUBMAN, 2002): O sistema visual (ou auditivo) humano pode tolerar alguma perda de informação, sem interferir com a compreensão da imagem (sinal de áudio); O processo de digitalização (amostragem) da imagem (do som) introduz erro entre a imagem digitalizada e a imagem real; Compressão sem perdas é normalmente incapaz de proporcionar a taxa de compressão requerida pelos sistemas de armazenamento e transmissão. Uma boa imagem reconstruída deve se assemelhar à imagem original, de modo que para medir a qualidade dos métodos de compressão com perdas e reconstrução das imagens, a padronização de algumas métricas se faz necessário. Uma boa medida deve produzir um valor adimensional que não seja sensível a pequenas diferenças entre a imagem reconstruída e a imagem original. A medida de distorção mais comumente utilizada é mean squared error (MSE) (TAUBMAN, 2002), definida por: Onde: MSE = 1 n i= ( a i â 2 ) n define a quantidade de amostras que a imagem possui.

26 26 a i representa as amostras da imagem original. â i representa as amostras da imagem reconstruída. Para compressão de imagens, uma medida baseada no MSE é o peak signal to noise ratio (PSNR). Altos valores de PSNR significam que a imagem reconstruída se aproxima da imagem original. O cálculo de PSNR é dado por: PSNR = 20 log10 max Pi MSE max P i define o maior valor que representa o tom de um pixel. Como os pixels P i podem possuir valores positivos e negativos, o cálculo utiliza seu valor em módulo. Os resultados de PSNR são utilizados somente para comparar a performance de diferentes métodos de compressão com perdas ou o efeito de diferentes valores paramétricos na performance do algoritmo. PSNR é um valor adimensional, desde que ambos numerador e denominador são valores de pixels, porém devido ao uso do logaritmo, é dito que PSNR é expresso em decibel (db). Boas imagens reconstruídas possuem, tipicamente o valor de PSNR iguais ou maiores que 30dB (TAUBMAN, 2002). Outro método eficiente de mensurar a qualidade de uma imagem reconstruída é gerar uma imagem diferença entre a imagem reconstruída e a imagem original e realizar um julgamento visual. Porém neste caso espera-se que os valores sejam pequenos e próximos a um extremo (preto ou branco) se tornando de difícil julgamento. Para melhorar o julgamento é permitido ampliar a diferença e deslocar os valores para a faixa de tons médios, conforme cálculo abaixo: D i = a(a i â i ) b onde: a é o parâmetro de magnificação (tipicamente, é um valor baixo como 2). b é o valor médio dos pixels (para deslocar a imagem para um cinza médio). 2.7 Padrões para Compressão de imagens Em imagens em tons contínuos, a informação amostrada apresenta um alto grau de correlação entre os valores de pixels vizinhos (pixel correlation). As técnicas tradicionais para compressão de imagens (conjunto de dados que possuem alta correlação) foram idealizadas para explorar a redundância estatística presentes em imagens reais (aqui definidas como imagens em tons contínuos). Os padrões que apresentam as maiores taxas de compressão são os padrões JPEG e JPEG2000.

27 Padrão JPEG O padrão JPEG surgiu na década de 80 como uma tentativa para padronizar a compressão de imagens. Para isso membros do ITU, ISO e IEC se uniram para formar o Joint Photographic Expert Group. Este padrão prevê quatro modos de operação, como apresentado em ITU-T (1992), o modo seqüencial baseado na DCT, o modo progressivo baseado na DCT, o modo seqüencial sem perdas e o modo hierárquico. Todo processo de compressão que se basear na utilização de uma DCT será considerado com perdas, mas estas perdas não ocorrem na etapa da DCT e sim na etapa de quantização, que sempre ocorre após a DCT. No compressor de imagens coloridas, existe outro ponto de perda de informação, que é o bloco de sub-amostragem (downsampling), que reduz a taxa de amostragem dos sinais de crominância. Uma unidade de dados é a menor unidade lógica dos dados da unidade original que pode ser processada em determinado modo de operação (PENNEBAKER, 1992) e é de 8x8 pixels sempre que for usada a DCT (ITU-T, 1992). Em imagens coloridas cada conjunto de amostras é composto por três unidades de dados, uma para o sinal de luminância e duas para os sinais de crominância, enquanto imagens em tons de cinza possuem apenas uma unidade de dados. Um frame contém um ou mais scans, que consiste em uma varredura dos pixels da imagem, nos sentidos da esquerda para a direita e do topo para a base, a quantidade de scans depende do modo de operação utilizado. Em processos seqüenciais um scan contém todos os pixels da imagem e em processos progressivos contém parte da codificação de todas as unidades de dados de um ou mais componentes de imagem. No modo seqüencial, a imagem é codificada, processando totalmente uma unidade de dados, ou um grupo de unidade de dados, de cada vez, da esquerda para a direita, linha por linha, do topo até a base, ou seja, realizando a codificação um único scan. Cada pixel pode ter 8 bits ou 12 bits, ou seja, 256 ou 4096 tons. A compressão pode ser aritmética ou pelo algoritmo de compressão de Huffman. Cada unidade de dados tipicamente é composta por uma matriz de 8x8 pixels. Este formato possui as seguintes definições (ITU-T, 1992): - processo baseado na DCT; - cada pixel é representado por 8 bits (256 tons) ou 12 bits (4096 tons), independentemente se a imagem for colorida ou não; - utiliza o modo seqüencial; - a codificação realizada pelo algoritmo de compressão de Huffman ou codificação aritmética, possuindo 4 tabelas de codificação AC e 4 tabelas de codificação DC. Existe uma forma restrita particular do modo Seqüencial, que é chamado de modo baseline. Este formato possui as características mínimas necessárias para qualquer sistema de compressão baseado em uma DCT, e quaisquer processos baseados em DCT que requeiram mais que estes mínimos necessários são conhecidos por processos estendidos baseados em DCT. Este formato possui as seguintes definições (ITU-T, 1992): - processo baseado na DCT;

28 28 - cada pixel é representado por 8 bits (256 tons), independentemente se a imagem é colorida ou não; - utiliza o modo seqüencial; - a codificação realizada pelo algoritmo de compressão de Huffman, possuindo 2 tabelas de codificação AC e 2 tabelas de codificação DC. Existe ainda um modo com perdas chamado baseline, que é um submodo do modo seqüencial, por apresentar grande simplicidade de implementação, devido a possuir os requisitos mínimos necessários para qualquer sistema de compressão baseado em uma DCT. A Figura 2.3 apresenta a estrutura básica de um compressor JPEG no modo baseline. stream de pixels da imagem Transformada Quantização Codificação stream de bits da imagem comprimida Figura 2.3: Compressor padrão JPEG baseline. No modo progressivo, a imagem é codificada em múltiplos scans, onde o scan inicial cria uma versão com um reduzido número de detalhes, e os scans seguintes vão refinando a imagem, até que ela fique completa. Assim como no modo seqüencial cada pixel pode ter 8 bits ou 12 bits, e a compressão pode ser aritmética ou por Huffman. Por utilizar a DCT cada unidade de dados tipicamente é composta por uma matriz de 8x8 pixels. A cada bloco transformado pela FDCT e quantizado, seus coeficientes são armazenados em um buffer. Os coeficientes da DCT são parcialmente codificados a cada scan. Este formato possui as seguintes definições (ITU-T, 1992): - processo baseado na DCT; - cada pixel é representado por 8 bits (256 tons) ou 12 bits (4096 tons), independentemente se a imagem é colorida ou não; - utiliza o modo progressivo; - a codificação realizada pelo algoritmo de compressão de Huffman ou codificação aritmética, possuindo 4 tabelas de codificação AC e 4 tabelas de codificação DC. No modo sem perdas não é utilizada a DCT no processo de codificação, e sim um preditor, porém este modo é pouco utilizado porque atinge taxas de compressão menores que o de outros formatos sem perdas já desenvolvidos, como o GIF e o PNG (PENNEBAKER, 1992). Este formato possui as seguintes definições (ITU-T, 1992): - processo preditivo não baseado na DCT; - cada amostra da imagem origem deve ter de 2 a 16 bits;

29 29 - utiliza o modo seqüencial; - a codificação realizada pelo algoritmo de compressão de Huffman ou codificação aritmética, possuindo 4 tabelas de codificação DC. No modo hierárquico a imagem é codificada como uma seqüência de frames (campos), de modo a permitir um estágio final sem perdas. Devido à sua complexidade elevada, este método é pouco utilizado. Este formato possui as seguintes definições (ITU-T, 1992): - o processo pode ser baseado na DCT ou usar algoritmo preditivo; - cada pixel é representado por 8 bits (256 tons) ou 12 bits (4096 tons), independentemente se a imagem é colorida ou não; - pode utilizar o modo seqüencial ou progressivo; - a codificação realizada pelo algoritmo de compressão de Huffman ou codificação aritmética, possuindo 4 tabelas de codificação DC e 4 tabelas de codificação AC, ou apenas 4 tabelas de codificação DC. A utilização de uma etapa de quantização para reduzir a quantidade de bits de informação é realizada em todos os métodos que utilizam a DCT como algoritmo para realizar o decorrelacionamento entre os dados. Este processo é irreversível e a qualidade da imagem reconstruída é fortemente dependente dele. Com exceção do método de compressão sem perdas, todos os outros métodos permitem o uso da DCT, logo este método é o único que não permite o processo de quantização. A última etapa de processamento dos dados é a codificação de entropia. Esta etapa não apresenta perda de informação, assim pode ser usado tanto nos métodos de compressão com perdas como os métodos de compressão sem perdas. Internamente no compressor de entropia dois algoritmos básicos são utilizados, a codificação RLE para os coeficientes DC (coeficiente da posição 0,0 da matriz 8x8 pós-transformada e pósquantização) e a codificação Huffman para os coeficientes AC (outras 63 posições da matriz 8x8) Padrão JPEG2000 A contínua expansão da utilização de imagens em aplicações como multimídia e Internet, necessitou de uma evolução nas tecnologias utilizadas no processamento de imagens. Assim em março de 1997 foi iniciado o desenvolvimento de um novo padrão de compressão de imagens que permitisse maior desempenho e flexibilidade. Apesar de ter sido definida em 2000, devido à necessidade de mais informações complementares, o projeto, especificação e teste do novo padrão JPEG2000 somente foram concluídos em Algumas das mais importantes características do padrão JPEG2000 (ITU-T, 2000) são: Superior performance a baixas taxas de bits: o padrão oferece performance superior ao padrão atual a baixas taxas de bits, permitindo menos de 0.25 bits por pixel para imagens em tons de cinza detalhadas.

30 30 Compressão de imagens em tons contínuos e imagens bi-level: O sistema pode comprimir imagens com várias faixas dinâmicas (de 1 bit a 16 bits) para cada componente de cor. Compressão com perdas e sem perdas: permite que seja possível que a ocorrência de reconstrução da imagem sem perdas. Transmissão progressiva por qualidade e resolução dos pixels: permite que a reconstrução da imagem ocorra por qualidade ou por resolução. Codificação por regiões de interesse: permite que algumas partes da imagem (de localização pré-definidas) sejam comprimidas com menor distorção que o resto da imagem. Robustez a erros de bits: minimização de erros na transmissão e posterior reconstrução da imagem. Arquitetura aberta: permite que o sistema seja otimizado para diferentes tipos de imagens e aplicações. Proteção de imagem: permite a utilização de métodos de proteção de imagem como watermark, labeling, stamping fingerprinting, encryption, scrambling, etc. A estrutura básica do compressor JPEG2000 segue a estrutura básica introduzida na compressão baseline JPEG. tiling Pré processador nível DC transformação dos componentes de cor Núcleo de compressão DWT quantização Codificação de entropia Pós processador Formação do bitstream Figura 2.4: Diagrama geral do compressor padrão JPEG2000. Conforme a Figura 2.4, o compressor JPEG2000 se divide em três blocos básicos, pré-processador, núcleo de compressão e pós processador. O pré-processador é dividido em três partes: Etapa de tiling; Etapa de deslocamento do nível DC; Etapa de transformação de cores. A etapa de tiling particiona a imagem em blocos de pixels dispostos de forma retangular não sobreposta, conhecidos como tiles. O tamanho do tile é arbitrário e pode corresponde a toda a imagem ou apenas um pixel. O tile é a unidade básica para a compressão onde todas as operações ocorrem, independentemente de tiles adjacentes. A etapa de deslocamento do nível DC é similar ao deslocamento do nível DC no padrão JPEG, os valores de cada componente de cor são deslocados em 2 B-1, onde cada pixel possui B bits de cor. O valor dos pixels de uma imagem normalmente são valores

31 31 positivos, nestes casos, deslocar o nível DC representa permitir a computação utilizando valores positivos e negativos. Além disso, imagens não apresentam somente valores próximos aos extremos, assim deslocar o nível de DC dos componentes de uma imagem, representa colocar o valor médio dos pixels próximo ao valor zero. A etapa de transformação de cores realiza a decorrelação entre os componentes de cor RGB. Esta decorrelação pode ser feita de duas maneiras: Transformação de cores irreversível (ICT); Transformação de cores reversível (RCT). A transformação de cores irreversível apresenta melhor decorrelação que a transformação de cores reversível, porém somente pode ser utilizado no método de compressão com perdas. A ICT transforma do padrão RGB para o padrão YCbCr e a RCT transforma do padrão RGB para o padrão YUV. O padrão JPEG2000 define que a ICT é definida pela seguinte matriz: Y = Cb Cr R G B e a RCT é definida da seguinte maneira: Y 0.25 = U 1 V R 0 G 1 B Esta separação entre os componentes de cor é necessária, pois o núcleo de compressão codifica cada componente YCbCr ou YUV independentemente. O núcleo de compressão é dividido em três partes: Transformada Wavelet Discreta (DWT); Quantização; Codificação de Entropia. A Transformada Wavelet Discreta é utilizada como transformação linear para reduzia a correlação entre os pixels do componente da imagem processado. A DWT foi escolhida como transformada deste, devido pelos seguintes motivos: A representação da imagem por multiresolução proporciona um mecanismo simples de promover a escalabilidade espacial e por qualidade (SNR) sem sacrificar a eficiência da compressão. Este tipo de representação é uma propriedade inerente das transformada wavelet.

32 32 Para imagens de grandes dimensões, o número de níveis de decomposição pode ser aumentado, permitindo que altos ganhos de compressão possam ser alcançados pela exploração da correlação entre os pixels de grandes porções da imagem. A DWT com coeficientes inteiros pode ser utilizada para compressão sem perdas, ao contrário da DCT que não pode ser utilizada em compressão sem perdas por ter sua matriz de transformação aproximada. Uma das principais alterações observadas com a utilização do padrão JPEG2000 é o tipo de transformada utilizada. Na compressão com perdas, o padrão JPEG original usa a DCT para transformar porções de 8x8 pixels da imagem (ITU-T, 1992). No padrão JPEG2000 recomenda dois tipos de banco de filtros: para compressão com perdas e sem perdas. A transformada irreversível sugerida no padrão (utilizada na compressão com perdas) requer banco de filtros com os coeficientes em ponto flutuante, definidos em Daubechies 9tap/7tap, enquanto a transformada reversível (utilizada na compressão sem perdas) utiliza banco de filtros com os coeficientes inteiros, definidos em Daubechies 5tap/3tap. A operação da transformada, independentemente se for reversível ou irreversível, ocorre para todas as linhas e após para todas as colunas. Para cada linha/coluna computada ocorre a extensão simétrica periódica dos coeficientes das bordas, de modo a não permitir a ocorrência de alias na computação, gerando a mesma quantidade de coeficientes após a computação de cada linha/coluna. No padrão JPEG2000, a etapa de quantização consiste em uma divisão entre cada coeficiente proveniente da etapa da transformada e um valor constante, chamado coeficiente de quantização. Cada sub-banda pode ter um coeficiente de quantização diferente e seu valor afeta diretamente a qualidade da imagem reconstruída. No padrão sem perdas, o coeficiente de quantização é sempre igual a um. Após a etapa de quantização, os coeficientes que estavam originalmente divididos em tiles, ficaram divididos em sub-bandas (SALOMON, 2000). Cada subbanda é dividida em grades retangulares chamadas precincts. Cada precinct tem suas dimensões divididas em potências de 2. A primeira precinct é sempre posicionada na posição esquerda superior do array resultante da etapa de quantização. Cada precinct por sua vez é dividido em code-blocks, onde cada code-block possui 2 x de largura por 2 y de altura e x 2, y 10 e xy 12. Em outras palavras, um code-block pode ter no máximo 4096 coeficientes. A diferença entre tiles, precincts e code-blocks pode ser definida, respectivamente, como particionamento grosso, médio e fino de uma imagem. Particionar a imagem em pequenas porções permite a criação de implementações eficientes no que diz respeito à memória, que permitam o acesso facilitado a qualquer ponto da imagem comprimida. Os code-blocks são separados em planos de bits e estes planos de bits são codificados através do codificador de entropia. O codificador de entropia opera a partir do plano dos bits mais significativos (MSB) para o plano dos bits menos significativos (LSB). Um contexto é definido para cada bit de acordo com a significância de seus oito bits vizinhos (utilizando o algoritmo MQ-Coder) e a probabilidade de cada bit é estimada a partir deste valor de contexto. No bloco pós processador, todos os bits codificados no núcleo de compressão, oriundos de um code-block são empacotados em um reduzido bitstream, ao qual é

33 33 acrescentado um cabeçalho contendo todas as informações necessárias para o processo de descompactação. Os conjuntos de bits sob esta definição são chamados de packets. Os packets são agrupados em layers assim como os code-blocks são agrupados em precincts. O padrão JPEG 2000 permite que os packets sejam agrupados de tal maneira a permitir que a transmissão e/ou descompressão ocorra de forma progressiva por resolução, qualidade, localização espacial ou por componente. Outra importante característica incorporada ao padrão JPEG 2000 é a possibilidade de definir regiões de interesse. Como uma imagem pode ser dividida em vários tiles, e cada tile pode ser comprimido individualmente independente das características dos tiles vizinhos, logo é possível definir grau de quantização diferente para cada um dos tiles. Deste modo, pode ser definido baixo nível de perda nas porções da imagem que possuam alto grau de interesse e alto nível de perda nas porções da imagem que possuam baixo grau de interesse.

34 34 3 ELEMENTOS PARA A COMPRESSÃO DE IMAGENS SEGUNDO O PADRÃO JPEG2000 Conforme apresentado na seção 2.7.2, o núcleo de compressão do padrão JPEG2000 apresenta três operações básicas: etapa de transformada, para realizar o decorrelacionamento dos pixels; etapa de quantização, para reduzir a quantidade de informação, de modo a permitir alta taxa de compactação; etapa de codificação de entropia, para reduzir a quantidade de bits que representa o conjunto de dados resultante do processo de quantização. 3.1 Transformadas aplicadas no processamento de imagens Segundo MALLAT (1998), somente as ocorrências de variações nas percepções são consideradas informações significativas para os sentidos humanos, independente da quantidade e diversidade destas percepções. Isto significa que um conjunto de percepções estáticas apresenta inicialmente uma grande quantidade de informação, porém se estas informações não variam com o passar do tempo, se tornam não significativas. A ocorrência de variações em uma representação estática significa a introdução de novas informações em um conjunto de dados estáticos, logo estas variações têm grande significância. Em um conjunto de informações amostradas, estas variações podem ser traduzidas na forma de descontinuidades. Especificamente em imagens amostradas, estas descontinuidades são chamadas de bordas, significando que a amplitude relativa entre dois pixels adjacentes varia significativamente. Um conjunto de dados amostrado é definido no domínio temporal caso cada representação do sinal tenha sido amostrado em um ciclo de uma unidade de tempo padronizada, ou é definido no domínio espacial caso várias amostras tenham sido obtidas em um mesmo ciclo da uma unidade de tempo padrão. Devido a esta característica de posicionamento espacial (ou temporal) do conjunto de informações amostradas, as transformadas matemáticas são largamente utilizadas para o processamento de imagens, proporcionando um processamento simplificado. Assim para a solução de um problema, genericamente podemos percorrer dois caminhos:

35 35 i) Realizar uma análise complexa do problema; ii) Transformar o domínio do problema, realizar uma análise simples do problema, transformar o problema para o domínio original. processamento complexo problema original solução do problema transformada direta processamento simplificado transformada inversa Figura 3.1: Fluxograma de análise e resolução de problemas. Utilizando uma transformada podemos trocar o domínio de uma área de aplicação, como Sistemas Lineares, Irradiação de Antenas, Ótica, Processos randômicos, Probabilidade, Física Quântica, Equações diferenciais, etc... e assim permitir uma análise simplificada. As principais transformadas utilizadas no processamento de imagens são: Transformada de Fourier; Transformada Karhunen-Loeve Transformada do seno Transformada do cosseno Transformada wavelet Segundo MALLAT (1998), apesar da grande quantidade e diversidade de percepções que temos, no mundo dos sentidos as variações nas percepções é que são significativas. As variações observadas nos domínios espacial e temporal são representadas por componentes de freqüências no domínio das freqüências, assim a análise de sinais amostrados a partir de informações físicas pode ser feita através de procedimentos como a transformada de Fourier. A transformada de Fourier é uma poderosa ferramenta para manipulação de dados amostrados e contínuos, pois permite examinar o relacionamento de uma determinada função amostrada, sob diferentes pontos de vista. Ela pode ser utilizada principalmente em processos que usem filtragem, segmentação, reconhecimento de padrões, descrição, compressão e reconstrução de sinais amostrados, de forma a permitir, normalmente, uma análise simplificada de um problema. A transformada de Fourier, entretanto, possui um inconveniente: a representação no domínio das freqüências não especifica onde estão localizados, no domínio do tempo, os pontos de altas e baixas freqüências (SALOMON, 2000). Além disso, o princípio da incerteza de Heisenberg define que não é possível que a cobertura de energia e a transformada de Fourier de uma mesma função sejam infinitamente pequenas, simultaneamente. Com isto, as funções amostradas são analisadas por

36 36 decomposição do sinal a partir de átomos tempo-freqüência, que são formas de onda que representam a menor cobertura em um plano tempo-freqüência. Com esta definição de átomos tempo-freqüência, a análise da função pode ser feita através de uma transformada de Fourier janelada. Porém este procedimento gera uma representação infinita, o que é uma desvantagem significativa. Com isso, é requerida a utilização de uma transformada com características semelhantes, porém sem esta desvantagem Transformada Wavelet Nos últimos anos ocorreu um grande interesse em Transformadas Wavelet, principalmente após os estudos de MALLAT (1998) e sua posterior aplicação em padrões internacionais, como o JPEG2000 (ITU-T, 2000) e o MPEG-4. Porém de acordo com MALLAT (1998) a utilização de wavelets para o processamento de sinais não se baseou em uma idéia nova, mas em conceitos que já existiam sob várias formas em diferentes campos de estudo, principalmente na matemática, na física e na engenharia, onde os pesquisadores estavam desenvolvendo independentemente idéias semelhantes. Assim como a Transformada de Fourier Janelada, a Transformada Wavelet pode medir variações tempo-freqüência de componentes espectrais, mas com uma resolução tempo-freqüência diferente. Algumas das mais importantes considerações a respeito das wavelet são: Casamento tempo-freqüência: Informações importantes surgem da análise simultânea das propriedades de tempo e freqüência do sinal. Isto motiva a decomposição em porções elementares que estão concentradas no tempo e/ou em freqüência. A energia de uma função e sua transformada de Fourier não podem ser reduzidas a porções elementares simultaneamente (princípio da incerteza de Heisenberg), com isto podemos compreender a limitação da flexibilidade da transformada de Fourier na análise tempo e freqüência. Escala para aproximação (zoom): wavelet são formas de onda escalar que medem variações de sinal. Com isso procedimentos de aproximação permitem a observação de estruturas do sinal, como as singularidades. Mais e mais bases: Muitas bases ortogonais podem ser implementadas com algoritmos rápidos de computação. A utilização de banco de filtros e bases wavelet tem gerado uma procura por bases, com isso novas famílias de bases são criadas regularmente. Representações esparsas: Uma base ortogonal é útil se puder definir uma representação onde sinais são bem aproximados com poucos coeficientes diferentes de zero. Por definição, uma wavelet ψ é uma função com média zero: ψ(t)dt = 0

37 37 e média quadrática finita: ψ(t) 2 dt < que é dilatada com um parâmetro de escala s e transladada no seu domínio por u: ψ u,s (t) = 1 s ψ( t u ) s Assim a Transformada Wavelet de uma f(t) arbitrária na escala s e posição u é computada correlacionando a função f com um átomo wavelet. Wf(u,s) = Wf(u,s) = f(t) 1 s ψ( t u ) dt s f(t) ψu,s(t) dt Um átomo wavelet φ γ (t) é uma dilatação por s e uma translação por u de uma wavelet mãe ψ: φ γ (t) = ψ u,s (t) = 1 s ψ( t u ) s Um átomo de Fourier janelado é construído com uma janela g transladada por u e modulado por uma freqüência ξ: φ γ (t) = g u,ξ (t) = e iξt g(t-u) Na análise tempo-freqüência, a Transformada Wavelet Wf(u,s) é comparável à transformada de Fourier janelada Sf(u,ξ) para medidas dos componentes espectrais de tempo-freqüência, porém com resoluções diferentes. Sf(u,ξ) = f(t) g u,ξ dt A escalabilidade da Transformada Wavelet pode ser usada para a detecção e caracterização de singularidades. Singularidade e estruturas irregulares carregam informações essenciais do sinal. Um coeficiente wavelet Wf(u, s) mede a variação de f em uma vizinhança de u com tamanho de vizinhança proporcional a s. Em imagens, os contornos são indicados pelos coeficientes wavelet de grande amplitude. A transformada de Fourier Contínua janelada Sf(u,ξ) e a Transformada Wavelet Wf(u,s) são representações bidimensionais de um sinal unidimensional f. Isto indica a existência de redundâncias entre os coeficientes resultantes da transformada. Estas redundâncias podem ser reduzidas ou mesmo removidas por meio de uma subamostragem que consistem na remoção de um a cada dois coeficientes gerados. O resultado sub-amostrado destas transformadas pode definir uma representação completa

38 38 do sinal se o mesmo puder ser reconstruído por uma combinação linear de famílias discretas de átomos de Fourier janelados ou átomos wavelet. A teoria de frames analisa a completude, estabilidade e redundâncias da representação de um sinal discreto linear. Um frame é uma família de vetores {φ n } n Z que são caracterizados por qualquer sinal f de seu produto interno {<f,φ n >} n Z. A Transformada de Fourier janelada Discreta e a Transformada Wavelet Discreta geram representações do sinal que seguem este o formalismo da teoria de frames. Uma Transformada Wavelet Rápida é calculada com algoritmos de banco de filtros e são utilizadas principalmente em imagens para discriminação de texturas e detecção de bordas. Pode-se construir wavelets ψ tais que a família dilatada e transladada de: 1 t 2 { j n ψ j,n (t) = j ψ( )}(j,n) Z 2 j 2 2 Onde ψ j,n (t) é uma base ortonormal em L 2 (R). Wavelet ortogonais dilatadas por 2 j carregam variações do sinal na resolução 2 -j. A aproximação em multiresolução é totalmente caracterizada pela função de escala φ que gera uma base ortogonal para cada espaço V j. A função escala é especificada por um filtro discreto chamado filtro espelho conjugado. A propriedade de causalidade de multiresolução que impõe: j Z, V j1 V j Em particular 2-1/2 φ(t/2) V1 V0. Se {φ(t-n)}n Z é uma base ortogonal de V0, podemos decompor: utilizando: 1 2 t φ( ) = h[n] φ(t-n), 2 n= 1 t h[n] = < φ( ), φ(t-n) >. 2 2 A equação de escala define uma dilatação de φ por 2. A seqüência h[n] será interpretado como um filtro discreto. Muitas aplicações de bases wavelet exploram a habilidade de aproximar eficientemente classes particulares de funções com poucos coeficientes wavelet não zero. A definição da ψ precisa ser otimizada para produzir o máximo número de valores próximos de zero. Isto depende grandemente da regularidade da função f, o número de momentos nulos de ψ e o tamanho de seu suporte.

39 39 Para uma função ψ com p momentos nulos temos: tk ψ(t) dt = 0 para 0 k < p significando que ψ é ortogonal a qualquer polinômio de grau p-1. Se f tem uma singularidade isolada em t0 e se t0 está dentro do suporte de 2 j ψ j,n (t) =, 2ψ(2-j(t-n)) então <f, ψ j,n > poderá ter uma grande amplitude. Para minimizar a quantidade de coeficientes de grandes amplitudes é preciso reduzir o tamanho do suporte de ψ. Para minimizar o tamanho do suporte, é preciso sintetizar filtros espelho conjugado com a menor quantidade de coeficientes não-zero quanto possível. O tamanho do suporte e o número de momentos nulos são, a princípio, independentes, entretanto, se ψ tem p momentos nulos então seu suporte deve ter ao menos o tamanho 2p-1. Assim, quando escolhemos uma wavelet em particular é necessário fazer um trade-off entre o número de momentos nulos e o tamanho de seu suporte. A regularidade de ψ tem grande influência na ocorrência de erros na quantização dos coeficientes wavelet. Quando um sinal for reconstruído a partir dos coeficientes wavelets, um erro adicionado ao coeficiente (inserido pela quantização) irá gerar um erro no sinal reconstruído, onde a regularidade da wavelet ψ é proporcional a regularidade dos erros gerados. Em aplicações de codificação de imagens, erros regulares são menos visíveis que erros irregulares, devido ao seu menor nível de energia. Assim, as imagens reconstruídas terão melhor qualidade caso sejam utilizadas wavelets com maior regularidade. Em uma base ortogonal, os componentes de decomposição são computados com um algoritmo rápido de banco de filtros. Uma Transformada Wavelet rápida decompõe sucessivamente cada aproximação Pvjf em uma aproximação Pvj1f e coeficientes wavelet presentes em Pwj1f. Para a reconstrução dos coeficientes wavelet originais cada Pvjf é reconstruído a partir de Pvj1f e Pwj1f. De acordo com MALLAT (1998), a decomposição wavelet segue as seguintes equações: a j1 [p] = d j1 [p] = n= n= h[n-2p] aj[n] = a j * h[2p] g[n-2p] aj[n] = a j * g[2p]

40 40 e a sub-amostragem: x[n] = { x[p] para n = 2p 0 para n = 2p1 Assim, a reconstrução descrita por MALLAT segue a seguinte equação: ã j [p] = n= h[p-2n] aj1[n] n= g[p-2n] dj1[n] = a j1 * h[p] d j1 * g[p] Na reconstrução é necessária a inserção de zeros para retirar o alias inserido na decomposição, como segue: x[p] se n = 2p x[n] = { 0 se n = 2p1 A Figura 3.2 mostra o processo de decomposição Wavelet e posterior reconstrução do sinal original. Na etapa de decomposição temos a convolução entre o conjunto de dados de entrada a j [n] e o conjunto de coeficientes da função escala g subamostrados por um fator 2, gerando os coeficientes d j1 [n] do nível de detalhes j1 e a convolução entre o conjunto de dados de entrada a j [n] e o conjunto de coeficientes da função wavelet h sub-amostrados por um fator 2, gerando os coeficientes a j1 [n] do nível de aproximação j1. Na etapa de reconstrução temos, inicialmente, uma etapa de interpolação por zero nos sinais de detalhes d j1 [n] e aproximação a j1 [n], seguida pela convolução entre o conjunto de dados de detalhes d j1 [n] e o conjunto de coeficientes da função escala inversa g, somado com a convolução entre o conjunto de dados de aproximação a j1 [n] e o conjunto de coeficientes da função wavelet inversa h, gerando o sinal ã j [n]. A diferença entre os sinais ã j [n] e a j [n] deve ser a menor possível, preferencialmente nula, significando que o processo de decomposição e reconstrução não alterou o conjunto de dados originais, ou alterou de forma não significativa em sistemas onde alguma perda de qualidade é aceitável. O sistema visual humano é capaz de realizar a interpolação entre as informações visuais, de modo que apenas algumas informações sensoriais são necessárias para compreensão da imagem. Nestes casos algum nível de perda pode ser tolerado no sinal reconstruído, de modo a validar o processo de compactação e reconstrução. h 2 a j1 [n] 2 ~ h ã j [n] a j [n] g 2 d j1 [n] 2 ~ g Figura 3.2: Decomposição e Reconstrução Wavelet.

41 41 Em uma decomposição wavelet, o sinal de entrada é decomposto em um ou mais níveis de resolução, também chamados de oitavas. Esta decomposição é realizada por meio de filtros passa-baixas e passa-altas, onde o filtro passa-baixas produz o sinal de aproximação, enquanto o filtro passa-altas produz o sinal de detalhes. A Figura 3.3 mostra a estrutura básica de um sistema onde um sinal unidimensional é decomposto por uma DWT de três oitavas, gerando três níveis de detalhes e um nível de aproximação. Passa Baixas Aproximação Data in Passa Baixas Passa Altas Passa Baixas Passa Altas Passa Altas detalhe 3 detalhe 2 detalhe 1 Figura 3.3: Decomposição Wavelet. A saída de cada oitava possui a mesma quantidade de valores que a entrada, sendo metade representando o sinal de detalhes e a outra metade o sinal de aproximação. Isto se dá devido a decimação por 2 que deve ocorrer após a decomposição de cada oitava, em decorrência da redundância existente na representação resultante previsto na teoria Wavelet. A Figura 3.4 ilustra a relação existente entre os dados de uma oitava e os da oitava anterior. De acordo com a Figura 3.4, o nível de detalhe 1 é o conjunto de valores que representa as freqüências mais altas existentes no sinal de entrada, o nível de detalhe 2 é o conjunto de valores que representa as freqüências mais altas existentes na aproximação proveniente da 1 a oitava. Assim cada nível de detalhe conterá as freqüências mais altas existentes na aproximação resultante da oitava anterior. Cada nível de detalhes terá N/(2n) valores, onde N é a quantidade de dados que compõem o vetor original e n é o número da oitava onde o detalhe foi gerado e a aproximação final sempre terá N/(2n) valores. Com isso podemos afirmar que independente do número de oitavas, o conjunto de saída terá sempre a mesma quantidade de amostras que o sinal de entrada. 1 a oitava aproximação detalhe 1 aproximação 2 a oitava detalhe 2 detalhe 1 detalhe 3 3 a oitava detalhe 2 detalhe 1 aproximação Figura 3.4: Decomposição em multiresolução de 3 oitavas. ω ω ω

42 42 Uma DWT para duas dimensões opera de forma semelhante a uma DWT para uma dimensão com a diferença que em cada oitava ocorre um nível de decomposição vertical e um nível de decomposição horizontal, gerando quatro conjuntos de dados, onde três são níveis de detalhe (LH, HL e HH) e um nível de aproximação (LL), conforme observado na Figura 3.5. Uma idéia semelhante pode ser aplicada para transformadas Wavelet de qualquer número de dimensões. Figura 3.5: Decomposição 2D. A decomposição em duas dimensões de um frame em várias oitavas ocorre de forma semelhante à transformada em uma dimensão, ou seja, em cada oitava ocorre um nível da decomposição do sub-frame que corresponde ao sinal de aproximação (sinal de baixas freqüências). A Figura 3.6 mostra cada passo da decomposição em quatro oitavas. Figura 3.6: Decomposição 2D em 4 oitavas. Como apresentado em ACHARYA (2005), o filtro passa-baixas é implementado pela convolução do sinal de entrada e uma função Wavelet, enquanto o filtro passa-altas é implementado pela convolução do sinal de entrada e uma função de escala. g representa os coeficientes da função de escala h representa os coeficientes da função wavelet W representa os valores resultantes da aplicação da função wavelet (sinal de aproximação) Wh representa os valores resultantes da aplicação da função escala (sinal de detalhe) W(j,n) = Wh(j,n) = 2n m= 0 2n m= 0 W(j-1,m) h(2n-m) W(j-1,m) g(2n-m)

43 43 Matematicamente, a transformada wavelet aproxima uma função representandoa como uma combinação linear de duas funções, a função wavelet ψ e sua função escala associada φ, pertencentes a uma família de funções {ψj,n(t)}, onde: {ψ j,n (t) = 1 ψ( 2 j t 2 j 2 j n ) }(j,n) Z2 sendo ψ uma função wavelet mãe, t uma translação da função ψ e 2j seu coeficiente de dilatação. Resultando na família de funções ψj,n(t), que representam uma base ortonormal em R2. Com isso a transformada produzida proporciona uma transformação linear que pode ser aplicada nas formas direta e inversa Esquema Lifting Um conjunto de amostras provenientes mundo real apresentam alto grau de correlacionamento entre os pixels e a idéia básica do esquema lifting consiste em decorrelacionar estas informações, de modo a produzir uma representação compacta do conjunto de amostras original. O esquema lifting é um processo que pode ser dividido em três estágios (DAUBECHIES, 1998) (SWELDENS 1995) (SWELDENS 1996) (SWELDENS 1997), os quais são conhecidos como: split, predict e update. No primeiro estágio do processo de lifting, estágio de split, o conjunto original de amostras é separado em dois subconjuntos. Não existe nenhuma regra formal ou restrição de como deve ocorrer o split das amostras, existe apenas a necessidade de existir um procedimento para restaurar o conjunto original a partir dos dois subconjuntos resultantes. Para proporcionar que na saída do processo seja produzida a menor quantidade de informação possível, o processo de split, aplicado a um conjunto de amostras de entrada altamente correlacionado, deve separar estes dados mantendo a correlação entre os dois subconjuntos resultantes. Os melhores resultados são obtidos quando os dois conjuntos de dados são entrelaçados (DAUBECHIES, 1998). Em DAUBECHIES (1998) é mostrada uma maneira simples e intuitiva de realizar o processo de split. Considerando um conjunto de amostras de entrada definida como x, é gerado um primeiro subconjunto chamado x e, que corresponde às amostras de índice par e um segundo subconjunto chamado de x o, que corresponde às amostras de índice ímpar, de modo a resultar na separação do conjunto de amostras de entrada em duas partes disjuntas. Este método também é conhecido como Lazy Wavelet. Considerado que os conjuntos de amostras x e e x o apresentam forte correlação, a partir de um dos subconjuntos é possível construir um bom preditor (P) para o outro subconjunto de amostras, ou seja: x o P(x e ) Como o preditor P não produz um valor exato, ocorre o surgimento de um conjunto diferença ou detalhe d: d = x o - P(x e )

44 44 Considerando que P seja um bom preditor, d será um conjunto esparso e decorrelacionado. Na prática, pode não ser possível prever exatamente x o baseado em x e, porém se a predição for razoável, a substituição de x o pela diferença entre x o e P(x e ) resulta em uma quantidade menor de informação que o conjunto x o original. Como resultado do passo predict, temos que os dois subconjuntos x e e x o são transformados nos subconjuntos x e e d. Como x e representa uma sub-amostragem do conjunto original de amostras x, um problema de aliasing ocorre. Este aliasing pode ser eliminado com a introdução do segundo passo de lifting, conhecido como update. No estágio de update, o subconjunto x e é substituído por uma versão do subconjunto x e atenuada pelo valor resultante da aplicação de um operador update (U) ao conjunto d, ou seja: s = x e U(d) Como resultado do passo update, temos a geração dos subconjuntos s e d, onde o subconjunto x e foi substituído pelo subconjunto s para evitar aliasing. A Figura 3.7 mostra a estrutura do esquema lifting, onde é possível observar a disposição dos três estágios split, predict (P) e update (U) e o fluxo de geração dos subconjuntos x e e x o a partir do conjunto de amostras de entrada x e a computação dos subconjuntos de saída d e s. x o - d x split P U x e s Figura 3.7: Esquema Lifting. Uma importante consideração a respeito do esquema lifting é que independente de como ocorre a escolha de P e U, esta arquitetura é inversível para todos os casos e sempre permite a reconstrução perfeita das amostras originais. Entretanto, a escolha de P e U afetam diretamente o grau de decorrelacionamento entre as amostras. Assim a escolha dos coeficientes de P e U é um ponto importante para a implementação de uma transformada wavelet. Os operadores aritméticos de circuitos digitais possuem o tamanho da palavra limitado, de modo que a utilização de operações com números reais apresenta precisão limitada. Assim, a utilização de operadores aritméticos limitados para o cálculo de P e U onde é requerido um alto grau de decorrelacionamento, resulta em um esquema lifting não inversível, ou também chamado irreversível. Logo, surgem dois tipos diferentes de transformada wavelet: transformadas reversíveis e transformadas irreversíveis. Em métodos de compressão de imagens sem perdas, a imagem deve ser reconstruída exatamente como a original, logo a transformada utilizada deve ser

45 45 reversível. O padrão JPEG2000 sugere a implementação desta transformada com coeficientes inteiros. A grande desvantagem da utilização deste tipo de transformada é o reduzido grau de decorrelacionamento resultante. Em métodos de compressão de imagens com perdas, é permitido certo nível de erro entre a imagem original e a imagem reconstruída, permitindo assim, a utilização de operadores aritméticos limitados, que são utilizados em cálculos envolvendo valores reais aproximados. Na Figura 3.8 é mostrada a estrutura lifting sugerida no padrão JPEG2000 para o cálculo da transformada wavelet irreversível. Input 2 X(2n) 2 X(2n1) k α(1z) β(11/z) γ(1z) δ(11/z) -1/k Low Pass Output High Pass Output Figura 3.8: Estrutura lifting utilizada no compressor com perdas (ITU-T, 2000) A arquitetura, sugerida em ITU-T (2000) apresenta um estágio de split, dois estágios de predict (P) e update (U) e um estágio de escalonamento final. 3.2 Quantização Para proporcionar o alto ganho em área de armazenamento, nos modos de compressão com perdas do padrão JPEG 2000, ocorre um passo de quantização após a DWT. Esta quantização tem por objetivo reduzir a precisão dos coeficientes, de modo a reduzir a quantidade de bits necessária para representar a imagem. A quantização é um dos passos que proporciona a maior perda de informação de todo compressor. Como esta perda é irreversível, o nível de quantização deve estar de acordo com fidelidade requerida para a imagem reconstruída. Para compressão irreversível, não é definido pelo padrão JPEG2000 (ITU-T, 2000) o valor do passo de quantização, permitindo que o aplicativo selecione o melhor passo de quantização, de acordo com as características da imagem a ser comprimida. Para compressão sem perdas o passo de quantização é sempre definido como 1. A quantização é implementada divisão escalar uniforme de acordo com a equação abaixo: q b ( i, j) = sign ( y ( i, b j)) y b ( i, b j) onde y b (i,j) representa o coeficiente da DWT da sub-banda b e b é o passo de quantização da sub-banda b.

46 Codificação Aritmética A codificação aritmética é uma das muitas técnicas de compressão com comprimento de palavra variável (ACHARYA, 2005). Neste tipo de codificação, a seqüência de símbolos de entrada é representada por um intervalo de números reais entre 0,0 e 1,0. Este tipo de codificação oferece maior eficiência e flexibilidade, quando comparado com outros métodos de codificação, como Huffman. Porém, a codificação aritmética apresenta maior complexidade e menor possibilidade de recuperação de dados em caso de erros. Pode-se considerar que a codificação aritmética apresenta inicialmente, um intervalo normalizado e cada símbolo de um alfabeto A possui uma probabilidade inerente. A cada novo símbolo na entrada, a faixa de valores normalizada é modificada. A partir do intervalo de entrada [0,1), é lido um símbolo da entrada e de acordo com a sua probabilidade esta faixa é modificada para [0,X) ou [X,1). No passo seguinte a faixa de valores é novamente normalizada, porém mantendo os valores extremos que representa. A Figura 3.9 representa o processo de codificação no qual foi inserida em sua entrada a seqüência de símbolos abbaa, pertencentes a um alfabeto A e a probabilidade do símbolo a é 0,6 e a probabilidade do símbolo b é 0,4. Assim, o intervalo inicial é [0,0 ; 1,0) e a faixa de intervalos de cada símbolo de entrada pertencente ao alfabeto A é: b = [0,0 ; 0,4) e a = [0,4 ; 1,0). Com a entrada do primeiro símbolo (símbolo a), o intervalo é reduzido para [0,4 ; 1,0). Cada novo sub-intervalo é considerado um intervalo normalizado para fins de cálculo da probabilidade de cada símbolo, de modo que o símbolo a (que possui probabilidade 0,6) do primeiro sub-intervalo é representado pelo intervalo [0,64 ; 1,00) e o símbolo b (que possui probabilidade 0,4) é representado pelo intervalo [0,40 ; 0,64). O segundo símbolo (símbolo b), posiciona o novo sub-intervalo em [0,40 ; 0,64). O terceiro símbolo (símbolo b), posiciona o novo sub-intervalo em [0,400 ; 0,496). O quarto símbolo (símbolo a), posiciona o novo sub-intervalo em [0,4384 ; 0,4960). O quinto símbolo (símbolo a), posiciona o novo sub-intervalo em [0,46144 ; 0,49600). Deste modo, a seqüência abbaa pode ser representada por qualquer valor pertencente ao intervalo [0,46144 ; 0,49600), por exemplo 0,48. 1,0 1,00 0,640 0,4960 0,49600 a a a a a 0,4 0,64 0,496 0,4384 0,46144 b b b b b 0,0 0,40 0,400 0,4000 0,43840 Figura 3.9: Processo de codificação aritmética.

47 47 Segundo ACHARYA (2005), o algoritmo de codificação aritmética apresenta as seguintes limitações: O valor codificado não é único. Como a codificação resulta em um intervalo de valores [x,y), a decodificação pode apresentar uma seqüência com um número infinito de símbolos. Não ocorre a transmissão de nenhuma informação até o final da codificação. Logo o decodificador deve ser capaz de armazenar toda a mensagem antes de realizar a decodificação. A precisão requerida para representar o intervalo resultante cresce com a quantidade de símbolos codificados. A utilização de multiplicadores para recalcular a nova faixa dinâmica, a cada passo, pode se tornar proibitiva para aplicações de tempo real. O algoritmo é extremamente sensível a ocorrência de erros. O menor erro pode representar a decodificação de um conjunto de símbolos completamente diferente Codificação Aritmética Binária A técnica de codificação aritmética binária soluciona alguns dos problemas que a codificação aritmética original apresenta. Uma das principais vantagens é a não necessidade de aguardar o final da codificação para transmitir a informação, logo o decodificador não necessita armazenar toda a informação codificada antes de proceder a decodificação. O problema da precisão no cálculo das faixas dinâmicas pode ser resolvido com a utilização de uma aritmética de ponto fixo e o escalonamento do intervalo resultante. Para a utilização de aritmética em ponto fixo, a faixa inicial é substituída de [0,0 ; 1,0) para [0, MAX_VALUE) onde MAX_VALUE representa o maior número inteiro que pode ser representado e vale 2 n -1. Sempre que a faixa dinâmica ficar reduzida à metade da faixa original, ocorre um re-escalonamento da faixa dinâmica e conseqüente transmissão de um bit, que possui valor Lo ou Hi dependendo da situação que causou o re-escalonamento. Considerando o intervalo inicial [MIN_VALUE, MAX_VALUE), a computação de cada passo de codificação gera um novo intervalo definido como [NEW_MIN_VALUE, NEW_MAX_VALUE) e pode produzir um bit codificado de acordo com as regras abaixo: Caso NEW_MAX_VALUE < (MAX_VALUE1)/2 ocorre a geração de um bit de valor Lo e re-escalonamento. O novo intervalo será [2*NEW_MIN_VALUE, 2*NEW_MAX_VALUE). Caso SP_COUNT > 0 gera n bits em nível Hi, onde n representa o conteúdo de SP_COUNT; Caso NEW_MIN_VALUE (MAX_VALUE1)/2 ocorre a geração de um bit de valor Hi e re-escalonamento. O novo intervalo será [2*(NEW_MIN_VALUE- (MAX_VALUE1)/2), 2*(NEW_MAX_VALUE-(MAX_VALUE1)/2)). Caso SP_COUNT > 0 gera n bits em nível Lo, onde n representa o conteúdo de SP_COUNT;

48 48 Caso NEW_MAX_VALUE < (MAX_VALUE1)*3/4 e NEW_MIN_VALUE (MAX_VALUE1)/4 não ocorre a geração de bit algum, ocorre re-escalonamento e incremento de um contador SP_COUNT. O novo intervalo será [2*(NEW_MIN_VALUE-(MAX_VALUE1)/4), 2*(NEW_MAX_VALUE- (MAX_VALUE1)/4)) QM-Coder O QM-coder é um algoritmo de codificação aritmética adaptado para utilização com valores binários, também é utilizado no processo de compressão de imagens bilevel do padrão JBIG (ACHARYA, 2005). As principais características do algoritmo QM-coder são simplicidade e velocidade. Este algoritmo é livre de multiplicações e realiza as aproximações dos intervalos utilizando somente operações de soma, subtração e deslocamento com precisão fixa. O QM-coder opera segundo um mapeamento dos bits de entrada em símbolos mais prováveis (MPS) ou símbolos menos prováveis (LPS). O mapeamento em função de MPS e LPS é vantajoso em relação a um mapeamento de bits 0 e bits 1, pois permite a obtenção de uma melhor compressão. Como somente existem dois símbolos no alfabeto (MPS e LPS), se a probabilidade do LPS é Q, então a probabilidade do MPS será (1-Q). Considerando que A seja o intervalo unitário, então o intervalo designado para LPS será AQ e o intervalo designado para MPS será A(1-Q). O algoritmo considera que o intervalo A sempre possui seu valor aproximado a 1 (na faixa de 0,75 a 1,5), logo os intervalos podem ser aproximados para: Intervalo designado para LPS => AQ Q => [A-Q, A); Intervalo designado para MPS => A(1-Q) A-Q => [0, A-Q). e deste modo, as multiplicações são evitadas. As duas principais variáveis do codificador são A e C, onde A representa o sub-intervalo considerado e C representa código de saída. Cada codificação de um intervalo MPS ou LPS afeta as variáveis A e C. O valor da variável C deve ser somado ao valor inicial do sub-intervalo, 0 para o caso de uma codificação MPS e A - Q para o caso de uma codificação LPS. O valor de A é substituido pelo sub-intervalo MPS, que vale A - Q ou pelo sub-intervalo LPS, que vale Q. Caso o valor de A fique abaixo de 0,75, as variáveis A e C sofrem renormalização. A renormalização consiste em um deslocamento à esquerda das variáveis A e C, até que o valor de A volte a pertencer à faixa (1,5, 0,75]. A variável C deve ser deslocada para manter o sincronismo entre as duas variáveis. O valor de Q, que representa a estimação da probabilidade, é dado por uma tabela pré-definida que é atualizada cada vez que ocorre renormalização.

49 Considerando que Q representa o intervalo do LPS, seu valor sempre será menor que 0,5, pois a probabilidade do LPS será sempre menor que 50%. Neste caso, sempre que ocorrer a codificação de um intervalo LPS, ocorrerá renormalização. 49

50 50 4 ARQUITETURAS PARA A DWT DE UMA DIMENSÃO A implementação da transformada Wavelet Discreta (DWT) em n dimensões pode ser obtida por aplicações sucessivas de uma 1D-DWT, de acordo com CHAKRABARTI (1995), logo a importância da implementação em hardware da 1D- DWT. De acordo com a seção 3.1.1, a transformação wavelet é realizada por um processo de filtragem de um sinal de entrada, gerando dois sinais distintos, onde o primeiro representa a componente de saída de um filtro passa-baixas e o segundo representa a componente de saída de um filtro passa-altas. Considerando que o sinal de entrada é um conjunto de dados amostrado a partir de um sinal de entrada analógico, estes filtros passa-altas e passa-baixas podem ser implementados através de dois filtros digitais, que podem ser organizados como um banco de filtros. Entretanto é possível utilizar outras arquiteturas, visando melhorias de desempenho. A utilização de uma arquitetura lifting proporciona uma redução na quantidade de operadores aritméticos, porém aumenta a latência da arquitetura. A implementação de uma DWT com mais de uma oitava é realizada utilizando o conceito de recursividade, ou seja, os coeficientes gerados pela saída passa-baixas são reinseridos para serem computados no bloco de filtragem. Nestes casos, o uso do RPA proporciona um ganho significativo no tempo de computação e na redução do uso da memória. 4.1 Banco de filtros Em SALOMON (2000) é definido que uma filtragem digital é uma operação linear entre os coeficientes do filtro h(0), h(1),.., h(n) e um vetor de entrada x, produzindo um vetor de saída y, de acordo com: y(n) = k = h(k) x(n - k) = h x Onde indica uma operação de convolução. Como o somatório acima não apresenta explícitamente um limite na quantidade de operandos, a quantidade de operações realizadas depende do número de amostras dos vetores x e h. Apesar da equação apresentar o índice n variando de - a, o valor das amostras para n<0 e n>n-1 terá sempre valor zero, considerando N igual ao número de amostras de entrada. A idéia básica de um banco de filtros é realizar um banco de análise composto de dois filtros e um banco de síntese também composto de dois filtros.

51 51 O banco de filtros de análise, que é utilizado no processo de transformação direta, realiza a separação do sinal de entrada em duas bandas bem definidas, uma banda composta de valores de alta freqüência gerada pela convolução do sinal de entrada com os coeficientes de um filtro passa-altas h1 e uma banda composta de valores de baixa freqüência gerada pela convolução do sinal de entrada com os coeficientes de um filtro passa-baixas h0. Os filtros de análise são alimentados com as amostras do vetor x, uma a cada ciclo de clock, gerando a cada amostra x(n) uma saída yl(n) e uma saída yh(n). Com isso o número de coeficientes de saída corresponde ao dobro do número de amostras de entrada (considerando apenas dois filtros), significando um resultado negativo para uma compressão de dados. Para corrigir esta situação, cada filtro é seguido por uma etapa de downsampling que descarta todas as saídas de índice 2n1. O banco de filtros de síntese, que é utilizado no processo de transformação inversa, realiza a união do sinal proveniente de cada uma das duas sub-bandas gerando um vetor de saída reconstruído (n) equivalente ao vetor x. Os filtros de síntese são alimentados com os sinais gerados pelas saídas de análise yl(n) e yh(n), que passaram pela etapa de downsampling, logo para gerar o vetor (n) com uma quantidade de valores equivalente ao do vetor x, se faz necessário um processo de upsampling antes dos filtros de síntese. Este processo consiste na inserção de coeficientes nulos (valor 0) entre cada um dos coeficientes dos vetores yl e yh. Em processos de transformação sem perdas os vetores x e são idênticos, porém em processos de transformação que permitam algum grau de perda, os dois vetores podem ser ligeiramente diferentes, devido a limitações do número de casas significativas nos coeficientes h. A profundidade de cada filtro influencia na quantidade de coeficientes das saídas yl e yh. Considerando que o vetor de entrada tenha n amostras e o filtro tenha m coeficientes, o vetor de saída terá mn-1 coeficientes. Após o downsampling, a quantidade de coeficientes é reduzida para (mn-1)/2, proporcionando uma diferença com a quantidade esperada de coeficientes na saída do filtro, que deveria ser n/2. A truncagem dos coeficientes excedentes (coeficientes após índice n/2) não é uma estratégia válida por ocasionar a perda irreversível das informações da borda da imagem. A solução para este problema é a adoção de uma estratégia de espelhamento das bordas do vetor de entrada e posterior truncagem dos valores de índices excedentes. Com isso não ocorre perda de informação de borda nem quantidade excedente de coeficientes no vetor de saída. A Figura 4.1 ilustra a estratégia de espelhamento das bordas. GFEDCBABCDEFGHI...RSTUVWXYZYXWVUT Figura 4.1: Espelhamento das bordas do vetor de entrada. O processo de espelhamento das bordas requer a computação extra de coeficientes, porém permite a geração dos n/2 coeficientes válidos, truncando os coeficientes excedentes.

52 RPA O algoritmo RPA descrito em VISHWANATH (1994) é uma importante estratégia para implementar a arquitetura de uma DWT de uma dimensão, por permitir a computação dos coeficientes de saída de todas as oitavas de ordem superior a primeira de modo intercalado com a computação dos coeficientes de saída da primeira oitava. Deste modo, o tempo total de computação de todas as oitavas é igual ao tempo de computação da primeira oitava. Uma segunda vantagem do uso do RPA é a redução da quantidade de memória para o armazenamento dos dados para a computação de todas as oitavas. No RPA o requisito de memória para o armazenamento dos coeficientes de saída é de apenas um conjunto de J*K registradores, onde J representa a quantidade de oitavas da DWT e K representa a profundidade do filtro com maior quantidade de TAPs. Por exemplo: uma transformada de 3 oitavas utilizando filtros de 4 TAPs requer 12 registradores, sendo 4 registradores para a computação de cada oitava. A Figura 4.2 mostra a seqüência de saída do RPA para 3 oitavas. No primeiro ciclo é computado o primeiro coeficiente da primeira oitava. 3 oitava computada índice da amostra Figura 4.2: Seqüência do RPA para 3 oitavas.

53 53 O algoritmo abaixo apresenta o RPA de modo comportamental, onde N define a quantidade de amostras de entrada, i é o contador do número da amostra a ser computada e j é o contador da oitava a ser computada. main program begin{recursive Pyramid} input: x[i:1,n] for (i=1 to N) rdwt(i,1) end {recursive Pyramid} rdwt(i,j) begin{rdwt} if (i is odd) comput output numbered ((i1)/2) of octave j else rdwt(i/2, j1) end{rdwt} A cada ciclo do laço for, apenas um coeficiente de saída é computado. Neste algoritmo, a computação ocorre somente quando a amostra for de índice impar. Quando i tiver índice par, o procedimento rdwt(i,j) é chamado recursivamente com i valendo metade de seu valor no ponto de chamado. A computação do coeficiente de aproximação deverá ser considerada pelo algoritmo acima como uma exceção, pois deverá ser computada para as amostras de índice par da última oitava. A maneira de fazer isso é computar como o coeficiente de índice par da ultima oitava. A Tabela 4.1 mostra o valor de i a cada nível de recursão.

54 54 Tabela 4.1: Seqüência de computação do RPA para 3 oitavas i i/2 i/4 operação 1 computação do 1 o coeficiente de detalhe da 1 a oitava 2 1 computação do 1 o coeficiente de detalhe da 2 a oitava 3 computação do 2 o coeficiente de detalhe da 1 a oitava computação do 1 o coeficiente de detalhe da 3 a oitava 5 computação do 3 o coeficiente de detalhe da 1 a oitava 6 3 computação do 2 o coeficiente de detalhe da 2 a oitava 7 computação do 4 o coeficiente de detalhe da 1 a oitava computação do 1 o coeficiente de aproximação 9 computação do 5 o coeficiente de detalhe da 1 a oitava 10 5 computação do 3 o coeficiente de detalhe da 2 a oitava 11 computação do 6 o coeficiente de detalhe da 1 a oitava computação do 2 o coeficiente de detalhe da 3 a oitava 13 computação do 7 o coeficiente de detalhe da 1 a oitava 14 7 computação do 4 o coeficiente de detalhe da 2 a oitava 15 computação do 8 o coeficiente de detalhe da 1 a oitava computação do 2 o coeficiente de aproximação 17 computação do 9 o coeficiente de detalhe da 1 a oitava 18 9 computação do 5 o coeficiente de detalhe da 2 a oitava A Figura 4.3 apresenta a seqüência dos coeficientes de saída do bloco da 1D- DWT. Considerando n = [0..N-1], N igual ao número de amostras de entrada (ex: uma linha completa da imagem), X o número de oitavas a ser computada e t o índice inteiro para definir o momento da computação de um coeficiente, a geração dos coeficientes de saída da DWT segue as seguintes regras: Gera os coeficientes de saída do nível X de detalhes quando t = 2 X n2 X- 1-1; Gera os coeficientes de saída do nível de aproximação quando t = 2 X n2 X -1. entrada detalhe 1 (y1) detalhe 2 (y2) detalhe 3 (y3) aproximação (y) X(0) X(1) X(2) X(3) X(4) X(5) X(6) X(7) X(8) X(9) X(10) X(11) X(12) X(13) X(14) X(15) X(16) y1(0) y1(1) y1(2) y1(3) y1(4) y1(5) y1(6) y1(7) y1(8) y2(0) y2(1) y2(3) y2(4) y3(0) y3(0) y(0) y(1) t t Figura 4.3: Seqüência do RPA para 3 oitavas.

55 55 A partir da Figura 4.3, observa-se que a principal desvantagem do uso RPA é que os dados de saída se apresentam de forma intercalada, requerendo um pósprocessamento para rearranjar cada uma das bandas resultantes. A seqüência de saída do RPA para o processamento de uma DWT de 3 oitavas, considerando n = [0..N-1] e N igual ao número de amostras de entrada: os valores de ordem 2n correspondem ao nível de detalhe 1; os valores de ordem 4n1 correspondem ao nível de detalhe 2; os valores de ordem 8n3 correspondem ao nível de detalhe 3; os valores de ordem 8n7 correspondem ao nível de aproximação. Assim, de acordo com a Figura 4.4, no início da linha devem ser copiados os N/8 valores referentes ao nível de aproximação, a seguir os N/8 valores referentes ao 3 o nível de detalhes, a seguir os N/4 valores referentes ao 2 o nível de detalhes e por último os N/2 valores referentes ao 1 o nível de detalhes. aproximação detalhe 3 3 a oitava detalhe 2 detalhe 1 ω Figura 4.4: Ordenação de uma linha da saída da 1D-DWT de 3 oitavas. 4.3 Arquiteturas para a DWT de uma dimensão O cálculo da DWT de uma dimensão (1D-DWT) é feito por decomposição em sub-bandas, assim a implementação da arquitetura VLSI pode ser naturalmente feita por banco de filtros. Onde temos basicamente um filtro passa-altas e um filtro passa-baixas para o processamento de cada oitava. O processamento da 1D-DWT é feito por oitavas e cada oitava tem uma quantidade diferente de amostras de entrada, logo o tempo de computação é diferente para cada oitava. O processamento de cada oitava requer n/2 b-1 computações, onde n representa a quantidade total de amostras de entrada e b representa a oitava a ser computada. Assim o tempo de computação é proporcional à quantidade de computações requeridas. Após o processamento no banco de filtros, os coeficientes de saída de cada oitava são armazenados em uma memória, requerendo assim: # oitavas Quantidade de posições de memória = Neste método o processamento da DWT de J oitavas requer (2 J -1)N/2 J-1 ciclos de clock. Porém, considerando o espelhamento das bordas a cada oitava, como apresentado na seção 4.1, deve ser considerada o acréscimo de 2m ciclos de clock para a b= 0 n 2 b 1

56 56 computação das bordas. Deste modo, o processamento de uma DWT de J oitavas e J N borda de tamanho m requer ( ( 2 1) 2Jm J 1 2 ) ciclos de clock. Para otimizar este procedimento é utilizado o algoritmo da pirâmide recursivo (RPA), descrito na seção 4.2. Assim a cada oitava ocorre a geração de duas bandas a partir de um único conjunto amostras de entrada, uma banda de aproximação que é realimentada no sistema para a geração das oitavas posteriores e outra banda de detalhes. As primeiras arquiteturas dedicadas para a computação da DWT utilizando o RPA, encontradas na literatura, são as arquiteturas paralelas e as arquiteturas sistólicas, onde as arquiteturas paralelas utilizam a técnica de multiplexação no tempo, enquanto as arquiteturas sistólicas utilizam arranjos regulares baseadas em elementos de processamento pré-definidos. Além destas arquiteturas, Processadores Digitais de sinais (DSPs) também foram produzidos especificamente para a computação da DWT. Na seção são mostradas diversas arquitetura desenvolvida comercialmente Arquiteturas de filtros paralelos A implementação de uma arquitetura paralela multiplexada para a computação da DWT foi implementada a partir da descrição de KNOWLES (1990). A idéia básica da arquitetura é utilizar somente um conjunto de filtros para realizar a computação de todas as oitavas, multiplexando a computação dos coeficientes, seguindo a idéia do RPA apresentada na seção 4.2. A arquitetura apresenta as seguintes características: banco de filtros com dois filtros de profundidade K1 e K2. J*K registradores de m-bits, onde J representa a quantidade de oitavas, K a maior quantidade de TAPs dos filtros K1 e K2 e m representa o tamanho da palavra para armazenar o maior coeficiente possível; um multiplexador (chamado Mux1) para selecionar uma entre J entradas dos 2*K registradores de m-bits; um multiplexador (chamado Mux2) para fazer a seleção entre as duas saídas dos filtros (saídas de m-bits).

57 57 Input shift register CLK CLK1 shift register Mux 1 PA Filter Mux 2 Output shift register PB Filter CLK2 Figura 4.5: Arquitetura Paralela de três oitavas. (KNOWLES, 1990) A arquitetura paralela para a computação da 1D-DWT apresentado na Figura 4.5 mostra uma arquitetura para computar 3 oitavas (J = 3) utilizando 4 TAPs em cada filtro (K1 = K2 = 4). As amostras de entrada são inseridas diretamente no primeiro conjunto de registradores com taxa de cadenciamento idêntica ao do clock global do sistema. O multiplexador Mux1 deve habilitar a conexão do primeiro conjunto de registradores com os dois filtros a cada dois ciclos do sinal de clock. A saída do filtro passa-altas representa o sinal de detalhes da primeira oitava. A saída do filtro passa-baixas deve ser direcionada para o segundo conjunto de registradores com taxa de cadenciamento de metade do clock global do sistema. O multiplexador Mux1 deve habilitar a conexão do segundo conjunto de registradores com os dois filtros a cada quatro ciclos do sinal de clock (a partir do segundo ciclo). A saída do filtro passa-altas representa o sinal de detalhes da segunda oitava. A saída do filtro passa-baixas deve ser direcionada para o terceiro conjunto de registradores com taxa de cadenciamento de um quarto do clock global do sistema. O multiplexador Mux1 deve habilitar a conexão do terceiro conjunto de registradores com os dois filtros a cada quatro ciclos do sinal de clock (a partir do quarto ciclo). A cada quatro ciclos de clock são gerados de modo intercalado, o sinal de detalhes da terceira oitava, vindo da saída do filtro passa-altas, e o sinal de aproximação vindo da saída do filtro passa-baixas. O multiplexador Mux2 apenas muda de estado quando da seleção do sinal de aproximação, que ocorre a cada 8 ciclos. A síntese desta arquitetura utilizando coeficientes Daubechies 3TAPs direcionada para um FPGA da família APEX da ALTERA resultou em uma área de 551 LEs e uma freqüência máxima de 40MHz, considerando que os registradores foram mapeados em memória. Para aumentar a quantidade de oitavas nesta arquitetura basta acrescentar um conjunto de registradores para cada oitava extra e o número de estados da máquina de controle. Com isso a síntese da nova arquitetura resultou em uma área de 562 LEs e uma freqüência máxima de 40MHz. Como os registradores são mapeados na memória interna do FPGA seu acréscimo não influenciou na área total em LEs, assim presume-se que o acréscimo de 11 LEs ocorreu na etapa de controle.

58 Arquiteturas de Arranjos Sistólicos A implementação da arquitetura da 1D-DWT utilizando um arranjo sistólico, apresenta as características de regularidade, localidade e escalabilidade. A localidade é proporcionada pela utilização de um elemento de processamento (PE) pré-definido e fixo, a regularidade é proporcionada pela utilização do mesmo PE em todo o arranjo e escalabilidade é resultante da simplicidade de inserção de mais oitavas no arranjo. O primeiro arranjo sistólico implementado segue a descrição de SYED (1995). Todos os PE (mostrado na Figura 4.6) possuem internamente um registrador de m-bits, dois multiplicadores por constantes (G e H), que devido a isso, podem se multiplicadores simplificados e dois somadores. CLK Xin PE FF Xout Cte G Cte H * * Yout_PB Yin_PB Yout_PA Yin_PA Figura 4.6: Estrutura do Elemento de Processamento (SYED, 1995). Um arranjo sistólico para 3 oitavas e 4 TAPs em cada filtro é mostrado na Figura 4.7. A quantidade de PEs em cada oitava deve ser igual à quantidade de TAPs apresentada pelo filtro de maior quantidade de coeficientes. Uma etapa de controle foi implementada para gerar o sinal de clock diferenciado para cada oitava e a seleção do multiplexador de saída, de modo que o conjunto de dados de saída obedeça às definições do RPA. Devido a esta arquitetura não necessitar de qualquer controle para os PEs com exceção do sinal de clock, esta arquitetura possui uma regularidade muito boa. Input Output CLK CLK1 CLK2 control Figura 4.7: Arquitetura por Arranjo sistólico de três oitavas e 4 TAPs. A síntese desta arquitetura para coeficientes Daubechies 3TAPs direcionada para um FPGA da família APEX da ALTERA resultou em uma área de 988 LEs e uma freqüência máxima de 44MHz, considerando que os registradores foram mapeados em memória.

59 59 A inserção de oitavas extras nesta arquitetura demanda a inserção de um conjunto de PEs proporcional à quantidade de TAPs necessários em cada oitava, bem como a alteração da etapa de controle para a geração dos sinais de clock intercalados e seleção do multiplexador de saída. Com isso a síntese da nova arquitetura resultou em uma área de 1295 LEs e uma freqüência máxima de 44,4MHz. Comparado à arquitetura da seção 4.3.1, que não apresentou acréscimo significativo em área com o acréscimo de uma oitava, esta arquitetura possui operadores aritméticos internamente ao PE, logo o acréscimo de uma oitava resulta em aumento proporcional de área. Em outras palavras cada oitava requer aproximadamente 320 LEs. A segunda arquitetura sistólica implementada segue a descrição feita por FRIDMAN (1994). Esta arquitetura se baseia no arranjo de elementos de processamento (PE), possuindo uma quantidade de PEs igual ao número de TAPs do maior dos filtros. Como os registradores que definem o número de oitavas ficam colocados internamente aos PEs, o circuito de controle necessita apenas gerar os sinais para o acesso aos registradores internos dos PEs. A Figura 4.8 apresenta a estrutura interna do PE utilizado nesta arquitetura. Nela podemos observar os elementos presentes nas arquiteturas anteriores, como dois multiplicadores, dois somadores, as duas constantes (h e g) e os elementos de armazenamento. to x_demux in PE[i-2] from adder blocks in PE[i-1] x_demux x_latch_1 x_mux y_latch x_latch x_latch_2 x_latch_3 * x_latch_4 x_demux_ctrl1 x_mux_ctrl1 * from x_mux in PE[i2] g[n] h[n] to y_latch and x_latch in PE[i1] Figura 4.8: Estrutura do Elemento de Processamento (PE) para quatro oitavas. (FRIDMAN, 1994) Nesta arquitetura a localidade e a regularidade ficam bem definidas, porém a escalabilidade no que diz respeito ao número de oitavas é baixa por necessitar de uma complexa alteração no controle quando da inserção de oitavas extras. Entretanto, a escalabilidade no que diz respeito ao número de TAPs do filtro é alta, pois para isso basta conectar novos PEs em cascata.

60 60 S1(0) S2(0) S1(1) S3(0) S1(2) S2(1) S1(3) S4(0) S1(4) S2(2) S1(5) S3(1) X(0) X(2) X(4) X(6) X(8) X(10) X(1) X(3) X(5) X(7) X(9) X(11) Figura 4.9: Arquitetura por Arranjo sistólico com 6 TAPs. O fluxo de dados entre os diversos PEs da arquitetura é ilustrado por um arranjo de 6 TAPs mostrado na Figura 4.9. Nesta figura podemos observar que as amostras de ordem ímpar seguem pelas PEs de ordem par e as amostras de ordem par seguem pelas PEs de ordem ímpar. Os coeficientes de saída são gerados seguindo a ordem descrita no RPA e o fluxo de computação segue a ordem crescente dos PEs, conforme Figura 4.9. Nesta arquitetura, os coeficientes de oitavas de ordem menores são realimentados de volta para o PE 4 e PE 5 (de acordo se amostra de índice par ou impar) a partir da saída do PE 5. A síntese desta arquitetura para coeficientes Daubechies 4TAPs direcionada para um FPGA da família APEX da ALTERA resultou em uma área de 568 LEs e uma freqüência máxima de 25,3MHz, desconsiderando os registradores internos, que foram mapeados em memória Arquiteturas Comerciais Atualmente já existem IPs comerciais e equipamentos dedicados que implementam a DWT. Desde IPs que podem ser utilizados em protótipos de arquiteturas microprocessadas até circuitos que compõem sondas espaciais. A Analog Devices produz diversos dispositivos para realizar a transformada wavelet e a compressão/descompressão segundo o padrão JPEG2000. Para realizar a transformada Wavelet a Analog Devices possui os dispositivos ADV601 (ANALOG, 2005-a) e ADV611 (ANALOG, 2005-b) que são codificadores de vídeo, que operam a 27MHz e o dispositivo ADV202 (ANALOG, 2005-c), que realiza a compressão e a descompressão segundo o padrão JPEG2000 (ITU-T, 2000). O principal objetivo das missões de exploração espacial feita pela NASA é coletar e transmitir para uma estação receptora na Terra, imagens e informações de diversos tipos de sensores. Atualmente existem em marte dois MERs (chamados Spirit e Opportunity) equipados com nove câmeras cada um. Para transmitir as imagens captadas pelas câmeras para a Terra, é utilizado um processo de compressão de imagens semelhante ao padrão JPEG2000, chamado ICER (KIELY, 2002) (KIELY, 2003). O ICER é capar de tratar as imagens com resolução de 1024x1024 pixels de 12 bits. Empresas como a Barco Silex (BARCO, 2005-a) e a CAST Inc. (CAST, 2005) mantém parcerias com os fabricantes de FPGAs para o desenvolvimento de soft IPs diversos. A Tabela 4.2 mostra os soft IPs para a implementação da 2D-DWT desenvolvido pela Barco Silex, chamado 113FDWT (BARCO, 2005-b) e pela CAST Inc, chamado C_2DDWT (CAST, 2005-c).

61 61 Tabela 4.2: Soft IPs para a implementação da 2D-DWT IP Frame Área fmáx Taxa de operação Dispositivo Empresa BA113FDWT 128X ,0 - EP1S20F484C5 Barco Silex BA113FDWT 128X ,0 - XC2V Barco Silex RC_2DDWT 512x ,3 23,6 EPF10K200SRC240 CAST Inc RC_2DDWT 512x ,7 24,9 EP1K100QC208 CAST Inc RC_2DDWT 512x ,6 30,6 EP20K160EQC208 CAST Inc RC_2DDWT 512x ,0 - Spartan-II 2S200-6 CAST Inc RC_2DDWT 512x ,0 - Virtex-E V300-6 CAST Inc RC_2DDWT 512x ,0 - Virtex-E V300E-8 CAST Inc RC_2DDWT 512x ,0 - Virtex-II 2V500-5 CAST Inc pixels células MHz milhões de amostras/s O soft IP para a implementação do Compressor JPEG2000 desenvolvido pela Barco Silex chama-se BA112JPEG2000E Encoder (BARCO, 2005-c) e seus resultados de síntese para diversos dispositivos é mostrado na Tabela 4.3. O soft IP para a implementação do Compressor JPEG2000 desenvolvido pela CAST Inc chama-se JPEG2K_E (CAST, 2005-b) e seus resultados de síntese para diversos dispositivos é mostrado na Tabela 4.4. Tabela 4.3: Soft IPs para a implementação do compressor JPEG2000 da Barco Silex IP frame área fmáx Número de Oitavas dispositivo BA112JPEG2000E 128X EP1S30FC780C5 BA112JPEG2000E 128X EP1S20F484C5 pixels células MHz Tabela 4.4: Soft IPs para a implementação do compressor JPEG2000 da CAST Inc IP frame área fmáx Taxa de operação dispositivo JPEG2K_E 256X ,4M Virtex-E V1600E-8 JPEG2K_E 256X ,6M Virtex-II 2V JPEG2K_E 256X ,7M Virtex-II Pro 2V30-7 pixels células MHz milhões de amostras/s

62 62 5 ARQUITETURA DO COMPRESSOR DE IMAGENS COM PERDAS A implementação da arquitetura para um compressor de imagens completo com perdas, foi dividida em dois blocos. O primeiro bloco representa a arquitetura 2D-DWT irreversível, a qual foi desenvolvida utilizando coeficientes Daubechies 9/7 conforme o padrão e uma etapa de quantização agregada ao bloco da transformada. O segundo bloco representa a arquitetura desenvolvida para o codificador de entropia. Este codificador foi implementado em duas partes, um bloco para a geração da informação de probabilidade de cada bit e um bloco para realizar a codificação aritmética. O desenvolvimento da 2D-DWT se baseia na aplicação da 1D-DWT na primeira dimensão da imagem, seguida da aplicação na segunda dimensão da imagem. Assim, a implementação da 2D-DWT requer o desenvolvimento de uma arquitetura eficiente para a computação da 1D-DWT. Este capítulo apresenta a implementação de várias arquiteturas para a computação da 1D-DWT, bem como a síntese de uma arquitetura para a 2D-DWT. O bloco da transformada poderia, a princípio, ser implementado por meio de um banco de filtros, porém a arquitetura lifting proporciona maior eficiência, devido à redução da quantidade de operadores aritméticos. O bloco quantizador se resume em uma divisão inteira dos coeficientes da transformada e como a última etapa do bloco da DWT (na arquitetura lifting) é uma multiplicação por constante, a incorporação da etapa de quantização à multiplicação final do bloco da DWT proporciona redução de hardware, mantendo as mesmas características de atraso global, logo proporciona o aumento na eficiência da arquitetura global. Na arquitetura do codificador de entropia, o gerador de probabilidades, também chamado de gerador de contextos, foi desenvolvido a partir do algoritmo EBCOT, enquanto o codificador aritmético é uma variação do algoritmo QM coder.

63 Implementação da Transformada Wavelet Discreta Seguindo a propriedade da separabilidade (USEVITCH, 2001) (GONZALES, 1992), uma 2D-DWT pode ser implementada pela aplicação consecutiva da 1D-DWT a todas as linhas (1ª dimensão) seguida da aplicação da 1D-DWT a todas as colunas (2ª dimensão) de um tile da imagem, conforme definido no padrão JPEG2000 (ITU-T, 2000). O padrão define um tile como um arranjo retangular de pontos em uma grade de referência, orientados a partir do offset da origem da grade de referência e definidos por um valor de largura e altura. Ou seja, é uma porção bidimensional da imagem original, podendo conter toda a imagem original. A utilização de técnicas para acelerar a computação da DWT, como o RPA mostrado na seção 4.2, proporciona uma redução significativa no tempo de computação de um DWT com mais de uma oitava. A utilização desta técnica produz o resultado mostrado na Figura 5.1 (SALOMON, 2000) e a arquitetura necessária para produzir este resultado possui uma estrutura simplificada, devido à utilização do RPA. Porém este tipo de arranjo não está previsto no padrão JPEG2000 (no padrão JPEG2000, cada subbanda possui metade da resolução verticar e metade da resolução horizontal da subbanda de ordem n-1). Figura 5.1: 2D-DWT de 4 oitavas utilizando o RPA. Com a não utilização de técnicas como o RPA na computação da 2D-DWT, é necessária a inclusão de memória suficiente para armazenar todo o tile da imagem a ser compactado, deste modo, a computação de cada coeficiente de cada oitava segue a seguinte seqüência: as amostras são lidas continuamente da memória para a etapa da transformada; a cada passo a etapa da transformada (1D-DWT) gera um valor de aproximação (saída passa-baixas) e um valor de detalhes (saída passaaltas); os valores computados de aproximação e detalhe são armazenados na memória.

64 64 Em compressão de dados é requerida a ocorrência de várias oitavas de uma DWT, a fim de proporcionar uma maior redução na magnitude dos coeficientes. A cada oitava computada, o sinal de aproximação é re-inserido na entrada da arquitetura, gerando dois novos sinais de aproximação e detalhes. A arquitetura implementada para a 1D-DWT que apresenta menor complexidade, em nível de descrição de hardware, utiliza banco de filtros, onde a implementação dos dois filtros digitais (passa-altas e passa-baixas) é feita através de registradores, multiplicadores e somadores. Com o objetivo de reduzir os requisitos de hardware da arquitetura, a fatorização dos coeficientes em um esquema de lifting é recomendada no padrão JPEG2000 (ITU- T, 2000) Banco de filtros Um banco de filtros, segundo SALOMON (2000), pode ser definido como um conjunto de vários filtros digitais operando sobre os mesmos dados de entrada. A 1D-DWT irreversível utilizada no padrão JPEG2000 é descrita por um conjunto de dois filtros que utilizam os coeficientes de Daubechies 9/7 (ITU-T, 2000), que são mostrados na Tabela 5.1. Tabela 5.1: Coeficientes Daubechies 9/7 para banco de filtros FIR i h i g i 0 0, , ±1-0, , ±2-0, , ±3 0, , ±4 0, De acordo com SALOMON (2000), vários conjuntos de coeficientes podem ser utilizados para a computação de uma DWT, porém para proporcionar uma compressão de dados de alta eficiência, apenas poucos conjuntos de dados podem ser utilizados. Desta forma, Para implementação da arquitetura da 1D-DWT irreversível, foi utilizado um banco de filtros utilizando os coeficientes Daubechies 9/7 (ITU-T, 2000). Este conjunto de coeficientes requer um filtro passa-baixas com 9 TAPs e um filtro passaaltas com 7 TAPs, conforme mostrado na Figura 5.2.

65 65 amostras de entrada Z -1 * * * * h 4 h 3 h 2 h 1 * Z -1 Z -1 Z -1 Z -1 Z -1 Z -1 Z -1 Z -1 * * * * * * * * * * h 0 h 1 h 2 h 3 h 4 g 3 g 2 g 1 g 0 g 1 g 2 g 3 * saída passa baixas saída passa altas Figura 5.2: 1D-DWT por banco de filtros FIR. A arquitetura da 1D-DWT mostrada na Figura 5.2 apresenta: 8 registradores de n-bits; 16 multiplicadores de n bits; 14 somadores. Esta arquitetura apresenta latência proporcional a quantidade de TAPs do filtro, ou seja, latência de 8 ciclos do sinal de clock. Considerando que em sua entrada temos um stream de k amostras, na saída passa-baixas são gerados k#h-1 coeficientes e na saída passa-altas são gerados k#g-1 coeficientes, onde #h e #g representam a profundidade de cada filtro. Neste caso temos um acréscimo de coeficientes, sinalizando um condição que deve ser evitada. Para evitar o acréscimo de coeficientes, a técnica de espelhamento das bordas com subseqüente eliminação dos coeficientes irrelevantes, mostrado na seção 4.1, se mostra eficiente. Com a utilização do espelhamento das bordas de tamanho igual a m, para cada stream de k amostras são gerados k2m#h-1 coeficientes na saída passabaixas e k2m#g-1 coeficientes na saída passa-baixas, porém os coeficientes extras, à esquerda e à direita do stream de coeficientes de saída podem ser descartados sem perda de informação Lifting O padrão JPEG2000 (ITU-T, 2000) recomenda o uso da técnica de lifting descrevendo o processo e os coeficientes utilizados em sua implementação. A utilização desta técnica proporciona a redução do custo em hardware dos filtros digitais ao custo do aumento da latência total da arquitetura. Esta técnica consiste na fatorização dos coeficientes da transformada (SWELDENS, 1995), de modo a permitir que seja produzido o mesmo resultado utilizando um conjunto menor de operadores aritméticos, porém causa o aumento da latência dos dados de saída.

66 66 A Tabela 5.2 apresenta os coeficientes em formato de ponto flutuante recomendados no padrão JPEG2000 (ITU-T, 2000). Tabela 5.2: Coeficientes Daubechies 9/7 para Lifting Símbolo valor α -1, β -0, γ 0, δ 0, K 1, O padrão JPEG2000 (ITU-T, 2000) apresenta o cálculo da 1D-DWT a partir da seguinte seqüência de operações: Y(2n1) X ext (2n1) ( α ( X ext (2n) X ext (2n2) ) ) [STEP1] Y(2n) X ext (2n) ( β ( Y(2n-1) Y(2n1) ) ) [STEP2] Y(2n1) Y(2n1) ( γ ( Y(2n) Y(2n2) ) ) [STEP3] Y(2n) Y(2n) ( δ ( Y(2n-1) Y(2n1) ) ) [STEP4] Y(2n1) -K Y(2n1) [STEP5] Y(2n) (1/K) Y(2n) [STEP6] Do modo como está apresentada em ITU-T (2000), esta seqüência de operações deve ser executada em ordem para cada vetor de dados de entrada. O vetor de entrada é um vetor unidimensional definido por X ext e o vetor de saída Y apresenta os resultados corretos após o passo 6. Para permitir que o processamento das operações ocorra em paralelo, e assim aumentar a performance do sistema, foram acrescentados vetores de dados extras, de modo que a cada dois passos os dados de saída são carregados em um vetor diferente. A seguir é mostrada a alteração da seqüência original utilizando um vetor de dados intermediários Y e um vetor de dados finais Y : Y(2n1) X ext (2n1) (α (X ext (2n) X ext (2n2))) [STEP1] Y(2n) X ext (2n) (β (Y(2n-1) Y(2n1))) [STEP2] Y (2n1) Y(2n1) (γ (Y(2n) Y(2n2))) [STEP3] Y (2n) Y(2n) (δ (Y (2n-1) Y (2n1))) [STEP4] Y (2n1) -K Y (2n1) [STEP5] Y (2n) (1/K) Y (2n) [STEP6] Esta seqüência de operações foi transcrita para o gráfico da Figura 5.3. O primeiro passo do algoritmo tem por entrada o vetor de dados Xext, este vetor apresenta todos os dados de uma linha ou coluna de um tile da imagem. Cada duas amostras pares são somadas e multiplicadas pelo coeficiente alfa e após são somadas com a amostra ímpar de Xext (amostra de índice intermediário às amostras pares). O resultado passa a ser o vetor de amostras intermediárias ímpares de primeiro nível (Y).

67 67 O segundo passo do algoritmo tem por entrada os coeficientes ímpares do vetor Y gerado no primeiro passo e os coeficientes pares do vetor de dados Xext. Cada duas amostras ímpares do vetor Y são somadas e multiplicadas pelo coeficiente beta e após são somadas com a amostra par do vetor de dados Xext (amostra de índice intermediário às amostras ímpares). O resultado passa a ser a amostra intermediária par de primeiro nível (Y). As amostras intermediárias pares e ímpares de primeiro nível compõem o vetor intermediário Y. O terceiro passo do algoritmo tem por entrada o vetor intermediário Y. Cada duas amostras pares são somadas e multiplicadas pelo coeficiente gama e após são somadas com a amostra ímpar de Y (amostra de índice intermediário às amostras pares). O resultado passa a ser o vetor de amostras intermediárias ímpares de segundo nível (Y ). O quarto passo do algoritmo tem por entrada os coeficientes ímpares do vetor Y gerado no terceiro passo e os coeficientes pares do vetor intermediário Y. Cada duas amostras ímpares do vetor Y são somadas e multiplicadas pelo coeficiente delta e após são somadas com a amostra par do vetor intermediário Y (amostra de índice intermediário às amostras ímpares). O resultado passa a ser a amostra intermediária par de segundo nível (Y ). As amostras intermediárias pares e ímpares de segundo nível compõem o vetor intermediário de segundo nível Y. O quinto passo corresponde a uma multiplicação das amostras ímpares do vetor Y pelo coeficiente K multiplicado por -1. Resultando nas amostras ímpares do vetor de saída Y e o sexto passo corresponde a uma divisão das amostras pares do vetor Y pelo coeficiente K. Resultando nas amostras pares do vetor de saída Y. O vetor Y corresponde ao vetor de saída da transformada.

68 68 Xext 2n 2n1 2n2 X α Y 2n-1 2n1 β X Y 2n-1 2n 2n1 2n2 X γ Y 2n-1 2n 2n1 X δ Y 2n-1 2n 2n1 2n2 1/K X X -K Y 2n-1 2n 2n2 2n1 Figura 5.3: Gráfico de operações para o cálculo da 1D-DWT. A partir do algoritmo descrito na Figura 5.3 nota-se que a seqüência: soma de dois registros (de índices x e x2); multiplicação da resultante por um coeficiente constante; soma da resultante com o registro de índice intermediário (de índice x1). se repete nos quatro primeiros passos do algoritmo, logo cada passo pode ser reduzido ao operador AMA (Adder-Multiplier-Adder) mostrado na Figura 5.4. Os dois últimos passos do algoritmo podem ser substituídos por uma multiplicação simples.

69 69 X cte Figura 5.4: Operador AMA para a Arquitetura lifting. A implementação direta do algoritmo da Figura 5.3 é apresentado na arquitetura pipeline da Figura 5.5. Esta arquitetura possui latência de 7 ciclos e a cada dois ciclos um dado é gerado nas saídas passa-altas e passa-baixas. Esta arquitetura apresenta apenas 4 operadores AMA descritos na Figura 5.4 (com constantes alfa, beta gama e delta) e dois operadores de multiplicação (por -K e por 1/K). Os registradores S0, S1, S2, S3, S4, S5 e S6 são utilizados para isolar cada um dos operadores AMA, reduzindo assim o atraso geral da arquitetura da transformada 1D, de modo que o ponto de maior atraso ocorre no interior de um dos operadores AMA. Input 2n R0 R2 S0 S2 R4 S4 S6 * Output Low-Pass β * δ * 1/K α * γ * -K Input 2n1 R1 R3 S1 R5 S3 S5 R6 * Output High-Pass Figura 5.5: Arquitetura lifting 1D-DWT. Nesta arquitetura, o Operador AMA que apresentar o maior atraso produz o pior caso para o atraso geral da arquitetura, isso significa que a otimização deste operador AMA representa a otimização do tempo de atraso da arquitetura. A Tabela 5.3 apresenta os 6 operadores previstos no padrão JPEG2000 (ITU-T, 2000) bem como a representação inteira arredondada dos valores. Uma transformada irreversível é aquela na qual seu resultado aplicado a uma transformada inversa não reproduz o valor original, com isso temos a geração de um sinal de erro. A utilização das constantes da transformada com valor em ponto flutuante insere automaticamente certo nível de erro no resultado da transformada impedindo a obtenção dos valores originais por meio da transformada inversa e o arredondamento destas constantes apenas aumenta o valor deste erro, porém como a transformada utilizada na compressão com perdas prevê a existência de algum erro no resultado, o erro inserido nas constantes pode ser admissível. O processo seguinte à transformada é a

70 70 etapa de quantização, que aproxima os coeficientes transformados a valores prédefinidos, ocorrendo então a inserção de outro nível de erro no valor resultante. Tabela 5.3: Constantes Lifting Coeficiente Valor em Ponto Valor inteiro Representação em Flutuante arredondado Binário alpha / beta / gamma / delta / k / /k / As constantes inteiras arredondadas da Tabela 5.3 foram obtidos a partir de uma multiplicação por 256. A escolha desta constante de multiplicação vem pela facilidade de implementação de uma arquitetura para dividir o resultado das operações básicas por 256, ou seja, um deslocamento de 8 bits para a direita. A partir das constantes apresentadas na Tabela 5.3 diversas arquiteturas de Operadores Básicos foram desenvolvidas. Cada uma das arquiteturas apresenta vantagens e desvantagens que são discutidas nas seções seguintes Operador AMA por descrição comportamental utilizando multiplicação de inteiros A utilização de operadores inteiros proporciona a redução do hardware da arquitetura implementada, em relação à utilização de operadores em ponto flutuante. Sua precisão pode ser definida pela taxa de erro entre o valor da constante inteira dividida por 256 (deslocamento de 8 bits para a direita) e o valor da constante em ponto flutuante. A descrição em VHDL comportamental é, a princípio, genérica para qualquer tipo de FPGA, porém a síntese é totalmente dependente dos recursos de hardware do dispositivo FPGA no qual será mapeada a arquitetura. Assim, a ferramenta de síntese acrescenta as funções de bibliotecas específicas para o FPGA utilizado. O quadro abaixo mostra parte da descrição comportamental em VHDL do Operador AMA_ALFA, que é utilizado no passo 1 do algoritmo da transformada. De acordo com a Tabela 5.3, o valor de alfa é 406/256, assim a arquitetura deve realizar a operação de soma entre R2 e R3 seguida da multiplicação pela constante 406 e conseqüente divisão por 256 e por último realizar a soma com R1. As operações de multiplicação e divisão inteiras ocorrem utilizando a definição de números inteiros da linguagem. CONSTANT ALFA : INTEGER := -406; BEGIN Output <= R1 ((ALFA * (R2 R3))/256); END

71 71 Conforme o quadro acima, a principal vantagem de uma descrição comportamental é a simplicidade na descrição do algoritmo, pois a operação do operador AMA pode ser descrita em uma única linha. Entretanto, por utilizar a operação de multiplicação, esta arquitetura requer a utilização de macro-funções para a execução da operação descrita, de modo que a síntese será específica para um tipo de dispositivo FPGA. Outra desvantagem deste tipo de implementação é que os operadores possuem formato inteiro, de modo que a macro-função que realizar a multiplicação consome uma quantidade significativa de recursos de hardware e com isso apresenta o maior atraso entre todas as arquiteturas implementadas. Nesta arquitetura não está prevista a redução da quantidade de bits dos operadores envolvidos, resultando assim em uma arquitetura com uma maior utilização de hardware. Esta maior utilização de hardware juntamente com o maior tamanho dos operadores, resulta em maior quantidade de conexões dentro do FPGA, resultando em maior atraso na propagação dos sinais, devido à limitação de conexões rápidas do FPGA. A síntese de arquitetura do bloco 1D-DWT utilizando esta técnica com a ferramenta ALTERA QUARTUS II direcionada para a família APEX 20KE requer 781 LEs e pode operar a até 16,6MHz, significando um processamento de 16,6 milhões de pixels por segundo com o pipeline cheio Operador AMA por descrição comportamental utilizando multiplicação por soma de inteiros deslocados Uma multiplicação binária pode ser descrita como uma soma deslocada, assim uma maneira simples de reduzir a quantidade de hardware do Operador AMA é limitar a quantidade de somas, arredondando a constante de multiplicação. O Operador AMA que realiza a multiplicação por alfa implementa a seguinte operação: Output = R1alfa*(R2R3) O Operador AMA utilizando multiplicação por somas deslocadas utiliza apenas operandos inteiros, logo todas as operações devem ser deslocadas para a esquerda e ao final arredondadas para uma quantidade de bits predefinida. O valor arredondado de alfa em binário, segundo a Tabela 5.3, é , ao ocorrer deslocamento de 8 bits para a esquerda, o valor se torna A quantidade de operadores deslocados (deslocamento do multiplicando) de um Operador AMA é igual ao número de bits em nível alto (Hi) do coeficiente da transformada (multiplicador), ou seja, para o coeficiente alfa são necessários 5 operadores deslocados e cada operador deve ser deslocado de acordo com a posição do respectivo bit em nível alto do coeficiente alfa, conforme a seguinte relação: Operador AMA-alfa: S = (R2R3) Output = R1 (S*2 1 S*2 3 S*2 5 S*2 6 - S*2 9 )/2 8

72 72 Operador AMA-beta: S = (R2R3) Output = R1 (S*2 1 S*2 4 S*2 5 S*2 6 S*2 7 S*2 8 - S*2 9 )/2 8 Operador AMA-gama: S = (R2R3) Output = R1 (S*2 1 S*2 5 S*2 6 S*2 7 )/2 8 Operador AMA-delta: S = (R2R3) Output = R1 (S*2 1 S*2 4 S*2 5 S*2 6 )/2 8 Multiplicação por -K: Output = (Input*2 0 Input*2 2 Input*2 6 Input*2 7 - Input*2 9 )/2 8 Multiplicação por 1/K: Output = (Input*2 4 Input*2 6 Input*2 7 )/2 8 Conforme a relação dada, a Figura 5.6 mostra a arquitetura do Operador AMA- Alfa utilizando somas deslocadas. R1 R2 R3 <<9 <<6 <<5 <<3 <<1 >>8 output Figura 5.6: Operador AMA para multiplicação por alfa. Nesta abordagem comportamental, o procedimento utilizado para deslocar os operadores foi realizar uma multiplicação por 2 X, onde X representa a quantidade de bits que o operador deve ser deslocado. O Operador AMA-alfa mostrado na Figura 5.6, requer 6 operações de adição. Com isso, em sua descrição em VHDL comportamental

73 73 foi requerida a utilização de 5 operadores intermediários (X1, X2, X3, X4 e SOMA) e um operador de saída (Output) conforme o algoritmo abaixo. SIGNAL X1, X2, X3, X4, SOMA : INTEGER ; BEGIN SOMA <= R2R3; X1 <= SOMA*2SOMA*8; X2 <= SOMA*32SOMA*64; X3 <= X1X2; X4 <= -SOMA*512X3)/256; Output <= END X4R1; Conforme o quadro acima, esta técnica requer 5 linhas de código VHDL para descrever arquitetura do Operador AMA-alfa. Todas as multiplicações possuem o formato operando*2 X que pode ser implementado por meio de um simples deslocamento do operando. Considerando que o compilador VHDL é capaz de eliminar todos os possíveis full-adders que possuem suas entradas fixas, temos que: Primeiro somador (SOMA): Segundo somador (X1): Terceiro somador (X2): Quarto somador (X3): Quinto somador (X4): Sexto somador (Output): Total: 144 somadores. 8 = 8 somadores; 32-3 = 29 somadores; 32-6 = 26 somadores; 32-6 = 26 somadores; 32-9 = 23 somadores; 32 = 32 somadores; Os operadores de entrada R1, R2 e R3 estão definidos como operadores de 8 bits, logo o primeiro somador (que realiza o cálculo do sinal SOMA) requer somente 8 somadores (7 full adders e 1 half adder). O resultado da primeira soma pode resultar em um valor positivo ou negativo, logo, para as somas seguintes, o compilador VHDL aloca todos os possíveis bits a esquerda. Considerando que os dois operandos da soma são deslocados para a esquerda antes da soma e o maior deslocamento é de 3 bits, a quantidade necessária de somadores será o número total de bits da variável (variável inteira requer 32-bits) menos o número de bits deslocados, ou seja, o segundo somador requer 28 full adders e 1 half adder, o terceiro somador e o quarto somador requerem 25 full adders e 1 half adder cada um, o quinto somador requer 22 full adders e 1 half adder, e devido ao deslocamento para a direita que ocorre após o quinto somador (soma de X4) o sexto somador requer 31 full adders e 1 half adder. Assim são necessários 138 full adders e 6 half adders para implementar o bloco do Operados AMA-alfa. Porém, descrições comportamentais de somadores, quando sintetizadas para FPGAs, sejam somadores completo ou meio somadores, ocupam apenas uma célula lógica para cada bit somado, pois apesar de cada somador possuir duas saídas (saída SOMA e saída CARRY-OUT), a ferramenta de síntese utiliza as cadeias de carry rápido previstas nos FPGAs.

74 74 A arquitetura do bloco 1D-DWT sintetizada para um dispositivo da família APEX20KE, utilizando esta técnica utiliza 480 LEs e pode operar a até 44MHz. Utilizando a ferramenta de simulação do QUARTUS II, a partir de uma porção da imagem Lena foi estimado um consumo de potência de 248mW a uma taxa de operação de 15MHz. Em comparação com a arquitetura da seção , esta arquitetura apresenta 39% menos área, freqüência máxima de operação 2,6 vezes maior e consumo médio de potência 205 menor. Assim, a arquitetura da seção possui somente a vantagem de rapidez na descrição em VHDL Operador AMA por descrição estrutural utilizando multiplicação por soma de inteiros deslocados Um dos inconvenientes da utilização da abordagem comportamental diz respeito à quantidade de bits definidos para os operadores. A seção mostra a implementação de um Operador AMA utilizando operadores inteiros, como em VHDL o tipo inteiro corresponde à faixa compreendida entre e , ou seja, valores de 32 bits, todos os operadores requerem desnecessariamente 32 bits, utilizando uma quantidade elevada de área. Uma implementação estrutural requer maior definição nas operações realizadas, porém permite que nesta definição sejam previstas todas as estruturas utilizadas, ou seja, permite controle completo sobre a síntese da arquitetura. Considerando que a quantidade de bits das amostras de entrada é conhecida é possível prever a quantidade de bits para cada operador, bem como a quantidade de bits de saída de cada Operador AMA. O Operador AMA utilizando o coeficiente alfa, mostrada na Figura 5.6, para amostras de entrada de 8 bits requer 6 operações de soma, porém utilizando uma quantidade otimizada de bits. A estrutura mostrada na Figura 5.7 mostra uma representação onde os operadores de entrada R1, R2 e R3 possuem 8 bits, o operador de saída (chamado simplesmente de R) possui 11 bits e os operadores internos possuem 18 bits. Esta estrutura prevê o deslocamento de cada operador interno a partir do valor em binário de alfa, conforme a Figura 5.6. R2 7 R3 7 I8 I7 I6 I5 R2 (8 bits) R3 (8 bits) I4 I3 I2 I1 I0 R1 7 I8 I8 I8 I8 I8 I8 I8 I8 R1 (8 bits) I8 I8 I8 I8 I8 I8 I8 I7 1 I8 I6 I7 I5 I6 I4 I5 I3 I4 I2 I3 I1 I2 I0 I1 0 I I8 I8 I8 I8 I8 I7 I6 I5 I4 I3 I2 I1 I I8!I8 I8!I7 I8!I6 I8 I7 I6!I5!I4!I3 R (11 bits) I5!I2 I4!I1 I3!I0 I2 I1 I * * 64 * 32 * * 2 Figura 5.7: Descrição da operação do Operador AMA alfa.

75 75 Os operadores internos da estrutura mostrada na Figura 5.7 possuem muitos bits zerados à direita e muitos bits repetidos (I8) à esquerda, gerando hardware desnecessário. Como citado acima, o Operador AMA alfa requer 6 operações de soma, porém essas operações podem ser realizadas com menos de 18 bits (considerando amostras de entrada de 8 bits). A Figura 5.8 mostra a estrutura de alguns dos somadores necessários para o Operador AMA alfa, onde é possível notar que o número de fulladders necessários para a operação de soma entre dois operadores internos é sempre igual ao número de bits do operando de maior magnitude. I 8 I 8 I 8 I 7 I 6 I 5 I 4 I 3 I 2 I 1 I 0 AMA block with α = I 8 I 7 I 6 I 5 I 4 I 3 I 2 I 1 I 0 R2 => R3 => R2R3 => R2 7 R2 6 R2 5 R3 4 R3 3 R3 2 R3 1 R3 0 R3 7 R3 6 R3 5 R3 4 R3 3 R3 2 R3 1 R3 0 I 8 I 7 I 6 I 5 I 4 I 3 I 2 I 1 I 0 I 8 I 8 I 7 I 6 I 5 I 4 I 3 I 2 I 1 I 0 1 alpha => 1 0, I 8 I 7 I 6 I 5 I 4 I 3 I 2 I 1 I 0 I 8 I 7 I 6 I 5 I 4 I 3 I 2 I 1 I 0 I 8 I 7 I 6 I 5 I 4 I 3 I 2 I 1 I 0 I 8 I 7 I 6 I 5 I 4 I 3 I 2 I 1 I 0 I 8 I 7 I 6 I 5 I 4 I 3 I 2 I 1 I 0 I 8 I 7 I 6 I 5 I 4 I 3 I 2 I 1 I 0 R1 => R1 7 R1 7 R1 7 R1 6 R1 5 R1 4 R1 3 R1 2 R1 1 R1 0 8-bit shift 1 I 8 I 7 I 6 I 5 I 4 I 3 I 2 I 1 I 0 R1 7 R1 7 R1 7 R1 6 R1 5 R1 4 R1 3 R1 2 R1 1 R1 0 Figura 5.8: Estrutura de somas internas para o Operador AMA alfa. Assim, considerando a redução do número de bits, temos que: Primeiro somador: Segundo somador: Terceiro somador: Quarto somador: Quinto somador: Sexto somador: Total: 55 full-adders e 5 half-adders. 8 full-adders 1 half-adder; 8 full-adders 1 half-adder; 8 full-adders 1 half-adder; 9 full-adders (requer a soma de 1, conforme a Figura 5.8 ); 10 full-adders 1 half-adder; 12 full-adders 1 half-adder;

76 76 Esta arquitetura representa a utilização de somente 40% dos recursos de hardware utilizados na arquitetura da seção Esta redução de hardware afeta diretamente o atraso global da arquitetura e o consumo de potência. Entretanto, quando sintetizada para FPGAs, a arquitetura estrutural não utiliza as vantagens estruturais do FPGA. Assim um bloco de soma de 1-bit (full-adder ou half-adder) requer uma célula lógica quando sintetizado a partir de uma descrição comportamental, enquanto o mesmo bloco sintetizado a partir de uma descrição estrutural requer duas células lógicas. Duas das principais vantagens das descrições comportamentais são simplicidade e rapidez de prototipação, porém, dificultam a síntese para ASIC. Uma maneira de reduzir o hardware deste tipo de arquitetura é utilizar operações de soma com número reduzido de deslocamentos, proporcionando operadores intermediários menores. Um Operador AMA simplificado segundo este método é mostrado na Figura 5.9. R1 R2 R3 <<1 <<1 <<2 <<8 <<4 >>8 output Figura 5.9: Operador AMA alfa simplificado. Diferentemente de VHDL comportamental, onde todas as operações aritméticas são feitas de maneira automática pela ferramenta de síntese, a implementação da arquitetura em VHDL estrutural requer a descrição detalhada de todos os operadores de soma. Cada operador de soma (considerando aritmética com sinal) possui dois vetores para as parcelas de entrada, um vetor para o resultado da soma, chamados Xn e um vetor para armazenar o valor dos carrys intermediários, chamado CARRY_n. Apesar da soma total requerer um vetor de 19 bits, considerados antes do truncamento, neste algoritmo, para simplicidade de implementação automática utilizando o comando GENERATE, todos os sinais (variáveis) possuem 20 bits, e o 20º bit é um bit de carry que será descartado na síntese. Assim, a ferramenta de síntese realiza uma eliminação dos bits não utilizados, ou seja, nas somas onde, pelo menos um dos bits de entrada possui valor fixo (nível lógico alto ou nível lógico baixo).

77 77 SIGNAL X1, X2, X3, X4, X5, X6, X7, CARRY_1, CARRY_2, CARRY_3, CARRY_4, CARRY_5, CARRY_6 :STD_LOGIC_VECTOR(19 DOWNTO 0); BEGIN X ax1a:for X IN 0 TO 7 GENERATE X1(X) <= R1(X); END GENERATE; ax1b:for X IN 8 TO 18 GENERATE X1(X) <= R1(7); END GENERATE; X CARRY_1(0) <= '0'; ax2a:for X IN 0 TO 7 GENERATE ADDER: FULL_ADDER PORT MAP(CLK=>CLK,A=>R2(X),B=>R3(X),Cin=>CARRY_1(X),S=>X2(X),Cout=>CARRY_1(X1)); END GENERATE; ax2b:for X IN 8 TO 18 GENERATE X2(X) <= CARRY_1(8); END GENERATE; X CARRY_2(1) <= '1'; X3(0) <= X1(0); ax3a:for X IN 1 TO 18 GENERATE ADDER: FULL_ADDER PORT MAP(CLK=>CLK,A=>X1(X),B=>NOT X2(X-1),Cin=>CARRY_2(X),S=>X3(X),Cout=>CARRY_2(X1)); END GENERATE; X CARRY_3(1) <= '0'; X4(0) <= X2(0); ax4:for X IN 1 TO 18 GENERATE ADDER: FULL_ADDER PORT MAP(CLK=>CLK,A=>X2(X),B=>X2(X-1),Cin=>CARRY_3(X),S=>X4(X),Cout=>CARRY_3(X1)); END GENERATE; X CARRY_4(2) <= '0'; ax5a:for X IN 0 TO 1 GENERATE X5(X) <= X2(X); END GENERATE; ax5b:for X IN 2 TO 18 GENERATE ADDER: FULL_ADDER PORT MAP(CLK=>CLK,A=>X2(X),B=>X2(X-2),Cin=>CARRY_4(X),S=>X5(X),Cout=>CARRY_4(X1)); END GENERATE; X CARRY_5(3) <= '0'; ax6a:for X IN 0 TO 2 GENERATE X6(X) <= X4(X); END GENERATE; ax6b:for X IN 3 TO 18 GENERATE ADDER: FULL_ADDER PORT MAP(CLK=>CLK,A=>X3(X-3),B=>X4(X),Cin=>CARRY_5(X),S=>X6(X),Cout=>CARRY_5(X1)); END GENERATE; X CARRY_6(4) <= '0'; ax8a:for X IN 0 TO 3 GENERATE X7(X) <= X5(X); END GENERATE; ax8b:for X IN 4 TO 18 GENERATE ADDER: FULL_ADDER PORT MAP(CLK=>CLK,A=>X6(X-4),B=>X5(X),Cin=>CARRY_6(X),S=>X7(X),Cout=>CARRY_6(X1)); END GENERATE; Output aout:for X IN 0 TO 10 GENERATE Output(X) <= X7(X7); END GENERATE; END a; Conforme quadro anterior, o vetor X1 é utilizado para estender o tamanho do registrador de entrada R1 de 8-bits para os 19-bits requeridos. O vetor X2 armazena a soma de 8-bits entre os registradores de entrada R2 e R3 e estende o bit de carry, neste caso armazenando o sinal da operação, até o 19º bit.

78 78 O vetor X3 armazena a subtração entre X1 e X2, através de uma soma com o segundo elemento invertido e somando 1 ao carry in (X1 not X2 1). A partir de X3 ocorre as somas deslocadas dos vetores e é implementado pela cópia dos bits menos significativos (esta operação não requer hardware) e somas com índices diferentes (ex: o deslocamento de 1-bit para o cálculo de X4: X4(X) = X2(X) X2(X-1)). Os vetores X3, X4 e X5 realizam as somas deslocadas para implementar os fatores da multiplicação original e os vetores X6 e X7 acumulam os resultados dos vetores anteriores. Na saída deste Operador AMA-alfa ocorre a truncagem do valor do vetor X7 nos 11-bits a partir do 8º bit. A arquitetura do bloco 1D-DWT sintetizada para um dispositivo da família APEX20KE, utilizando esta técnica ocupa 701 LEs e pode operar a até 54,4 MHz. Utilizando a ferramenta de simulação do QUARTUS II, a partir de uma porção da imagem Lena foi estimado um consumo de potência de 232mW a uma taxa de operação de 15MHz. Comparativamente à arquitetura da seção , esta arquitetura apresenta cerca de 45% mais área, entretanto, apesar de ocupar mais área, esta arquitetura apresenta um atraso global menor, possuindo uma melhoria de cerca de 23%, bem como um consumo 7% menor sob a mesma taxa de clock Operador AMA por descrição comportamental utilizando multiplicação de inteiros deslocados em uma arquitetura de Pipeline A arquitetura lifting 1D-DWT é por concepção em forma de pipeline e os pontos de maior atraso do circuito se encontram na estrutura interna dos operadores AMA. Uma maneira de reduzir o atraso destes blocos é particioná-los, ou seja, realizar a inserção de barreiras temporais no interior dos operadores AMA. Analisando a estrutura interna do operador AMA alfa mostrado na figura 31(a), nota-se que no caminho crítico ocorrem 4 operações de soma. Colocando-se barreiras temporais entre as operações de soma, conforme figura 31(b), é possível reduzir o atraso global da arquitetura.

79 79 R1 R2 R3 R1 R2 R3 register register <<1 <<1 <<2 <<1 <<1 <<2 register register register <<8 <<8 register register <<4 <<4 >>8 >>8 output output (a) (b) Figura 5.10: Pipelinezação do operador AMA alfa. A fim de manter a coerência entre os cálculos da 1D-DWT, se faz necessário a inserção de registradores entre os operadores AMA a fim de balancear e ajustar cada um dos fluxos de dados da 1D-DWT. Como observado na figura 32, com o acréscimo de três estágios de pipeline nos operadores AMA-alfa, AMA-beta AMA-gama e AMAdelta, os registradores S0, S3, S4 e S7 foram substituídos, cada um, por conjuntos de quatro registradores em serie. r0 X (2n) r2 X (2n-2) Xs (2n-2) Y (2n-2) Ys (2n-2) Y (2n-4) Y (2n-4) Z (2n-4) S2 r4 S0 x4 S4 x4 S6 Zs (2n-4) 2 Output PB Input 2n β 3 * δ * 3 1/K α * 3 γ * 3 -K r1 r3 Y S1 r5 S5 r6 (2n-1) Ys (2n-1) Y (2n-3) Ys Z (2n-3) Z (2n-5) X (2n-3) Zs (2n-3) (2n-1) S3 x4 S7 x3 2 Output PA Figura 5.11: Arquitetura lifting 1D-DWT pipeline. A alteração requerida na descrição VHDL é mostrada no quadro abaixo. Foi inserida uma barreira temporal, controlada pelo sinal de CLK, entre cada uma das operações de soma.

80 80 SIGNAL X1, X2, X3, X4, X5, X6, X7 : INTEGER ; BEGIN PROCESS BEGIN WAIT UNTIL CLK = '1'; X1 <= R1; X2 <= R2R3; X3 <= X1X2*(-2); X4 <= X2*2X2; X5 <= X2*4X2; X6 <= X3*8X4; X7 <= X5; END PROCESS; END Output <= (X6*16X7)/128; A inserção de registradores como barreira temporal resultou em uma síntese com área de 766 LEs em um dispositivo APEX 20KE, conforme mostrado na Tabela 5.4, significando um aumento de área de 60% em relação à arquitetura com operadores AMA sem pipeline utilizando descrição comportamental, mostrado na seção Porém a redução do atraso entre registradores resultou em uma freqüência máxima de operação de 157MHz, representando um ganho de 257%. Quanto à simulação de potência, a injeção de uma porção da imagem Lena resultou em uma potência média de 105mW, representando uma redução de 42% no consumo total em relação à arquitetura da seção Operador AMA por descrição estrutural utilizando multiplicação de inteiros deslocados em uma arquitetura de Pipeline Como observado na seção , a utilização de pipeline internamente aos operadores AMA proporciona um aumento na freqüência máxima de operação e uma redução na potência média global da arquitetura, ao custo de aumento na área total. Assim como na arquitetura descrita na seção , cada operador AMA desta arquitetura foi descrita utilizando geração automática de somadores, juntamente com a inserção das barreiras temporais conforme descrito na seção O quadro abaixo mostra a descrição em VHDL estrutural do operador AMA-alfa utilizando multiplicação de inteiros deslocados em uma arquitetura de pipeline. Os sinais X1 a X7 apresentam o uso semelhante ao descrito na seção , o sinal X8 é utilizado para realizar a truncagem do valor resultante e os sinais X1a a X7a são os registradores utilizados como barreira temporal cadenciados pelo sinal CLK. SIGNAL X1, X2, X3, X4, X5, X6, X7, X8, X1a, X2a, X3a, X4a, X5a, X6a, X7a, CARRY_1, CARRY_2, CARRY_3, CARRY_4, CARRY_5, CARRY_6: STD_LOGIC_VECTOR(19 DOWNTO 0); BEGIN PROCESS BEGIN WAIT UNTIL CLK = '1'; X1a <= X1; X2a <= X2; X3a <= X3; X4a <= X4; X5a <= X5; X6a <= X6; X7a <= X7; END PROCESS;

81 X ax1a:for X IN 0 TO 7 GENERATE X1(X) <= R1(X); END GENERATE; ax1b:for X IN 8 TO 18 GENERATE X1(X) <= '0'; END GENERATE; X CARRY_1(0) <= '0'; ax2a:for X IN 0 TO 7 GENERATE ADDER: FULL_ADDER PORT MAP(CLK=>CLK,A=>R2(X),B=>R3(X),Cin=>CARRY_1(X),S=>X2(X),Cout=>CARRY_1(X1)); END GENERATE; X2(8) <= CARRY_1(8); ax2b:for X IN 9 TO 18 GENERATE X2(X) <= '0'; END GENERATE; X CARRY_2(1) <= '1'; X3(0) <= X1a(0); ax3a:for X IN 1 TO 18 GENERATE ADDER: FULL_ADDER PORT MAP(CLK=>CLK,A=>X1a(X),B=>NOT X2a(X-1),Cin=>CARRY_2(X),S=>X3(X),Cout=>CARRY_2(X1)); END GENERATE; X CARRY_3(1) <= '0'; X4(0) <= X2a(0); ax4:for X IN 1 TO 18 GENERATE ADDER: FULL_ADDER PORT MAP(CLK=>CLK,A=>X2a(X),B=>X2a(X-1),Cin=>CARRY_3(X),S=>X4(X),Cout=>CARRY_3(X1)); END GENERATE; X CARRY_4(2) <= '0'; ax5a:for X IN 0 TO 1 GENERATE X5(X) <= X2a(X); END GENERATE; ax5b:for X IN 2 TO 18 GENERATE ADDER: FULL_ADDER PORT MAP(CLK=>CLK,A=>X2a(X),B=>X2a(X-2),Cin=>CARRY_4(X),S=>X5(X),Cout=>CARRY_4(X1)); END GENERATE; X CARRY_5(3) <= '0'; ax6a:for X IN 0 TO 2 GENERATE X6(X) <= X4a(X); END GENERATE; ax6b:for X IN 3 TO 18 GENERATE ADDER: FULL_ADDER PORT MAP(CLK=>CLK,A=>X3a(X-3),B=>X4a(X),Cin=>CARRY_5(X),S=>X6(X),Cout=>CARRY_5(X1)); END GENERATE; X ax7:for X IN 0 TO 18 GENERATE X7(X) <= X5a(X); END GENERATE; X CARRY_6(4) <= '0'; ax8a:for X IN 0 TO 3 GENERATE X8(X) <= X7a(X); END GENERATE; ax8b:for X IN 4 TO 18 GENERATE ADDER: FULL_ADDER PORT MAP(CLK=>CLK,A=>X6a(X-4),B=>X7a(X),Cin=>CARRY_6(X),S=>X8(X),Cout=>CARRY_6(X1)); END GENERATE; Out aout:for X IN 0 TO 10 GENERATE Output(X) <= X8(X7); END GENERATE; END a; A arquitetura do bloco 1D-DWT sintetizada para um dispositivo da família APEX20KE, utilizando esta técnica ocupa 1002 LEs e pode operar a até 105 MHz. Utilizando a ferramenta de simulação do QUARTUS II, a partir de uma porção da

82 82 imagem Lena foi estimado um consumo de potência de 91,4mW a uma taxa de operação de 15MHz. Comparativamente à arquitetura da seção , esta arquitetura apresenta cerca de 30% mais área e um atraso global de cerca de 93% maior, porém sob mesma taxa de clock, apresenta um consumo 13% menor Resultados das implementações da 1D-DWT Nesta seção são apresentados os resultados comparativos de síntese e simulação entre as arquiteturas para a 1D-DWT apresentadas neste capítulo. Para permitir uma comparação direta entre os resultados, todas as arquiteturas implementadas na seção foram descritas, sintetizadas e simuladas para os dispositivos da família APEX 20KE da ALTERA (2004) utilizando a ferramenta QUARTUS II. Todas as simulações de consumo médias realizadas foram feitas sob os mesmos dados de entrada e sob a mesma taxa de clock. A Tabela 5.4 apresenta os resultados de síntese e simulação das arquiteturas descritas na seção Tabela 5.4: Resultados das Implementações (APEX 20KE). Arquitetura do Operador Básico Comportamental com multiplicador inteiro (seção ) Comportamental com multiplicações por somas deslocadas (seção ) Comportamental com operadores com pipeline e multiplicações por somas deslocadas (seção ) Estrutural com multiplicações por somas deslocadas (seção ) Estrutural com operadores com pipeline e multiplicações por somas deslocadas (seção ) Área utilizada (LEs) Freqüência Máxima de Operação (MHz) Consumo (mw) Número de Estágios de Pipeline De acordo com os resultados apresentados na Tabela 5.4, as arquiteturas com operadores AMA pipelinezados apresentam maior freqüência máxima de operação, proporcionando maior taxa de processamento dos dados, considerando que a cada ciclo do sinal de clock, um novo coeficiente é gerado em uma das saídas do bloco da 1D- DWT. Porém o aumento na freqüência máxima de operação ocorre às custas de maior requisito de células lógicas (LEs). A simulação de fração da imagem Lena resultou que as arquiteturas com Operador AMA pipelinezados apresentaram menor consumo médio de potência a 15MHz, ou seja, para o mesmo valor do sinal de clock.

83 83 A arquitetura com Operadores Básicos por descrição Comportamental de multiplicador inteiro (seção ) é a mais simples das descrições realizadas para implementar a 1D-DWT, porém a síntese desta arquitetura se mostrou a de maior consumo de energia. A arquitetura de menor custo em área foi a descrita de forma comportamental utilizando somas deslocadas de inteiros (arquitetura da seção ). Esta situação se tornou válida somente pelo fato da ferramenta de síntese prever a utilização de cadeias de carry previstas na estrutura dos elementos lógicos dos FPGAs. Em simulação a 40MHz, esta arquitetura consome 626mW, ou seja, um incremento de 2,7 vezes na freqüência de operação resultou em um aumento de 2,5 vezes no consumo de potência. A arquitetura da seção é uma implementação comportamental com Operadores AMA descritos como pipeline de somadores deslocados, resultando uma arquitetura 1D-DWT com 21 estágios de pipeline. Conforme a Tabela 5.4, comparado com a arquitetura da seção , esta arquitetura apresenta 1,6 vezes mais área e freqüência máxima de operação 3 vezes maior. Quando em simulação à taxa de 128MHz, esta arquitetura consome 808mW, representando 1,3 vezes o consumo médio da arquitetura da seção operando a 40MHz, significando que a arquitetura da seção possui melhor compromisso entre área e consumo por MHz que a arquitetura da seção A arquitetura da seção é uma implementação estrutural utilizando somas deslocadas de inteiros. Neste tipo de descrição, cada operação deve ser definida em nível de bit, de modo que a síntese não utiliza as cadeias de propagação rápida do carry, logo um somador de n-bits requer 2n células lógicas. A princípio seria esperado que a arquitetura da seção necessite duas vezes a área da arquitetura da seção , entretanto a arquitetura da seção requer apenas aproximadamente 1,5 vezes a área da arquitetura da seção e ainda possui a freqüência máxima de operação 24% maior. Simulações entre as arquiteturas das seções e sugerem que o consumo de potência se mantém em valores próximos mesmo a taxas de operação maiores. A arquitetura da seção é uma implementação estrutural com pipeline e multiplicações por somas deslocadas nos operadores AMA. Sob mesma freqüência de operação, esta arquitetura apresenta o menor consumo médio de todas as arquiteturas. Comparando com a arquitetura da seção , a inserção de pipeline resultou em 43% a mais em hardware, entretanto a freqüência máxima de operação é 93% maior e o consumo médio de potência é 61% menor. Deste modo, desde que exista hardware disponível, a inserção de pipeline proporciona aumento da eficiência da arquitetura. Comparando com a arquitetura da seção , a utilização de descrição estrutural proporciona 31% de acréscimo em hardware, 32% de redução na freqüência máxima de operação e menor consumo médio de potência de somente 13%. Em simulação na freqüência de 95MHZ esta arquitetura apresenta consumo médio de potência de 476mW, significando que em uma freqüência operação 25% menor (75% da freqüência de 128MHz simulada na arquitetura da seção ), apresenta um consumo médio de potência 41% menor. Assim a utilização de descrição estrutural somente apresenta vantagens se a implementação é direcionada para construção de um ASIC ou se reduções de até 40% no consumo médio de potência são requeridas. Em MASUD (2004) é apresentada uma arquitetura que implementa a 1D-DWT por meio de banco de filtros, utilizando 785LEs a uma freqüência máxima de 85,5MHz.

84 84 A arquitetura descrita na seção (Operador AMA por descrição comportamental utilizando multiplicação por soma de inteiros deslocados) apresenta área de 61% menor, consumo médio de potência 61% menor que a arquitetura de MASUD (2004), porém apresenta freqüência máxima de operação 51% menor que freqüência máxima de operação de MASUD (2004), ou seja aproximadamente metade. Deste modo pode-se considerar que a arquitetura de MASUD (2004) apresenta uma relação área x freqüência máxima de operação levemente inferior à arquitetura da seção Todas as arquiteturas possuem pipeline de no mínimo 8 estágios ou 21 estágios para as arquiteturas que possuem pipeline internamente no operador AMA. Assim muitos elementos lógicos (LE) do FPGA espalhados ao longo da arquitetura requerem cadenciamento com um sinal de clock global, logo é necessário que o dispositivo FPGA já possua previamente todo o roteamento da árvore de clock, de modo a não permitir clock skew. Os FPGAs apresentados em ALTERA (2004) e ALTERA (2005-c) apresentam uma árvore de clock pré-roteada e de alta velocidade D-DWT A 2D-DWT proposta opera pela aplicação recursiva da 1D-DWT, na primeira dimensão a seguir na segunda dimensão, nas amostras da imagem armazenadas em uma memória interna ao sistema. Deste modo, a 1D-DWT é aplicada individualmente a todas as linhas e após é aplicada a todas as colunas para cada oitava computada. Para a computação das oitavas de ordem superior à primeira, os coeficientes relativos ao frame LL de saída da oitava n são utilizados como entrada para a computação da oitava n1. Memory Control input image samples 1D-DWT Memory output transform coefficients Figura 5.12: 2D-DWT em blocos. A arquitetura para a computação da 2D-DWT seguindo o padrão JPEG2000, mostrada na Figura 5.12, requer: - um bloco de memória com capacidade para armazenar todo o tile; - um bloco para o controle dos endereços de leitura e escrita na memória e transferência para o bloco 1D-DWT; - um bloco para a computação da transformada (1D-DWT) em uma dimensão. Como os bloco da 1D-DWT e de memória são totalmente passivos, cabe ao bloco de controle definir a seqüência de operações necessárias para a computação da transformada wavelet.

85 85 Após inicialização, os dados da imagem são inseridos na arquitetura a taxa de um pixel por ciclo de clock. O controlador de memória gera os endereços para escrita em memória de forma que a cada n posições é armazenada uma linha inteira da imagem. Após todos os dados serem armazenados, o controlador de memória lê os dados da memória e os envia para o bloco 1D-DWT onde a transformada de uma dimensão é realizada. Esta computação ocorre em todas as linhas e todas as colunas para cada oitava requerida. Considerando que cada par de coeficientes s n (sinal de aproximação) e d n (sinal de detalhes) é computado a partir de um par de coeficientes x 2n e x 2n1, lidos das posições 2n e 2n1 da memória, então estes coeficientes s n e d n podem ser armazenados novamente nas mesmas posições 2n e 2n1 da memória, e assim requerer somente a quantidade de memória necessária para armazenar um único frame da imagem. Por último o controlador de memória lê os dados transformados e envia para a saída, de forma a serem armazenados em uma memória externa ou computados por um próximo estágio. A 2D-DWT requer a utilização de uma memória de tamanho n x m, onde n representa o número de linhas da imagem e m representa o numero de colunas da imagem. A utilização de memória interna permite que o sistema se torne compacto e de maior eficiência. O acesso para leitura e escrita em uma memória interna pode ser feito sob taxas de acesso menores que uma arquitetura utilizando memória externa, com isso, os sistemas embarcados podem operar com maior eficiência. A arquitetura da 1D-DWT é uma arquitetura sistólica descrita para a compressão JPEG2000 com perdas, ou seja, é uma transformada irreversível que segue a recomendações descritas no padrão JPEG2000. Esta arquitetura foi sintetizada para todas as descrições da seção A figura 34 apresenta os sinais para realizar as ligações entre os blocos de memória, controlador de memória e transformada wavelet.

86 86 Input_Data CLK RESET CLK CLK2 Clock divisor MEM_ADDR_R CLK1 CLK1 Output_PA CLK2 DWT RST lifting Input_even Input_odd Output_PB mux mux W Data bus R_data_bus RST DWT memory control read_address Output_Data DWT_OK MEM_ADDR_W DWT_ok START WE q clock data rdaddress START_DWT Input Data bit mux Memory_block START Input_Ok Input_Data CLK RST START Input Memory control WE MEM_ADDR_W mux write_enable write_address wraddress wren 2D DWT Figura 5.13: Arquitetura 2D-DWT. Conforme observado na Figura 5.13, o controlador de memória foi dividido em dois blocos, o primeiro bloco (Input_Memory_Control da Figura 5.13) é utilizado para gerar os endereços para o armazenamento da imagem e o segundo bloco (DWT_memory_control da Figura 5.13) é utilizado para gerenciar a leitura e escrita dos coeficientes entre a memória e o bloco da transformada. A operação desta arquitetura ocorre da seguinte forma: Ao receber borda de subida no sinal START os dados dos pixels são lidos serialmente da entrada pelo sinal Input_Data e direcionados para a memória por um multiplexador através do sinal W_Data_bus. Os endereços de memória são gerados pelo bloco Input_Memory_Control. O bloco Input_Memory_Control gera n endereços consecutivos de acordo com o sinal MEM_ADDR_W, ou seja, a cada ciclo de clock o Input_Memory_Control gera um endereço consecutivo de 0 até n-1, considerando n o valor predefinido como o tamanho do tile. O tamanho do tile é o produto do número de linhas pelo número de colunas do tile. Após ocorrer a leitura de todo o tile, o Input_Memory_Control ativa o sinal START_DWT, para que o bloco DWT_memory_control assuma o controle dos sinais write_address e write_enable.

87 87 O bloco DWT_memory_control gera os endereços de leitura da memória dos coeficientes para a transformada obedecendo a dimensão da transformada (se horizontal ou vertical), o nível de oitava e o espelhamento das bordas. A cada linha ou coluna lida da memória o espelhamento das bordas deve ser considerando, assim a seqüência de endereços segue a ordem a(5) a(4) a(3) a(2) a(1) a(0) a(1)... Este espelhamento das bordas é feito à esquerda e à direita nas linhas e acima e abaixo nas colunas. O bloco DWT_memory_control gera os endereços de escrita na memória dos coeficientes calculados pelo bloco da transformada. Este endereço é gerado por retardo do valor do endereço de leitura. Esta rede de retardo é implementada por um conjunto de k registradores ligados em série e k corresponde à profundidade do pipeline do bloco da transformada. Para a geração do endereço de escrita ainda é considerado o espelhamento das bordas requerido para a computação da transformada wavelet. Assim nos ciclos que correspondem às posições espelhadas, não ocorre armazenamento dos coeficientes na memória. Para permitir a utilização de um único bloco de memória de dimensões m x n, os coeficientes de saída são armazenados na mesma memória utilizada para armazenar as amostras de entrada. Na computação da primeira oitava, para cada par de amostras na entrada do bloco da transformada (a i e a j ), é computado um coeficiente passa-baixas e um coeficiente passa-altas e para que não ocorra a sobreposição dos coeficientes na memória, o coeficiente passa-baixas é armazenado na posição i e o coeficiente passaaltas é armazenado na posição j. A Figura 5.14 mostra o algoritmo para a geração dos endereços de leitura das amostras de entrada do bloco da transformada 1D. O endereço de escrita é obtido por uma rede de atraso de tamanho corresponde à profundidade do pipeline do bloco da transformada 1D.

88 88 cont_c = 0 cont_end = cont_end incremento end = cont_end cont_end = cont_c*n ajuste = ajuste_max n cont_end > cont_c*(n1) s end = cont_end ajuste * incremento ajuste-- end = cont_end ajuste * incremento ajuste-- ajuste< -ajuste_max n n ajuste < 0 s s cont_c n cont_c < m s Figura 5.14: Algoritmo para a geração do endereçamento das linhas. Este algoritmo utiliza: O registrador end é utilizado para endereçar memória; O registrador incremento é utilizado para ajustar o próximo endereço a ser acessado o No cálculo das linhas na oitava k, incremento = k; o No cálculo das colunas na oitava k incremento = k * n de colunas; O contador de linhas (ou colunas) é chamado cont_c. Ao final da varredura de um frame (cont_c = m ou cont_c = n) é zerado enquanto o valor do registrador incremento é alterado (de acordo com regras do item anterior); O registrador cont_end percorre o vetor dos coeficientes de entrada, é atualizado a cada ciclo de leitura de memória pelo registrador incremento; O registrador ajuste é utilizado para contar o espelhamento das bordas. A variável ajuste_max define o tamanho do espelhamento das bordas. O algoritmo apresentado na Figura 5.14 pode ser utilizado tanto para a geração do endereçamento das linhas como para o endereçamento das colunas, bastando trocar

89 89 os valores de m e n. Os coeficientes são lidos e armazenados na memória de forma intercalada, de acordo com o valor da variável incremento. A Figura 5.15 mostra a organização da memória após a computação de três oitavas da transformada wavelet de um frame de resolução 32x LL0 LL0 LL0 entrada da primeira oitava LL1 LL1 entrada da segunda oitava LL2 entrada da terceira oitava Figura 5.15: Organização de memória de uma imagem 32x32 pós DWT de 3 oitavas. Segundo a Figura 5.15 os endereços de armazenamento dos coeficientes de saída da primeira oitava de um frame 32x32 são representados por z, onde: subframe LL: x,y Z y [0,15] e x [0,15] : z = 2(32yx) subframe HL: x,y Z y [0,15] e x [0,15] : z = 2(32yx)1 subframe LH: x,y Z y [0,15] e x [0,15] : z = 2(32yx16) subframe HH: x,y Z y [0,15] e x [0,15] : z = 2(32yx16)1 O subframe LL da primeira oitava representa as componentes de baixa freqüência da imagem original, assim seus coeficientes são os valores de entrada da segunda oitava. Os endereços de armazenamento dos coeficientes de saída da segunda oitava do frame 32x32 são representados por z, onde: subframe LL: x,y Z y [0,7] e x [0,7] : z = 4(32yx) subframe HL: x,y Z y [0,7] e x [0,7] : z = 4(32yx)2 subframe LH: x,y Z y [0,7] e x [0,7] : z = 4(32yx16) subframe HH: x,y Z y [0,7] e x [0,7] : z = 4(32yx16)2

90 90 Genericamente, os endereços de armazenamento dos coeficientes de saída da oitava k de qualquer frame m x n são representados por z, onde: subframe LL: x,y Z y [0,(m/(k1))-1] e x [0,(n/(k1))-1] : z = 2k(kyx) subframe HL: x,y Z y [0,(m/(k1))-1] e x [0,(n/(k1))-1] : z = 2k(kyx)2 k-1 subframe LH: x,y Z y [0,(m/(k1))-1] e x [0,(n/(k1))-1] : z = 2k(kyxm/2) subframe HH: x,y Z y [0,(m/(k1))-1] e x [0,(n/(k1))-1] : z = 2k(kyxm/2)2 k Resultados da arquitetura da 2D-DWT A arquitetura 2D-DWT apresentada na seção foi implementada tendo como núcleo, as diversas arquiteturas discutidas na seção Entretanto, a implementação da 2D-DWT apresenta parâmetros de entrada que independem da arquitetura interna utilizada. Os principais parâmetros de entrada são: Número de linhas do frame de entrada: n Número de colunas do frame de entrada: m Tamanho do espelhamento das bordas: b Número de estágios de pipeline (latência) do bloco da transformada 1D: Largura dos dados de cada pixel: A partir dos parâmetros de entrada da arquitetura várias informações do sistema podem ser definidas: Tamanho do frame de entrada: n x m Número de ciclos para armazenamento do frame: nm Número de ciclos para a DWT de todas as linhas (1 a oitava): (n2b)m Número de ciclos para a DWT de todas as colunas (1 a oitava): (m2b)n Número de ciclos para a 1 a oitava da DWT: 2mn2b(nm) Número de ciclos para a DWT de todas as linhas (2 a oitava): (n/22b)m/2 Número de ciclos para a DWT de todas as colunas (2 a oitava): (m/22b)n/2 Número de ciclos para a 2 a oitava da DWT: mn/2b(n m) Número de ciclos para a DWT de todas as linhas (oitava X): (n/2 X 2 X b)m/2 X Número de ciclos para a DWT de todas as colunas (oitava X): (m/2 X 2 X b)n/2 X

91 91 Número de ciclos para a oitava X da DWT: mn/2 X b(n m)/ 2 X-1 Independentemente do tipo de bloco da transformada wavelet utilizado, considerando um espelhamento das bordas da imagem, a síntese da arquitetura 2D DWT utilizando um frame de entrada de 256x256 pixels de 8 bits e bordas de 6 pixels requer: bits de memória; ciclos de leitura para armazenar todo o frame; 268 ciclos de clock para a computação de cada linha da imagem na primeira oitava; ciclos de clock para a computação da transformada de todas as linhas na primeira oitava; ciclos de clock para a computação da primeira oitava; ciclos de clock para a computação da segunda oitava; ciclos de clock para a computação da terceira oitava; De acordo com o tipo de implementação do bloco da transformada wavelet utilizado, os resultados de área, freqüência máxima de operação e potência média de saída são apresentados na Tabela 5.5. Tabela 5.5: Resultados das Implementações da 2D-DWT (STRATIX EP1S20). Arquitetura com Operadores Básicos com descrição: Comportamental com multiplicações inteiras (com variáveis do tipo integer) Comportamental com multiplicações inteiras (com variáveis do tipo standard logic vector) Comportamental com multiplicações por somas deslocadas Comportamental com operadores com pipeline e multiplicações por somas deslocadas Estrutural com multiplicações por somas deslocadas Estrutural com operadores com pipeline e multiplicações por somas deslocadas Área utilizada (LEs) Freqüência Máxima de Operação (MHz) Consumo (mw) , ,44 62, ,89 62, ,95 66, ,45 62, ,72 67,00 Os valores da Tabela 5.5 foram obtidos a partir de síntese e simulação utilizando a ferramenta ALTERA QUARTUS II (ALTERA, 2005-b) e todas as arquiteturas foram descritas para o dispositivo ALTERA STRATIX EP1S20F484C5 (ALTERA, 2005-c). Para permitir uma comparação direta entre os resultados, todas as simulações utilizaram

92 92 uma taxa de clock de 15MHz e foram feitas sobre o mesmo arquivo de vetores de teste, onde estes vetores correspondem à imagem Lena na resolução de 256x256 pixels com 255 tons de cinza e. Conforme os resultados apresentados na Tabela 5.5, duas implementações utilizando Operadores Básicos em descrição comportamental com multiplicadores inteiros foram realizadas. Apesar de ambas as descrições utilizarem a mesma faixa dinâmica, a primeira descrição, que utiliza variáveis definidas como do tipo integer, apresentou área 44% maior que a segunda descrição, que utiliza variáveis definidas como do tipo standard logic vector. Além disso, a segunda descrição apresenta freqüência máxima de operação mais de 3,5 vezes maior. Esta diferença significativa em duas descrições aparentemente idênticas é atribuída à ferramenta de síntese não conseguir reduzir a área da arquitetura que utiliza descrição com variáveis do tipo integer. Como a freqüência máxima de operação prevista para a arquitetura que utiliza Operadores Básicos em descrição comportamental com multiplicadores inteiros utilizando variáveis do tipo integer foi extremamente baixa, a simulação do consumo médio de potência para esta arquitetura não foi realizada por não trazer nenhuma vantagem aparente para o desenvolvimento da arquitetura. Para síntese em FPGAs, uma descrição comportamental se mostra a melhor opção, devido a permitir que a ferramenta de síntese utilize melhor os recursos internos do FPGA, como cadeias rápidas para propagação de carry, multiplicadores otimizados, etc... Porém uma descrição estrutural é a melhor opção para ser utilizada na prototipação de ASICs, por requerer uma descrição detalhada de todas as estruturas internas. Assim as diversas descrições da arquitetura seguiram esta linha de desenvolvimento, inicialmente descrição comportamental prevendo a síntese para FPGA e posteriormente descrição estrutural prevendo uma futura síntese para ASIC. Conforme a Tabela 5.5, as descrições estruturais da 2D-DWT apresentam cerca 15% mais área que as descrições funcionais, considerando tipos semelhantes de estruturas, ou seja, comparando entre si as arquiteturas com Operadores Básicos não pipelinezados e também entre si as arquiteturas com Operadores Básicos pipelinezados. Genericamente todas as arquiteturas apresentam pipeline no bloco da transformada wavelet, porém algumas arquiteturas possuem o Operador Básico pipelinezado internamente. Estas arquiteturas com Operadores Básicos pipelinezados apresentam aproximadamente 15% mais área que arquiteturas com Operadores Básicos não pipelinezados, entretanto possuem maior freqüência máxima de operação. Em arquitetura pipelinezadas podemos dizer que de processamento (throughput) fica igual a freqüência máxima de operação quando temos o pipeline cheio, pois a cada ciclo do sinal de clock um novo dado é gerado na saída. Esta afirmação é verdadeira para arquiteturas como a 1D-DWT, entretanto para computar três oitavas de uma imagem com resolução 256x256 pixels na arquitetura de 2D-DWT, é necessário: para computar a primeira oitava: ciclos de clock, gerando três subbandas (LH, HL e HH) de 128x128; para computar a segunda oitava: ciclos de clock, gerando três subbandas (LH, HL e HH) de 64x64;

93 93 para computar a segunda oitava: ciclos de clock, gerando quatro subbandas (LL, LH, HL e HH) de 32x32. Ao todo na arquitetura da 2D-DWT com operadores AMA por descrição estrutural utilizando multiplicação de inteiros deslocados em uma arquitetura de Pipeline são computados coeficientes em ciclos de clock. Assim cada coeficiente é computado em 2,79 ciclos de clock, resultando em uma taxa de processamento (throughput) de 28,2 milhões de coeficientes por segundo. Conforme informações da seção 4.3.3, a CAST Inc., que pertence ao Programa de Parceria para produção de Mega-funções da Altera (AMPP) possui um IP para a implementação da 2D-DWT, que requer 3239 LEs de um dispositivo FPGA da Altera operando a uma freqüência máxima de operação de 84,6MHz. Quando em operação nesta freqüência, a arquitetura apresenta uma taxa de processamento (throughput) de 30,6 milhões de coeficientes por segundo. A arquitetura desenvolvida na seção apresenta redução de área de 35% e redução na freqüência máxima de operação para 93% comparado com a arquitetura da CAST Inc. Em ambos os casos a taxa de processamento se situa em torno de 35% da freqüência de operação. A Barco Silex, que também pertence ao Programa de Parceria para produção de Mega-funções da Altera (AMPP), possui um IP para a implementação da 2D-DWT, que requer 4291 LEs de um dispositivo FPGA da Altera operando a uma freqüência máxima de operação de 130MHz. A arquitetura desenvolvida na seção apresenta redução de área de 51% e redução na freqüência máxima de operação para 40% comparado com a arquitetura da Barco Silex. Caso este IP também possua taxa de processamento situada em torno de 35% da freqüência de operação, neste caso esta arquitetura poderia ter taxa de processamento de 46,4 milhões de coeficientes por segundo Validação da arquitetura da 2D-DWT A validação de todas as versões da arquitetura da 2D-DWT foi realizada por comparação entre a representação resultante após a aplicação transformada na imagem Lena utilizando a ferramentas MATLAB e o resultado de simulação da transformada da imagem Lena feita na ferramenta ALTERA QUARTUS II (ALTERA, 2005-b). O frame de entrada utilizado é uma imagem completa de Lena na resolução de 256x256 pixels com 255 tons de cinza Figura 5.16.

94 94 Figura 5.16: Lena: resolução 256x256 pixels com 255 tons de cinza. O primeiro passo para a validação da arquitetura foi validar o algoritmo do filtro Daubechies 9/7. Para isso foi desenvolvido um programa para MATLAB, para calcular a transformada wavelet de uma dimensão, seguindo a especificação de ITU-T (2000). Aplicando o stream de dados correspondente às amostras da imagem Lena Figura 5.16, foi aplicado ao programa em MATLAB e foi obtida a imagem da Figura O resultado de uma simulação da 2D-DWT apresenta seqüências de valores inválidos e coeficientes de borda que deves ser desprezados entre cada linha de coeficientes válidos. Deste modo cada oitava deve ser recuperada separadamente. A partir dos dados da transformada das linhas foi montada a imagem apresentada na Figura O segundo passo para validação consiste em comparar o erro entre cada posição do frame da imagem computada pelo MATLAB e cada posição do frame da imagem simulada pelo Quartus II. Erros de baixa magnitude significam que os arredondamentos dos coeficientes e truncagens dos resultados nos operadores AMA podem ser admitidos. Para calcular o erro entre os dois frames, foi utilizada a métrica MSE, que realiza a média dos erros quadráticos. Este cálculo resultou em MSE de 1, em uma representação de 8 bits, significando que o erro médio quadrático é próximo a uma unidade na faixa dinâmica de 0 a 255, ou 0,41% do maior valor possível para um pixel. A partir do valor de MSE pode-se inferir o valor de PSNR entre os dois frames a partir da fórmula (conforme seção 2.6): PSNR = 20 log10 max Pi MSE

95 95 O valor de PSNR encontrado na computação da primeira dimensão da primeira oitava é igual a 46,02dB. Extrapolando para o cálculo de 3 oitavas, o valor de MSE pode subir para 2,74, gerando um PSNR de 17,5dB. Este valor de PSNR ainda significa que o frame simulado possui suficiente qualidade para considerar a arquitetura válida. Figura 5.17: Lena: 2D-DWT aplicada às linhas (computado no MATLAB). Figura 5.18: Lena: 2D-DWT aplicada às linhas (simulado no Quartus II). A partir da semelhança visual entre as figuras e os resultados das métricas de comparação, pode-se considerar que o algoritmo implementado para a transformada wavelet seguindo o esquema lifting é válido. A metodologia prevista na seção 2.6 para a validação da arquitetura consiste na comparação entre a representação descompactada gerada a partir dos coeficientes computados e a representação original da imagem, porém este procedimento não foi possível devido à falta da arquitetura para a descompressão. 5.2 Quantização De acordo com a seção 3.2, a etapa de quantização é uma divisão escalar uniforme para todos os coeficientes de uma determinada sub-banda. Uma maneira efetiva de definir o passo de quantização de uma determinada subbanda é calculá-lo a partir do valor dos filtros de síntese vertical e horizontal. A relação entre o erro no coeficiente da transformada gerada pela quantização e o correspondente erro no valor das amostras de um componente da imagem é expressa em quantidade de energia (γ b ). A quantidade de energia de uma determinada sub-banda é o produto da quantidade de energia da linha e da quantidade de energia da coluna. A quantidade de energia da coluna (ou linha) é a função de filtragem aplicada em uma coluna (ou linha) durante o processo de transformada inversa. Para calcular a quantidade de energia da coluna (ou linha), inicialmente realiza-se o up-sampling (inserção de um valor zero entre cada coeficiente do filtro) nos coeficientes h i (de acordo com a Tabela 5.1) e a

Compressão de Imagens: Padrão JPEG

Compressão de Imagens: Padrão JPEG Compressão de Imagens: Padrão JPEG PTC2547 Princípios de Televisão Digital Guido Stolfi 09/2017 EPUSP - Guido Stolfi 1 / 75 Temas Abordados Justificativas para Compressão de Imagens Codificador JPEG Transformada

Leia mais

Processamento de Imagem. Prof. MSc. André Yoshimi Kusumoto

Processamento de Imagem. Prof. MSc. André Yoshimi Kusumoto Processamento de Imagem Prof. MSc. André Yoshimi Kusumoto andrekusumoto.unip@gmail.com Definição Compressão de Imagem Formas de diminuir a área de armazenamento dos dados, reduzindo a quantidade de bits

Leia mais

Computação Gráfica. Prof. MSc André Y. Kusumoto

Computação Gráfica. Prof. MSc André Y. Kusumoto Computação Gráfica Prof. MSc André Y. Kusumoto andrekusumoto.unip@gmail.com Compressão de Imagem Definição Formas de diminuir a área de armazenamento dos dados, reduzindo a quantidade de bits para representar

Leia mais

Compressão de Imagens. Lilian Nogueira de Faria (Bolsista)...DPI/INPE Leila Maria Garcia Fonseca (Coordenadora)...DPI/INPE

Compressão de Imagens. Lilian Nogueira de Faria (Bolsista)...DPI/INPE Leila Maria Garcia Fonseca (Coordenadora)...DPI/INPE Compressão de Imagens Lilian Nogueira de Faria (Bolsista)...DPI/INPE Leila Maria Garcia Fonseca (Coordenadora)...DPI/INPE Imagens digitais necessitam de grande quantidade de espaço para armazenamento e

Leia mais

Transformada de Discreta de Co senos DCT

Transformada de Discreta de Co senos DCT Transformada de Discreta de Co senos DCT O primeiro passo, na maioria dos sistemas de compressão de imagens e vídeo, é identificar a presença de redundância espacial (semelhança entre um pixel e os pixels

Leia mais

Imagem Estática JPEG 2000 JPEG 2000 JPEG 2000 JPEG Joint Photographic Experts Group Padrão ISO/IEC 15444; ITU-T T.800

Imagem Estática JPEG 2000 JPEG 2000 JPEG 2000 JPEG Joint Photographic Experts Group Padrão ISO/IEC 15444; ITU-T T.800 Departamento de Engenharia de Telecomunicações - UFF Imagem Estática Profa. Débora Christina Muchaluat Saade deborams@telecom.uff.br Joint Photographic Experts Group Padrão ISO/IEC 15444; ITU-T T.800 Oferece

Leia mais

Televisão Digital 5ºano 2006/2007. Compressão/Descompressão de Imagens JPEG. Trabalho realizado por: Carla Neves, nº

Televisão Digital 5ºano 2006/2007. Compressão/Descompressão de Imagens JPEG. Trabalho realizado por: Carla Neves, nº Televisão Digital 5ºano 2006/2007 Compressão/Descompressão de Imagens JPEG Trabalho realizado por: Carla Neves, nº010503162 Índice Índice... pág2 Introdução... pág.3 Objectivos... pág.5 Implementação...

Leia mais

Processamento de Imagem. Compressão de Imagens Professora Sheila Cáceres

Processamento de Imagem. Compressão de Imagens Professora Sheila Cáceres Processamento de Imagem Compressão de Imagens Professora Sheila Cáceres Porque comprimir? Técnicas de compressão surgiram para reduzir o espaço requerido para armazenamento e o tempo necessário para transmissão

Leia mais

Classificação e Pesquisa de Dados. Aula 27 Compressão de Dados Multimídia: Compressão de Imagens

Classificação e Pesquisa de Dados. Aula 27 Compressão de Dados Multimídia: Compressão de Imagens Classificação e Pesquisa de Dados Aula 27 Compressão de Dados Multimídia: Compressão de Imagens UFRGS INF01124 Compressão de Imagens Reduz a quantidade de dados necessária para representar uma imagem Compressão

Leia mais

Aquisição/Codificação de Vídeo

Aquisição/Codificação de Vídeo Aquisição/Codificação de Vídeo Tópicos em Hipermídia Diego Fiori de Carvalho Rudinei Goularte 1 Roteiro Aquisição/Codificação Evolução CCD Formatos de vídeo analógico Aquisição de Imagens Padrões de Cor

Leia mais

Acadêmicos: Cassiano Cesar Casagrande Claudir Galesky Junior Rafael Voltolini

Acadêmicos: Cassiano Cesar Casagrande Claudir Galesky Junior Rafael Voltolini JPEG2000 Acadêmicos: Cassiano Cesar Casagrande Claudir Galesky Junior Rafael Voltolini Compressão JPEG2000 A codificação pode ser dividida em três partes principais: Pré-processamento Processamento principal

Leia mais

Processamento Digital de Imagens

Processamento Digital de Imagens Ciência da Computação Processamento Digital de Imagens Prof. Sergio Ribeiro Tópicos Introdução Espectro Eletromagnético Aquisição e Digitalização de Imagens Efeitos da Digitalização Digitalização Sensoriamento

Leia mais

Processamento Digital de Imagens

Processamento Digital de Imagens 1 Ciência da Computação Processamento Digital de Imagens Prof. Sergio Ribeiro Tópicos Introdução Espectro Eletromagnético Aquisição e de Imagens Sensoriamento Remoto 2 Introdução Espectro Eletromagnético

Leia mais

Compressão de Imagens em Movimento

Compressão de Imagens em Movimento Compressão de Imagens em Movimento Padrão MPEG-1 / Video PTC2547 Princípios de Televisão Digital Guido Stolfi 9/2015 EPUSP - Guido Stolfi 1 / 58 Compressão M-JPEG Considera cada quadro sucessivo como uma

Leia mais

Formatos de Áudio e Vídeo Digital Compactação de Vídeo

Formatos de Áudio e Vídeo Digital Compactação de Vídeo Redes Multimídia 2016.2 Formatos de Áudio e Vídeo Digital Compactação de Vídeo Curso Superior de Tecnologia em Sistemas para Internet Turma: TEC.SIS.4T Redes Multimídia Conteúdo Programático :: 1 a Unidade

Leia mais

Influência do Tamanho do Bloco na DCT

Influência do Tamanho do Bloco na DCT LICENCIATURA EM ENGENHARIA ELECTROTÉCNICA E DE COMPUTADORES TELEVISÃO DIGITAL 2005/06 Influência do Tamanho do Bloco na DCT Autores: Carlos Graf Nuno Lima Grupo 4 Novembro de 2005 ÍNDICE 1. INTRODUÇÃO...

Leia mais

Padrões de Compressão de Imagens

Padrões de Compressão de Imagens Aula 10 Padrões de Compressão de Imagens Diogo Pinheiro Fernades Pedrosa diogopedrosa@ufersa.edu.br http://www2.ufersa.edu.br/portal/professor/diogopedrosa Universidade Federal Rural do Semiárido Departamento

Leia mais

Compressão de Imagens de Satélites: Embarcada e em Solo

Compressão de Imagens de Satélites: Embarcada e em Solo CBERS-4 Adriano Carvalho de Paula.. Doutorado CAP Diego Vilela Monteiro. Mestrado CAP João Eliakin Mota de Oliveira.. Doutorado CAP Rubens Andreas Sautter Mestrado CAP Sumário Descrição Básica de Imagem

Leia mais

Princípios sobre imagens digitais

Princípios sobre imagens digitais Princípios sobre imagens digitais Aula 1 LPV 5731 - ANÁLISE DE IMAGENS DE SEMENTES E PLÂNTULAS Programa de pós-graduação em Fitotecnia Francisco G Gomes-Junior Escola Superior de Agricultura Luiz de Queiroz

Leia mais

Os computadores processam dados digitais ou discretos. Os dados são informação representada num sistema digital de símbolos.

Os computadores processam dados digitais ou discretos. Os dados são informação representada num sistema digital de símbolos. Os computadores processam dados digitais ou discretos. Os dados são informação representada num sistema digital de símbolos. Todas as formas de informação devem ser convertidas para a forma digital de

Leia mais

Fundamentos da Compressão de Vídeo

Fundamentos da Compressão de Vídeo Sistemas de Telecomunicações 2007-2008 Televisão Digital Fundamentos da Compressão de Vídeo Rui Marcelino Abril 2008 Engenharia Electrica e Electrónica - TIT Sumário 1. Motivação para Compressão de Vídeo

Leia mais

Universidade de Pernambuco Escola Politécnica de Pernambuco

Universidade de Pernambuco Escola Politécnica de Pernambuco Universidade de Pernambuco Escola Politécnica de Pernambuco TV Analógica e Digital Codificação de Fonte Prof. Márcio Lima E-mail:marcio.lima@poli.br 12.06.2014 Introdução A principal função de um sistema

Leia mais

Processamento digital de imagens

Processamento digital de imagens Processamento digital de imagens Agostinho Brito Departamento de Engenharia da Computação e Automação Universidade Federal do Rio Grande do Norte 23 de novembro de 2016 Compressão de imagens engloba técnicas

Leia mais

Compressão de Imagem DCC 066. Prof. Rodrigo Luis de Souza da Silva

Compressão de Imagem DCC 066. Prof. Rodrigo Luis de Souza da Silva Compressão de Imagem DCC 066 Prof. Rodrigo Luis de Souza da Silva Sumário Motivação Definição de Compressão Redundâncias na Imagem Métodos de Compressão de Imagem com perda Métodos de compressão de Imagem

Leia mais

FERRAMENTA PARA ENSINO DAS TÉCNICAS DE COMPRESSÃO DE VÍDEO UTILIZADAS NO PADRÃO MPEG-2

FERRAMENTA PARA ENSINO DAS TÉCNICAS DE COMPRESSÃO DE VÍDEO UTILIZADAS NO PADRÃO MPEG-2 FERRAMENTA PARA ENSINO DAS TÉCNICAS DE COMPRESSÃO DE VÍDEO UTILIZADAS NO PADRÃO MPEG-2 Ricardo Mércuri Miranda - mercurimiranda@yahoo.com.br Centro Universitário Salesiano de Campinas UNISAL Campinas SP

Leia mais

Compressão de Imagens Usando Wavelets: Uma Solução WEB para a Codificação EZW Utilizando JAVA. Utilizando JAVA. TCC - Monografia

Compressão de Imagens Usando Wavelets: Uma Solução WEB para a Codificação EZW Utilizando JAVA. Utilizando JAVA. TCC - Monografia Compressão de Imagens Usando Wavelets: Uma Solução WEB para a Codificação EZW Utilizando JAVA TCC - Monografia Wanderson Câmara dos Santos Orientador : Prof. Dr. Luiz Felipe de Queiroz Silveira 1 Departamento

Leia mais

4 Método Proposto Visão geral do Método

4 Método Proposto Visão geral do Método 52 4 Método Proposto Neste trabalho é sugerida uma nova metodologia para compressão de dados sísmicos volumétricos. O método proposto é baseado no uso da transformada wavelet 3D. Também será apresentado

Leia mais

RESTAURAÇÃO E RECONSTRUÇÃO DE IMAGENS. Nielsen Castelo Damasceno

RESTAURAÇÃO E RECONSTRUÇÃO DE IMAGENS. Nielsen Castelo Damasceno RESTAURAÇÃO E RECONSTRUÇÃO DE IMAGENS Nielsen Castelo Damasceno Restauração de imagem Procura recuperar uma imagem corrompida com base em um conhecimento a priori do fenômeno de degradação. Restauração

Leia mais

Universidade Federal do Rio Grande do Sul Instituto de Informática Programa de Pós-Graduação em Computação

Universidade Federal do Rio Grande do Sul Instituto de Informática Programa de Pós-Graduação em Computação Universidade Federal do Rio Grande do Sul Instituto de Informática Programa de Pós-Graduação em Computação Relatório do Trabalho da Disciplina de Arquitetura e Organização de Processadores CMP- 237 Marcelo

Leia mais

Waldeck Torres & Michele Hemerly

Waldeck Torres & Michele Hemerly Waldeck Torres & Michele Hemerly Índice Processo de Codificação do JPEG 2000 Transformada de Ondulas (DWT) Separação da Imagem em Blocos quantizados Divisão da Freqüência em Sub-bandas Quantização dos

Leia mais

Osciloscópio Digital. Diagrama em blocos:

Osciloscópio Digital. Diagrama em blocos: Osciloscópio Digital Neste tipo de osciloscópio, o sinal analógico de entrada é inicialmente convertido para o domínio digital através de um conversor A/D rápido, sendo em seguida armazenado em uma memória

Leia mais

2 Conceitos iniciais 19

2 Conceitos iniciais 19 Conceitos iniciais 19 2 Conceitos iniciais Neste capítulo apresentaremos alguns conceitos básicos sobre formatos e qualidade de vídeo, codificação de vídeo e medidas de energia de um bloco de pixels. Estes

Leia mais

Motivação Por que estudar?

Motivação Por que estudar? Aula 04 Imagens Diogo Pinheiro Fernandes Pedrosa Universidade Federal Rural do Semiárido Departamento de Ciências Exatas e Naturais Curso de Ciência da Computação Motivação Por que estudar? Imagens digitais

Leia mais

Representação da Informação

Representação da Informação Representação da Informação José Gustavo de Souza Paiva Introdução Representação é feita na forma digital Por que? Sistemas Computacionais só manipulam dados digitais Dados digitais são mais fáceis de

Leia mais

MPEG-4 & H.264. Dissertação, entendimento e comparativo entre e com o MPEG-2

MPEG-4 & H.264. Dissertação, entendimento e comparativo entre e com o MPEG-2 MPEG-4 & H.264 Dissertação, entendimento e comparativo entre e com o MPEG-2 UFF Departamento de Engenharia de Telecomunicações 2005/1 Mestrado em Eng. de Telecomunicações Professora Debora Christina Muchaluat

Leia mais

Informática I. Aula Aula 22-12/11/2007 1

Informática I. Aula Aula 22-12/11/2007 1 Informática I Aula 22 http://www.ic.uff.br/~bianca/informatica1/ Aula 22-12/11/2007 1 Ementa Noções Básicas de Computação (Hardware, Software e Internet) HTML e Páginas Web Internet e a Web Javascript

Leia mais

COMPRESSÃO E CODIFICAÇÃO SEM PERDAS. Mauro Nogueira Mônica Festa Paulo Antiquera

COMPRESSÃO E CODIFICAÇÃO SEM PERDAS. Mauro Nogueira Mônica Festa Paulo Antiquera COMPRESSÃO E CODIFICAÇÃO SEM PERDAS Mauro Nogueira Mônica Festa Paulo Antiquera Introdução Armazenamento ou transmissão compressão (compactação) de dados Compressão sem perdas Imagens médicas documentos

Leia mais

COMUNICAÇÃO DIGITAL INTRODUÇÃO À TEORIA DE INFORMAÇÃO

COMUNICAÇÃO DIGITAL INTRODUÇÃO À TEORIA DE INFORMAÇÃO COMUNICAÇÃO DIGITAL INTRODUÇÃO À TEORIA DE INFORMAÇÃO Evelio M. G. Fernández - 2011 Introdução à Teoria de Informação Em 1948, Claude Shannon publicou o trabalho A A Mathematical Theory of Communications.

Leia mais

COMPRESSÃO DE SINAIS DE ELETROMIOGRAFIA

COMPRESSÃO DE SINAIS DE ELETROMIOGRAFIA Universidade de Brasília UnB Faculdade de Tecnologia FT Departamento de Engenharia Elétrica ENE COMPRESSÃO DE SINAIS DE ELETROMIOGRAFIA Marcus Vinícius Chaffim Costa 1, Alexandre Zaghetto 2, Pedro de Azevedo

Leia mais

Princípios de Telecomunicações AULA 1. Elementos de um sistema de comunicações. Prof. Eng. Alexandre Dezem Bertozzi, Esp.

Princípios de Telecomunicações AULA 1. Elementos de um sistema de comunicações. Prof. Eng. Alexandre Dezem Bertozzi, Esp. Princípios de Telecomunicações AULA 1 Elementos de um sistema de comunicações Prof. Eng. Alexandre Dezem Bertozzi, Esp. COMUNICAÇÃO TRANSMISSÃO DE INFORMAÇÃO DE UM PONTO A OUTRO, ATRAVÉS DE UMA SUCESSÃO

Leia mais

Processamento de Imagem. A Imagem digital Professora Sheila Cáceres

Processamento de Imagem. A Imagem digital Professora Sheila Cáceres Processamento de Imagem A Imagem digital Professora Sheila Cáceres Visão Humana Processamento de Imagens 2 Semelhança entre o sistema visual humano e uma câmera fotográfica Várias semelhanças podem ser

Leia mais

Processamento de Sinal e Imagem Engenharia Electrotécnica e de Computadores

Processamento de Sinal e Imagem Engenharia Electrotécnica e de Computadores Processamento de Sinal e Imagem Engenharia Electrotécnica e de Computadores António M. Gonçalves Pinheiro Departamento de Física Universidade da Beira Interior Covilhã - Portugal pinheiro@ubi.pt Bibliografia

Leia mais

Televisão Digital. MPEG-2 Video

Televisão Digital. MPEG-2 Video Televisão Digital MPEG-2 Video Pedro A. Amado Assunção - Pólo de Coimbra Instituto Politécnico de Leiria - ESTG 1 Sumário Introdução. Características principais da norma MPEG-2. Compressão de vídeo: princípios

Leia mais

Exploração do Espaço de Projeto da DCT 2-D de um Compressor de Imagens JPEG

Exploração do Espaço de Projeto da DCT 2-D de um Compressor de Imagens JPEG Exploração do Espaço de Projeto da DCT 2-D de um Compressor de Imagens JPEG Roger Endrigo Carvalho Porto, Luciano Volcan Agostini GACI - Grupo de Arquiteturas e Circuitos Integrados Departamento de Matemática,

Leia mais

Compressão de Imagens em Movimento

Compressão de Imagens em Movimento Compressão de Imagens em Movimento Padrão MPEG-1 / Video PTC2547 Princípios de Televisão Digital Guido Stolfi 9/2017 EPUSP - Guido Stolfi 1 / 59 Tópicos Abordados: M-JPEG Padrão MPEG-1 Codificação com

Leia mais

Protótipo de software para inserção e extração de mensagens em arquivo raster através de esteganografia

Protótipo de software para inserção e extração de mensagens em arquivo raster através de esteganografia Centro de Ciências Exatas e Naturais Departamento de Sistemas e Computação Bacharelado em Ciências da Computação Protótipo de software para inserção e extração de mensagens em arquivo raster através de

Leia mais

Codecs de Imagem SMU

Codecs de Imagem SMU Codecs de Imagem SMU20909 2016-1 Tipos Sem perdas: PNG e TIFF. Com perdas: JPEG, JPEG 2000 e GIF. Sem perdas PNG Portable Network Graphics; 1996; O formato PNG foi projetado para substituir o formato mais

Leia mais

Code Compression for Embedded Systems

Code Compression for Embedded Systems Daniel Stefani Marcon, Thiago Nunes Kehl 30 de maio de 2008 1 2 3 4 Sistemas Embarcados os sistemas embarcados são dispositivos invisíveis se limitam a executar bem uma única tarefa basicamente qualquer

Leia mais

Tópicos. Princípios de Digitalização Sinal Analógico

Tópicos. Princípios de Digitalização Sinal Analógico Tópicos Introdução Representação de Informação Multimídia Digitalização Mídias Texto, Imagem, Áudio e Vídeo Compressão, Padrões de Compressão Comunicação Multimídia Protocolos de Rede, Redes Locais Redes

Leia mais

4 H Conceitos importantes

4 H Conceitos importantes H.264 51 4 H.264 Foi desenvolvido pelos grupos MPEG (Moving Picture Expert Group) e VCEG (Video Coding Expert Group), através de um esforço conjunto denominado JVT (Joint Video Team), um novo padrão de

Leia mais

Princípios de Telecomunicações. PRT60806 Aula 19: Modulação por Código de Pulso (PCM) Professor: Bruno Fontana da silva 2014

Princípios de Telecomunicações. PRT60806 Aula 19: Modulação por Código de Pulso (PCM) Professor: Bruno Fontana da silva 2014 1 Princípios de Telecomunicações PRT60806 Aula 19: Modulação por Código de Pulso (PCM) Professor: Bruno Fontana da silva 2014 Bloco de Comunicação Genérico Emissor sinais analógicos x sinais digitais Sinais

Leia mais

DSP (Conversão AD/ DA) Processo de conversão AD. Processo de conversão AD. Current A/D technology (cont.) Currente tecnologia A/D

DSP (Conversão AD/ DA) Processo de conversão AD. Processo de conversão AD. Current A/D technology (cont.) Currente tecnologia A/D DSP (Conversão AD/ DA) Conversão Analógico-> Digital Aula 3 Por Manoel Eusebio de Lima Centro de Informática - UFPE Processo de conversão AD Processo de conversão AD Amostragem do sinal de entrada (limitado

Leia mais

Formatos de Áudio e Vídeo Digital Introdução ao Vídeo

Formatos de Áudio e Vídeo Digital Introdução ao Vídeo Redes Multimídia 2016.2 Formatos de Áudio e Introdução ao Vídeo Curso Superior de Tecnologia em Sistemas para Internet Turma: TEC.SIS.4T Redes Multimídia Conteúdo Programático :: 1 a Unidade 1. Aplicações

Leia mais

Compressão com perdas

Compressão com perdas Compressão com perdas Codificação por transformadas e o padrão JPEG Anderson L Menezes Leonardo G Tampelini Maxiwell S Garcia Introdução Um método é dito com perdas (lossy data) quando a informação obtida

Leia mais

Televisão Digital. Codificação de Entropia Códigos de Huffman. Hélio Manuel Gonçalves Jaco

Televisão Digital. Codificação de Entropia Códigos de Huffman. Hélio Manuel Gonçalves Jaco Codificação de Entropia Códigos de Huffman Hélio Manuel Gonçalves Jaco Porto, Outubro de 2006 1. Objectivo Desenvolver um programa que gere códigos de Huffman de imagens às quais foi aplicada uma transformada

Leia mais

Carlos Roberto da Costa Ferreira. Interpolação Modificada de LSF's. Dissertação de Mestrado

Carlos Roberto da Costa Ferreira. Interpolação Modificada de LSF's. Dissertação de Mestrado Carlos Roberto da Costa Ferreira Interpolação Modificada de LSF's Dissertação de Mestrado Dissertação apresentada como requisito parcial para obtenção do grau de Mestre pelo Programa de Pósgraduação em

Leia mais

Universidade do Estado de Minas Gerais Curso de Sistemas de Informações. Multimídia. A Imagem (Parte II)

Universidade do Estado de Minas Gerais Curso de Sistemas de Informações. Multimídia. A Imagem (Parte II) Universidade do Estado de Minas Gerais Curso de Sistemas de Informações Multimídia A Imagem (Parte II) Prof Me. Sérgio Carlos Portari Júnior sergio.junior@uemg.br Multimídia Tópicos: Codificação das Cores

Leia mais

Parte 1 Questões Teóricas

Parte 1 Questões Teóricas Universidade de Brasília (UnB) Faculdade de Tecnologia (FT) Departamento de Engenharia Elétrica (ENE) Disciplina: Processamento de Imagens Profa.: Mylène C.Q. de Farias Semestre: 2014.2 LISTA 04 Entrega:

Leia mais

Teoria das Comunicações

Teoria das Comunicações 1 - Introdução Enlace de um Sistema de Comunicação fonte mensagem transdutor Transmissor Modulador canal ruído receptor transdutor destino mensagem (estimada) sinal de entrada sinal com distorção sinal

Leia mais

AVALIAÇÃO DOS IMPACTOS DO USO DE SOMADORES COMO MACRO FUNCTIONS EM UM PROJETO DE COMPRESSOR JPEG

AVALIAÇÃO DOS IMPACTOS DO USO DE SOMADORES COMO MACRO FUNCTIONS EM UM PROJETO DE COMPRESSOR JPEG AVALIAÇÃO DOS IMPACTOS DO USO DE SOMADORES COMO MACRO FUNCTIONS EM UM PROJETO DE COMPRESSOR JPEG Giovano Camaratta 1, Fábio Daitx 1, Luciano Agostini 1,2, Sergio Bampi 1 1 Grupo de Microeletrônica (GME)

Leia mais

Codificação de Informação 2010/2011

Codificação de Informação 2010/2011 Codificação de Informação 2010/2011 Sumário: Codificação de imagens métodos com e sem perdas As normas JPEG Compressão de imagem Métodos sem perdas Aplicação de um ou mais métodos de compressão já estudados

Leia mais

Formatos Imagem. Licenciatura em Engenharia Informática e de Computadores Computação Gráfica. Apontamentos CG Edward Angel, Sec. 8.

Formatos Imagem. Licenciatura em Engenharia Informática e de Computadores Computação Gráfica. Apontamentos CG Edward Angel, Sec. 8. Licenciatura em Engenharia Informática e de Computadores Computação Gráfica Formatos Imagem Apontamentos CG Edward Angel, Sec. 8.2 Siglas DIB: Device Independent Bitmap windows BMP: Windows Bitmap GIF:

Leia mais

18/08/2015. Capítulo 1: Armazenamento de dados. Bits e padrões de Bit. Capítulo 1: Armazenamento de Dados

18/08/2015. Capítulo 1: Armazenamento de dados. Bits e padrões de Bit. Capítulo 1: Armazenamento de Dados Capítulo 1: Armazenamento de Dados Ciência da Computação: Uma visão abrangente 11ª edição Autor J. Glenn Brookshear Editora Bookman Copyright 2012 Pearson Education, Inc. Capítulo 1: Armazenamento de dados

Leia mais

TAMANHO E TAXA DE COMPRESSÃO DA IMAGEM

TAMANHO E TAXA DE COMPRESSÃO DA IMAGEM TAMANHO E TAXA DE COMPRESSÃO DA IMAGEM Texto de Caroline Lima de Souza, aluna da Focus Escola de Fotogafia Compressão de uma imagem digital Dentro de cada arquivo de imagem JPG, JPEG, PNG, GIF ou outra

Leia mais

Trabalhos de laboratório

Trabalhos de laboratório Trabalhos de laboratório Âmbito : manipulação e processamento de imagem e vídeo Objectivo: Não é possível perceber realmente processamento de imagem (ou qualquer outro tópico de engenharia), sem aplicar

Leia mais

Processamento de Imagens

Processamento de Imagens Processamento de Imagens Prof. Julio Arakaki Ciência da Computação 1 Imagem Digital Full Color Image (Matriz de Pixels) RGB (24 bits): Red (8 bits) Green (8 bits) Blue (8 bits) 2 Imagem Digital Um modelo

Leia mais

Introdução a Análise de Imagens Digitais

Introdução a Análise de Imagens Digitais Introdução a Análise de Imagens Digitais Uma imagem digital é uma representação de uma cena por meio de um conjunto de elementos discretos e de tamanhos finitos, chamados de pixels, colocados em um arranjo

Leia mais

Métodos Matemáticos e Computacionais em Música

Métodos Matemáticos e Computacionais em Música Métodos Matemáticos e Computacionais em Música Luiz Velho, Paulo Cesar Carvalho, Sergio Krakowski, Marcelo Cicconet IMPA Processamento de Sinais Sonoros Luiz Velho Som - Sinal 1 D Música e Som Musica

Leia mais

Universidade Federal do Rio Grande do Sul Instituto de Informática

Universidade Federal do Rio Grande do Sul Instituto de Informática Universidade Federal do Rio Grande do Sul Instituto de Informática INF01046: Fundamento de Processamento de Imagens PROFESSOR JACOB SCHARCANSKI Projeto II: Compactação de Imagens Autores: Charles Arnoud

Leia mais

Capítulo II Imagem Digital

Capítulo II Imagem Digital Capítulo II Imagem Digital Proc. Sinal e Imagem Mestrado em Informática Médica Miguel Tavares Coimbra Resumo 1. Formação de uma imagem 2. Representação digital de uma imagem 3. Cor 4. Histogramas 5. Ruído

Leia mais

Módulo 6 Compressão Vídeo Sistemas Multimédia

Módulo 6 Compressão Vídeo Sistemas Multimédia Módulo 6 Compressão Vídeo Sistemas Multimédia Universidade de Aveiro 1 Sumário O sinal vídeo O vídeo digital- CCITT 601 Os formatos de vídeo Compressão de vídeo Redução de informação Redundância temporal

Leia mais

As imagens. As imagens. Representação digital de imagens. As imagens Wilson de Pádua Paula Filho 1

As imagens. As imagens. Representação digital de imagens. As imagens Wilson de Pádua Paula Filho 1 As As As Dispositivos gráficos Resolução espacial de : pixel - unidade de imagem, usada para medir resolução gráfica; visão humana - cerca de 3000 x 3000 pixels; fotografia - até 8000 x 8000 pixels. 2001

Leia mais

Dispositivos de Lógica Programável

Dispositivos de Lógica Programável Dispositivos de Lógica Programável Evolução Válvula no início de 1940 Transistor em 1947 Não aquece como as válvulas Fisicamente menor 1961 primeiro integrado TTL 74LSXX Década de 1970 surge SPLD Simple

Leia mais

Aquisição de Imagens

Aquisição de Imagens Aquisição de Imagens Etapas típicas envolvidas no processamento de imagens. Aquisição da imagem Pré-processamento Segmentação Reconhecimento dos objetos e regiões Princípios da Visão Humana Referência:

Leia mais

Realce de Imagens no Domínio da Transformada

Realce de Imagens no Domínio da Transformada Eduardo Esteves Vale Realce de Imagens no Domínio da Transformada Dissertação de Mestrado Dissertação apresentada ao Programa de Pós- Graduação em Engenharia Elétrica do Departamento de Engenharia Elétrica

Leia mais

Métodos para compressão de imagens em satélites de sensoriamento remoto

Métodos para compressão de imagens em satélites de sensoriamento remoto Métodos para compressão de imagens em satélites de sensoriamento remoto Lilian Nogueira de Faria 1 Leila Maria Garcia Fonseca 1 Max Henrique Machado Costa 2 1 Instituto Nacional de Pesquisas Espaciais

Leia mais

Processamento digital de imagens

Processamento digital de imagens Processamento digital de imagens Agostinho Brito Departamento de Engenharia da Computação e Automação Universidade Federal do Rio Grande do Norte 18 de fevereiro de 016 Apresentação O que é processamento

Leia mais

Compressão de Textos. Introdução. Introdução. Introdução. O volume de informação textual disponível on-line é imenso:

Compressão de Textos. Introdução. Introdução. Introdução. O volume de informação textual disponível on-line é imenso: Compressão de Textos Estrutura de Dados II Prof. Guilherme Tavares de Assis Universidade Federal de Ouro Preto UFOP Instituto de Ciências Exatas e Biológicas ICEB Departamento de Computação DECOM O volume

Leia mais

Capítulo 7 Multimídia

Capítulo 7 Multimídia Capítulo 7 Multimídia 7.1 Introdução à multimídia 7.2 Arquivos multimídia 7.3 Compressão de vídeo 7.4 Escalonamento de processos multimídia 7.5 Paradigmas de sistemas de arquivos multimídia 7.6 Alocação

Leia mais

3 Estimação e Compensação de movimento na codificação de vídeo

3 Estimação e Compensação de movimento na codificação de vídeo Estimação e Compensação de movimento na codificação de vídeo 36 3 Estimação e Compensação de movimento na codificação de vídeo O objetivo do modelo temporal (que engloba as fases de estimação e compensação

Leia mais

Introdução ao Processamento de Imagens Digitais Aula 01

Introdução ao Processamento de Imagens Digitais Aula 01 Introdução ao Processamento de Imagens Digitais Aula 01 Douglas Farias Cordeiro Universidade Federal de Goiás 06 de julho de 2015 Mini-currículo Professor do curso Gestão da Informação Formação: Graduação

Leia mais

FPGA & VHDL. Tutorial

FPGA & VHDL. Tutorial FPGA & VHDL Tutorial 2009-2 FPGA FieldProgrammableGateArray Dispositivo lógico contendo uma matriz de: Células lógicas genéricas Configuráveis ( programadas ) para desempenhar uma função simples Chaves

Leia mais

Conceitos Básicos de Áudio Digital

Conceitos Básicos de Áudio Digital Aula 07 Conceitos Básicos de Áudio Digital Diogo Pinheiro Fernandes Pedrosa Universidade Federal do Rio Grande do Norte Departamento de Ciências Exatas e Naturais Ciência da Computação Som Conceitos Iniciais

Leia mais

REDES II. e Heterogêneas. Prof. Marcos Argachoy

REDES II. e Heterogêneas. Prof. Marcos Argachoy Convergentes e Heterogêneas Prof. Marcos Argachoy REDES CONVERGENTES Cont./ Convergência Refere-se a redução para uma única conexão de rede, fornecendo todos os serviços, com conseqüente economia de escala.

Leia mais

Compressão de imagens de satélite (embarcado e solo)

Compressão de imagens de satélite (embarcado e solo) 1/55 Compressão de imagens de satélite (embarcado e solo) Barbara Maximino da Fonseca Reis Henrique Niwa Vander Luis de Souza Freitas Programa de Pós-Graduação em Computação Aplicada Laboratórios Associados

Leia mais

Disciplina: Processamento Digital de Sinais Aula 05 - Implementação de Sistemas de Processamento Digital de Sinais (Parte 01)

Disciplina: Processamento Digital de Sinais Aula 05 - Implementação de Sistemas de Processamento Digital de Sinais (Parte 01) Disciplina: Processamento Digital de Sinais Aula 05 - Implementação de Sistemas de Processamento Digital de Sinais (Parte 01) Prof. (eduardo.simas@ufba.br) Programa de Pós-Graduação em Engenharia Elétrica

Leia mais

Parâmetros importantes de um Analisador de Espectros: Faixa de frequência. Exatidão (frequência e amplitude) Sensibilidade. Resolução.

Parâmetros importantes de um Analisador de Espectros: Faixa de frequência. Exatidão (frequência e amplitude) Sensibilidade. Resolução. Parâmetros importantes de um Analisador de Espectros: Faixa de frequência Exatidão (frequência e amplitude) Sensibilidade Resolução Distorção Faixa dinâmica Faixa de frequência: Determina as frequências

Leia mais

Cores em Imagens e Vídeo

Cores em Imagens e Vídeo Aula 05 Cores em Imagens e Vídeo Diogo Pinheiro Fernandes Pedrosa Universidade Federal Rural do Semiárido Departamento de Ciências Exatas e Naturais Ciência da Computação Ciência das Cores A cor é fundamentada

Leia mais

INTRODUÇÃO À ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES. Função e Estrutura. Introdução Organização e Arquitetura. Organização e Arquitetura

INTRODUÇÃO À ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES. Função e Estrutura. Introdução Organização e Arquitetura. Organização e Arquitetura Introdução Organização e Arquitetura INTRODUÇÃO À ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES Eduardo Max Amaro Amaral Arquitetura são os atributos visíveis ao programador. Conjunto de instruções, número

Leia mais

Fundamentos II. Guillermo Cámara-Chávez

Fundamentos II. Guillermo Cámara-Chávez Fundamentos II Guillermo Cámara-Chávez Introdução Imagens digitais podem ser capturadas por uma variedade de sensores. O processamento dessas imagens possibilita diversas aplicações: transmissão de vídeo,

Leia mais

Fundamentos sobre. Universidade Federal do Rio de Janeiro - IM/DCC & NCE. Antonio G. Thomé Sala AEP/1033. Processamento de Imagens

Fundamentos sobre. Universidade Federal do Rio de Janeiro - IM/DCC & NCE. Antonio G. Thomé Sala AEP/1033. Processamento de Imagens Universidade Federal do Rio de Janeiro - IM/DCC & NCE Fundamentos sobre Processamento de Imagens Antonio G. Thomé thome@nce.ufrj.br Sala AEP/1033 Sumário do Curso Introdução Ambientação com o MatLab Aquisição

Leia mais

Introdução ao DPCM para compressão de imagens da câmera PAN do CBERS-3&4

Introdução ao DPCM para compressão de imagens da câmera PAN do CBERS-3&4 Introdução ao DPCM para compressão de imagens da câmera PAN do CBERS-3&4 Desenvolvido por CAST, CRESDA Lilian Nogueira de Faria (Bolsista)...DPI/INPE Leila Maria Garcia Fonseca...DPI/INPE Introdução ao

Leia mais

PTC3452 Exercícios sobre Codificação perceptual de Áudio e Vídeo 11/2017 G. S.

PTC3452 Exercícios sobre Codificação perceptual de Áudio e Vídeo 11/2017 G. S. PTC3452 Exercícios sobre Codificação perceptual de Áudio e Vídeo /207 G. S. ) O padrão ao lado representa um bloco de 8x8 elementos de imagem. Os elementos pretos possuem intensidade -27 e os elementos

Leia mais

Processamento de Imagem. Histograma da Imagem Professora Sheila Cáceres

Processamento de Imagem. Histograma da Imagem Professora Sheila Cáceres Processamento de Imagem Histograma da Imagem Professora Sheila Cáceres Histograma É a distribuição de frequência dos níveis de cinza da imagem onde cada entrada no eixo x representa o nível de cinza específico

Leia mais

3 Arquitetura Conceitual do Codec Open DVC

3 Arquitetura Conceitual do Codec Open DVC 3 Arquitetura Conceitual do Codec Open DVC A arquitetura conceitual do codec DVC proposto e implementado nesta dissertação, através da ferramenta para simulação e avaliação de Codificação Distribuída de

Leia mais

Processamento digital de imagens

Processamento digital de imagens Processamento digital de imagens Agostinho Brito DCA-CT-UFRN 4 de julho de 018 Agostinho Brito (DCA-CT-UFRN) Processamento digital de imagens 4 de julho de 018 1 / 31 O que é processamento digital de imagens?

Leia mais

Rodrigo Pereira David. Técnica de Estimação de Canal Utilizando Símbolos Pilotos em Sistemas OFDM. Dissertação de Mestrado

Rodrigo Pereira David. Técnica de Estimação de Canal Utilizando Símbolos Pilotos em Sistemas OFDM. Dissertação de Mestrado Rodrigo Pereira David Técnica de Estimação de Canal Utilizando Símbolos Pilotos em Sistemas OFDM Dissertação de Mestrado Dissertação apresentada como requisito parcial para obtenção do grau de Mestre pelo

Leia mais

Televisão Digital 2006/2007. João Sousa Botto

Televisão Digital 2006/2007. João Sousa Botto Televisão Digital 2006/2007 João Sousa Botto 010503064 jsbotto@gmail.com Algoritmo: 3 Princípios sobre os quais assenta o algoritmo: 4 Ambiente de trabalho: 5 Aspectos mais salientes da implementação que

Leia mais

Revisão de Lógica Digital. Lógica Booleana Conversão A/D e D/A Circuitos digitais e Memória

Revisão de Lógica Digital. Lógica Booleana Conversão A/D e D/A Circuitos digitais e Memória Revisão de Lógica Digital Lógica Booleana Conversão A/D e D/A Circuitos digitais e Memória Bits e Bytes Bit: Binary Digit. Unidade elementar de informação: 0 ou 1 Byte = 8 Bits = 256 valores (2 8 ) 0 1

Leia mais