• Nenhum resultado encontrado

ELE32 Codificação com perda de informação. ITA 2º. Semestre de 2016

N/A
N/A
Protected

Academic year: 2021

Share "ELE32 Codificação com perda de informação. ITA 2º. Semestre de 2016"

Copied!
60
0
0

Texto

(1)

ELE32

Codificação com perda de informação

ITA

2º. Semestre de 2016 manish@ita.br

(2)

Codificação com perda de informação

Não é possível transmitir através de um canal toda a informação sobre uma fonte de v.a.’s, X cuja entropia H(X) é maior do que a capacidade do canal C

Neste caso, é necessário codificar o valor X num valor Y de forma que a entropia do valor codificado H(Y) seja menor ou igual à limitação do sistema

A entropia da fonte H(X) é a menor quantidade em média de informação necessária para representá-la completamente

Utilizar um sinal codificado cuja entropia é menor do que a da fonte implica que o sinal codificado não será capaz de representar a fonte completamente, ou seja, haverá perda de informação

(3)

Y pode ser gerado através de quantização

Quantização é o processo pelo qual um conjunto de valores possíveis de uma variável X (não

necessariamente analógica) é representado por um único valor de Y

Como a relação entre X e Y é de muitos para 1, não é possível obter exatamente o valor de X a partir de Y

Y é uma representação mais simples de X e sua entropia deve ser menor ou igual à entropia de X

A quantização pode ser feito tanto termo a termo

(quantização escalar) como vetorialmente (quantização vetorial)

É realizado através de um quantizador que toma como argumento o valor de X e retorna um valor de Y

(4)

Quantização escalar

Fonte Quantizador Valor

quantizado

Escalar Escalar

Xi Yi

(5)

Processo de quantização

O processo de quantização pode ser definido em duas operações:

Inicialmente, valores de X são agrupados em N conjuntos Ri que serão representados pelo mesmo valor

Cada um destes conjuntos é representado por uma palavra código cujo comprimento pode ser fixo ou variável

Definidos os conjuntos, escolhe-se um valor yi que representará todos os valores de X que estão dentro do conjunto Ri

O quantizador é completamente definido pela relação entre X e Ri (codificação) e pela relação entre Ri e yi (decodificação)

As regiões ou partições Ri podem também ser definidas pelos limites bi que definem as fronteiras entre regiões

O valor a ser transmitido/armazenado não é necessariamente yi : qualquer símbolo/palavra-código que permita a identificação de Ri pode ser mapeado corretamente em yi se a relação de

decodificação for conhecida

(6)

Exemplos

Arredondamento de números:

Mais próximo

Ri = {X| i-0.5≤X<i+0.5 }

yi = i

Menor valor

Ri = {X| i≤X<i+1 }

yi = i

Maior valor

Ri = {X| i < X ≤ i+1 }

yi = i+1

(7)

Quantização implica em erro(1/3)

Como vários valores de X são representados por um único valor de Y, representar algum valor de X por Y implica em alguma distorção, ou erro

Se Y = q(X), onde q(X) é o resultado dos processos de codificação e decodificação do quantizador, o erro é dado por:

O erro pode ser classificado em duas categorias:

Granular: Erro quando a variável X está numa região Ri limitada por duas fronteiras, uma inferior ou superior, com maior valor possível igual a max[bi-bi-1]

Overload: Erro quando a variável é menor do que a menor fronteira ou maior do que a maior fronteira, com maior valor possível podendo ser infinito

( )

q X X

(8)

Quantização implica em erro(2/3)

Exemplo: quantizador arredondador saturado em ±3

Fronteiras = ±2.5, ±1.5, ±0.5

-5 -4 -3 -2 -1 0 1 2 3 4 5

-4 -3 -2 -1 0 1 2 3 4

X

Y,

Y

Overload Granular

(9)

Quantização implica em erro(3/3)

Se X tem uma pdf p(X), podemos definir a seguinte relação entre X, q(X) e ε:

que é conhecida como ruído de quantização

Se P(X)≈1, o impacto do erro de overload no ruído é baixo

A relação sinal ruído de um processo de quantização é dada por (em decibéis):

 

2 ( ) ( ) 2

E p X q X X dX



  

2

10 2

10log E X

RSR E

(10)

