• Nenhum resultado encontrado

Codificação progressiva sem perdas utilizando a tecnica de codificação aritmetica baseada no padrão JBIG

N/A
N/A
Protected

Academic year: 2021

Share "Codificação progressiva sem perdas utilizando a tecnica de codificação aritmetica baseada no padrão JBIG"

Copied!
216
0
0

Texto

(1)

UNIVERSIDADE ESTADUAL DE CAMPINAS

FACULDADE DE ENGENHARIA ELÉTRICA E DE COMPUTAÇÃO DEPARTAMENTO DE COMUNICAÇÕES

CODIFICAÇÃO PROGRESSIVA SEM PERDAS

UTILIZANDO A TÉCNICA DE CODIFICAÇÃO

ARITMÉTICA BASEADA NO PADRÃO JBIG

Autor

Ahmed Mohamed Abushaala

Orientador

Prof. Dr. Yuzo Iano

Banca Examinadora:

Prof. Evaldo Gonçalves Pelaes (UFPA)

Prof. Antônio Cláudio Paschoarelli Veiga (UFU)

Prof. Dr. José Antônio Siqueira Dias (FEEC/UNICAMP)

Prof. Dr. João Baptista Tadanobu Yabu-uti (FEEC/UNICAMP) Prof. Dr. Edson Moschim (FEEC/UNICAMP)

Tese apresentada à Faculdade de Engenharia Elétrica e de Computação da Universidade Estadual de Campinas como parte dos requisitos para a obtenção do título de Doutor em Engenharia Elétrica.

(2)
(3)

iii

RESUMO

Neste trabalho, apresenta-se um tutorial sobre a técnica de Codificação Aritmética Binária Adaptativa (CABA), onde a CABA é a base principal do padrão JBIG (“Joint Bi-level Image Experts Group”). O esforço é dedicado para o estudo e a implementação de quatro sub-blocos que fazem parte do padrão JBIG: sub-bloco “Redutor de Resolução”, sub-bloco “Predição Típica”, sub-bloco “Template Modelo” e sub-bloco “Codificador Aritmético Adaptativo”. O presente trabalho tem como objetivo o desenvolvimento de protótipo software de “Codec” de CABA para imagens de escala de cinzas e imagens coloridas, tendo-se em vista a codificação sem perdas. Realizou-se a simulação de uma nova proposta usando-se método progressivo do padrão JBIG com o objetivo de se representar a informação de imagem em planos de bits e camadas de resolução. Essa proposta consiste em se transferir o modo progressivo para o decodificador do JBIG ao invés de usá-lo no codificador que é o procedimento comum. Isso permitirá o ganho desejado na taxa de compressão. Os resultados numéricos são apresentados e analisados.

ABSTRACT

In this work, a tutorial about an Adaptive Binary Arithmetic Coding technique (ABAC) is presented, where the ABAC is the principal base of the JBIG standard (“Joint Bi-level Image Experts Group”). The main effort is dedicated to the study and the implementation of four sub-blocks of the JBIG standard namely: sub-block “Resolution Reduction”, sub-block “Typical Prediction”, sub-block “Model Template” and sub-block “Adaptive Arithmetic Encoder”. The main objective of this work is the development of a software prototype of Codec of ABAC for greyscale and colour images, with the aim to obtain a lossless coding. The simulation of a new proposal was realised using the progressive method of the JBIG standard with the objective of representing the image information in bit-planes and resolution layers. This proposal consists of transferring the progressive mode to the decoder of JBIG instead of using the common procedure. This would allow the desired gain in the compression ratio. The numerical results are presented and analysed.

(4)
(5)

v

Dedico este trabalho à minha querida esposa Fatema,

aos meus filhos (Sarah e Mohamed)

e aos meus pais e meus irmãos.

(6)
(7)

vii

O Profeta Mohammad (mensageiro de Deus), que a paz esteja com ele,

disse:

“Àquele que persegue a senda do conhecimento,

Deus dirigirá para a senda do paraíso”.

(8)
(9)

ix

AGRADECIMENTOS

• Em primeiro lugar a Deus por tudo e sobre tudo; • À minha querida esposa por tudo;

• Aos meus pais e aos meus irmãos, pelo apoio, incentivo e inúmeras contribuições; • Ao Prof. Dr. Yuzo Iano, pela amizade, apoio e orientação;

• Aos colegas do curso de Mestrado e de Doutorado pela amizade;

• A todos os amigos do Departamento de Comunicações (DECOM), professores, alunos e funcionários;

• Às pessoas que, de alguma maneira, contribuíram para a realização deste trabalho;

• Por fim, gostaria de expressar minha profunda gratidão ao Ministério da Educação do governo da Líbia, ao Higher Polytechnical Institute (Misurata-Libya), à Coordenação de Aperfeiçoamento de Pessoal de Nível Superior (CAPES), ao Fundo de Apoio ao Ensino e à Pesquisa (FAEP/UNICAMP), à Fundação de Amparo a Pesquisa do Estado de São Paulo (FAPESP), ao Centro de Pesquisa e Desenvolvimento da Telebrás (CPqD/Telebrás), ao Conselho Nacional de Desenvolvimento Científico e Tecnológico (CNPq), e ao Governo Brasileiro, pelo apoio financeiro e oportunidade oferecidas, que permitiram a concretização deste trabalho.

(10)
(11)

xi

CONTEÚDO

CAPÍTULO 1

: Conceitos Gerais

1.1 Introdução ... 1

1.2 A Compressão e suas Aplicações em Telecomunicações ... 3

1.3 A Técnica de Codificação Sem Perdas ... 5

CAPÍTULO 2

: O Padrão JBIG

2.1 Introdução ... 9

2.2 O Modo Progressivo ... 10

2.2.1 Estrutura Geral ... 11

2.3 As Vantagens da Técnica de Codificação do JBIG ... 16

2.4 Blocos de Codificação do JBIG ... 17

2.4.1 Sub-blocos de Codificador de Camada Diferencial e Redutor De Resolução e de Camada de Menor Resolução ... 18

2.5 Blocos de Decodificação do JBIG ... 24

2.6 Nova Proposta Para a Codificação Progressiva do JBIG ... 26

CAPÍTULO 3

: A Estrutura do Template Modelo

3.1 Introdução ... 31

(12)

3.3 A Estrutura do Modelo Usado ... 33

3.4 O Cálculo do Contexto ... 35

3.5 Comentários ... 36

CAPÍTULO 4

: Codificação e Decodificação Aritmética

4.1 Introdução ... 39

4.2 A História da Codificação Aritmética ... 40

4.3 A Codificação Aritmética Binária Adaptativa (CABA) ... 41

4.4 O Mecanismo do Processamento do CAA ... 42

4.4.1 O Processo de Codificação ... 44

4.5 A Decodificação Aritmética Binária Adaptativa (DABA) ... 47

4.6 A Codificação Aritmética Não Binária ... 48

4.7 Comentários ... 54

CAPÍTULO 5

: As Rotinas De Implementação

5.1 Introdução ... 57

5.2 O Procedimento de CABA ... 60

5.2.1 Determinação dos Intervalos ... 60

5.2.2 Rotinas e Fluxogramas de Codificação ... 62

5.3 O Procedimento de DABA ... 73

5.3.1 Rotinas e Fluxogramas de Decodificação ... 74

(13)

xiii

CAPÍTULO 6

: Simulações e Resultados

6.1 Introdução ... 85

6.2 Imagens Fonte ... 86

6.3 Formato das Imagens Fonte ... 90

6.4 Organização dos Dados Processados ... 94

6.4.1 Decomposição da Imagem Processada JBIG ... 94

