Compressão de Vídeo MPEG TT083 Sumário Sistema Visual Humano Formatos de Vídeo Compressão de Vídeo Medidas de Distorção Taxa de Bits Complexidade Computacional Técnicas de Compressão de Vídeo MPEG-1 Vídeo MPEG-2 Vídeo Conclusões Sistema Visual Humano (VHS) [1] Na retina do olho existem diversos tipos de elementos fotosensíveis (cones e bastonetes). Existem três classes de células cones (foto-receptores de cor no olho) que têm sensibilidades diferentes aos comprimentos de onda do espectro visível. Fundamentalmente, são sensíveis às cores vermelho, verde e azul (padrão RGB). As demais cores são formadas como médias ponderadas das cores primárias: C=rxR+gxG+bxB onde r, g e b representam o quanto um determinado comprimento de onda estimulou as três classes de receptores. Sistema Visual Humano (VHS) [2] Azul Verde Vermelho Sensibilidades dos três tipos de cones no olho humano Sistema Visual Humano (VHS) [3] O olho humano é mais sensível ao verde, depois ao vermelho e por último ao azul. Estes efeitos interessam em compressão porque não é necessário reproduzir fielmente detalhes que o olho não pode ver. Desta forma, pode-se representar a imagem em outros padrões que explorem estas características, como em termos de luminância e crominância. Luminância está relacionada ao brilho da imagem e é proporcional à energia emitida pela fonte. Crominância está associada à percepção de saturação e matiz. Sistema Visual Humano (VHS) [4] O olho percebe mais detalhes espaciais na componente de luminância do que na de crominância. A maioria dos componentes de alta frequência de uma imagem está na luminância. A sensibilidade cai em alta frequência para todos os componentes. A maior sensibilidade está na componente de luminância em baixas frequências. Sistema Visual Humano (VHS) [5] Componentes de alta frequência em uma imagem correspondem às bordas, detalhes, limites e ruído da imagem. Então, o maior conteúdo da imagem está em baixa frequência. Ao se realizar uma filtragem passa-baixa em uma imagem, esta perderá a nitidez, mas as componentes de crominância quase não serão afetadas (uma imagem clara continuará clara e uma imagem escura continuará escura). Sistema Visual Humano (VHS) [6] Devido à sensibilidade do olho humano à magnitude e à fase da imagem, pode-se fazer uma análise objetiva dos codificadores de vídeo, uma vez que as formas de onda de entrada e saída devem ser iguais. Lei de Weber = Resposta não-linear às mudanças na saturação inversamente proporcional à saturação. Sensibilidade maior para níveis de saturação menor. A região de fundo também deve ser levada em consideração. Se a saturação do fundo for maior (fundo mais escuro), a sensibilidade diminui. Maior sensibilidade à padrões horizontais e verticais do que à padrões diagonais. Espaços de Cores [1] RGB, YUV, YCRCB, YCoCg… Em sistemas de vídeo, as componentes RGB (já com correção de gama) estão definidas em uma escala relativa entre 0 e 1. Os tons de cinza da imagem são produzidos quando R = G = B (gerando imagens com oito bits/pixel). Branco – R = G = B = 1 Preto – R = G = B = 0 R, G e B contribuem para o brilho, mas precisam ser ponderadas de acordo com a sensibilidade relativa do olho à cada cor primária. Assim, tem-se a seguinte conversão para a componente de luminância: Y = 0,229 x R + 0,587 x G + 0,114 x B Espaços de Cores [2] Para a representação da matiz e da saturação usam-se diferenças de cores: U=B–Y V=R–Y Para eliminar os possíveis valores negativos, as componentes U e V são escalonadas e deslocadas, tal que: CR = (V / 1,6) + 0,5 CB = (U / 2) + 0,5 Para obter a representação das componentes por oito bits, basta multiplicá-las por 255 (imagem colorida com 24 bits/pixel). Uma das vantagens do YUV (YCRCB) é que as componentes de crominância podem ter uma taxa de amostragem menor sem degradação perceptível do sinal. Espaços de Cores [3] 4:4:4 Nenhuma informação é descartada. Pouco utilizado (24 bpp). 4:2:2 Os sinais de crominância são sub-amostrados por um fator de 2 na direção horizontal (16 bpp). 4:2:0 Os sinais de crominância são sub-amostrados por um fator de 2 nas duas direções, horizontal e vertical. É o mais utilizado (12 bpp). Espaços de Cores [4] Os formatos YUV são divididos em formatos empacotados e planares. Em um formato empacotado, as componentes Y, U e V estão armazenadas em um único vetor e os pixels estão organizados em grupos de macropixels. Em um formato planar, as componentes Y, U e V são armazenadas em três planos diferentes. Formatos empacotados: YUY2, UYVY, … formato 4:2:2 preferido Direct-X Formatos planares: YV12, IMC2, IMC4, NV12,… Espaços de Cores [5] YCoCg (luminância + offset laranja + offset verde) Y = 0,25 x R + 0,5 x G + 0,25 x B R = Y – Co – Cg Co = 0,5 x R – 0,5 x B G = Y + Cg Cg = -0,25 x R + 0,5 x G – 0,25 x B B = Y – Co – Cg Ainda não é completamente reversível. Se todas as operações fossem multiplicadas por quatro, a reversibilidade seria alcançada, porém haveriam componentes de cor com mais de dois bits. Solução = YCoCg – R (completamente reversível). Porém usa um bit a mais para cada componente de crominância. Resultados melhores que os obtidos com YCRCB e com RCT (transformada de cor reversível do JPEG 2000). Formatos de Vídeo [1] - Aproximadamente 30 frames / segundo - Não-entrelaçados Formatos de Vídeo [2] Formato Tipo de serviço Resolução 240p LDTV 320 x 240 480i SDTV 720 x 480 480p SDTV 720 x 480 720p HDTV 1280 x 720 1080i HDTV 1920 x 1080 i – interlaced; p – progressive. Porque comprimir o sinal? TV de Alta Definição (HDTV) - 1920x1080 - Taxa de Bits sem compressão: 1,5 Gbps - Nível aceitável para transmissão: 19 Mbps TV de Definição Padrão (SDTV) - 720x480 - Taxa de Bits sem compressão: 270 Mbps - Nível aceitável para transmissão: 4 a 5 Mbps Largura de Banda 6 MHz = 19 Mbps Daí a necessidade de comprimir o sinal! Compressão vs. Compactação Compressão: redução do número de bits utilizados para representar uma imagem, podendo ou não, ter uma imagem reconstruída diferente diferente da original (com perdas) Compactação: compressão sem perdas. Aquela em que a imagem reconstruída deve ser identica a original Objetivo da Compressão de Vídeo Uma seqüência de vídeo digitalizada apresenta grande quantidade de redundância. A codificação de vídeo (= compressão de vídeo) objetiva reduzir a Taxa de Bits através da redução de redundâncias. Tipos de Redundância Os valores dos pixels são correlacionados com seus vizinhos, dentro do mesmo quadro. Os valores dos pixels são correlacionados com seus vizinhos entre quadros consecutivos. Algumas componentes são irrelevantes para o sistema visual humano. Alguns coeficientes codificados ocorrem com mais freqüência que outros. Exemplo de ferramenta de compressão REDUNDÂNCIA ESPACIAL REDUNDÂNCIA TEMPORAL REDUNDÂNCIA DCT Estimação de movimento Quantização PSICOVISUAL REDUNDÂNCIA EM ENTROPIA VLC Métodos Óbvios de Compressão Redução da Taxa de Problema amostragem Sobreposição, assim deve-se respeitar a Taxa de Nyquist Redução do número de níveis de quantização Problema Aparece nos contornos (bordas) da imagem Redução da Taxa de Atualização (refresh) Problema Flickering Principais Ferramentas de Codificação DCT (Discrete Cosine Transform) Quantização Codificação Entrópica Varredura Zig-Zag Estimação e Compensação de Movimento (EM/CM) Estrutura Principal do Codificador Temporal PsicoVisual Espacial Entropia Estrutura Principal do Decodificador Como o decodificador não tem acesso aos quadros originais de referência para reconstituir os quadros preditos, o codificador deve utilizar os mesmos quadros de referência utilizados pelo decodificador. Assim, é necessário aplicar uma quantização inversa e DCT inversa. Temporal Espacial PsicoVisual EM/CM Transformadas Quantização Zig-Zag Entropia Buffer RLE VLC Codificação Preditiva A maior parte da informação de um quadro pode ser predita a partir do quadro anterior. A simples subtração entre frames consecutivos já reduz a energia do quadro a ser transmitido, porém ainda há uma quantidade significativa de energia a ser comprimida. Para isso, podem ser técnicas de compensação de movimento. Temporal Espacial PsicoVisual EM/CM Transformadas Quantização Entropia Zig-Zag Buffer RLE VLC Codificação Preditiva O DPCM faz a codificação do erro de predição gerado pela estimação do quadro a partir de quadros anteriores. A faixa dinâmica do erro de predição resultante é menor do que a faixa do sinal. Assim, tem-se uma quantização mais precisa do erro do que do próprio sinal. A imagem diferencial é menos correlacionada, com variância menor, distribuição laplaciana com pico em zero. Energia de um quadro e seu erro de predição Temporal Espacial PsicoVisual EM/CM Transformadas Quantização Zig-Zag Entropia Buffer RLE VLC Estimação e Compensação de Movimento (EM/CM) Estimação de Movimento é o processo pelo qual vetores de deslocamento são calculados no codificador. Usa o quadro anterior predito (do buffer) e o atual para determinar os vetores de deslocamento para os macroblocos. Assim, determina-se a quantidade de movimento existente entre os dois quadros. Compensação de Movimento explora o fato de que a maior parte do movimento é previsível. Usa o quadro do buffer e os vetores de deslocamento para predizer o quadro atual. A predição é subtraída do quadro atual e o erro de predição é codificado. Temporal Espacial PsicoVisual EM/CM Transformadas Quantização Zig-Zag Entropia RLE VLC Estimação e Compensação de Movimento (EM/CM) Buffer Temporal Espacial PsicoVisual EM/CM Transformadas Quantização Zig-Zag Entropia Buffer RLE VLC Estimação de Movimento Um vetor de deslocamento é gerado para cada macrobloco para indicar a posição de um determinado bloco do quadro anterior no quadro atual, melhorando a predição do quadro atual. O vetor de deslocamento é composto de duas componentes (horizontal e vertical). De acordo com o erro de predição obtido, o modo de codificação do macrobloco pode ser: INTRA, INTER ou INTER + CM. Se o último modo for selecionado, além do erro de predição, estes vetores de deslocamento são transformados, quantizados e transmitidos para o decodificador como parte da bistream. A imagem entre o quadro e a sua predição é a MCD (Motion Compensated Difference). Esta é a imagem codificada. No MPEG, EM/CM é ainda mais desenvolvido, pois tem interpolação de quadros (quadros I, P e B). Temporal Espacial PsicoVisual EM/CM Transformadas Quantização Zig-Zag Entropia Buffer RLE VLC Estimação de Movimento Algoritmos de EM recursivos: - Podem ser aplicados à blocos de pixels ou à um único pixel. - PRA : Pel Recursive Algorithm. Assume que cada pixel da imagem de um corpo rígido teve um deslocamento transversal paralelo ao plano da câmera. - Necessitam apenas do deslocamento anterior e de uma lei recursiva de estimação. - Não têm efeitos de blocagem. Porém, têm alta complexidade computacional - Este tipo de EM é chamada de “Backward Motion Estimation”. Temporal Espacial PsicoVisual EM/CM Transformadas Quantização Zig-Zag Entropia Buffer RLE VLC Estimação de Movimento Algoritmos de EM baseados em casamento de blocos: - Partem do princípio de que o movimento é sempre de um objeto rígido translacional e paralelo ao plano da câmera. - O quadro é dividido em pequenos blocos que são procurados no quadro anterior a fim de se determinar o movimento dos blocos. - A procura é realizada em uma região limitada do quadro anterior, chamada de janela de busca. - Define-se, também uma função de casamento para a escolha da melhor posição. Temporal Espacial PsicoVisual EM/CM Transformadas Quantização Zig-Zag Entropia Buffer RLE VLC Estimação de Movimento A diferença entre as coordenadas do bloco no quadro atual e as coordenadas deste mesmo bloco no quadro anterior é armazenada no vetor de deslocamento (VD). Temporal Espacial PsicoVisual EM/CM Transformadas Quantização Zig-Zag Entropia RLE VLC Compensação de Movimento Após a estimação do movimento, cada bloco do quadro anterior é deslocado de acordo com seu vetor de deslocamento. A imagem assim gerada é a estimação do quadro atual baseada no quadro anterior. Buffer Temporal Espacial PsicoVisual EM/CM Transformadas Quantização Zig-Zag Entropia Buffer RLE VLC Block matching A precisão da estimação depende de três importantes fatores: - - Tamanho do bloco; Tamanho da janela de busca; Função de casamento. As medidas de erro geralmente usadas são: - – MSE: Mean Square Error – MAD: Mean Absolute Distortion (Mais usado) – NCCF: Normalized Cross-Correlation Function Temporal Espacial PsicoVisual EM/CM Transformadas Quantização Zig-Zag Entropia Buffer RLE VLC Block matching Algoritmos de busca rápida do vetor deslocamento: A idéia é considerar que a função casamento é decrescente no sentido do vetor deslocamento correto. Esta direção é chamada de DMD – Direction of Minimum Distortion. - TSS (Three-Step Search) – semelhante ao DMD com a diferença de que a cada passo 9 pontos são avaliados. - OTS (One-at-a-time search) - CDS (Conjugate Direction Search) - Temporal Espacial PsicoVisual EM/CM Transformadas Quantização Zig-Zag Block matching Entropia RLE VLC Buffer Temporal Espacial PsicoVisual EM/CM Transformadas Quantização Zig-Zag Entropia RLE VLC Exemplo de Estimação de Movimento Forward Grade de MB Imagem anterior I ou P Imagem P Dentro da área de busca um bom casamento é encontrado. O codificador envia o vetor de movimento apropriado MB Atual. Visto que o casamento é encontrado este MB é intercodificado Buffer Temporal Espacial PsicoVisual EM/CM Transformadas Quantização Zig-Zag Entropia Buffer RLE VLC Estimação de Movimento Backward Imagem P ou I anterior A busca nesta imagem não encontra um bom casamento Imangem B atual Próxima Imagem I ou P A busca nesta imagem encontra um bom casamento Temporal Espacial PsicoVisual EM/CM Transformadas Quantização Zig-Zag Entropia Buffer RLE VLC Codificação 3D Uma sequência de vídeo também pode ser vista como um volume de dados, como um sinal tri-dimensional. Elimina-se os problemas causados pela estimação de movimentos: atrasos, perdas, dificuldades em sequências de vídeo que apresentam movimentos rápidos ou que tenham rotação, zoom e mascaramento de objetos. Ocorre uma perda na taxa de compressão, mas a qualidade do sinal reconstruído é alta. Temporal Espacial PsicoVisual EM/CM Transformadas Quantização Zig-Zag Entropia Buffer RLE VLC DCT (Discrete Cosine Transform) A imagem é dividida em blocos 8x8 = 64 coeficientes não correlacionados. Concentra a energia nos coeficientes de baixa freqüência. O coeficiente mais importante ocupa a posição relativa (0,0) no bloco (coeficiente DC). Organiza a informação de forma que facilita a compressão. Temporal Espacial PsicoVisual EM/CM Transformadas Quantização Zig-Zag Entropia Buffer RLE VLC DCT DC: significa que não há mudanças de intensidade (baixas freqüências AC: a intensidade do bloco varia rapidamente de pixel p/ pixel (altas freqüências Bloco 8x8 e sua transformada Temporal Espacial PsicoVisual EM/CM Transformadas Quantização DCT Zig-Zag Entropia RLE VLC Buffer Temporal Espacial PsicoVisual EM/CM Transformadas Quantização Zig-Zag Entropia Buffer RLE VLC Vantagens da DCT Os coeficientes DCT são quase completamente descorrelacionados, ou seja, independentes um dos outros e portanto podem ser codificados independentemente A forma como decompõe os dados em freqüências é muito importante para a compressão pois permite que os coeficientes DCT sejam reduzidos de maneira consistente com com as propriedades do sistema visual humano Temporal Espacial PsicoVisual EM/CM Transformadas Quantização Zig-Zag Entropia Buffer RLE VLC Transformada Wavelet Apresenta grande capacidade de concentrar a energia Explora as características do Sistema Visual Humano Diminui sensívelmente o efeito de bloco (bloccking effect) que é um dos principais problemas do JPEG baseado em DCT Temporal Espacial PsicoVisual EM/CM Transformadas Quantização Zig-Zag Entropia Buffer RLE VLC Análise de Multiresolução (1 estágio) Temporal Espacial PsicoVisual EM/CM Transformadas Quantização Zig-Zag Entropia Buffer RLE VLC Análise de Multiresolução (3 estágios) Temporal Espacial PsicoVisual EM/CM Transformadas Quantização Zig-Zag Entropia RLE VLC Síntese da Wavelet Buffer Temporal Espacial PsicoVisual EM/CM Transformadas Quantização Zig-Zag Entropia Buffer RLE VLC Quantização É usada para reduzir a precisão dos coeficientes É a principal fonte de perda de informação Os coeficientes DCT são divididos por um valor de quantização e arredondados Quanto maior o valor de quantização menor é a precisão do coeficiente DCT quantizado Os valores de quantização são escolhidos para minimizar a distorção na imagem reconstruída usando os princípios básicos do sistema visual humano Temporal Espacial PsicoVisual EM/CM Transformadas Quantização Zig-Zag Entropia Buffer RLE VLC Quantização As transformadas não compactam o sinal, apenas descorrelacionam os dados originais e compactam a energia em poucos coeficientes (aproximadamente sem perda). A quantização é uma função que mapeia muitos pontos em um, reduzindo a precisão dos coeficientes. Por isso, não é reversível e não há como recuperar os valores originais após a quantização. Temporal Espacial PsicoVisual EM/CM Transformadas Quantização Zig-Zag Entropia Buffer RLE VLC Quantização O vetor quantizado possui entropia menor que a entropia do vetor original e portanto, necessita de menos bits para ser representado digitalmente. Assim, a escolha do número de níveis de quantização é que determina o número de bits necessários para a codificação. Os coeficientes DCT são divididos por um valor de quantização e arredondados. Quanto maior o passo de quantização menor é a precisão do coeficiente DCT quantizado. Temporal Espacial PsicoVisual EM/CM Transformadas Quantização Zig-Zag Entropia Buffer RLE VLC Quantização Os métodos de quantização se dividem em: progressivos, escalares e vetoriais. Quanto mais uma função de densidade de probabilidade se desvia da função uniforme (máxima entropia), maior é o ganho em se usar quantizador não-uniforme sobre o quantizador uniforme. Um exemplo simples de um quantizador escalar é o arredondamento de um número real para o inteiro mais próximo. Temporal Espacial PsicoVisual EM/CM Transformadas Quantização Zig-Zag Entropia RLE VLC Quantização Linear Buffer Temporal Espacial PsicoVisual EM/CM Transformadas Quantização Entropia Zig-Zag Buffer RLE VLC Quantização Vetorial Método estatístico de agrupamento de dados: K-means O algoritmo k-means, baseado na técnica estatística do centróide, toma um parâmetro inicial k e divide um conjunto de dados em k grupos de tal forma que a similaridade dentro dos grupos seja alta enquanto que a similaridade entre os grupos seja pequena. O procedimento do algoritmo é, em primeiro lugar, selecionar aleatoriamente k objetos do conjunto de dados, onde cada um destes objetos representará inicialmente uma média do centro de cada grupo. A seguir os demais objetos são classificados nos grupos para os quais apresentam maior similaridade. Um parâmetro tipicamente utilizado como medida de similaridade é a Distância Euclidiana. d ( R Rc ) 2 (G Gc ) 2 ( B Bc ) 2 Temporal Espacial PsicoVisual EM/CM Transformadas Quantização Zig-Zag Entropia RLE VLC Quantização Vetorial Assim, o agrupamento dos dados se dá através das menores distâncias em relação ao centro dos grupos, ou seja, cada elemento é classificado no grupo para o qual apresenta a menor distância ao seu centro. O processo interativo consiste na atualização dos centros de grupos, através da média das coordenadas dos pontos de cada grupo. Os valores dos centros dos k grupos são, então, o resultado do processo interativo do k-means e os vetores que representam estas centróides são também chamados de codewords e o conjunto das codewords forma o codebook do quantizador vetorial. Buffer Temporal Espacial PsicoVisual EM/CM Transformadas Quantização Zig-Zag Entropia Buffer RLE VLC Quantização Vetorial Cada componente da imagem (vetor 3D) é substituído por sua respectiva codeword e o índice da codeword é que é transmitido para o receptor (que deve possuir o mesmo codebook). Codebooks de tamanhos grandes podem ser utilizados para treinamento de redes neurais, por representarem mais fielmente os dados de um determinado conjunto. Um codebook grande pode ter uma estrutura de árvore ou ser formado pelo produto cartesiano vários codebooks menores. É mais usada em codificadores de formas de onda do que em codificadores de transformadas porque os dados estão mais correlacionados. Temporal Espacial PsicoVisual EM/CM Transformadas Quantização Zig-Zag Entropia Buffer RLE VLC Tipos de Varredura Blocos 8x8 de coeficientes DCT quantizados Varredura Zig-Zag Obrigatória no MPEG-1 Opcional no MPEG-2 Varredura Zig-Zag Alternada Não é usada no MPEG-1 Opcional no MPEG-2 Temporal Espacial PsicoVisual EM/CM Transformadas Quantização Zig-Zag Entropia Buffer RLE VLC Tipos de Varredura EZW, SPIHT,… A ordem de escaneamento das sub-bandas requer que os nós pais sejam escaneados antes dos nós filhos. Além disso, todas as posições de uma determinada sub-banda são escaneadas antes de se passar para a próxima subbanda. Temporal Espacial PsicoVisual EM/CM Transformadas Quantização Zig-Zag Entropia Buffer RLE VLC Run-Level Encoder (RLE) • Cada coeficiente não-nulo da sequência é codificado como um par (run, level), onde: – Run é o número de coeficientes nulos que precedem o coeficiente não-nulo. – Level é a amplitude do coeficiente não-nulo. • Geralmente, a sequência é reduzida e a codificação de entropia que a vem a seguir é mais eficiente. Temporal Espacial PsicoVisual EM/CM Transformadas Quantização Zig-Zag Entropia RLE VLC Codificação de entropia Alfabeto da fonte CA A B C D 0 0 0 1 CB CC Códigos de bloco Não-singular 0 010 01 10 0 100 101 11 Código instantâneo Não-unicamente decodificável Singular Unicamente decodificável Instantâneo Buffer Temporal Espacial PsicoVisual EM/CM Transformadas Quantização Zig-Zag Entropia Buffer RLE VLC Variable Length Coding (VLC) O objetivo é sempre associar códigos mais curtos a símbolos mais frequentes e códigos mais longos a símbolos menos frequentes. Espera-se sempre obter um código ótimo, o qual possui comprimento médio igual à entropia da fonte. O código de Huffman é de comprimento variável e ótimo (minimiza o comprimento médio dentre todos os códigos instantâneos), mas não é único. Temporal Espacial PsicoVisual EM/CM Transformadas Quantização Zig-Zag Entropia Buffer RLE VLC Variable Length Coding (VLC) Codificação de Huffman L p(x) l(x) 2 (0,25) 2 0,2 2 2 0,15 3 2,3bits xΧ H(Χ) (2 0,25 log2 0,25 0,2 log2 0,2 2 0,15 log2 0,15) 2,2854bits Temporal Espacial PsicoVisual EM/CM Transformadas Quantização Zig-Zag Entropia Buffer RLE VLC Variable Length Coding (VLC) O código de Huffman é ótimo, mas somente para uma transmissão. Assim, se uma sequência de variáveis deve ser transmitida no lugar de uma única variável, outro código de Huffman deve ser projetado. Porém, se as sequências são de variáveis aleatórias independentes e com distribuição de probabilidade invariante, o código de Huffman é o mais indicado. Caso contrário, para uso recursivo, outros códigos são melhores, mas são sub-ótimos, tais como códigos aritméticos e de Golomb. Temporal Espacial PsicoVisual EM/CM Transformadas Quantização Zig-Zag Entropia Buffer RLE VLC Variable Length Coding (VLC) A codificação aritmética não faz uso de tabelas de código. Por isso, a complexidade computacional aumenta. Codifica sequências de variáveis aleatórias de alfabeto finito (igual ao Huffman), mas com distribuições de probabilidade variantes. Pode-se relacionar a codificação aritmética com o processo de sub-divisão de um intervalo unitário. Cada palavra de código é a soma das probabilidades dos símbolos precedentes e o comprimento ou tamanho do sub-intervalo à direita da palavra de código corresponde à probabilidade do símbolo. Os códigos são proprietários e são usados no JPEG e no H.264 CABAC e VLC). Temporal Espacial PsicoVisual EM/CM Transformadas Quantização Zig-Zag Entropia Buffer RLE VLC Variable Length Coding (VLC) O código de Golomb codifica variáveis aleatórias com distribuição de probabilidade geométrica, mas também é usado para codificar sequências de variáveis aleatórias independentes cuja distribuição de probabilidade “favorece” um dos possíveis resultados da variável. Permite variações na distribuição de probabilidade utilizada, desde que seja lenta e conserve a propriedade de “favorecer” o mesmo resultado. O código de Golomb é usado para codificar corridas de zeros porque existe um mapeamento biunívoco entre sequências de v.a.’s de Bernoulli e sequências de variáveis com distribuição geométrica. Temporal Espacial PsicoVisual EM/CM Transformadas Quantização Zig-Zag Entropia Buffer RLE VLC Variable Length Coding (VLC) Uma v.a. X com distribuição de probabilidade geométrica é uma v.a. que assume apenas valores inteiros não-negativos com probabilidade: Uma v.a. de Bernoulli possui apenas dois resultados: fracasso (0) e sucesso (1) com probs. p e 1-p. Assim, v.a.’s com distribuição geométrica podem ser geradas pela contagem do número de “fracassos” consecutivos antes da ocorrência de um “sucesso” em uma sequência de v.a.’s Bernoulli i.i.d. Temporal Espacial PsicoVisual EM/CM Transformadas Quantização Zig-Zag Entropia Buffer RLE VLC Variable Length Coding (VLC) - O principal parâmetro do codificador de Golomb é o comprimento do codificador l. Este parâmetro pode ser ajustado de acordo com a distribuição de probabilidade que está sendo codificada. O resultado k de uma v.a. geométrica X é representado por uma palavra código formada por três partes: uma sequência de k / l zeros consecutivos; Um bit ‘1’ para indicar o fim da primeira parte; Uma palavra de código para representar o resto da divisão k / l; Temporal Espacial PsicoVisual EM/CM Transformadas Quantização Zig-Zag Entropia Buffer RLE VLC Buffer A quantização dos coeficientes DCT, a codificação RLE e codificação a VLC são processos que produzem uma taxa de bits variável Para produzir uma taxa de bits constante (CBR) é necessário um buffer para suavizar as variações na taxa de bits Assim, um controlador de taxa ajusta o quantizador para controlar o buffer e prevenir overflow ou underflow do buffer do decodificador O tamanho do buffer afeta a qualidade da imagem e provoca atraso Compressão com e sem perdas As perdas observadas no sinal reconstruído devemse principalmente à operação de quantização (além de operações inteiras de transformadas, etc). Compressão sem perdas exige técnicas diferentes de codificação: - Codificação de planos de bits (transmissão progressiva – planos + significativos são + correlacionados) - Código Gray, codificação aritmética, de corrida de zeros, etc… Codificação adaptativa A técnica de codificação é adaptativa se a estrutura dos componentes ou seus parâmetros (tais como limiares) mudam localmente dentro da imagem. A performance do processo aumenta, mas a complexidade também aumenta. A adaptatividade pode ocorrer de forma causal ou não-causal. Codificação adaptativa Na forma causal, os parâmetros do codificador são baseados somente nos valores dos pixels previamente reconstruídos. Não há overhead, mas não se detectam mudanças bruscas no sinal e a complexidade do decodificador aumenta, pois este precisa repetir todos os processo de decisão feitos no codificador. Na forma não-causal, os parâmetros são baseados em valores de pixels passados e futuro. Como o decodificador não tem pixels futuros, o codificador precisa enviar os bits adicionais ao decodificador para informá-lo sobre as adaptações. Taxa de Bits Métrica comparativa codificadores. para avaliação CxR Taxa de Bits bits/pixel HxVxF onde: C = fator do formato de crominância (C= 1/3 para 4:4:4, ½ para 4:2:2, 2/3 para 4:2:0) R = Taxa de Bits (bits/segundo) F = Taxa de Quadros (quadros/segundo) H, V = Tamanho Horizontal e Vertical (pixels/quadro) dos Medidas de Distorção Mean Squared Error (MSE) É a medida de distorção mais utilizada! Medidas de Distorção Peak Signal-to-Noise Ratio (PSNR) (2 B 1) 2 PSNR 10 log10 MSE 2552 PSNR 10log10 (MSE(Y ) MSE(U ) MSE(V )) / 3 Boas reconstruções têm valores de 30 dB ou superiores para valores típicos (B = 8). Isto ocorre para taxas de 0,2; 0,5; 1; 2 bits/pixel (dependendo das características do arquivo de vídeo). Medidas de Distorção Mean Absolute Distortion (MAD) • • MAD (x,y): é a MAD entre matrizes 16x16. Sumprimiu-se a necessidade de multiplicações e divisões, mas é necessário obter o valor absoluto de um número. • Vn (x+i, y+j): intensidades da matriz 16x16 na posição (x,y) do quadro da imagem atual n. • Vm (x+dx+i, y+dy+j): intensidades da matriz 16x16 na posição (x+dx,y+dy) do quadro da imagem de referência m. 1 15 15 MAD (x, y) Vn ( x i, y j ) Vm ( x dx i, y dy j ) 256 i 0 j 0 Complexidade Computacional Medida de Complexidade: onde: MD é a quantidade de memória dinâmica ME é a quantidade de memória estática OP é a soma ponderada das operações aritméticas envolvidas O peso associado à cada operação aritmética é dado por: Como comparar a eficiência entre os codificadores de vídeo? Todos os codificadores de vídeo abaixo têm a mesma qualidade! – Qual tem a melhor eficiência de codificação? – Qual tem a pior eficiência? Parametros Tamanho Imagem (HxV) Taxa Bit (R) Taxa Quadro (F) Formato Croma Coder 1 Coder 2 Coder 3 Coder 4 720x480 544x480 480x480 1920x1080 6 Mbps 29.97 fps 4:2:0 4 Mbps 30 fps 4:2:2 6 Mbps 24 fps 4:4:4 19 Mbps 29.97 fps 4:2:0 Eficiência de Codificação A resposta pode ser obtida através da utilização da taxa de bits para comparar os quatro codificadores! Parametros Tamanho Imagem (HxV) Taxa Bit (R) Taxa Quadro (F) Formato Croma Taxa de Bits Coder 1 Coder 2 Coder 3 Coder 4 720x480 544x480 480x480 1920x1080 6 Mbps 29.97 fps 4:2:0 0.39 4 Mbps 30 fps 4:2:2 0.26 6 Mbps 24 fps 4:4:4 0.36 19 Mbps 29.97 fps 4:2:0 0.20 Pior eficiência. Usa mais bits/pixel Melhor eficiência. Usa menos bits/pixel PADRÕES DE COMPRESSÃO DE VÍDEO Principais Técnicas de Compressão de Vídeo e Imagem Baseado em DCT – – – – – JPEG H.261 MPEG-1 MPEG-2 MPEG-4 Subbanda/Wavelet – EZW Aplicações em Estúdio Vídeo Conferência Armazenamento em CD-ROM Broadcast DTV, DVD Broadcast DTV VLBR e aplicações de buscas Outras – Fractal – DPCM – Sem perdar Multimídia Broadcast Imagens Médicas Evolução dos Padrões de Compressão de Vídeo JPEG (Joint Photographics Experts Group) – mais usado para codificação de imagens paradas (still picture) – introduziu DCT e quantização H.261 (px64) – usado para vídeo conferência – introduziu compensação de movimento DCT (I e P quadros) – média compressão, baixo atraso MPEG-1, MPEG-2 (Moving Picture Expert Group) – usado para armazenamento digital e broascast – introduziu o conceito de quadros B – alta compressão, atraso médio Aplicações dos Padrões de Compressão de Vídeo MPEG Vídeo Padrão de Compressão MPEG • MPEG-1 (ISO/IEC 11172) – – – – – 11172-1: Systems 11172-2: Video 11172-3: Audio 11172-4: Conformance 11172-5: Software • MPEG-2 (ISO/IEC 13818) – – – – – – 13818-1: Systems 13818 -2: Video Video 13818-2: 13818 -4: Conformance 13818 -3: Audio 13818 -5: Software 13818 -6: Digital Storage Media – 13818 -7: Non-Backward Compatible Audio – 13818 -9: Real-Time Interface – 13818 -10: DSM-CC Conformance Padrão de Vídeo MPEG Objetivo: criar um padrão de compressão de vídeo para aplicações de multimídia e broadcast MPEG-1 (resolução SIF) – 352x240, 30 Hz, não entrelaçado, 1,5 Mbps – Aplicações de CD-ROM MPEG-2 (resolução CCIR 601) – 720x480, 30 Hz, 2 a 80 Mbps – Aplicações de broadcast, incluindo HDTV Principais áreas de aplicações do MPEG-1 e MPEG-2 MPEG-1 Vídeo – 1 a 3 Mbps: Armazenamento em CD-ROM MPEG-2 Vídeo – 3 a 15 Mbps: Transmissão de SDTV, DVD – 15 a 20 Mbps: Transmissão de HDTV – 25 a 50 Mbps: Produção de SDTV – 100 a 300 Mbps: Produção de HDTV Pontos Chaves sobre MPEG Vídeo MPEG especifica somente a sintaxe do bitstream e o processo de decodificação Algoritmo de codificação (ex., Estimação de Movimento, Controle de Taxa e Modos de Decisão) são abertos a inovações MPEG é assimétrico, ou seja, muito menos complexidade computacional é requerida para o decodificador O MPEG é um sistema potencialmente ASSIMÉTRICO O decodificador segue as direções do bitstream e assim são relativamente simples Os codificadores, entretanto, são muito mais complexos e devem ter muito mais inteligência. O codificador deve: – Identificar áreas em movimento – Determinar os vetores de movimento ótimos – Controlar a taxa de bits – Controlar os dados do buffer de forma a não ocorrer overflow e underflow – Determinar onde mudar a quantização – Determinar quando um dado bloco pode simplismente ser repetido – Determinar quando codificar pela técnica Intra e Inter – Variar todos os parâmetros e decisões dinamicamente tal como para maximizar a qualidade para uma dada taxa MPEG-1 Vídeo Caracterísiticas Principais Otimizado para taxa de bits em torno de 1,5 Mbps Suporta somente vídeo progressivo Objetivo: armazenamento em CD-ROM Utiliza subamostragem 4:1:1 (semelhante ao 4:2:0) Formato de Entrada Estrutura dos Dados Seqüência de vídeo: formada por vários grupos de imagem (GOP) Grupo de pictures (GOP – Group of Pictures): formado por várias imagens (pictures) Imagem: Intra (I), Predicted (P) e Bidirectional (B) Slice: formado por Macroblocos Macrobloco (MB): composto por 4 blocos Y, 1 U e 1V Blocos: composto pela matriz de pixels de dimensão 8x8 que é codificada com a DCT Estrutura de Dados Estrutura de Dados Seqüência de Vídeo Cabeçalho: dimensão da imagem, relação de aspecto (relação entre a largura e altura), taxa de bit, dimensão do buffer do decodificador e matrizes de quantização É formado por um ou mais grupos de imagens (GOP) Código de fim da seqüência (EOS – End of Sequence) Picture São codificadas sem referência imagens inteiramente de outras São codificadas tomando como referência a imagem anterior INTRA-PICTURE (I-picure) PREDCTED-PICTURE (P-Picture) São codificadas tomando como referência a imagem anterior e posterior. Nuca são usados como referência para outras imagens Contem somente informação dos coeficientes DC. Raramente é usada BIDIRECCTIONA-PICTURE (B-Picture) DC-PICTURE (D-picture) I-Picture Codificado sem referência das outras imagens Armazenada no buffer do codificador e decodificador Usado como base de predição para o GOP inteiro P-Picture Codificado com referência da imagem anterior Armazenado no buffer do codificador decodificador Usa forward prediction somente e B-Picture Codificado com referência da imagem anterior e posterior Usa forward, backward prediction ou predição bidirecional Group of Picture (GOP) É um grupo de imagens que forma uma seqüência consecutiva para visualização Contem três tipos de imagens: Intra (I), Predicted (P) e Bidirecional (B) Um GOP, na ordem de codificação, deve começar com uma I-picture Um GOP, na ordem de display, deve começar com uma I ou B-picture e deve terminar com uma I ou P-picture Ordem de um GOP Ordem de display (display order): Entrada do codificador e Saída do decodificador Ordem de codificação (coder order): Saída do codificador e Entrada do decodificador A ordem de display é diferente da ordem de codificação se há B-pictures As B-picture devem ser ordenadas tal que a imagem de referência futura fique disponível para predição Note que o reordenamento causa ATRASO! Ordem de um GOP (cont.) Slice Um slice é um conjunto de macroblocos É importante para o tratamento de erros Se um slice estiver corrompido com ruído pode saltar para o próximo slice O número de slices em uma imagem pode variar de 1 até o número total de MB. No MPEG-1 os slices devem preencher completamente a imagem O cabeçalho do slice contém um código de início, sua posição na imagem e o fator de quantização Macrobloco (MB) • • Tamanho: 16x16 pixels É composto por um bloco de luminância (4x(8x8) amostras) e dois blocos de crominância (1x (8x8) + 1x (8x8) amostras) no caso do MPEG-1 Bloco Tamanho: 8x8 coeficientes DCT Os blocos podem ser codificados como inta ou inter – Intra: usa somente informação da própria imagem, tirando vantagem das similaridades dos coeficientes adjacentes – Inter: tira vantagem das similaridades entre quadros de outras imagens Estrutura Típica do Codificador MPEG MPEG-2 Vídeo Características Principais Foi planejado para suportar: Taxa de bits mais alta Tamanho maior de imagem Quandros entrelaçados Codificação de vídeo de alta qualidade (até 80 Mbps) – Exemplos de aplicação: video on demand (VOD), televisão digital, armazenamento em DVD, HDTV Codificação escalável MPEG-2 Ferramenta de Entrelaçamento Nova estrutura de sintaxe MPEG-2 = Perfil & Nível Modos Escaláveis + MPEG-1 Ferramentas de Entrelaçamento Field Picture Field DCT Modo de predição de campo Varredura Alternada Suporte a 3:2 Pulldown Suporte a Field-Based Pan-and-Scan Melhorias do MPEG-2 em relação ao MPEG-1 MPEG-2 Estruturas Estrutura da Seqüência – Seqüência Progressiva: contem quadros de imagens (frames pictures) – Seqüência Entrelaçada: pode conter quadros e campos de imagens Estrutura de Quadros – Quadro progressivo: os dois campos vêm no mesmo instante de tempo – Quadro Entrelaçado: os dois campos vem em tempos diferentes Estrutura da Imagem – Quadro de Imagem (Frame picture) – Campo de Imagem (Field picture): deve ocorrer em pares; um quadro = dois campos de imagem Seqüência de Vídeo Progressivo e Entrelaçado Seqüência Entrelaçada: consite de uma série de campos (fields) reconstruídos que estão separados no tempo por um período de campo. Os dois campos de um quadro (frame) podem ser decodificados separadamente (field-picture) Seqüência Progressiva: cada picture na seqüência deve ser um frame picture (não tem campo). A seqüência na saída do decoder consiste de uma série de quadros que são separados no tempo por um período de quadro Na seqüência entrelaçada ambos frame-picture e field picture podem ser usados em uma única seqüência de vídeo Field Picture e Frame Picture Field Picture – Devem ocorrer em pares: Top Field Botton Field Top Field + Botton Field: Frame Frame Picture – Seqüência de vídeo entrelaçada usando frame picture Os dois campos do quadro devem ser entrelaçados um com o outro e então o quadro inteiro é codificado como um único frame Field e Frame DCT Quadro DCT: modo de codificação normal MPEG-1 Campo DCT: Divide dentro de campos top e botton O codificador MPEG-2 pode escolher campo DCT em algum macrobloco Estrutura do Macrobloco Picture Uma imagem codificada pode ser: – Frame – Field I-frame: – I-frame picture – um par de I-field picture P-frame: – P-frame picture – um par de P-frame picture B-frame – B-frame picture – um par de B-frame picture Tipos de Pictures Há 3 tipos de picture: – Intra-coded (I) picture: é codificada usando informação somente dela mesma – Predicted-coded (P) picture: é codificada usando predição de compensação de movimento dos quadros ou campos de referência da imagem passada – Bidireccicional-coded (B) picture: é codificada usando predição de compensação de movimento dos quadros ou campos de referência da imagem passada e/ou futura Modos de Predição Há duas classificações principais de modos de predição Field Prediction: as predições são feitas independentemente para cada campo usando dados de um ou mais campos codificados anteriormente Frame Prediction: forma uma predição para o quadro a partir de um ou mais quadros decodificados anteriormente Field e Frame Prediction Frame Prediction: melhor região 16x16 na imagem de referência. Determina o MV para o MB. Único tipo de predição permitida no MPEG-1 Field Prediction: melhor região 16x8 no campo Top ou Botton na imagem de referência. Determina os MV’s para o Top e Botton de 16x16 MB. Modos Especiais de Predição Dois modos especiais de predição são usados para predição field ou frame – 16x8 motion compansation Pode ser usada somente em campos Duas MV’s são enviados para predição forward e backward O primeiro MV é usado para as regiões 16x8 superiores e o segundo MV para as regiões 16x8 inferiores 4 MV’s são enviados para predição bi-direcional – Dual Prime Pode ser usada em campo ou quadro Pode somente ser usado em P-pictures Um MV + a diferença MV são enviadas para cada MB Perfil e Nível Perfil (Profile): define quais funcionalidades (ferramentas de codificação) poderão ser usadas na geração do feixe de bits (bitstream) do vídeo codificado Nível (Level): é um conjunto de limitações dos parâmetros do feixe de bits (i.e. tamanho da imagem, taxa de quadros e taxa de bits) Perfil e Nível [1] Perfil: Simple Main SNR Spatial High 4:2:2 (ordem hierárquica) Nível: Low Main High-1440 High (ordem hierárquica) Os Perfis e Níveis possuem uma relação Hierárquica. Assim: Sintaxe suportada pelos Perfis mais altos inclui todos os elementos da sintaxe dos perfis mais baixos (ex., para um dado nível, um Main Profile é compatível com o Simple Profile) Limitações de parâmetros dos Níveis mais altos são iguais ou excedem os limites dos níveis mais baixos (ex., para um dado perfil, um decoder de Nível Main deve ser capaz de decodificar um bitstream em conformidade com as restrições de um nível Low) Perfil e Nível [2] Para um dado perfil o mesmo conjunto de sintaxe é suportado independente do nível Os feixes de bits codificados pelo MPEG-1 devem ser decodificados por todos os níveis e perfis do MPEG-2 (Compatibilidade Backward) Os perfis SNR, Spatial, High têm como ferramenta a escalabilidade, ou seja, podem usar mais de um bistream para codificar a imagem Limitações dos Perfis Rec. H.262 Número Máximo de Bits em um MB Para todos os Perfis definidos há uma restrição no bitstream de que todos os dados para um MB devem ser representados com um número máximo de bits Rec. H.262 Perfil x Funcionalidades Nível x Funcionalidades Escalabilidade [1] A escalabilidade foi feita para suportar aplicações além daquelas já suportadas por uma única camada (codificação sem escalabilidade) Possui uma camada base e 2 ou 3 camadas de enriquecimento Extrai do mesmo feixe de bits codificado várias instâncias de vídeo com diferentes: – Níveis de qualidade – Resoluções espaciais – Resoluções Temporais Escalabilidade [2] O padrão MPEG-2 definiu 5 tipos de escalabilidade: 1. 2. 3. 4. 5. Particionamento de Dados Escalabiliadde SNR Escalabilidade Temporal Escalabilidade Temporal Escalabilidade Híbrida Todos os tipos de escalabilidades possui a vantagem de transmitir os dados + importantes com uma proteção adicional em relação aos dados menos importantes Particionamento de Dados É usado quando dois canais estão disponíveis para transmissão e/ou armazenamento de um feixe de bits de vídeo Aplicações: redes ATM, transmissão terrestre, meios magnéticos, etc O feixe de bits é particionado entre os canais tal que: As partes + críticas (tais como, cabeçalhos, VM, coefs DCT de baixas freqüências) são transmitidos com o melhor desempenho de erro Dados menos críticos (tal como coefs DCT de altas freqüências) são transmitidos com um desempenho de erro mais probre Assim, degradações de erros do canal são minimizadas Escalabilidade SNR Aplicações: serviços de vídeo com múltiplas qualidades, padrões de TV e HDTV Gera duas camadas de vídeo com a mesma resolução temporal e espacial, mas com qualidades de reprodução diferentes. Está relacionado com o passo de quantização (proteção a erros) Camada Base: passo de quantização + fino. Maior proteção a erros Camada Enriquecimento: passo de quantização mais grosso. Menor proteção a erros Escalabilidade Temporal Aplicações: utilizada em diversas aplicações de vídeo, desde telecomunicações até HDTV Motivação: Introdução gradual de sistemas + sofisticados em substituíção a sistemas já existentes Sistemas de resolução temporal mais baixos: decodificam somente a camada base Sistemas + sofisticados: decodificam ambas camadas, mantendo assim interoperabilidade com sistemas anteriores Pode ser utilizada para obter interoperabilidade entre vídeo entrelaçado e progressivo Escalabilidade Espacial Aplicações: interoperabilidade entre padrões, interoperabilidade entre HDTV e TV, etc Oferece flexibilidade na escolha do formato de vídeo a ser empregado em cada camada Possibilidades: 1. Camada base e camada de enriquecimento: padrão MPEG-2 2. Camada base: padrão MPEG-1 e Camada enriquecimento: padrão MPEG-2 A segunda possibilidade tem a vantagem de facilitar a interoperação entre os padrões de codificação de vídeo Transmissão de Vídeo Simulcast de SDTV e HDTV Escalabilidade Híbrida É a combinação de dois tipos de escalabilidade, como por exemplo, escalabilidade espacial + escalabilidade temporal Tipos de escalabilidade que permitem combinação (escalabilidade híbrida): SNR, Spatial e Temporal Resolução Espacial Rec. H.262 Taxa de Bits (Mbps) Número de camadas para cada Perfil e Nível Rec. H.262 Artefatos no MPEG Efeito de Bloco (Block Artifact) – Quando o olho consegue acompanhar movimentos rápidos – Causado por pobre estimação de movimento e ou insuficiente alocação de bits Mosquito (“Noise Mosquito”) – Pode ser visto em bordas de textos – As bordas causam coefs DCT em altas freqüências , os quais são quantizados compassos de quantização grosso Tipos de Compressão em que o MPEG pode ter um desempenho ruim Para tipos de movimento que não se ajustam a modelos de translação linear – Zoons – Rotações – Movimento de objetos que se movem de forma transluzente/transparente Para outros tipos – – – – Sombras Mudanças de brilho Corte de cenas Muitos detalhes (coeficientes de altas freqüências) CONCLUSÕES [1] A grande diferença entre o padrão MPEG-1 e MPEG-2 foi a codificação de vídeo entrelaçado o que permitiu aplicações para TV O MPEG-2 Vídeo foi adotado em todos os três padrões de TV Digital existentes (DVB, ATSC e ISDB-T) Uma evolução do padrão MPEG-2 Vídeo é o H.264 que permite taxas de bits ainda menores CONCLUSÕES [2] A compressão de vídeo MPEG está sendo útil para muitas aplicações: CD-ROM e Multimidia Transmissão por Satélite Transmissão terrestre Transmissão por cabo Sistemas Video on demand Referências [1] SULLIVAN, Gary; ESTROP, Stephen. Video Rendering with 8-bit YUV Formats. Microsoft Digital Media Division, 2002. Disponível no MSDN Library 2005. [2] WILSON, Dave. RGB/YUV Pixel Conversion. FOURCC.org. Disponível em http://www.fourcc.org/fccyvrgb.php. Acesso em 08/2005. [3] WILSON, Dave. Compressed Formats. http://www.fourcc.org/. Acesso em 08/2005. FOURCC.org. Disponível em [4] MALVAR, Henrique; SULLIVAN, Gary. YCoCg-R: A Color Space with RGB Reversibility and Low Dynamic Range. Microsoft Corporation. Documento submetido ao Joint Video Team (JVT) of ISO/IEC MPEG & ITU-T VCEG em 2003. [5] LIM, Jae S. Two-dimensional Signal and Image Processing. Prentice Hall Signal Processing Series, Engewood Cliffs, New Jersey, USA, 1990. [6] JAIN, Anil K. Fundamentals of Digital Image Processing. Prentice Hall Information and System Sciences Series, New Jersey, USA, 1989. Referências [7] RABBANI, Majid; JONES, Paul W. Digital Image Compression Techniques. SPIE -The International Society for Optical Engineering, Washington, USA, 1991. [8] CHAN, Raymond K. W.; LEE, M. C. 3D-DCT Quantization as a Compression Technique for Video Sequences. International Conference on Virtual Systems and Multimedia, Geneva, Switzerland, 1997, pp. 188-196. [9] KIM, Beong-Jo; PEARLMAN, William A. An Embedded Wavelet Video Coder Using Three-Dimensional Set Partitioning in Hierarchical Trees (SPHIT). Proceedings of the Conference on Data Compression, 1997. [10] OLIVEIRA, Fabrício Corrêa de Araújo. Compressão Progressiva de Imagens Usando DCT e Código de Golomb. Dissertação de mestrado submetida à Universidade Estadual de Campinas em 2002. [11] LAMAR, Marcus Vinicius. Codificação de Vídeo Utilizando Decomposição Quadtree para Estimação de Movimentos. Dissertação de mestrado submetida à Universidade Federal de Santa Catarina em 1996. Referências [11] ITU-T Generic Coding of Moving Pictures and associated audio information - video