Quantizador uniforme

Um quantizador uniforme tem as fronteiras igualmente espaçadas

Um quantizador uniforme limitado tem uma fronteira inferior num ponto b0 e superior num ponto bN

Havendo N níveis de quantização, o intervalo de cada partição vale Δ=(bN - b0)/N

O valor que representa cada uma das partições é que está exatamente no meio da partição, ou seja, yi = (bi - bi-1)/2

(11)

Erros do quantizador uniforme

Erro máximo = Δ/2

Erro médio se a entrada for uniformemente distribuída entre bN e b0:

 

1

2 2

2

1 0

2 2

2 0

( ) ( ) 1

2

1 2 ' '

12

i

i

N b

i N b

E p X q X X dX

X dX b b

X dX



(12)

-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1 -1

-0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1

-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1

-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1

Quantizador não uniforme pode ser obtido a partir do uniforme

É possível através de um compressor e de um decompressor implementar quantizadores não uniformes com base no quantizador uniforme

Utilizar quantizadores não uniformes pode ser vantajoso para representar melhor uma faixa de valores em detrimento da representação de outra faixa de valores

Fonte Compressor Quant.

uniforme

De- compressor

Sinal quantizado

X W q(W) Z

 

sgn

W X X Z sgnq X( )q X( )2

(13)

Compressores comuns

A-law:

μ-law:

 

, 1 1 ln( ) ( ) sgn

1 ln( ) 1

, 1

1 ln( )

A X X

A A

W X X

A X X

A A

  ln(1 )

( ) sgn , 1 1

ln(1 )

W X X X x

  

(14)

Quantizador de alta resolução

Um quantizador de alta resolução possui muitos níveis de tal forma que podemos assumir que em qualquer partição Ri (não necessariamente com a mesma largura), o comportamento de p(X) é suave, o que implica em:

p(X|x em Ri)≈ pi dentro de uma partição e, dado que X pertence a Ri, o seu comportamento é praticamente uniforme

a probabilidade de X pertencer à partição Ri é Pi ≈ (bi-bi-1)pi, logo

A distorção média, neste caso, pode ser aproximada como:

onde Δi = (bi-bi-1) é a largura do i-ésimo intervalo

 

1

2 2

1

2 1

( ) ( )

1 12

i

i

N b

i

i b i

N

i i i

q x x

E P x R dx

P

i 1

i

i i

p P

b b

(15)

Taxa do sinal quantizado

Se todos os valores de q(X) forem representados com o mesmo número de bits, a taxa do quantizador é dada por:

A quantidade de bits para representar os sinais codificados pode ser reduzida ainda mais se a probabilidade de X pertencer a cada um dos níveis não for uniforme

A redução pode ser feita através de codificadores de fonte sem perda de informação

Neste caso, o limite inferior para a taxa do quantizador é dada por:

onde P(yi) vale:

log2

R   N

1

( ) ( ) ( )

N

i i

i

R y P y H Y

( ) ( )

i

i

X R

P y p X dX

(16)

Problema de quantização (1/2)

Dado p(X) a definição das fronteiras entre as regiões define a probabilidade de X pertencer a qualquer região Ri:

consequentemente, a fronteira determina a entropia da saída

Dado p(X) e as fronteiras, a escolha de yi que representa a região Ri define a distorção que o quantizador causará

Há pares de taxas e distorções que são permissíveis: são todas aquelas que estão acima da curva taxa-distorção

Escolher um único nível reduz a entropia (a zero), mas causa muita distorção

Escolher muitos níveis reduz a distorção (tendendo a zero), mas a entropia do sinal quantizado será muito grande

É necessário escolher um critério para otimização

(17)

Problema de quantização (2/2)

O problema de quantização pode ser formulado de duas formas:

Dado p(X) e uma taxa R, minimize a distorção média

Dado p(X) e a máxima distorção média permissível, minimize a taxa R

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

0 0.5 1 1.5 2 2.5

D

R

Valores não possíveis

Valores possíveis

(18)

Condições que um quantizador deve satisfazer para ser ótimo

Um quantizador pode ser dividido em codificador e decodificador

Para que um quantizador seja ótimo, as duas condições seguintes devem ser satisfeitas:

Dado um codificador que define as partições Ri, o decodificador deve ser ótimo