6.4.2 A Ordem da Leitura dos Dados de Entrada ... 99

6.5 Avaliação do Algoritmo de Codificação Progressiva ... 100

6.5.1 Os Resultados das Imagens com Escala de Cinzas ... 100

6.5.2 Os Resultados das Imagens Coloridas ... 109

CAPÍTULO 7

: Conclusões e Sugestões

7.1 Conclusões ... 115 7.2 Contribuições ... 117 7.3 Sugestões ... 120

APÊNDICES

... 121

REFERÊNCIAS BIBLIOGRÁFICAS

... 187

TRABALHOS PUBLICADOS

... 191

(14)
(15)

xv

LISTA DE FIGURAS

2.1- Decomposição fornecida pela codificação progressiva de: 1 plano

de bits, 3 tiras e 3 camadas de resolução ... 12

2.2- Decomposição fornecida pela codificação progressiva de: 2 planos de bits, 3 tiras e 3 camadas de resolução ... 12

2.3- Blocos do codificador ... 17

2.4- Codificador de camada diferencial e redutor de resolução ... 19

2.5- Codificador de camada de menor resolução ...19

2.6- Os pixels usados para se determinar o valor do pixel na camada de baixa resolução ... 22

2.7- Blocos do decodificador ... 25

2.8- Decodificador de camada diferencial ... 25

2.9- Decodificador de camada de menor resolução ... 26

2.10- Bloco do codificador da nova proposta ... 28

2.11- Sub-blocos do codificador de planos de bits ... 28

2.12- Bloco do decodificador da nova proposta ... 28

2.13- Sub-blocos do decodificador de planos de bits ... 29

3.1- Template modelo de Markov de duas linhas ... 33

3.2- Template modelo de Markov de três linhas ... 34

3.3- Template modelo de Markov para as 4 fases ... 35

(16)

4.2- Subdivisão do intervalo ... 43

4.3- Operação de subdivisão dos intervalos ... 45

4.4- Entradas e saída do sub-bloco DAA ... 47

4.5- Distribuição das palavras código no intervalo IC ... 49

4.6- Subdivisão do intervalo para codificar a seqüência “a a d” ... 50

5.1- Fluxograma do codificador CAA ... 63

5.2- Fluxograma da rotina INITC ... 64

5.3- Fluxograma da rotina CODIF ... 65

5.4- Fluxograma da rotina MPSCOD ... 66

5.5- Fluxograma da rotina LPSCOD ... 68

5.6- Fluxograma da rotina RENORMCOD ... 69

5.7- Fluxograma da rotina BYTEOUT ... 71

5.8- Fluxograma da rotina FIMC ... 71

5.9- Fluxograma da rotina ZERARBITS ... 72

5.10- Fluxograma da rotina ESCREVFIM ... 73

5.11- Fluxograma do decodificador DAA ... 74

5.12- Fluxograma da rotina INITD ... 76

5.13- Fluxograma da rotina LERBYTE ... 77

5.14- Fluxograma da rotina DECODIF ... 78

5.15- Fluxograma da rotina MPSDECOD ... 79

5.16- Fluxograma da rotina LPSDECOD ... 80

5.17- Fluxograma da rotina RENORMDEC ... 82

6.1- Imagens com escala de cinzas ... 88

(17)

xvii

6.3- A estrutura da imagem com escala de cinzas de formato PGM ... 92

6.4- Imagem de 36x6 pixels de palavra JBIG ... 93

6.5- A representação da imagem JBIG na memória ... 93

6.6- As imagens recuperadas quando D = 3 ... 106

6.7- As imagens recuperadas de camadas de menor resolução (D = 3) ... 109

(18)
(19)

xix

LISTA DE TABELAS

2.1- As ordens possíveis nas nove tiras ... 13

2.2- As ordens possíveis no caso de multi-planos ... 15

4.1- O alfabeto de símbolos para codificação aritmética ... 49

5.1- Estrutura de registradores do CAA ... 57

5.2- Estrutura de registradores do DAA ... 58

6.1- Decomposição da estrutura de IEP ... 94

6.2- Decomposição do CIE do padrão JBIG ... 95

6.3- Decomposição do campo Ordem de CIE do padrão JBIG ... 95

6.4- Decomposição do campo Opções de CIE do padrão JBIG ... 95

6.5- Decomposição do DPIE do padrão JBIG ... 97

6.6- Decomposição do campo DTs,d,p ... 97

6.7- Decomposição do CIE utilizado neste trabalho ... 98

6.8- Decomposição do DPIE utilizado neste trabalho ... 99

6.9- Resultados de simulações do procedimento usual do JBIG ... 101

6.10- Resultados de simulações da nova proposta ... 102

6.11- Resultados de simulações do caso especial do JBIG ... 107

6.12- Resultados de simulações do algoritmo usual do JBIG ... 109

(20)
(21)

xxi

ABREVIATURAS

ABAC: Adaptive Binary Arithmetic Coding. ABAD: Adaptive Binary Arithmetic Decoding. BUF: External buffer.

CAA: Adaptive Arithmetic Encoder. CABA: Adaptive Binary Arithmetic Coding. DABA: Adaptive Binary Arithmetic Decoding.

CCITT: The Consultative Committee of the International Telephone and Telegraph.

CIE: Image header. Com: Commentary. CT: Shift counter. CX: Context.

DAA: Adaptive Arithmetic Decoder. DCP: Protected coded data.

DPIE: Processed image data. DTNORM: Normal data end. DTRST: Reset at data end. FIFO: First In First Out. ESC: Escape.

FSM: Finite State Machine. HITOLO: High to low.

IEP: Processed image.

ITU-T: International Telecommunication Union – Telecommunication Standardization Sector.

JBIG: Joint Bi-level Image Experts Group. JPEG: Joint Photographic Experts Group. LEAVE: Interleave multiple bit-planes.

Liga: Lowest-resolution-layer two or three line template. LIFO: Last In First Out.

LNT: Line not Typical. LPS: Less probable symbol.

LRLTWO: Lowest-resolution-layer two-line template. LSZ: LPS size on coding interval.

MLNT: Same LNT.

MMR: Modified-Modified READ algorithm. MPS: More probable symbol.

MPS/LPS: Conditional exchange. MS: Marker segment. MSE: Mean Squared Error.

MTA: Adaptive Templates Movement. Nível: Maximum level value.

(22)

PD: Deterministic Prediction. PDON: PD enable. PDPRIV: PD private. PDULTI: PD last. PGM: Portable GreyMap. PIX: Pixel. PPM: Portable PixelMap. PT: Typical Prediction.

PTDON: Differential-layer PT enabled. PTBON: Lowest-layer PT enabled. RR: Resolution Reduction. SC: Stack counter.

SEQ: Sequential.

SMID: Index over stripe is in middle.

SMPTE: Society of Motion Picture and Television Engineers. SNR: Signal to Noise Ratio.

STUFF: Stuff. SWTCH: Switch.

TA: Adaptive Template. TEMP: Temporary variable. TM: Model Template. Tipo: Type.

VLENGTH: Variable length.

VDP: Deterministic Prediction Value. VTP: Typical Prediction Value.

WTSC: World Telecommunication Standardization Conference.

(23)

xxiii

SÍMBOLOS

CC: Base of current coding interval.

DCamd,p: Layer coded data.

CN (.): New base of current coding interval.

Cs,d,p : Coded data for stripe s of resolution layer d of bit-plane p.

DTs,d,p: Stripe coded data.

D: Number of differential layer. DL: Number of initial resolution layer.

IC: Current coding interval.

Id,p : Image at resolution layer d of bit-plane p.