Dado um decodificador que relaciona as partições Ri com um valor yi, o codificador deve ser ótimo

(19)

Codificador ótimo para um dado decodificador

O codificador ótimo é aquele que reduz a distorção média

Dado um decodificador que gera os valores yi, o codificador ótimo é aquele que mapeia um valor de X=x na partição Ri se x estiver mais próximo de yi do que de qualquer outro valor de yj, para i≠j

Independentemente da chance de x ocorrer, a distorção será minimizada se esta condição for satisfeita

É irrelevante em qual partição os valores de x equidistantes de dois ou mais yi serão mapeados

Matematicamente:

É uma condição suficiente para garantir que o codificador é ótimo

: ( , ) ( , );

i i j

R x d x y d x y  j i

(20)

Decodificador ótimo para um dado codificador

Dado um codificador (conjunto de partições), qual é o decodificador ótimo?

A distorção causada ao representar a partição Ri por um valor yi depende somente dos valores de X que estão dentro da partição Ri

A distorção média, dado que X esta dentro de Ri, vale:

Este valor é minimizado quando yi é igual a esperança de X, dado que X esta dentro de Ri, ou seja:

Esta condição é chamada de condição centróide

 2 : i

i 2

E X  R E y X

( ) ( )

i

i

X R i

X R

Xp X dX

y p X dX

(21)

Algoritmo de Lloyd (1/3)

O algoritmo de Lloyd utiliza as duas condições de otimização de um quantizador iterativamente para tentar obter um quantizador muito próximo de um ótimo

Os limites das partições são otimizados a partir dos valores que representam as partições

Os valores que representam as partições são otimizados a partir dos valores que definem os limites das partições

É necessário o conhecimento prévio de p(X) e da quantidade de níveis a serem utilizados

O processo começa a partir de um conjunto de valroes {y1,y2,...,yN} inicial, que pode ser gerado aleatoriamente

Se X for limitado entre dois valores, b0 e bN devem ser iguais a estes limites

(22)

Algoritmo de Lloyd (2/3)

1. Obtenha um valor inicial de y(1)={y1,y2,...,yN}

2. Otimize os valores das fronteiras de acordo com o seguinte equação:

3. Calcule a distorção D(k)

4. Se ΔD=D(k)-D(k-1) <ξ , encerre o algoritmo

5. Caso contrário, obtenha os valores y(k+1) a partir da seguinte equação:

6. Retorne ao passo 2

( ) ( )

( ) 1

, 1, 2,..., 1 2

k k

k i i

i

y y

b i N

( )

( ) 1

( ) ( ) 2

1

( )

k i

k i

N b

k k

i

i b

D p X X y dX

 

( )

( ) 1 ( )

( ) 1

( 1)

( )

( )

k i

k i

k i

k i

b

k b

i i b

b

Xp X dX y

p X dX

(23)

Algoritmo de Lloyd (3/3)

Exemplo: Seja X uniformemente distribuído entre zero e 1.

Desejamos quantizar em 4 níveis. O valor inicial para y(1) é {0.1,0.2,0.3,0.4}.

k y1 y2 y3 y4 b0 b1 b2 b3 b4

1 0.1 0.2 0.3 0.4 0 0.15 0.25 0.35 1

2 0.075 0.2 0.3 0.675 0 0.1375 0.25 0.4875 1

3 0.06875 0.19375 0.36875 0.74375 0 0.13125 0.28125 0.55625 1 4 0.065625 0.20625 0.41875 0.778125 0 0.135938 0.3125 0.598438 1 5 0.067969 0.224219 0.455469 0.799219 0 0.146094 0.339844 0.627344 1 6 0.073047 0.242969 0.483594 0.813672 0 0.158008 0.363281 0.648633 1 7 0.079004 0.260645 0.505957 0.824316 0 0.169824 0.383301 0.665137 1 8 0.084912 0.276563 0.524219 0.832568 0 0.180737 0.400391 0.678394 1 9 0.090369 0.290564 0.539392 0.839197 0 0.190466 0.414978 0.689294 1 10 0.095233 0.302722 0.552136 0.844647 0 0.198978 0.427429 0.698392 1

86 0.125 0.375 0.625 0.875 0 0.25 0.5 0.75 1

D

2.333E-02 1.267E-02 9.484E-03 8.012E-03 7.159E-03 6.601E-03 6.214E-03 5.938E-03 5.739E-03 5.594E-03

5.208E-03

(24)

Quantização vetorial

É um mapeamento de um vetor X com dimensão K em um outro vetor Y com dimensão K dentro de um conjunto de vetores possíveis {y1,y2,…,yN}

Cada um dos elementos pode ser representado por uma palavra-código

A taxa resultante deste quantizador é dada por:

O erro de quantização que ocorre ao se representar um vetor x por um vetor y é dado por:

onde xi é o i-ésimo elemento do vetor x, a mesma relação entre yi e y

A distorção média é dada pelo valor esperado de ε2

2

1 log

R N

K

2 1

1 ( )

K

i i

k

x y

K

(25)

Quantização vetorial

Por que fazer?

Para uma dada taxa, VQ (Quantização

Vetorial) pode resultar numa distorção menor do que SQ(Quantização escalar)

Se os símbolos de entrada não são

independentes entre si, vetores formados por sequencias de símbolos terão alguns padrões mais comuns

(26)

Métodos para quantização vetorial

Generalização do algoritmo de Lloyd para o caso multidimensional

Algoritmo LBG(Linde Buzo Gray)

Construção do quantizador baseado em árvores

Quantizador por transformação – DCT(Discrete Cossine Transform)

(27)

Algoritmo de Lloyd generalizado(1/3)

Critérios de otimalidade e consequentemente das equações utilizadas no algoritmo de Lloyd podem ser facilmente adaptadas para o caso multidimensional

Definição do melhor codificador dado um codificador:

Definição do melhor decodificador dado um codificador

: ( , ) ( , );

i i j

R x d x y d x y  j i

( ) ( )

i

i

R i

R

p d p d

X

X

X X X

y X X

(28)

Algoritmo de Lloyd generalizado(2/3)

1. Obtenha um conjunto {y1,y2,…,yN} qualquer

2. Calcule as partições Ri ideais para o conjunto de

vetores-código em utilização utilizando a condição de otimalidade multidimensional

3. Calcule a distorção

4. Se a variação(redução) na distorção for pequena ou se as partições variaram pouco, encerre o algoritmo

5. Caso contrário, otimize o conjunto {y1,y2,…,yN} utilizando a condição centróide multidimensional

6. Retorne ao passo 2

(29)

Algoritmo de Lloyd generalizado(3/3)

Exemplo extraído da Wikipédia para o caso com duas dimensões, vetores uniformemente distribuídos

Os pontos mostram o valor dos vetores-código no início da iteração

As cruzes indicam o valor dos vetores-código no final da iteração

1ª Iteração 2ª Iteração 3ª Iteração 15ª Iteração

(30)

Processo de codificação e decodificação

Dado que os vetores {y1,y2,…,yN} foram definidos, a

quantização de um vetor X é dada pela procura (entre N termos) do valor yi mais próximo de X, o que é

representado por um índice (palavra-código) ii

A decodificação pode ser feita através de uma tabela que, a partir do índice recebido, retorna o valor de yi correspondente

(31)

Problemas do algoritmo de Lloyd generalizado

Assim como no caso escalar, pode resultar somente num quantizador localmente ótimo

Codificador é complexo com o aumento de N, pois a codificação envolve uma única busca N-ária

Aumento de N também influencia a complexidade das definição das partições, pois os vetores de entrada devem ser comparados com mais vetores-código

Cálculo dos valores de {y1,y2,…,yN} envolve duas integrais com dimensão K

Solução: utilizar um grande número (mas finito) de amostras de X, o que transforma as integrais em somas

(32)

Algoritmo LBG (1/3)

O número de palavras-código duplica entre cada iteração através da divisão de cada

palavra-código da iteração anterior em duas

O processo pode continuar até que o número de palavras códigos seja adequado

Utiliza o algoritmo de Lloyd generalizado como um loop interno

(33)

Algoritmo LBG (2/3)

1. Inicie com uma palavra-código y1*0 que vale E{X}, i= 0 , N0 = 1

2. A cada iteração duplique o número de palavras-código através da seguinte regra:

onde ε é um valor escolhido*. Faça i = i+1 e Ni = 2Ni-1