Ii: Image at layer i.

IN (.): New current coding interval.

Li: Lines per stripe at layer i.

MX: Maximum horizontal offset allowed for AT pixel.

MY: Maximum vertical offset allowed for AT pixel.

Pc: Cumulative probability.

Pe: Estimate conditional probability.

PL: Number of Bit-plans.

PR: Relative probability.

Ri: Sample resolution.

S: Number of stripe per layer. ST[cx]: State of CX.

Xi: Horizontal image size at layer i.

Yi: Vertical image size at layer i.

(24)
(25)

Capítulo 1 - Conceitos Gerais 1

Capítulo 1

C

ONCEITOS

G

ERAIS

1.1 Introdução

Com o avanço tecnológico da comunicação moderna, a demanda por transmissão e armazenamento de dados cresce rapidamente. Esse crescimento requer eficiência e rapidez de execução dos algoritmos usados nas técnicas pertinentes a essa área. As pesquisas relacionadas com essas técnicas vêm ganhando atenção crescente da comunidade científica e são objetos de estudos intensivos. Diversas técnicas vêm sendo utilizadas e têm como base principalmente a compressão de dados, possibilitando que as informações sejam transmitidas em menos tempo e/ou armazenados no menor espaço possível. As técnicas de codificação sem perdas (“lossless”) e com perdas (“lossy”) são duas formas usadas nesse campo [1], aproveitando-se as facilidades atuais existentes nos métodos e nos algoritmos propostos por diversos pesquisadores.

Atualmente, existe uma grande quantidade de trabalhos que apresenta técnicas e métodos visando a redução da quantidade de dados (informações) associados a um determinado sinal (áudio ou vídeo) a fim de se diminuir o volume do sinal (tempo de transmissão, quantidade de memória física e largura de faixa). Algumas técnicas são

(26)

implementadas utilizando-se imagens com escala de cinzas e imagens coloridas, tendo-se em vista a codificação tendo-sem perdas. Entre elas pode-tendo-se ressaltar principalmente a Codificação Aritmética Binária Adaptativa (CABA) [“Adaptive Binary Arithmetic Coding – ABAC”]. Essa codificação foi adotada pelo grupo de pesquisa formado em 1988 a fim de se estabelecer um padrão de compressão de dados denominado JBIG (“Joint Bi-level Image Experts Group”). O padrão JBIG é próprio para codificação progressiva do tipo adaptativo para imagens em 2 níveis (preto e branco) [2]. O JBIG foi aprovado pelo WTSC (“World Telecommunication Standardization Conference”) em Março de 1993.

A motivação para este trabalho é a de melhorar a taxa de compressão e o desempenho do sistema adotado no padrão JBIG. Alguns passos serão considerados nas implementações do processo de codificação para se alcançar melhor compactação de dados da imagem de entrada (imagem fonte). O codificador aritmético no padrão JBIG recebe apenas imagens binárias de 2 níveis (“bilevel”) [2], isto é, o princípio do padrão JBIG é a codificação de imagens de 2 níveis.

Neste trabalho, pretende-se implementar a codificação progressiva do padrão JBIG para atender imagens com escala de cinzas e imagens coloridas. Para que o padrão JBIG realize o processo de codificação de uma imagem desses tipos, a imagem deve ser dividida em vários planos de bits. Cada plano é tratado pelo algoritmo de codificação como uma imagem de 2 níveis. Além disso, pode-se implementar um caso especial de codificação para uma imagem com escala de cinzas, onde o modo seqüencial progressivo-único será usado. Nesse caso, cada plano de bits é dividido em várias camadas de resolução.

(27)

Capítulo 1 - Conceitos Gerais 3

O método proposto será aplicado tanto para a imagem com escala de cinzas quanto para a imagem colorida. A hierarquia presente no codificador é trabalhada no decodificador.

Assim, decidiu-se para o presente trabalho utilizar o algoritmo de codificação CABA a fim de se implementar a técnica de compressão baseada no padrão JBIG. O modo progressivo do padrão JBIG foi usado e adaptado para imagem com escala de cinzas e também para imagem colorida. Isso é discutido mais amplamente no capítulo 2, onde se abordam diversos aspectos relacionados com a técnica escolhida e o padrão JBIG. No capítulo 3, explica-se o tipo de modelo usado e seu template para as camadas diferenciais de resolução bem como para a camada de menor resolução. No capítulo 4, discutem-se as técnicas de codificação aritmética binária e não binária. As rotinas para implementação da técnica de codificação progressiva são explicadas no capítulo 5.

As técnicas de codificação são usadas para se reduzir a quantidade de informação necessária para a transmissão e armazenamento de dados referentes a uma imagem. Portanto, tem-se como objetivo a representação de informação da imagem original através de códigos mais eficientes. Essa redução pode ser uma função da estatística da imagem. No capítulo 6, discute-se o formato da imagem fonte usada para se testar e avaliar a técnica de codificação progressiva.

1.2 A Compressão e Suas Aplicações em Telecomunicações

Na área de codificação de imagens, os custos de transmissão e de armazenamento de informação são tratados com muita atenção por um grande número

(28)

de pesquisadores pelo fato de que são fatores importantes em qualquer técnica de compressão. Tais parâmetros são levados em consideração nas aplicações que requerem compressão (codificação) de dados. Portanto, surgiram propostas de vários métodos de compressão de informação de imagem abordando os dois temas. Uma classificação básica desses métodos se chama compressão física (codificação preditiva) [3,4]. Nesse caso, explora-se a redundância presente na informação, reduzindo-se a taxa de bits antes dos dígitos binários serem entregues a um meio de transmissão. A redundância é uma característica que está relacionada com fatores tais como aleatoriedade, predictibilidade, similaridade e outros existentes na informação da imagem.

Para transmissão de informação [4], as técnicas de compressão fornecem diversos benefícios ao projetista de rede. Elas são úteis para redução do tempo real requerido para se enviar os dados, ou seja, para se reduzir a taxa de bits na linha de transmissão que implique na redução de erros. Pode-se ter economia de custo associada ao envio de menos dados. Aumenta-se assim a eficiência devido à tendência de se ter uma redução de jornadas extras de trabalho para o envio da informação completa. Além disso, fornecem um nível de segurança pela conversão de texto para, por exemplo, o padrão ASCII.

Para armazenamento de informação, as técnicas de compressão trabalham no sentido de se reduzir a quantidade de dados que está sendo armazenada, ou seja, há ganho no espaço físico. Assim, o tempo de execução do programa pode ser reduzido.

Dessa forma, as técnicas de compressão podem ser usadas em várias aplicações, por exemplo, para transmissão de imagem de TV comercial via satélite, transmissão digital de sinais de vídeo (telefonia convencional), transmissão de dados

(29)

Capítulo 1 - Conceitos Gerais 5

via fac-símile, transmissão na rede mundial de comunicações (internet), imagens geradas por computadores, comunicação entre computadores, imagens escaneadas, armazenamento de imagens médicas em sistemas de monitoramento de pacientes.

De modo especial, várias técnicas são usadas para se comprimir informações destinadas a transmissão por fac-símile. Um método eficiente é obtido ao se designar códigos pré-definidos para diferentes fileiras de pixels em preto e branco. Os códigos substituem cada seqüência de fileiras de pixels encontrada em cada linha de varredura. Essa técnica é fundamentada na codificação de Huffman modificada [4]. Outro método mais eficiente ainda é obtido ao se designar códigos durante o processo de codificação. Esse método é utilizado na codificação aritmética [5]. O objetivo é preparar a imagem comprimida para transmissão ou armazenamento com o menor número possível de bits, preservando-se o nível da qualidade (requerida para a aplicação específica relacionada com determinado serviço).

1.3 A Técnica de Codificação Sem Perdas

A codificação sem perdas surge como opção real, sem provocar a degradação na imagem [6]. A recuperação dos dados codificados deve ser efetuada sem degradações acumulativas, isto é, a imagem recuperada é idêntica a transmitida ou armazenada. Portanto, os dados recuperados são exatamente iguais aos dados da imagem original. O processamento nesse caso é sem qualquer erro, evitando-se assim as aproximações geralmente feitas na codificação não exata. Nesse caso, a relação sinal/ruído (SNR - “Signal to Noise Ratio”) é infinita e o erro quadrático médio (MSE - “Mean Squared Error”) é zero, já que a degradação é nula. Um exemplo prático da

(30)

codificação sem perdas é a codificação usada para o fac-símile de documento – Grupo 3 do CCITT (“The Consultative Committee of The International Telephone and Telegraph”). Nessa aplicação, os vários comprimentos das seqüências de 0`s e 1`s têm palavras código cujos comprimentos seguem suas probabilidades de ocorrência [7], ou seja, a seqüência com maior probabilidade de ocorrência tem palavra a código mais curta. Esse método é chamado de codificação entrópica.

Reduzir a taxa de transmissão bem como a capacidade de memória de armazenamento é uma questão que está intimamente ligada à finalidade do serviço da técnica de codificação seja para transmissão ou para armazenamento. Sendo assim, a eficiência da técnica de codificação é medida pela taxa de informação média, ou seja, pela comparação entre o número de bits necessário para a transmissão com o número de bits da imagem original, o qual é dado pela sua entropia, ou quantidade de informação [8]. Portanto, a terminologia empregada para se examinar ou avaliar a eficiência da técnica de compressão abordada neste trabalho é dada a seguir:

comprimido arquivo do tamanho original arquivo do tamanho Compressão de Fator = (1.1) original arquivo do tamanho comprimido arquivo do tamanho mérito de Figura = (1.2)

Fraçãodaredução=1- Figurade mérito (1.3)

%Compressão=Fraçãodaredução*100% (1.4)

pixels em original tamanho bits em comprimido tamanho bits de Taxa = (1.5)

De acordo com a equação (1.2), quanto menor a figura de mérito, mais eficaz é a técnica de compressão empregada. Algumas imagens padronizadas pelo SMPTE

(31)

Capítulo 1 - Conceitos Gerais 7

(“Society of Motion Picture and Television Engineers”) foram utilizadas para se testar a técnica de compressão abordada. Tais imagens são chamadas de Bars, Bird, Cozinha, Sala, Clock, Cameraman, Bridge, Karen, Jelly_beans1, Couple, Pássaro, Airplane e Lenna. No caso de imagem com escala de cinzas, a imagem é digitalizada em 8 bits por amostra (pixel). No caso de imagem colorida, cada pixel contem os três sinais RGB (“Red”, “Green” e “Blue”). Cada sinal é digitalizado em 8 bits. Portanto, a imagem é digitalizada em 24 bits por amostra.

(32)
(33)

Capítulo 2 - O Padrão JBIG 9

Capítulo 2

O P

ADRÃO

JBIG

2.1 Introdução

A exigência de redução do tempo de transmissão ou da quantidade do espaço de armazenamento de dados provocou o aparecimento de diversos tipos de padrões mundiais de compressão. Um desses padrões é o JBIG. Ele foi preparado originalmente para codificação progressiva de imagens em 2 níveis (preto e branco).

A idéia do sistema de codificação progressiva é transmitir uma imagem comprimida, primeiro enviando-se os dados compactados em uma versão de resolução reduzida da imagem (camada de menor resolução) e depois enriquecendo-se a mesma quando for necessário através da transmissão adicional de mais dados compactados (camadas diferenciais de resolução), os quais complementam os dados já transmitidos anteriormente. A regulamentação (“Recommendation | International Standard”) define para um método de codificação, os seguintes modos: progressivo, seqüencial compatível-progressivo, seqüencial progressivo-único. Neste trabalho, o modo seqüencial progressivo-único foi aplicado na codificação de imagem com escala de cinzas, em caso especial. Os modos progressivo e seqüencial compatível-progressivo

(34)

foram aplicados na codificação de imagem com escala de cinzas, bem como na codificação de imagem colorida.

Entretanto, o esforço neste trabalho é dedicado para a implementação de quatro sub-blocos que fazem parte do padrão JBIG, isto é, o sub-bloco “Redutor de Resolução”, o bloco “Predição Típica”, o bloco “Template Modelo” e o sub-bloco “Codificador Aritmético Adaptativo”.

2.2 O Modo Progressivo

O padrão JBIG define um método para codificação sem perdas de imagens paradas (estáticas), em 2 tons, ou seja, basicamente o método de codificação foi usado para imagens em preto e branco. Neste trabalho, desenvolveu-se um método para imagens com escala de cinzas e imagens coloridas, isto é, a codificação progressiva pode ser usada também para se codificar imagens com escala de cinzas e imagens coloridas [9]. Portanto, desenvolveu-se um esquema baseado no padrão JBIG que atenda esse tipo de imagens e que resulte em uma codificação sem perdas [10]. Isso se torna possível pela utilização da codificação aritmética binária adaptativa (CABA) e pelo uso de algoritmo de redução da resolução.

Para realizar a codificação progressiva deve-se implementar um algoritmo que divide a imagem original em vários planos de bits (PL). Em seguida, o algoritmo de

redução da resolução divide cada plano novamente em determinados números de camadas de resolução.Conseqüentemente, as camadas são codificadas pelo algoritmo de CABA uma a uma seqüencialmente [11]. A redução de resolução na codificação é

(35)

Capítulo 2 - O Padrão JBIG 11

realizada a partir das camadas de maior para as de menor resolução, enquanto que a decodificação é realizada a partir das camadas de menor para as de maior resolução.

Sendo assim, as camadas de resolução são enviadas num modo progressivo sendo também a camada codificada seqüencialmente, ou seja, ela é varrida da esquerda para a direita e de cima para baixo (modo de “raster”). Para uma aplicação de codificação seqüencial progressivo-único, somente a imagem de menor resolução é codificada sem nenhuma referência às camadas de resolução e depois enviada, sendo possível criar um trem de pulsos no padrão JBIG. Por outro lado, para uma aplicação de codificação seqüencial compatível-progressivo, cada camada diferencial de resolução é codificada seqüencialmente, enquanto que essas camadas são enviadas num modo progressivo.

2.2.1 Estrutura Geral

A partir do que foi frisado anteriormente, antes de se realizar a operação de compressão, a imagem é dividida em planos de bits PL. O número de planos de bits

depende de quantos bits por pixel são usados. Se a mensagem ou o pixel tem 8 bits, então existe a possibilidade de se ter 8 planos de bits. Cada plano de bits é dividido em camadas, resultando em duplicações com resoluções diferentes (D). Essas duplicações são chamadas camadas diferenciais de resolução. Segundo o padrão JBIG, cada camada de resolução pode ser dividida em faixas horizontais chamadas tiras e em determinado número de linhas, sendo que as tiras na mesma camada de resolução são iguais. Entretanto, neste trabalho não foi aplicada a técnica de divisão de camadas em tiras.

(36)

De modo geral, seja S o número de tiras em cada camada de resolução, onde S é igual para todas as camadas de resolução. ID será referenciada como uma imagem da

camada de maior resolução (imagem de entrada); então a sua dimensão horizontal será XD; sua dimensão vertical será YD; sua resolução de amostragem será RD