3. Faça iterações de Lloyd generalizada até que a variação na distorção seja baixa, resultando num conjunto de vetores {y1*i,y2*i ,...,yN*i}, o

conjunto de vetores-código ótimos da i-ésima iteração do algoritmo LBG

4. Se o número de palavras-código for insuficiente, retorne ao passo 2.

Caso contrário, encerre

(0) *

(0) *

1

1 ,1

i

n n

i

n N n n N

 

   

y y

y y

*: a divisão pode ser feita de outra forma, desde que os vetores descendentes sejam ligeiramente diferentes do ancestral

(34)

Algoritmo LBG (3/3)

Exemplo extraído do site http://www.data-compression.com

(35)

Status dos problemas

Cada iteração foi simplificada ao considerar somente um conjunto de vetores teste, implicando em substituição da integral por um somatório para determinação da palavra-código (yi)

A complexidade do algoritmo aumenta com o número de iterações pois o número de palavras-código dobra a cada iteração

É necessário comparar cada um dos vetores teste com cada uma das palavras-código

O processo de codificação continua complexo, pois ainda é

necessário uma busca N-ária para a determinar qual é a palavra- código a ser transmitida

Não há garantia de que teremos um quantizador globalmente ótimo (e nem teremos)

(36)

Quantização vetorial em árvore (1/2)

Reduz a complexidade de construção do quantizador e do processo de codificação

Se há N = MK palavras código, a busca N-ária pode ser substituida por K buscas M-árias

Para isso, é necessário uma estrutura em árvore

(37)

Quantização vetorial em árvore

Cada nó, exceto os terminais, possui um conjunto de M vetores teste associados, denominado Y*{U1,U2,…}(o comprimento do

subscrito varia de acordo com a profundidade na qual estamos na árvore)

Em cada nó, o vetor X a ser quantizada é comparada com os M vetores teste do nó

Escolhe-se o ramo associado ao vetor dentro do conjunto de M vetores teste que for mais próximo de X

Repete-se o procedimento até que se chegue a um nó terminal, que possui um vetor-código associado

Os ramos que ligam os nós podem ser indexados de forma que a concatenação dos índices do caminho percorrido na arvore da raíz até a ponta seja o rótulo da palavra-código

(38)

Quantização vetorial em árvore

Y*

Y*{2}

Y*{1} Y*{3}

Y*{1,2} Y*{1,3}

Y*{1,1} Y*{2,1} Y*{2,2} Y*{2,3} Y*{3,1} Y*{3,2} Y*{3,3}

1 2 3

1 2 3 1 2 3 1 2 3

Árvore para M = 3, K = 2

(39)

Algoritmo de codificação

1. Ache yi pertencente a Y* que minimiza d(X, yi).

U1 = i, k = k+1

2. Ache yi pertencente a Y*{U1,U2,...,Uk-1} que minimiza d(X, yi).

Uk = i, k = k+1

3. Se k < K, retorne ao passo 2

4. O índice da palavra código é U1,...,UK

(40)

Como construir este quantizador?

Estrutura da árvore e conjuntos associados a cada nó para M = 2 vem diretamente de uma variação do algoritmo LBG:

Algoritmo original:

Todas as palavras código são divididas em 2

Região associada a cada palavra código depende de p(X), ou de todas as amostras de X disponíveis

Algoritmo modificado

Todas as palavras código são divididas em 2

Região associada a cada nova palavra código depende de p(X) onde X pertence somente à região que foi mapeada para a palavra código mãe

Conjunto inicial Y* são os primeiros dois descendentes

Conjuntos em cada nó são as descendentes da palavra-código ancestral

(41)

Exemplo

Vetor com duas dimensões uniformemente distribuído entre (-1,-1) e (1,1)

Y* = (0.5,0) (-0.5,0)

Y*{1} = (0.5,0.5) (0.5,-0.5)

Y*{2} = (-0.5,0.5) (-0.5,-0.5)

Y*{1,1} = (0.25,0.5) (0.75,0.5)

Y*{1,2} = (0.25-,0.5) (0.75,-0.5)

Y*{2,1} = (-0.25,0.5) (-0.75,0.5)

Y*{2,2} = (-0.25-,0.5) (-0.75,-0.5)

(42)

Contrapartidas do método