(pontos-por-polegada); e o número de linhas em cada tira será LD. A Figura (2.1) mostra a

decomposição quando se tem 1 plano de bits, 3 camadas de resolução e 3 tiras por camada, e a Figura (2.2) mostra a decomposição quando se tem 2 planos de bits, 3 camadas de resolução e 3 tiras por camada.

R0 = 25 dpi d0 = I0 R1 = 50 dpi d1 = I1 R2 = RD = 100 dpi d2 = I2 = ID YD XD 6 7 8 4 3 5 0 1 2 LD S0 S1 S2 S2 S1 S0 S0 S1 S2

Fig. (2.1)- Decomposição fornecida pela codificação progressiva de: 1 plano de bits, 3 camadas de resolução e 3 tiras [2].

R0 = 25 dpi d0 = I0 PL= 1 (MSB) PL= 0 (LSB) R1 = 50 dpi d1 = I1 R2 = RD = 100 dpi d2 = I2 = ID 13 12 14 15 16 17 06 07 08 09 10 11 00 01 02 03 04 05 S0 S1 S2

Fig. (2.2)- Decomposição fornecida pela codificação progressiva de: 2 planos de bits, 3 camadas de resolução e 3 tiras [2].

(37)

Capítulo 2 - O Padrão JBIG 13

A ordem do processo de codificação progressiva depende de algumas variáveis tanto para a forma que tem somente 1 plano de bits quanto para a forma que tem mais do que 1 plano de bits. A primeira forma (de 1 plano de bits) depende de duas variáveis que são:

• A primeira é a SEQ bit (“Sequential”). Nesse caso, os dados são tratados pelo codificador do JBIG na forma seqüencial iniciando-se pela camada de menor resolução e indo para de maior resolução (ou vice-versa). Pega-se os dados da primeira tira seguidos pelos dados da segunda tira e assim por diante. Então se passa para a segunda camada de resolução repetindo-se o mesmo processo. Nesse caso, o valor da SEQ = 0. Portanto, a função da variável SEQ é arrumar a ordem das tiras.

• A segunda variável é a HITOLO bit (“High to Low”). Nesse caso, o codificador do JBIG codifica os dados começando-se pela camada de menor resolução e indo para de maior resolução. Nesse caso, o valor da HITOLO = 0. Portanto, HITOLO arruma a ordem das camadas de resolução.

A Tabela (2.1) mostra as possibilidades de ordem de Figura (2.1). Tab. (2.1)- As ordens possíveis nas nove tiras [2].

HITOLO SEQ Exemplos de ordem

0 0 0,1,2,3,4,5,6,7,8

0 1 0,3,6,1,4,7,2,5,8

1 0 6,7,8,3,4,5,0,1,2

(38)

A segunda forma (de mais do que 1 plano de bits, por exemplo, 2 planos de bits) depende de quatro variáveis. Duas delas, são as mesmas que foram citadas para a primeira forma, sendo que as outras duas variáveis são:

• Primeira variável ILEAVE bit (“Interleave Multiple Bit-planes”). Portanto, ILEAVE arruma a ordem dos Planos de bits. Quando ILEAVE = 1 indica que o bit está sendo ligado, ou seja, sempre os dados de tiras do maior plano de bits seguidos pelos do menor plano de bits na mesma operação. Dessa forma, a codificação dentro de qualquer camada de resolução começa pelos dados do maior plano de bits (MSB) indo para os de menor plano de bits (LSB).

• Segunda, a variável SMID bit (“Index Over Stripe is in Middle”). Quando SMID = 1 indica que S (número de tiras por camada) está no meio, ou seja, inicia-se a codificação dos dados pelas primeiras tiras nos planos de bits (MSB) de mesma resolução, ou no mesmo plano de bits (começando por MSB) em todas as resoluções. Isso é mostrado de maneira mais clara na Tabela (2.2), a qual mostra também as possibilidades de ordem da Figura (2.2).

Devido ao fato de que a divisão de camadas em tiras não está sendo usada nesse trabalho, as varáveis SEQ e SMID não são usadas. Também, os dados compactados (palavras código) em CS,d,p para a tira s da camada de resolução d e do

plano de bits p são independentes da ordem de tiras, ou seja, a imagem de entrada não está sendo dividida em tiras. Portanto, os dados compactados serão referenciados por Cd,p. Sendo assim, a ordem de número 1 da tabela (2.2) é usada neste trabalho.

(39)

Capítulo 2 - O Padrão JBIG 15

Tab. (2.2)- As ordens possíveis no caso de multi-planos [2].

No. HITOLO SEQ ILEAVE SMID Exemplos de ordem

1 0 0 0 0 (00,01,02 06,07,08 12,13,14) (03,04,05 09,10,11 15,16,17) 2 0 0 1 0 (00,01,02 03,04,05) (06,07,08 09,10,11) (12,13,14 15,16,17) 3 0 0 1 1 (00,03 01,04 02,05) (06,09 07,10 08,11) (12,15 13,16 14,17) 4 0 1 0 0 (00,06,12 03,09,15) (01,07,13 04,10,16) (02,08,14 05,11,17) 5 0 1 0 1 (00,06,12 01,07,13 02,08,14) (03,09,15 04,10,16 05,11,17) 6 0 1 1 0 (00,03 06,09 12,15) (01,04 07,10 13,16) (02,05 08,11 14,17) 7 1 0 0 0 (12,13,14 06,07,08 00,01,02) (15,16,17 09,10,11 03,04,05) 8 1 0 1 0 (12,13,14 15,16,17) (06,07,08 09,10,11) (00,01,02 03,04,05) 9 1 0 1 1 (12,15 13,16 14,17) (06,09 07,10 08,11) (00,03 01,04 02,05) 10 1 1 0 0 (12,06,00 15,09,03) (13,07,01 16,10,04) (14,08,02 17,11,05) 11 1 1 0 1 (12,06,00 13,07,01 14,08,02) (15,09,03 16,10,04 17,11,05) 12 1 1 1 0 (12,15 06,09 00,03) (13,16 07,10 01,04) (14,17 08,11 02,05)

(40)

2.3 As Vantagens da Técnica de Codificação do JBIG

A codificação progressiva é do tipo adaptativa. Essa adaptação às características da imagem torna o método robusto em relação ao tipo da imagem. Os benefícios da codificação do padrão JBIG são [2,9]:

• O padrão tem eficiência de compressão superior ao padrão G3/G4 (“fac-símile”) e às vezes alcança desempenho acima do padrão JPEG (“Joint Photographic Experts Group”).

• Em imagens escaneadas de caracteres impressos, as taxas de compressão observadas têm sido da ordem de 1,1 a 1,5 vezes maiores do que aquelas obtidas pelo algoritmo de codificação MMR (“Modified-Modified READ”) [Recomendações T.4 (G3) e T.6 (G4)].

• Em imagens de caracteres impressos geradas no computador, a taxa de compressão observada tem sido em torno de 5 vezes maior.

• É possível projetar uma aplicação com uma base de dados comum, a qual pode servir eficientemente dispositivos de saída com capacidades de resolução muito diferentes.

• No caso de uma imagem já existente numa tela, se um enriquecimento adicional da resolução é desejado, então, somente a informação extra de enriquecimento para a resolução necessária tem que ser enviada e decodificada.

• Devido ao estágio extra de enriquecimento de resolução atuar sobre a imagem já existente, o usuário tem a possibilidade de reconhecer rapidamente a imagem enquanto está sendo construída antes de se transmitir todas as informações da

(41)

Capítulo 2 - O Padrão JBIG 17

mesma, permitindo ao usuário interromper o processo de construção da imagem se isso for desejado (como está sendo usado na internet).

2.4 Blocos de Codificação do JBIG

O codificador JBIG, em cada plano de bits, pode ser decomposto em vários blocos como está mostrado na Figura (2.3), independentemente do número de planos de bits. Os blocos de processamento de camada diferencial e redução de resolução na Figura (2.3) são idênticos em funções. Por isso somente uma descrição da operação de uma camada é necessária, além do bloco codificador de camada de menor resolução. Para tal descrição, a imagem de chegada será referenciada como uma imagem de alta resolução (ID), a imagem de saída como uma imagem de baixa resolução (ID-1) e a

palavra código como CD,p.

ID-1 Codificador de Camada Diferencial e Redutor de Resolução ID ID-2 Codificador de Camada Diferencial e Redutor de Resolução Codificador de Camada de Menor Resolução I0 C0,p CD-1,p CD,p

(42)

2.4.1 Sub-blocos do Codificador de Camada Diferencial, do

Redutor de Resolução e da Camada de Menor Resolução.

O algoritmo de codificação divide a imagem de entrada em planos de bits, e cada plano é dividido em camadas de resolução pelo Redutor de Resolução (RR). O pixel a ser codificado deve ser passado pela Predição Típica (PT) para decidir se é necessário ou não codificá-lo. As camadas serão analisadas pelo Template Modelo (TM) para se determinar a estatística do pixel a ser codificado. Conseqüentemente, os pixels serão enviados um a um para o Codificador Aritmético Adaptativo (CAA) para se criar o código que será transmitido ou armazenado. Esse processo de codificação é feito recursivamente, ou seja, o mesmo processo é repetido em cada iteração destinada à codificação de um dado pixel. Existem mais dois sub-blocos que não foram abordados neste trabalho, que são: sub-bloco Predição Determinística (PD) e sub-bloco Template Adaptativo (TA).

A Figura (2.3) pode ser decomposta em dois conjuntos de sub-blocos. Incluindo-se os dois sub-blocos PD e TA, o primeiro conjunto está mostrado na Figura (2.4) para o bloco codificador de camada diferencial. O segundo está mostrado na Figura (2.5) para o bloco codificador de camada de menor resolução. No segundo caso, os sub-blocos RR e PD não são aplicáveis e os sub-sub-blocos PT, TM e TA são diferentes porque não existe nenhuma camada de menor resolução para ser usada como referência.

(43)

Capítulo 2 - O Padrão JBIG 19 RR CAA PT TM Imagem de alta Resolução (Id,p) VTP LNT CX Imagem Reduzida PD TA VDP Id-1,p MTA Cd,p

Fig. (2.4)- Codificador de camada diferencial e redutor de resolução [2].

CAA PT TM I0,p VTP MLNT CX TA MTA C0,p

Fig. (2.5)- Codificador de camada de menor resolução [2]. Tem-se:

Id,p: Imagem na camada d do plano p;

MTA: Movimento adaptativo do Template; LNT: Linha não típica (sinal);

MLNT: Mesmo sinal LNT;

VTP: Valor típico de predição (sinal);

VDP: Valor determinístico de predição (sinal).

Sabe-se que para qualquer técnica de compressão, principalmente na codificação aritmética, existem três unidades principais denominadas: o modelo, a distribuição da freqüência relativa (probabilidade) do pixel e o codificador [12].Portanto,

(44)

o esforço foi dedicado somente para a implementação dos quatro sub-blocos (RR, TM, PT e CAA) que fazem parte do padrão JBIG no lado do codificador e que são necessários para cada plano de bits. Tem-se:

1) Sub-bloco Redutor de Resolução (RR)

Em cada plano, esse sub-bloco recebe uma imagem de alta resolução, e se cria uma outra de baixa resolução com qualidade tão próxima quanto possível da imagem, correspondente a metade de todas as linhas e metade de todas as colunas da imagem de alta resolução, produzindo-se assim as camadas de diferentes resoluções (D). Esse número D foi implementado no “software” para que seja controlado pelo usuário e pode ser um número inteiro entre valores 0 e 8, e não é aconselhável escolher um número fora desse limite. Um meio óbvio de redução da resolução de uma dada imagem por um fator de 2 em cada dimensão é subamostrá-la tomando-se todas as linhas e todas as colunas. A subamostragem é simples, mas cria imagens de qualidade subjetiva pobre, pois alguns dos detalhes das imagens podem estar sendo freqüentemente perdidos.

Dependendo do valor D, o algoritmo de RR pode produzir de I0 a ID-1 camadas de

resolução. A redução de resolução é feita a partir das camadas de maior para as de menor resolução, sendo que o processo de decodificação é realizado de maneira inversa. Além disso, o processo é feito seqüencialmente. Por exemplo, para uma imagem de tamanho 1728X2376 pixels e com valor de D = 3, para cada plano, o algoritmo de RR divide a imagem original em:

(45)

Capítulo 2 - O Padrão JBIG 21

• Imagem I1 (média resolução) com tamanho 864X1188 pixels, ou seja, a metade

de I2.

• Imagem I0 (menor resolução) com tamanho 432X594 pixels, ou seja, a metade

de I1.

Note que a imagem I2 é igual à imagem original (resolução total).

Para produzir cada pixel na camada de baixa resolução, o algoritmo de RR realiza uma filtragem utilizando-se 4 pixels, na camada de alta resolução, circundantes ao pixel a ser produzido P?, 5 pixels vizinhos deles nas mesmas linhas e na linha prévia

e 3 pixels na camada de baixa resolução na mesma linha e na linha antecedente do pixel P?, como está mostrando a Figura (2.6) [2]. Portanto, o valor previsto do pixel P?

pode ser determinado como sendo o seguinte:

P? = L(11) L(10) L(9) H(8) H(7) H(6) H(5) H(4) H(3) H(2) H(1) H(0) (2.1)

onde,

L(.): valor correspondente a um bit na camada de baixa resolução; H(.): valor correspondente a um bit na camada de alta resolução.

O valor do P? obtido será indexado para um tom (“0” ou “1”) numa tabela

(46)

L(9) L(9) H(0) H(1) H(2) H(3) H(4) H(5) H(8) H(7) H(6) L(10) L(10) P? P? L(11) L(11) L(9) L(9) H(0) H(1) H(2) H(3) H(4) H(5) H(8) H(7) H(6) L(10) L(10) P? P? L(11) L(11)

Fig. (2.6)- Os pixels usados para se determinar o valor do pixel na camada de baixa resolução.

2) Sub-bloco Predição Típica de Camada Diferencial (PT)

A função desse sub-bloco é procurar pela região de cor sólida (uniforme), ou seja, os pixels que carregam o mesmo nível de cor. Quando um dado pixel corrente de alta resolução a ser codificado encontra-se nessa região, nenhum processamento normalmente feito nos outros sub-blocos é necessário, isto é, o dado pixel não precisa ser codificado. O propósito primário desse sub-bloco é aumentar a velocidade das implementações. A idéia usada neste trabalho consiste no seguinte:

Internamente, o sinal VTP foi interpretado para um valor, como opção, fornecido pelo usuário, indicando a habilitação da função desse sub-bloco, ou seja, se o sub-bloco PT pode ser usado ou não. Se for habilitado o uso do sub-bloco PT, então no início de cada linha, o algoritmo realiza uma procura pela região que tem a mesma cor do pixel a ser codificado (região uniforme), comparando-se a mesma linha com a linha antecedente. Caso encontre a semelhança na cor, o sinal LNT será enviado ao codificador para se evitar a codificação da linha que carrega o pixel a ser codificado. O

(47)