É necessário armazenar, além das

palavras-código, os conjuntos de vetores teste associados a cada nó

Não necessariamente acha a palavra-

código mais próxima, o que resulta num aumento de distorção

Não funciona bem com distribuições não simétricas

(43)

Quantização por transformada (1/2)

Queremos quantizar um vetor XK = X1,X2,…,XK com dimensão K

Há alguma correlação entre estes valores, isto é, há alguma redundância

É possível que para alguma transformada YK = f(XK)

Os K valores do vetor YK não são muito correlacionados

Apenas alguns valores de YK são relativamente grandes,

enquanto outros são relativamente muito pequenos e poderiam ser ignorados

Se houver tal transformada, é de se esperar que a

quantização de YK seja mais eficiente do que a de XK, embora não haja garantia teórica disto

(44)

Quantização por transformada (2/2)

O esquema da quantização por transformada é dado por:

Humanos observam sinais no tempo/espaço que em muitas situações possuem somente alguns

componentes espectrais relevantes

Logo, uma transformação tempo/espaço → frequência pode ser útil

Fonte Transf. Quant. Transf.

Inversa

Sinal Quantizado

XK YK q(YK) XK

(45)

Qual transformada usar?

DFT?

É fácil de implementar (FFT)

Envolve números complexos

DCT –Discrete Cossine Transform

Coeficientes são reais

Assim como a DFT, pode ser implementada eficientemente (FCT)

Há variantes (DCT-I, DCT-II,…DCT-VIII) que dependem de condições de simetria consideradas

1

0

[ ] [ ]exp 2

K

k

X n x k i kn

N

1

0

[ ] [ ]cos 1

2

K

k

X n x k k n

N

(46)

DCT(1/4)

Transformada DCT-II (unidimensional)

Inversa (DCT-III)

1

0

[ ] [ ]cos 1

2

K

k

X n x k k n

N

1

1

1 1

[ ] [0] [ ]cos

2 2

K

k

x n X X k n k

N

(47)

DCT(2/4)

Propriedades:

Implica na utilização de uma base de cossenos

Converte uma sequência de K valores reais em K coeficientes reais da base de cossenos utilizada

Assim como a FFT, a FCT(Fast Cossine Transform) possui complexidade O(KlogK)

Possui extensões multidimensionais

1 2

1 2

1 1

1 2 1 2 1 1 2 2

0 0 1 2

1 1

[ , ] [ , ]cos cos

2 2

K K

k k

X n n x k k k n k n

K K

 

(48)

DCT(3/4)

Base de cossenos

unidimensional (K = 8)

Base de cossenos

bidimensional (K1 = K2 = 8)

2 4 6 8

-0.5 0 0.5

2 4 6 8

-0.5 0 0.5

2 4 6 8

-0.5 0 0.5

2 4 6 8

-0.5 0 0.5

2 4 6 8

-0.5 0 0.5

2 4 6 8

-0.5 0 0.5

2 4 6 8

-0.5 0 0.5

2 4 6 8

-0.5 0 0.5

(49)

DCT(4/4)

Exemplo: Transformação e quantização de um sinal de áudio com 8 amostras

X = [-0.3804 0.1579 0.2424 -0.1008 -0.4394 -0.3676 0.0881 0.4919]

DCT(X) = [-0.1089 -0.1962 0.3721 -0.7626 -0.1943 -0.0763 -0.0467 -0.0169]

DCT(X’) = [-0.1089 -0.1962 0.3721 -0.7626 -0.1943 -0 0 0]

X’ =[-0.3486 0.0942 0.2785 -0.0863 -0.4718 -0.3605 0.1086 0.4780]

ε =[-0.0318 0.0637 -0.0361 -0.0145 0.0324 -0.0071 -0.0205 0.0139]

0 10 20 30 40 50 60 70 80 90 100

-0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6

Tempo

Amplitude

Sinal Original Sinal Amostrado Sinal codificador

RSR≈20dB

(50)

Compressão de imagens com a DCT - JPEG

Assume a hipótese de que pixels vizinhos numa imagem que faça sentido para seres humanos serão semelhantes

Represente cada pixel da imagem através do padrão Y’CbCr

Cada pixel é representado por um valor que representa a luminescência (Y) e dois que representam a crominância (Cb e Cr)