Capítulo 2 - O Padrão JBIG 23

codificador adiciona um sinal aos códigos a fim de que o decodificador possa recuperar os pixels dessa linha. Caso contrário, a linha corrente será codificada normalmente.

3) Sub-bloco Template Modelo (TM)

O sub-bloco recebe o pixel a ser codificado bem como alguns pixels vizinhos a ele e calcula um número inteiro chamado contexto (CX). O contexto é enviado para o sub-bloco do codificador aritmético adaptativo CAA. Esse processo é feito sucessivamente para cada pixel da seqüência (PIX) que está sendo codificada. Essa seção será explicada de maneira mais detalhada no capítulo 3.

4) Sub-bloco Codificador Aritmético Adaptativo (CAA)

O sub-bloco CAA é um codificador binário de entropia. Ele observa a saída do sub-bloco PT para determinar se é mesmo necessário codificar um dado pixel. Se for necessário, então o CAA observa o contexto CX e utiliza o seu estimador de probabilidade interno, através do uso de uma tabela de estimação de probabilidade [2]. Em seguida estima a probabilidade condicional adaptativa do pixel corrente. Esse sub-bloco será explicado com exemplos no capítulo 4.

Para se ter uma visão geral, mais dois sub-blocos (PD e TA), que não foram implementados nesse trabalho, são explicados a seguir:

(48)

5) Sub-bloco Predição Determinística (PD)

O propósito desse sub-bloco é fornecer um ganho de codificação. Algumas vezes ocorre que o valor de um pixel em uma camada de alta resolução, a ser codificado, é deduzido a partir dos pixels vizinhos particulares na mesma camada e na camada de baixa resolução. Quando isso ocorre, o sub-bloco PD sinaliza tal pixel e evita-se o processo de codificação no sub-bloco CAA. O sub-bloco PD é um algoritmo dirigido por tabelas PD; essas tabelas são fortemente dependentes do método particular de redução de resolução usado.

6) Sub-bloco Template Adaptativo (TA)

A função desse sub-bloco é procurar a periodicidade na imagem. Quando se encontra tal periodicidade, o template modelo é mudado. Ao mesmo tempo, uma seqüência de controle MTA é adicionada ao fluxo de dados de saída (palavras código - “output datastream”).

2.5 Blocos de Decodificação do JBIG

Os blocos do decodificador são análogos aos blocos do codificador. Para qualquer plano de bits, os blocos recebem a seqüência de palavras código Cd,p e criam

(49)

Capítulo 2 - O Padrão JBIG 25 ID-1 ID ID-2 Decodificador de Camada Diferencial Decodificador de Camada de Menor Resolução I0 C0,p CD-1,p CD,p Decodificador de Camada Diferencial

Fig. (2.7)- Blocos do decodificador [2].

Uma descrição da operação de uma camada é agora necessária. Os blocos do decodificador de camada diferencial e de menor resolução podem ser decompostos, no caso geral, conforme estão mostrados nas Figuras (2.8) e (2.9) [2]. Observe que os sub-blocos RR e TA não fazem parte do decodificador. Neste trabalho também não foi usado o sub-bloco PD. Portanto, somente três sub-blocos do padrão JBIG são necessários no lado do decodificador e esses foram implementados. Esses sub-blocos são TM (é o mesmo daquele que foi usado pelo codificador CAA), PT e Decodificador Aritmético Adaptativo (DAA).

DAA TM PT Imagem de Baixa Resolução (Id-1,p) VTP LNT CX Cd,p Imagem de Alta Resolução (Id,p) PD VDP MTA

(50)

DAA TM PT VTP MLNT CX C0,p I0,p MTA

Fig. (2.9)- Decodificador de camada de menor resolução.

O sub-bloco DAA recebe as palavras código Cd,p, o valor típico de predição VTP

e o contexto CX, e na saída recupera o fluxo de pixels PIX da imagem de alta resolução.

2.6 Nova Proposta Para a Codificação Progressiva do JBIG

Na codificação CABA, o algoritmo divide a imagem de entrada (com escala de cinzas ou colorida) em planos de bits (PL) correspondente ao número de bits por pixel.

Cada plano PL é tratado como se fosse uma imagem de 2 níveis (2 tons). Portanto,

pode-se aplicar a codificação aritmética do padrão JBIG em cada plano de bits (PL).

Um dos sub-blocos do codificador de camada diferencial é o sub-bloco redutor de resolução RR. Esse sub-bloco faz parte da codificação progressiva, o qual divide cada plano de bits (PL) em D camadas de resolução. As camadas são codificadas pelo

codificador CAA e transmitidas ou armazenadas uma a uma. Na decodificação DABA, essas camadas são resgatadas do fluxo de palavra código PC e recuperadas pelo decodificador DAA. Esse procedimento foi aplicado nas imagens de entrada com escala de cinzas e coloridas.

(51)

Capítulo 2 - O Padrão JBIG 27

Um caso especial para a imagem com escala de cinzas foi implementado. Esse caso serve para algumas aplicações que não exigem muitos detalhes nas imagens recuperadas. Um exemplo de tais aplicações é a transmissão digital de sinais de vídeo (Telefonia Convencional), ou seja, vídeo conferência. Nesse caso, o modo seqüencial progresssivo-único foi utilizado. Dessa forma, a imagem de entrada foi dividida em planos de bits (PL) e em camadas de resolução (D), sendo que somente a camada de

menor resolução (d0) foi codificada e transmitida ou armazenada. O resultado obtido

nesse caso é mostrado no capítulo 6.

Uma nova proposta foi implementada usando-se o mesmo procedimento do método progressivo do padrão JBIG. A proposta é resumida em: o sub-bloco redutor de resolução RR é transferido para o lado do decodificador ao invés de estar no codificador, ou seja, esse sub-bloco será uma parte do decodificador de camada diferencial. O processamento de codificação será aplicado para única camada de resolução. Portanto, a imagem de entrada, de cada plano de bits, é codificada sem dividí-la em camadas de resolução, isto é, a imagem é codificada com sua resolução total. Nesse caso, pode-se diminuir o tamanho do arquivo compactado em relação ao método usual, sendo esperado um melhor desempenho do sistema de compressão. O algoritmo de codificação CABA somente envia o número de camadas de resolução (D) desejado para o decodificador. Esse número D é escolhido pelo usuário. Através do número D, o algoritmo do sub-bloco redutor de resolução RR divide cada plano de bits (PL) em D camadas de resoluções diferentes, seguindo-se o mesmo procedimento que

foi usado quando o sub-bloco RR estava na codificação CABA.

A Figura (2.10) mostra o bloco do codificador de planos de bits. O codificador recebe a imagem Ip do plano de bits p em sua resolução total, e cria os códigos (Cp).

(52)

Codificador de Planos de

Bits

Ip Cp

Fig. (2.10)- Bloco do codificador da nova proposta.

O codificador pode ser decomposto em vários sub-blocos como está mostrado na Figura (2.11). CAA PT TM Ip VTP MLNT CX Cp

Fig. (2.11)- Sub-blocos do codificador de planos de bits.

O bloco do decodificador de planos de bits é mostrado na Figura (2.12). A decomposição está mostrada na Figura (2.13).

Cp Decodificador de Planos de Bits I0,p ID-1,p ID,p

(53)

Capítulo 2 - O Padrão JBIG 29 RR I0,p ID-1,p ID,p DAA TM PT VTP MLNT CX Cp Ip

Fig. (2.13)- Sub-blocos do decodificador de planos de bits.

A simulação dessa proposta é implementada tanto para a imagem com escala de cinzas quanto para a imagem colorida. Os resultados são analisados comparando-se o desempenho com a codificação progressiva usual que é usada no padrão JBIG. Esses resultados são mostrados no capítulo 6.

(54)
(55)

Capítulo 3 - A Estrutura do Modelo 31

Capítulo 3

A E

STRUTURA DO

T

EMPLATE

M

ODELO

3.1 Introdução

Para qualquer técnica de compressão, existem três unidades principais denominadas: o modelo, a probabilidade de ocorrência dos pixels e o codificador.

Neste trabalho, o modelo é separado da unidade do codificador. Ele proporciona as características sobre os dados da imagem. O modelo determina o pixel atual a ser codificado e seu contexto (CX). A operação de geração do contexto é feita sucessivamente para cada pixel.

A estimação de estatística é calculada para cada contexto, sendo que ela pode ser feita antes do processo de codificação como acontece na técnica de codificação de Huffman [13], ou durante o processo de codificação como ocorre na técnica de codificação aritmética. Essa estimação (probabilidade) é usada pela unidade do codificador.

As codificações chamadas estatísticas são aquelas que utilizam técnicas de compressão baseadas na estatística da imagem. Isso significa que se codificam os dados com base na freqüência de ocorrência dos mesmos. Elas reduzem a redundância entre os dados, e seu emprego minimiza o tamanho médio do código

(56)

usado para representar os dados da imagem original. A codificação aritmética é considerada um exemplo das diversas técnicas estatísticas de compressão de dados.

3.2 O

Modelo

Vários tipos de modelos são usados nos sistemas de compressão. Esses modelos dependem da aplicação usada. Por exemplo, no modelo simples chamado sem memória (“memoryless”), os pixels são codificados de acordo com um código único (como na codificação de Huffman). O modelo para os dados fonte às vezes especializa-se na formulação da função recursiva para especializa-se obter uma fórmula da “Finite State Machine” (FSM). O modelo FSM é a generalização de diversas versões de modelos Markov” para processo estocásticos, onde a probabilidade do pixel a ser codificado depende dos valores observados previamente. Sendo assim, o contexto pode ser definido como sendo um número inteiro calculado pela seqüência de pixels antecedentes ao pixel a ser codificado. Ele é um estado determinado pelos pixels passados sendo utilizado tanto para o codificador quanto para o decodificador.

O modelo de Markov usado neste trabalho é um modelo estacionário adaptativo. A adaptação nesse modelo é realizada em função da ocorrência dos pixels (as probabilidades associadas com os contextos) enquanto a seqüência de pixels está sendo codificada, isto é, a probabilidade de cada pixel é determinada durante o processo de codificação. Essa probabilidade muda de um estado para o próximo que tenha mais informação sobre a seqüência de pixels a fim de se codificar o próximo pixel [2].

(57)

Capítulo 3 - A Estrutura do Modelo 33

3.3 A Estrutura do Modelo Usado

Neste trabalho, na codificação progressiva, o contexto é determinado pelas tonalidades (níveis binários) de pixels particulares na imagem de alta resolução, pelos pixels particulares na imagem de baixa resolução e pela fase espacial do pixel a ser codificado. A fase espacial descreve a orientação do pixel de alta resolução com relação ao pixel de baixa resolução correspondente. Através do contexto, o algoritmo do codificador CAA localiza a estimativa de probabilidade do pixel a ser codificado.

Os modelos de Markov de décima ordem e de décima segunda ordem são usados tanto para o codificador quanto para o decodificador. A estrutura do modelo (Template Modelo) é construída em várias formas [14,15]. O padrão JBIG fornece duas formas de Template para se calcular o contexto [2,9], as quais contêm 10 e 12 pixels vizinhos e circundantes, na mesma linha e nas linhas prévias, ao pixel a ser codificado. Esses pixels têm forte relação com o pixel que está sendo codificado. As duas formas da estrutura de template modelo são explicadas a seguir:

A primeira forma: ela é usada para se codificar as camadas de menor resolução. Esse Template pode ser composto de duas ou de três linhas de 10 pixels antecedentes ao pixel a ser codificado (Markov de décima ordem), como estão mostradas nas Figuras (3.1) e (3.2).

P (t-M-3) P (t-M-2) P (t-M-1) P (t-M) P (t-M+1) P (t-3)

P (t-M+2)

P (t-2) P (t-1) P (t) P (t+1)

(58)

P (t-2M-1) P (t-2M) P (t-2M+1)

P (t-M-2) P (t-M-1) P (t-M) P (t-M+1) P (t-M+2)

P (t-1) P (t) P (t+1)

Fig. (3.2)- Template Modelo de Markov de três linhas. onde,

t: posição do pixel P(t);

t+1: posição do pixel P (t+1) a ser codificado; não faz parte do Template; M: número de pixels por linha;

P (t-M): o pixel acima do pixel que a ser codificado.

A segunda forma: ela é usada para se codificar as camadas diferenciais de resolução. O Template contém 12 pixels, 6 deles estão na imagem de alta resolução, 4 estão na imagem de baixa resolução e 2 na fase espacial do pixel a ser codificado (Markov de décima segunda ordem), conforme mostrado na Figura (3.3).

(59)

Capítulo 3 - A Estrutura do Modelo 35 H(5) H(8) H(4) H(9) L(3) H(7) P? H(6) L(1) L(0) L(2) H(5) H(8) H(4) H(9) H(7) P? H(6) L(1) L(0) L(2) L(3) H(5) H(8) H(4) H(9) L(3) H(7) P? H(6) L(1) L(0) L(2) H(5) H(8) H(4) H(9) H(7) P? H(6) L(1) L(0) L(2) L(3) Fase 0 Fase 2 Fase 1 Fase 3

Fig. (3.3)- Template Modelo de Markov para as 4 fases [2].

3.4 O Cálculo do Contexto

O contexto é um estado calculado pela seqüência de pixels circundantes ao pixel a ser codificado, sendo que os mesmos têm forte dependência com o pixel em questão. O contexto será um valor inteiro entre 210 valores diferentes (para a camada de menor resolução), onde o expoente 10 é um número inteiro dos pixels prévios do pixel a ser codificado no template, ou um valor entre 212 valores diferentes (para as camadas diferenciais de resolução). Cada pixel no Template Modelo corresponde a um bit no contexto.

Referências

Documentos relacionados

Assim, nesse âmbito, o presente trabalho visa avaliar a biodegradabilidade do lodo de esgoto de descarte de reatores anaeróbios no processo da compostagem, sob aspectos

As equipes de marketing das campanhas eleitorais tem evoluído para identificar os eleitores indecisos pela análise de algoritmos armazenados em big data ou coletados por

No mesmo instante e sem importar onde: à mesa, nas aulas, na praia… Quando deixo de existir para os outros, prefiro o sono.. Ao menos ele toma-me nos braços e oferece-me, só para mim,

24 Da decisão do Dirigente de Ensino, ou do órgão equivalente de supervisão delegada, no prazo de 5 dias, caberá recurso especial ao Conselho Estadual de Educação por parte

Dispõe sobre avaliação de alunos da Educação Básica, nos níveis fundamental e médio, no Sistema Estadual de Ensino de São Paulo e dá providências correlatas. 1º O direito

A Realidade Aumentada apresentou as seguintes vantagens: permitiu aos alunos a visualização do campo magnético girante; permitiu a interação do aluno com estes

Os roedores (Rattus norvergicus, Rattus rattus e Mus musculus) são os principais responsáveis pela contaminação do ambiente por leptospiras, pois são portadores

Our contributions are: a set of guidelines that provide meaning to the different modelling elements of SysML used during the design of systems; the individual formal semantics for