Como os valores são usualmente representados por 8 bits, a faixa de valores possíveis são os inteiros entre 0 e 255 inclusive

Como o olho humano é mais sensível a variações na luminescência do que em cores, a resolução dos valores Cb e Cr é reduzida

Cada componente da imagem é processado separadamente a partir de então

(51)

Compressão de imagens com a DCT - JPEG

A imagem é quebrada em blocos de 8x8 pixels

Os valores são centralizados em torno de zero (subtrai-se 128 quando são utilizados 8 bits)

Para cada bloco obtém-se a DCT, que também é uma matriz 8x8.

Para armazenar os valores corretamente, a precisão dos números é temporariamente aumentada

A quantização ocorre com perda de informação:

Divide-se a matriz obtida no passo anterior por uma matriz de quantização previamente definida, célula a célula

A matriz de quantização possui valores menores para as baixas

frequências, de modo que a matriz resultante da divisão terá valores representando as altas frequências muito próximas de zero

Após a divisão os valores são arredondados para o inteiro mais próximo. Valores representando altas frequências frequentemente serão arredondadas para zero

(52)

Compressão de imagens com a DCT - JPEG

Divide-se a matriz obtida no passo anterior por uma matriz de quantização previamente definida, célula a célula

A matriz de quantização possui valores menores para as baixas

frequências, de modo que a matriz resultante da divisão terá valores representando as altas frequências muito próximas de zero

Após a divisão os valores são arredondados para o inteiro mais próximo, causando perda de informação. Valores representando altas frequências frequentemente serão arredondadas para zero

Uma qualidade maior pode ser obtida multiplicando-se a matriz por um escalar antes do arredondamento, o que faria com que mais valores sejam diferentes de zero após o arredondamento

(53)

Compressão de imagens com a DCT - JPEG

A matriz arredondada é serializada através da leitura dos seus termos em zigzag

A sequência (finita) obtida pode possuir um valor especial para indicar que o restante dos elementos vale zero

Os elementos da sequência são codificados através de um código de Huffman

1 2 6 7 3 5 8 14 4 9 13 18 10 12 19 25

15 16 28 29 17 27 30 43 26 31 42 44 32 41 45 54 11 20 23 33

20 23 34 39 22 35 38 48 36 37 49 50

40 46 53 55 47 52 56 61 51 57 60 62 58 59 63 64

(54)

Exemplo (1/7)

Fonte: Wikipédia

Seja a seguinte (sub)imagem e sua respectiva matriz, com valores entre 0 e 255

52 55 61 66 70 61 64 73 63 59 55 90 109 85 69 72 62 59 68 113 144 104 66 73 63 58 71 122 154 106 70 69 67 61 68 104 126 88 68 70 79 65 60 70 77 68 58 75 85 71 64 59 55 61 65 83 87 79 69 68 65 76 78 94

Referências

Documentos relacionados

Nessa situação temos claramente a relação de tecnovívio apresentado por Dubatti (2012) operando, visto que nessa experiência ambos os atores tra- çam um diálogo que não se dá

Este trabalho de pesquisa tem por objetivo levar à comunidade escolar uma discussão acerca do tema abordado: “A construção da identidade negra dos alunos da Escola Estadual de

Promovido pelo Sindifisco Nacio- nal em parceria com o Mosap (Mo- vimento Nacional de Aposentados e Pensionistas), o Encontro ocorreu no dia 20 de março, data em que também

a) Comida, energia elétrica, TV por assinatura e pacotes de telefonia não utilizáveis. b) Supermercado, TV por assinatura, energia elétrica e pacotes de telefonia

O objetivo do curso foi oportunizar aos participantes, um contato direto com as plantas nativas do Cerrado para identificação de espécies com potencial

O valor da reputação dos pseudônimos é igual a 0,8 devido aos fal- sos positivos do mecanismo auxiliar, que acabam por fazer com que a reputação mesmo dos usuários que enviam

A maior suscetibilidade à infecção no sexo feminino além das condições anatômicas é devido a outros fatores cistite, ato sexual, uso de certas geléias

(2019) Pretendemos continuar a estudar esses dados com a coordenação de área de matemática da Secretaria Municipal de Educação e, estender a pesquisa aos estudantes do Ensino Médio