Codificação Escalável de Vídeo com Elevada Granularidade

Transcrição

Codificação Escalável de Vídeo com Elevada Granularidade
UNIVERSIDADE TÉCNICA DE LISBOA
INSTITUTO SUPERIOR TÉCNICO
Codificação Escalável de Vídeo
com Elevada Granularidade
João Miguel Duarte Ascenso
(Licenciado)
Dissertação para obtenção do Grau de Mestre em
Engenharia Electrotécnica e de Computadores
Outubro 2003
Resumo
A escalabilidade corresponde à capacidade de extrair do fluxo binário escalável completo conjuntos
eficientes de bits que são utilmente descodificáveis e oferecem imagens ou vídeos descodificados com
uma variação (escala) segundo uma dada característica da imagem ou vídeo, p.e. resolução espacial ou
SNR. O número de conjuntos que podem ser extraídos do fluxo binário completo definem a
granularidade da escalabilidade fornecida, que pode ser muito fina ou com passos muito grosseiros.
Muitas das técnicas de codificação escalável utilizam uma camada base que tem de ser sempre
descodificada e uma ou mais camadas superiores que permitem uma melhoria em termos de qualidade
(SNR), resolução espacial e/ou resolução temporal. De todos os esquemas actualmente presentes as
normas de codificação escalável têm um papel importante, nomeadamente os modos escaláveis das
normas JPEG, JPEG2000, H.263 e MPEG-4. O esquema de codificação escalável fina presente na norma
MPEG-4 é uma das técnicas mais promissoras, pois pode adaptar-se às características dos canais (e.g.
Internet) ou terminais que apresentem um comportamento variável ou desconhecido, p.e. velocidade
máxima de acesso, variações da largura de banda, erros de canal. Apesar da norma MPEG-4 FGS se
afirmar como uma alternativa viável para aplicações de distribuição de vídeo, possui uma quebra
significativa de desempenho em comparação com a codificação não escalável de vídeo, nomeadamente o
perfil ASP da norma MPEG-4 Visual.
Os objectivos da presente tese são: 1) realizar uma revisão bibliográfica das técnicas de codificação
escalável de vídeo; 2) estudar as novas ferramentas de codificação não escalável de vídeo introduzidas na
recente norma H.264/AVC e 3) melhorar o desempenho da norma MPEG-4 FGS através do
desenvolvimento de um novo codificador escalável de vídeo com elevada granularidade. Para alcançar este
objectivo foi desenvolvido pelo autor um novo codificador escalável de vídeo de elevada granularidade
integrando as características de escalabilidade fina típicas da norma MPEG-4 FGS e os recentes avanços
na área da codificação não escalável de vídeo, representados pela norma H.264/AVC. Além disso, foi
desenvolvido uma nova estrutura de escalabilidade (nomeadamente em termos de predição) e de
ferramentas de redução do efeito de deslize que permitem reduzir o custo em termos de eficiência da
codificação escalável em relação à codificação não escalável.
Palavras-chave:
Escalabilidade de elevada granularidade, escalabilidade SNR, codificação de vídeo MPEG-4, efeito de
deslize, distribuição de vídeo, resiliência a erros, H.264.
i
ii
Abstract
Scalable coding represents the original data such that certain sub-sets of the total coded bitstream still
provide a useful representation of the original data if decoded separately. The decoded image or video
vary according to a scale of representations in terms of a given characteristic of the image or the video, e.g.
spatial resolution or SNR quality. The number of such possible subsets defines the granularity of the
scalability provided, which may be very fine or in the form of coarser steps. Most scalable video coding
techniques use a base (or core) layer which must always be decoded and one or more enhancement layers
which provide improvements in terms of quality (also known as SNR), frame/sampling rate or spatial
resolution (for images and video).
There are currently a significant number of scalable coding schemes available; among them the open
standard solutions play an important role, notably JPEG, JPEG2000, MPEG-2, H.263 and MPEG-4. The
MPEG-4 Fine Granularity Scalable (FGS) video coding scheme is one of such promising techniques
providing bitstreams which can easily adapt to the characteristics of the channels (e.g. Internet) or
terminals that have an unpredictable or unknown behavior, e.g. maximum speed of access, variations of
the bandwidth, channel errors, etc. Although the MPEG-4 FGS standard is a viable solution for video
streaming applications, it shows a significant loss in terms of coding efficiency performance in comparison
with nonscalable video coding, in particular the rather efficient Advanced Simple Profile defined in the
MPEG-4 Visual Standard.
In this context, the main goals of the current thesis are: 1) to carry out a bibliographical revision of the
scalable video coding techniques; 2) to study the new nonscalable video coding tools specified by the
recent standard H.264/AVC, the most efficient video coding standard available; 3) to develop a new
scalable video coding scheme with fine granularity providing better efficiency performance than the
MPEG-4 FGS standard; and 4) to develop tools which are able to reduce the drift effect present when the
enhancement layer is not fully decoded.
As the major achievement related to the goals above defined, the author developed a new video coding
scheme which combines the fine grain properties of the MPEG-4 FGS standard and the recent advances
in the area of nonscalable video coding, represented by the H.264/AVC standard. This new coding
scheme includes a new structure of scalability, with temporal prediction in the enhancement layer, and
drift reduction tools to reduce the efficiency cost of providing scalability.
Keywords:
Fine grain scalability, SNR scalability, MPEG-4 video coding, drift effect, video streaming, error resilience,
H.264
iii
iv
Agradecimentos
Em primeiro lugar quero agradecer ao Prof. Fernando Pereira pelo seu acompanhamento extremo e pela
disponibilidade total para me ajudar e aconselhar durante todas as etapas do mestrado. A conclusão deste
trabalho não teria sido possível sem o seu incentivo, entusiasmo e paciência várias vezes demonstrada.
A todos os meus colegas e ex-colegas do Grupo de Imagem do Instituto de Telecomunicações pela sua
camaradagem e apoio; por todas as suas sugestões e disponibilidade para me ajudarem em algumas fases
da minha tese. Um agradecimento especial ao Paulo Nunes, Luís Ducla-Soares e ao Prof. Paulo Correia,
pela sua amizade, pelas suas sugestões e críticas objectivas. Ao João Magalhães, Tomás Brandão, Prof.
Paula Queluz, Duarte Palma, Pedro Fonseca, João Valentim e Carla Zibreira pelo seu apoio incondicional
e pelo óptimo ambiente de trabalho que sempre proporcionaram.
Ao meus colegas do Grupo de Comunicações Móveis do Instituto de Telecomunicações, Jorge Aguiar e
Lúcio Ferreira pela sua amizade e pelas frequentes palavras de incentivo.
Aos meus pais e ao meu irmão, que sempre me apoiaram na realização do mestrado. A toda a minha
família que durante este período, se viram muitas vezes privados da minha companhia.
A todos os meus amigos que estiveram sempre ao meu lado e que me ajudaram sempre que necessário.
v
vi
Índice
1
Introdução __________________________________________________________________ 1
1.1
Codificação de vídeo: escalável versus não escalável _________________________________ 2
1.2
Contexto e motivação para a codificação escalável __________________________________ 5
1.3
Objectivos e estrutura da tese_________________________________________________ 12
1.2.1
1.2.2
1.2.3
2
Heterogeneidade das redes e terminais ________________________________________________ 6
Impacto do modo de distribuição de conteúdo __________________________________________ 8
Avanços nas normas de codificação de vídeo____________________________________________ 9
Técnicas escaláveis de codificação de vídeo: aplicações, classificação e revisão_________ 17
2.1
Aplicações _______________________________________________________________ 18
2.2
Classificação das técnicas de escalabilidade _______________________________________ 23
2.1.1
2.1.2
2.1.3
2.1.4
Vídeo na Internet __________________________________________________________________18
Vídeo sobre redes móveis____________________________________________________________19
Televisão digital __________________________________________________________________ 20
Bases de dados multimédia __________________________________________________________21
2.2.1 Características da imagem ou do vídeo _______________________________________________ 23
2.2.1.1
Escalabilidade espacial ________________________________________________________________ 23
2.2.1.2
Escalabilidade temporal _______________________________________________________________ 24
2.2.1.3
Escalabilidade de SNR ________________________________________________________________ 25
2.2.1.4
Escalabilidade de conteúdo _____________________________________________________________ 26
2.2.1.5
Separação de dados___________________________________________________________________ 26
2.2.1.6
Combinação de tipos de escalabilidade ____________________________________________________ 27
2.2.2 Nível de granularidade_____________________________________________________________ 28
2.2.2.1
Escalabilidade de baixa granularidade _____________________________________________________ 28
2.2.2.2
Escalabilidade de elevada granularidade ou contínua no débito binário _____________________________ 28
2.2.2.3
Escalabilidade hibrída _________________________________________________________________ 29
2.3
Técnicas de codificação escalável ______________________________________________ 29
2.4
Normas de codificação para imagens fixas _______________________________________ 48
2.3.1
2.3.2
2.3.3
2.3.4
2.4.1
2.4.2
2.5
3
30
33
42
46
A norma JPEG ___________________________________________________________________ 49
A norma JPEG2000________________________________________________________________ 55
Normas de codificação de vídeo_______________________________________________ 63
2.5.1
2.5.2
2.6
Codificação piramidal _____________________________________________________________
Codificação em sub-bandas_________________________________________________________
Transformada DCT _______________________________________________________________
Matching Pursuits ________________________________________________________________
A norma MPEG-2 vídeo____________________________________________________________ 63
A recomendação ITU-T H.263+ _____________________________________________________ 77
Conclusões ______________________________________________________________ 83
Codificação escalável de vídeo na norma MPEG-4 ________________________________ 87
vii
3.1
A norma MPEG-4 _________________________________________________________88
3.2
A norma MPEG-4 visual ____________________________________________________91
3.3
Codificação escalável de textura (VTC) _________________________________________106
3.4
Codificação escalável de vídeo com baixa granularidade_____________________________112
3.2.1
3.2.2
3.2.3
3.2.4
3.2.5
3.2.6
3.3.1
3.3.2
3.3.3
3.4.1
3.4.2
3.5
Codificação de textura com forma rectangular _________________________________________ 107
Codificação de textura com forma arbitrária ___________________________________________ 110
Escalabilidade espacial e de qualidade _______________________________________________ 110
Escalabilidade espacial ____________________________________________________________ 113
Escalabilidade temporal ___________________________________________________________ 114
Codificação escalável de vídeo com elevada granularidade ___________________________114
3.5.1
3.5.2
3.5.3
3.5.4
3.5.5
3.5.6
3.6
Estrutura de escalabilidade _________________________________________________________ 117
Codificação em planos de bit _______________________________________________________ 119
Arquitectura de codificação FGS ____________________________________________________ 121
Escalabilidade híbrida qualidade/temporal ___________________________________________ 124
Quantificação adaptativa ___________________________________________________________ 127
Resiliência a erros ________________________________________________________________ 131
Avaliação do desempenho da norma MPEG-4 FGS _______________________________132
3.6.1
3.6.2
3.6.3
3.7
4
Estrutura e sintaxe do fluxo codificado ________________________________________________93
Arquitectura da codificação de vídeo __________________________________________________97
Codificação de forma _______________________________________________________________98
Estimação e compensação de movimento ______________________________________________99
Codificação de textura _____________________________________________________________ 102
Perfis e níveis ____________________________________________________________________ 104
Condições de teste ________________________________________________________________ 133
Medida de desempenho____________________________________________________________ 135
Resultados e avaliação _____________________________________________________________ 136
Conclusões ______________________________________________________________139
Norma H.264/MPEG-4 AVC _________________________________________________ 141
4.1
Objectivos e aplicações _____________________________________________________142
4.2
Arquitectura _____________________________________________________________144
4.3
Ferramentas de codificação de vídeo ___________________________________________153
4.2.1
4.2.2
4.2.3
4.3.1
4.3.2
4.3.3
4.3.4
4.3.5
4.3.6
Camada de adaptação de rede_______________________________________________________ 145
Camada de codificação de vídeo_____________________________________________________ 146
Estrutura da sintaxe de vídeo _______________________________________________________ 148
Codificação e predição Intra ________________________________________________________ 154
Codificação e predição Inter ________________________________________________________ 156
Filtro de bloco ___________________________________________________________________ 162
Transformada e quantificação_______________________________________________________ 164
Codificação entrópica _____________________________________________________________ 167
Slices SP e SI_____________________________________________________________________ 175
4.4
Perfis e níveis ____________________________________________________________177
4.5
Comparação com as normas anteriores _________________________________________179
4.6
Conclusões ______________________________________________________________182
5
Escalabilidade fina de vídeo AVC-FGS _________________________________________ 185
5.1
Arquitectura AVC-FGS ____________________________________________________187
5.2
Codificação AVC-FGS em planos de bit________________________________________191
viii
5.3
Estudo estatístico para a camada superior_______________________________________ 192
5.3.1
5.3.2
5.3.3
Coded Block Pattern (fgs_cbp) ____________________________________________________193
Coeficientes DC __________________________________________________________________196
Coeficientes AC __________________________________________________________________197
5.4
Codificação entrópica AVC-FGS _____________________________________________ 198
5.5
Sintaxe e semântica do fluxo binário AVC-FGS __________________________________ 200
5.6
Estudo do desempenho do AVC-FGS_________________________________________ 205
5.7
Conclusões _____________________________________________________________ 213
5.6.1
5.6.2
5.6.3
5.6.4
Resultados para a configuração de teste 1 ____________________________________________ 207
Resultados para a configuração de teste 2 ____________________________________________ 208
Resultados para a configuração de teste 3 _____________________________________________210
Avaliação da melhoria selectiva dos coeficientes DC ____________________________________ 211
Escalabilidade fina de vídeo AVC-MCFGS _____________________________________ 215
6
6.1
Estrutura de escalabilidade __________________________________________________ 219
6.2
Arquitectura AVC-MCFGS _________________________________________________ 222
6.3
Compensação de movimento AVC-MCFGS ____________________________________ 226
6.4
Técnicas para redução do efeito de deslize ______________________________________ 230
6.5
Avaliação do desempenho do AVC-MCFGS ____________________________________ 247
6.6
Conclusões _____________________________________________________________ 254
6.4.1 Predição parcial _________________________________________________________________ 232
6.4.1.1
Predição parcial cíclica CBP (Cyclic Bitplane Coding) ___________________________________________ 233
6.4.1.2
Predição parcial adaptativa ABP (Adaptive Bitplane Coding)______________________________________ 235
6.4.2 Predição pesada _________________________________________________________________ 238
6.4.2.1
Predição pesada cíclica CWBP (Cyclic Weight Bitplane Coding) ____________________________________ 241
6.4.2.2
Predição pesada adaptativa AWBP (Adaptive Weight Bitplane Coding) ______________________________ 243
6.5.1
6.5.2
7
Condições de teste _______________________________________________________________ 248
Resultados e avaliação ____________________________________________________________ 250
Conclusões e trabalho futuro _________________________________________________ 257
7.1
A
Trabalho Futuro _________________________________________________________ 259
Distribuição de vídeo em tempo-real __________________________________________ 265
A.1
Codificação de vídeo ______________________________________________________ 267
A.2
Servidor ________________________________________________________________ 267
A.3
Cliente _________________________________________________________________ 268
A.4
Controlo de QoS _________________________________________________________ 269
A.5
Protocolos de distribuição de vídeo ___________________________________________ 271
A.6
Rede de distribuição_______________________________________________________ 272
B
Sequências de Teste ________________________________________________________ 275
B.1
Sequência Boat ___________________________________________________________ 276
B.2
Sequência Canoa__________________________________________________________ 277
ix
B.3
Sequência Carphone ________________________________________________________277
B.4
Sequência Coastguard _______________________________________________________278
B.5
Sequência Rugby __________________________________________________________279
B.6
Sequência Foreman_________________________________________________________279
B.7
Sequência Stefan___________________________________________________________280
B.8
Sequência Table Tennis ______________________________________________________281
B.9
Sequência Tempete _________________________________________________________281
B.10 Sequência Waterfall ________________________________________________________282
Referências ____________________________________________________________________ 283
x
Lista de Figuras
Figura 1.1 – Modelo de distribuição de vídeo com fluxos binários independentes.
Figura 1.2 – Modelo de distribuição de vídeo com um fluxo binário escalável.
Figura 1.3 – Transmissão com heterogeneidade das redes e terminais.
Figura 1.4 – Transmissão de vídeo ponto a ponto.
Figura 1.5 – Transmissão de vídeo ponto multiponto.
Figura 2.1 – Difusão de noticiários na Internet.
Figura 2.2 – Protótipos de terminais móveis de terceira geração.
Figura 2.3 – Televisão digital com selecção de objectos de interesse.
Figura 2.4 – Procura na base de dados audiovisual videoQ [58].
Figura 2.5 – M camadas de escalabilidade espacial.
Figura 2.6 – M camadas de escalabilidade temporal.
Figura 2.7 – M camadas de escalabilidade de qualidade: a) ao nível da imagem; b) ao nível da
região.
Figura 2.8 – Escalabilidade de conteúdo: a) um pivot; b) dois pivots; c) dois pivots, logo e fundo;
d) dois pivots, logo, fundo e écrã com bailarina.
Figura 2.9 – N×M camadas de escalabilidade combinada espacial/SNR.
Figura 2.10 – Estrutura piramidal de Burt e Adelson com 2 níveis.
Figura 2.11 – Codificação e descodificação escalável com a técnica piramidal.
Figura 2.12 – Exemplo de pirâmide espacio-temporal.
Figura 2.13 – Decomposição do sinal original em 2 sub-bandas.
Figura 2.14 – Banco de filtros passa-banda.
Figura 2.15 – Decomposição bidimensional na frequência de uma imagem.
Figura 2.16 – Decomposição DWT multi-banda.
Figura 2.17 – Sete bandas geradas pelo codificador da Figura 2.16.
Figura 2.18 – Relações entre os coeficientes DWT em sub-bandas diferentes.
Figura 2.19 – Esquema de codificação híbrido DCT/DWT.
Figura 2.20 – Esquema de codificação híbrida DCT/DWT de imagens residuais.
Figura 2.21 – Análise em sub-bandas: filtro espacio-temporal
Figura 2.22 – Estrutura do codificador de vídeo usando bandas 3D.
Figura 2.23 – Geração de duas camadas de coeficientes através de filtragem passa-baixo no
domínio da frequência.
Figura 2.24 – Re-quantificação dos coeficientes DCT em 3 camadas.
Figura 2.25 – Codificação dos coeficientes DCT em planos de bit.
Figura 2.26 – Pirâmide DCT com três camadas.
Figura 2.27 – a) Funções base da DCT; b) dicionário de Gabor 2D com 400 funções base [41].
Figura 2.28 – Algoritmo de matching pursuits: a) trama 50 da sequência Hall Monitor; b) erro de
predição: os primeiros c) 5 átomos; d) 30 átomos; e) 64 átomos.
Figura 2.29 – Comparação entre a) JPEG e b) JPEG 2000 com 0.27 bpp (bits per pixel).
Figura 2.30 – Diagrama de blocos do JPEG.
Figura 2.31 – Evolução temporal da descodificação usando o modo sequencial.
3
4
7
8
9
19
20
21
22
24
24
25
26
27
31
31
33
33
34
35
35
36
38
39
40
41
41
44
44
45
45
46
47
48
50
51
xi
Figura 2.32 – Modo progressivo no JPEG: a) selecção espectral; b) aproximações sucessivas.
Figura 2.33 – Exemplo de codificação JPEG usando selecção espectral com: a) apenas
coeficiente DC; b) coeficiente DC mais 4 primeiros coeficientes AC; c) todos os
coeficientes DCT.
Figura 2.34 – Exemplo de codificação JPEG usando aproximações sucessivas com: a) quatro bits
mais significativos; b) seis bits mais significativos; c) todos os bits.
Figura 2.35 – Codificação hierárquica multi-resolução.
Figura 2.36 – Processo de codificação segundo a norma JPEG2000.
Figura 2.37 – Organização do fluxo binário: a) divisão em blocos; b) varrimento em planos de
bits.
Figura 2.38 – Correspondência conceptual entre as representações espaciais e o fluxo binário.
Figura 2.39 – Ilustração da escalabilidade: a) SNR; b) espacial.
Figura 2.40 – Região de interesse: a) deslocamento dos coeficientes da DWT; b) geração da
máscara.
Figura 2.41 – Exemplo de codificação escalável para uma região de interesse: a) 0.05 bpp; b) 1.4
bpp; c) 2.43 bpp; d) sem perdas.
Figura 2.42 – Arquitectura do codificador MPEG-2 de vídeo não escalável.
Figura 2.43 – Arquitectura do descodificador MPEG-2 de vídeo não escalável.
Figura 2.44 – Arquitectura geral do codec MPEG-2 Vídeo com separação de dados.
Figura 2.45 – Arquitectura detalhada: a) módulo de divisão; b) módulo de composição de dados.
Figura 2.46 – Arquitectura do codec MPEG-2 Vídeo com escalabilidade de SNR (sem deslize).
Figura 2.47 – Codificador MPEG-2 Vídeo com escalabilidade de SNR sem deslize.
Figura 2.48 – Descodificador MPEG-2 Vídeo com escalabilidade de SNR.
Figura 2.49 – Dependência entre imagens das duas camadas para escalabilidade temporal (caso
1).
Figura 2.50 – Dependência entre imagens nas duas camadas para escalabilidade temporal (caso
2).
Figura 2.51 – Arquitectura do codec MPEG-2 Vídeo com escalabilidade temporal.
Figura 2.52 – Codificador MPEG-2 Vídeo com escalabilidade temporal.
Figura 2.53 – Descodificador MPEG-2 Vídeo com escalabilidade temporal.
Figura 2.54 – Predição espacio-temporal pesada.
Figura 2.55 – Arquitectura do codec MPEG-2 Vídeo com escalabilidade espacial.
Figura 2.56 – Arquitectura detalhada do codificador da camada superior.
Figura 2.57 – Arquitectura detalhada do descodificador da camada superior.
Figura 2.58 – Arquitectura do codec com escalabilidade combinada espacial e temporal.
Figura 2.59 – Arquitectura do codec com escalabilidade combinada SNR e espacial.
Figura 2.60 – Arquitectura do codec com escalabilidade combinada SNR e temporal.
Figura 2.61 – Arquitectura do codificador de vídeo H.263.
Figura 2.62 – Estrutura das tramas PB.
Figura 2.63 – Escalabilidade temporal na recomendação H.263+ (camada base a branco e
camada superior a cinzento).
Figura 2.64 – Escalabilidade de SNR na recomendação H.263+ (camada base a branco e camada
superior a cinzento).
Figura 2.65 – Escalabilidade espacial na recomendação H.263+ (camada base a branco e camada
superior a cinzento).
Figura 2.66 – Escalabilidade multi-camada: SNR e espacial.
Figura 2.67 – Ordem de transmissão das tramas codificadas.
Figura 3.1 – Arquitectura de um sistema MPEG-4.
Figura 3.2 – Exemplo de composição de uma cena com três objectos distintos (com
transparência).
Figura 3.3 – Estrutura hierárquica do fluxo binário de vídeo MPEG-4.
Figura 3.4 – Modos de codificação de um VOP.
Figura 3.5 – Bounding box para um objecto e divisão em macroblocos.
Figura 3.6 – Tipos de macroblocos usados para a codificação de um VOP com forma arbitrária.
Figura 3.7 – Resumo das ferramentas de descodificação de vídeo especificadas na norma MPEG4 Visual.
xii
52
52
53
54
57
58
60
61
62
62
64
65
66
67
68
69
69
70
71
71
72
73
74
74
75
75
76
77
77
78
79
80
81
82
82
83
88
92
94
95
96
96
97
Figura 3.8 – Definição do contexto utilizado pela técnica CAE: modo Intra (a) e Inter (b).
Figura 3.9 – Diagrama de blocos da codificação de forma multi-nível.
Figura 3.10 – Modo directo na predição bidireccional.
Figura 3.11 – Processo de preenchimento (padding) para macroblocos fronteira.
Figura 3.12 – Processo de preenchimento para macroblocos transparentes.
Figura 3.13 – Processo de codificação da textura de um VOP.
Figura 3.14 – Exemplo de aplicação da transformada SA-DCT.
Figura 3.15 – Coeficientes candidatos para a predição dos coeficientes AC e DC.
Figura 3.16 – Diagrama de blocos do codificador MPEG-4 VTC.
Figura 3.17 – Codificação VTC para objectos rectangulares.
Figura 3.18 – a) Predição dos coeficientes DC; b) Modo com múltiplos passos de quantificação.
Figura 3.19 – Ordens de varrimento: a) em árvore e b) sub-banda (a ordem de varrimento é
indicada pela sequência 1...9,a...z). c) Exemplo da estrutura em zero-trees.
Figura 3.20 – Codificação escalável de textura: a) SNR; b) espacial.
Figura 3.21 – Objectivo da escalabilidade FGS numa rede com largura de banda variável: a)
comparando com a codificação não escalável e b) com a codificação escalável de baixa
granularidade .
Figura 3.22 – Exemplos da estrutura de escalabilidade FGS numa aplicação unicast: a) no
codificador; b) no servidor; c) no cliente.
Figura 3.23 – Exemplos da estrutura de escalabilidade FGS numa aplicação multicast.
Figura 3.24 – Robustez à perda de pacotes: a) FGS e b) codificação escalável com baixa
granularidade.
Figura 3.25 – Codificação em planos de bits: a) coeficientes da DCT; b) matriz de planos de bit;
c) codificação em pares (run, eop).
Figura 3.26 – Codificação em planos de bit com inserção dos bits de sinal.
Figura 3.27 – Arquitectura do codificador MPEG-4 FGS.
Figura 3.28 – Arquitectura do descodificador MPEG-4 FGS.
Figura 3.29 – Ordem de varrimento dos coeficientes DCT num macrobloco para os vários
planos de bit.
Figura 3.30 – Estruturas de escalabilidade temporal: a) com camada temporal; b) com tramas
FGST.
Figura 3.31 – Exemplos de escalabilidade híbrida (■ indica a quantidade da camada superior
transmitida).
Figura 3.32 – Exemplo de quantificação adaptativa para MPEG-4 FGS: a) selecção de
frequências; b) melhoria selectiva (BP(1) corresponde ao plano de bit menos
significativo).
Figura 3.33 – Comparação do PSNR para a sequência “Foreman” com e sem selecção de
frequências para vários débitos binários (em kbit/s) [21].
Figura 3.34 – Impacto da melhoria selectiva a 250 kbit/s: a) sem melhoria selectiva; b) com
melhoria selectiva [48].
Figura 3.35 – Exemplo (pessimista) do processo de descodificação com marcas de sincronismo.
Figura 3.36 – Estrutura do fluxo binário da camada superior com marcas de sincronismo.
Figura 3.37 – Resultados da codificação simulcast: azul - MPEG-4 FGS, verde - três fluxos
binários, vermelho - dois fluxos binários.
Figura 4.1 – Progressão das normas de codificação de vídeo MPEG e das recomendações ITUT.
Figura 4.2 – Arquitectura genérica da norma H.264/AVC.
Figura 4.3 – Arquitectura do codificador de vídeo H.264/AVC, salientando-se as principais
novidades.
Figura 4.4 – Codificação de uma trama entrelaçada em modo campo.
Figura 4.5 – Divisão de uma imagem em: a) pares de macroblocos e b) slices e grupos de slices.
Figura 4.6 – Exemplos de slices e grupos de slices: a) slices dispersos b) tabuleiro de xadrez c) slices
redundantes.
Figura 4.7 – Divisão de um macrobloco em sub-macroblocos e blocos.
Figura 4.8 – Ordem de varrimento de um macrobloco.
98
99
100
101
102
102
103
104
107
107
108
109
112
116
117
118
119
120
120
122
122
123
125
127
128
129
130
131
132
139
142
144
147
149
150
151
152
152
xiii
Figura 4.9 – Predição Intra em blocos de 16×16 amostras: a) modo 0 – vertical e b) modo 1 –
horizontal c) modo 2 – DC d) modo 3 – planar.
Figura 4.10 – Modos de predição Intra para blocos 4×4.
Figura 4.11 – Macroblocos e sub-macroblocos: a) partições possíveis; b) escolha da partição
consoante o conteúdo da imagem.
Figura 4.12 – Interpolação das amostras com ¼ de pixel de precisão.
Figura 4.13 – Interpolação da componente de crominância com 1/8 de pixel de precisão.
Figura 4.14 – Compensação de movimento com múltiplas referências.
Figura 4.15 – Compensação de movimento: a) imagem original; b) escolha da imagem de
referência para cada partição.
Figura 4.16 – Dependências das imagens do tipo B.
Figura 4.17 – Filtro de bloco: a) ordem de filtragem; b) amostras adjacentes nas fronteiras
horizontais e verticais.
Figura 4.18 – Codificação de uma trama Foreman: a) sem filtro de bloco; b) com filtro de bloco
[30].
Figura 4.19 – Transformada, quantificação, normalização e respectivas operações inversas.
Figura 4.20 – Exemplo de codificação entrópica CA-VLC.
Figura 4.21 – Arquitectura do codificador entrópico CABAC.
Figura 4.22 – Dois exemplos de codificação do mapa de coeficientes (os símbolos a amarelo não
são transmitidos).
Figura 4.23 – Cenários de utilização para as imagens do tipo SI e SP.
Figura 4.24 – Codificação da imagem SP (simplificado).
Figura 4.25 – Estrutura dos perfis na norma H.264/AVC.
Figura 4.26 – Curvas RD da sequência Tempete, codificada segundo: a) norma H.264/AVC, b)
H.263 HLP, c) MPEG-4 ASP e d) MPEG-2 Vídeo [30].
Figura 4.27 – Ganho em débito binário em relação ao MPEG-2 Vídeo (em %) para um dado
nível de qualidade (sequências Foreman e Tempete) [30].
Figura 5.1 – Arquitectura do codificador escalável AVC-FGS.
Figura 5.2 – Exemplo de codificação AVC-FGS com um número de planos de bit diferente para
cada tipo de coeficientes.
Figura 5.3 – Arquitectura do descodificador escalável AVC-FGS.
Figura 5.4 – Exemplo de re-organização do fluxo binário para os planos de bit DC da
luminância.
Figura 5.5 – Construção do valor final do fgs_cbp.
Figura 5.6 – Distribuição estatística do fgs_cbp (fgs coded block pattern).
Figura 5.7 – Distribuição estatística dos coeficientes DC: Plano de bit da luminância a) MSB, b)
MSB-1 e c) MSB-n com n > 1; d) planos de bit da crominância.
Figura 5.8 – Distribuição estatística dos coeficientes AC: Plano de bit a) MSB, b) MSB-1, e c)
MSB-n com n>1.
Figura 5.9 – Alguns resultados da configuração de teste 2 para a luminância.
Figura 5.10 – Desempenho da melhoria selectiva dos coeficientes DC: a azul o AVC-FGS sem
melhoria selectiva, a vermelho com fgs_vop_dc_enhancement = 1 e a verde com
fgs_vop_dc_enhancement = 2.
Figura 6.1 – Estrutura de escalabilidade Inter-layer: a) sem erros; b) com erros na camada superior.
Figura 6.2 – Estrutura de escalabilidade Intra-layer: a) sem erros b) adaptação à largura de banda
disponível e c) com erros na camada superior.
Figura 6.3 – Estrutura de escalabilidade Intra/Inter-layer:
Figura 6.4 – Arquitectura do codificador AVC-MCFGS.
Figura 6.5 – Arquitectura do descodificador AVC-MCFGS.
Figura 6.6 – Efeito de deslize na trama 117 da sequência Table, descodificada a 288 kbit/s: a)
AVC-FGS e b) AVC-MCFGS com Nref = 3.
Figura 6.7 – Comparação do AVC-FGS com o AVC-MCFGS com Nref = {2,3,4} para a
sequência Boat.
Figura 6.8 – Comparação do AVC-FGS com o AVC-MCFGS para Ni = {4,12,24, ∞}.
Figura 6.9 – Estrutura de escalabilidade com predição parcial cíclica.
xiv
155
155
157
158
159
160
160
161
163
164
165
172
173
174
176
176
178
180
181
188
189
189
190
192
195
196
198
209
212
220
221
222
223
226
227
228
229
233
Figura 6.10 – Evolução do parâmetro Nref ao longo do tempo (16 imagens) para Nrefmax =
{2,3,4}.
234
Figura 6.11 – Variação do número de bits gastos por plano de bit para a sequência Table (CIF a
10 Hz) com Nref constante e igual a 3 e período entre imagens Intra de 12.
236
Figura 6.12 – Exemplo da aplicação do algoritmo para o cálculo de Nref de acordo com RT; neste
237
exemplo, o valor de Nref seleccionado é 3.
Figura 6.13 – Comparação do AVC-FGS com o AVC-MCFGS (com ABP) para a sequência
238
Table (CIF a 10 Hz) com RT = 256 kbit/s, 512 kbit/s e 1 Mbit/s.
Figura 6.14 – Arquitectura do codificador da camada superior do AVC-MCFGS com predição
pesada.
239
Figura 6.15 – Gráfico da função f(α) durante um 1s para P = 0.5 s e resolução temporal de 15
Hz.
242
Figura 6.16 – Comparação do AVC-FGS com o AVC-MCFGS (com CWBP) para a sequência
242
Table (CIF a 10 Hz, Nref = 3) com P = 0.5 s, 0.7 s e 1 s.
Figura 6.17 – O AVC-MCFGS em comparação com o AVC-FGS e a codificação não escalável. 244
Figura 6.18 – Comparação do AVC-FGS com o AVC-MCFGS (com AWBP) para a sequência
247
Table (CIF a 10 Hz, Nref = 3) com ld = 0.25, 0.75, 0.5 e 0.9.
Figura A.1 – Arquitectura de distribuição de vídeo.
266
Figura A.2 – Distribuição do débito binário efectivo numa ligação IP entre Los Angeles e Nova
Iorque [7].
269
Figura A.3 – Cancelamento de erros utilizando técnicas de pós-processamento [3].
271
Figura B.1 – Sequência Boat: a) trama 0; b) trama 52; c) trama 104; d) trama 156; e) trama 208; f)
trama 259.
276
Figura B.2 – Sequência Canoa: a) trama 0; b) trama 44; c) trama 88; d) trama 132; e) trama 176; f)
trama 219.
277
Figura B.3 – Sequência Carphone: a) trama 0; b) trama 76; c) trama 152; d) trama 228; e) trama
304; f) trama 380.
278
Figura B.4 – Sequência Coastguard: a) trama 0; b) trama 60; c) trama 120; d) trama 180; e) trama
240; f) trama 299.
279
Figura B.5 – Sequência Rugby: a) trama 0; b) trama 52; c) trama 104; d) trama 156; e) trama 208; f)
trama 259.
279
Figura B.6 – Sequência Foreman: a) trama 0; b) trama 60; c) trama 120; d) trama 180; e) trama 240;
f) trama 299.
280
Figura B.7 – Sequência Stefan: a) trama 0; b) trama 60; c) trama 120; d) trama 180; e) trama 240; f)
trama 299.
281
Figura B.8 – Sequência Table: a) trama 0; b) trama 60; c) trama 120; d) trama 180; e) trama 240; f)
trama 299.
281
Figura B.9 – Sequência Tempete: a) trama 0; b) trama 52; c) trama 104; d) trama 156; e) trama 208;
f) trama 259.
282
Figura B.10 – Sequência Waterfall: a) trama 0; b) trama 52; c) trama 104; d) trama 156; e) trama
208; f) trama 259.
282
xv
xvi
Lista de Tabelas
Tabela 2.1 – Classificação dos modos escaláveis das normas de codificação em termos da
granularidade.
Tabela 2.2 – Classificação das normas em termos das características usadas para a escalabilidade.
Tabela 3.1 – Níveis de escalabilidade espacial e de qualidade possíveis com o método MPEG-4
VTC.
Tabela 3.2 – Condições de teste.
Tabela 3.3 – Desempenho da codificação não escalável MPEG-4 ASP em relação ao MPEG-4
FGS.
Tabela 4.1 – Elementos de sintaxe e respectiva codificação entrópica.
Tabela 4.2 – Codificação entrópica Exp-Golomb: a) estrutura genérica do código; b) primeiras 9
palavras de código.
Tabela 4.3 – Mapeamento entre elementos de sintaxe.
Tabela 4.4 – Definição de perfis na norma H.264/AVC.
Tabela 4.5 – Diminuição média do débito binário entre os codificadores na vertical em relação
aos da horizontal para todas as sequências de teste [30].
Tabela 5.1 – Condições de treino para determinar a estatísticas dos símbolos AVC-FGS na
camada superior.
Tabela 5.2 – Parte da tabela UVLC para os coeficientes DC de luminância: MSB, MSB-1 e MSBn (n>1).
Tabela 5.3 – Sintaxe do elemento FGSVideoObjectPlane.
Tabela 5.4 – Sintaxe do elemento FGSDCLumBitplane.
Tabela 5.5 – Sintaxe do elemento FGSDCChrACBitplane.
Tabela 5.6 – Sintaxe do elemento FGSBlock.
Tabela 5.7 – Configurações de teste.
Tabela 5.8 – Condições de teste.
Tabela 5.9 – Desempenho relativo do MPEG-4 FGS com H.264/AVC e MPEG-4 ASP na
camada base.
Tabela 5.10 – Desempenho do MPEG-4 FGS em relação ao AVC-FGS sempre com o
H.264/AVC na camada base.
Tabela 5.11 – Desempenho do codificador não escalável H.264/AVC em relação ao AVC-FGS.
Tabela 6.1 – Condições de teste.
Tabela 6.2 – Desempenho relativo do AVC-MCFGS com a técnica CBP em relação ao AVCFGS.
Tabela 6.3 – Desempenho relativo do AVC-MCFGS com a técnica ABP em relação ao AVCFGS.
Tabela 6.4 – Desempenho relativo do AVC-MCFGS com a técnica CWBP em relação ao AVCFGS.
Tabela 6.5 – Desempenho relativo do AVC-MCFGS com a técnica AWBP em relação ao AVCFGS.
Tabela B.1 – Características das sequências de teste.
84
84
111
133
136
168
169
169
178
181
193
199
201
202
203
203
205
205
207
208
210
249
251
252
253
253
275
xvii
xviii
Lista de Acrónimos
AAC
Advanced Audio Coding
ABP
Adaptative BitPlane coding
ARM
Advance Risc Machine
ARQ
Automatic Repeat Request
ASO
Arbitrary Slice Order
ASP
Advanced Simple Profile
ATM
Asynchronous Transfer Mode
ATSC
Advanced Television Systems Committee
AVC
Advanced Video Coding
AWBP
Adaptative Weighted BitPlane coding
BAB
Binary Alpha Block
BIFS
Binary Format for Scenes
CABAC
Context Adaptative Binary Arithmetic Coding
CAE
Context based Arithmetic Encoding
CA-VLC
Context Adaptative Variable Length Coding
CBP
Cyclic BitPlane coding
CELP
Coded Excited Linear Prediction
CHC
Conversational High Compression
CIF
Common Intermediate Format
CS
Coefficient Scanning
CWBP
Cyclic Weighted BitPlane coding
DAB
Digital Audio Broadcasting
DCT
Discrete Cosine Transform
DPCM
Diferential PCM
DVB
Digital Video Broadcasting
DVD
Digital Versatile Disc
DWT
Discrete Wavelet Transform
EBCOT
Embedded Block Coding with Optimized Truncation
EI
Enhancement Intra
EOB
End Of Block
EOP
End Of Plane
xix
xx
EP
Enhancement P
EZW
Embedded Zero-tree Wavelet
FDIS
Final Draft International Standard
FEC
Forward Error Control
FGS
Fine Granularity Scalability
FIR
Finite Impulse Response
FLC
Fixed Length Coding
FMO
Flexible Macroblock Ordering
GOB
Group of Blocks
GOP
Group of Pictures
GPRS
General Packet Radio System
GSM
Global System Mobile
HD
High Definition
HEC
Header Extension Code
HLP
High Latency Profile
HQPI
High Quality Predicted Image
HQR
High Quality Reference
HTTP
Hyper Text Transport Protocol
HVXC
Harmonic Vector eXcitation Coding
ICT
Irreversible Component Transform
IDCT
Inverse DCT
IDR
Instantaneous Decoding Refresh
IEC
International Engineering Consortium
IETF
Internet Engineering Task Force
IP
Internet Protocol
IPMP
Intellectual Property Management and Protection
ISMA
Internet Streaming Media Alliance
ISO
International Standards Organization
ITU
International Telecommunications Union
JM
Joint Model
JPEG
Joint Photographic Experts Group
JTC
Joint Technical Committee
JVT
Joint Video Team
LAN
Local Area Network
LQR
Low Quality Reference
MBAmp
MacroBlock Allocation Map
MBone
Multicast Backbone
MCFGS
Motion Compensation FGS
MCTF
Motion Compensated Temporal Filtering
MIME
Multi-Purpose Internet Mail Extensions
MP
Matching Pursuits
MP3
MPEG-1 Audio Layer 3
MPEG
Motion Picture Experts Group
MSB
Most Significant Bit
MTU
Maximum Transfer Unit
MZTE
Multiscale Zero-Tree Entropy
NAL
Network Adaptation Layer
OBMC
Overlapped Block Motion Compensation
OCI
Object Content Information
PBP
Priority Break Point
PCM
Pulse Code Modulation
PDA
Personal Digital Assistant
PEZW
Predictive Embedded Zero-tree Wavelet
PFGS
Progressive Fine Grain Scalability
PNG
Portable Network Graphics
POTS
Plain Old Telephone Service
PSNR
Peak Signal Noise Ratio
QCIF
Quarter CIF
QoS
Quality of Service
RCT
Reversible Component Transform
RD
Rate/Distortion
RFGS
Robust Fine Grain Scalability
RLE
Run Lenght Encoding
ROI
Region Of Interest
RSVP
ReSerVation Protocol
RTCP
Real-Time Control Protocol
RTP
Real-time Transport Protocol
RTSP
Real-Time Streaming Protocol
RVLC
Reversible Variable Lenght Codes
SA-DWT
Shape Adaptative Discrete Wavelet Transform
SD
Standard Definition
SDP
Session Description Protocol
SI
Switching Intra
SIP
Session Initiation Protocol
SISC
Scan Interleaving based Shape Coding
SNR
Signal Noise Ratio
SP
Switching Predicted
SPIHT
Set Partitioning In Hierarchical Trees
SSL
Switched Single Layer
STB
Set Top Box
TCP
Transport Control Protocol
TTS
Text To Speech
UDP
User Datagram Protocol
UMTS
Universal Mobile Telecommunication System
UVLC
Universal Variable Length Coding
VCEG
Video Coding Experts Group
xxi
xxii
VCL
Video Coding Layer
VHDL
Very High speed integrated circuit hardware Description Language
VLD
Variable Lenght Decoder
VLC
Variable Length Codes
VO
Video Object
VOD
Video On Demand
VOL
Video Object Layer
VTC
Visual Texture Coding
WQR
Worst Quality Reference
WLAN
Wireless Local Area Network
WTCQ
Wavelet Trellis Coded Quantization
xDSL
Digital Subscriber Line
ZTE
Zero-Tree Entropy
ZTC
Zero-Tree Coding
Capítulo 1
1 Introdução
Em Junho de 1993, a banda Severe Time Damage tornou-se a primeira banda a realizar um concerto ao
vivo com transmissão de vídeo e áudio em tempo-real na Internet. O palco foi o pátio do
Laboratório de Ciência Computacional do parque Xerox em Sillicon Valley e o concerto foi
transmitido na rede Internet Multicast Backbone (MBone1). Naqueles dias, a Internet ainda não tinha
conhecido as inovações e os serviços que a iriam transformar, anos mais tarde, na maior e mais
popular rede de comunicações de sempre; a aplicação mais popular do ano de 1993 é o Mosaic (um
antecessor dos modernos browsers WWW) e o número de computadores com ligação à Internet
chega apenas ao Milhão. No entanto, na altura centenas de pessoas equiparam os seus PCs e
estações de trabalho com descodificadores de áudio e vídeo, de forma a poderem assistir ao
concerto (remotamente) e assim testemunharem o aparecimento de uma nova aplicação na Internet:
a distribuição de vídeo em tempo-real (video streaming).
O panorama actual é bastante diferente, com os locais mais populares na Internet a oferecerem um
conjunto de serviços audiovisuais que vão desde a transmissão em directo de eventos desportivos,
subscrição de canais de rádio, visualização de pequenos trechos de filmes (trailers), serviços de
notícias, aprendizagem à distância, seminários, vigilância remota, entre outros. Os utentes pedem e
recebem, cada vez mais, informação rica em áudio e imagens (ou vídeo) quando efectuam uma
compra online ― por exemplo, automóveis, casas, filmes, música, etc. Paralelamente, o ritmo rápido
da vida de hoje exige um acesso instantâneo aos eventos que ocorrem numa escala global bem como
informação mais local e pessoal, e.g. notícias sobre assuntos específicos segundo as preferências do
utente, acesso a serviços de monitorização de tráfego rodoviário, mensagens pessoais multimédia,
etc. Estas novas realidades traduzem-se numa maior pressão em várias áreas de negócio e nos vários
operadores de telecomunicações no sentido de disponibilizar sistemas mais eficientes para acesso
universal, ou seja acesso à informação que o consumidor deseja a partir de qualquer local, em
qualquer momento, usando qualquer terminal; esta pressão tem um ênfase especial na área dos
sistemas de distribuição de vídeo. Assim, é necessário que o vídeo, como qualquer outro tipo de
dados, seja transportado de uma forma simples e eficiente para qualquer lugar, em qualquer altura
A rede MBone resultou de um esforço para distribuir áudio e vídeo em tempo-real (com ligações ponto-multiponto),
desenvolvido pelo grupo Internet Engineering Task Force (IETF).
1
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
(anywhere at anytime), tanto para um único utilizador como para uma vasta audiência. Em qualquer
lugar, implica que a tecnologia para estes novos produtos seja portátil, opere em condições de baixo
consumo e em movimento: num comboio, num aeroporto, no carro, etc. Em qualquer altura,
significa que será o consumidor a decidir quando deseja utilizar esta tecnologia, seja para
comunicações em tempo-real (e.g. sessão videotelefónica ou assistir a um dado evento) ou para
aceder a conteúdo audiovisual previamente disponível (e.g. receber as notícias), de acordo com as
suas preferências e ambiente envolvente (e.g. terminal e rede de acesso).
O acesso a conteúdo audiovisual é hoje possível através de vários tipos de terminais e redes, como
STB (Set Top Boxes) para redes terrestres/cabo/satélite, terminais móveis para redes sem fios, e.g.
GPRS (General Packet Radio Service) ou Bluetooth e computadores pessoais para redes com e sem fios,
e.g. xDSL (Digital Subscriber Line) e WLAN (Wireless Local Area Network). Além disso, estes terminais
são usados em diferentes locais e ambientes e possuem uma mobilidade cada vez maior. Esta
heterogeneidade de terminais e redes dificulta o processo de criação de conteúdo e de serviços para
um conjunto vasto de utilizadores, pois impede uma distribuição adequada às características de cada
terminal ou rede ou ainda às preferências de cada utilizador. Mesmo quando se conhece a rede de
transporte e os terminais dos utilizadores, continuam a existir alguns problemas na distribuição de
vídeo, especialmente porque as redes de transporte possuem características dinâmicas, e.g. a largura
de banda disponível pode variar ao longo do tempo devido a maior ou menor congestão na rede. O
sistema de distribuição de vídeo deve isolar o utilizador destes problemas e garantir a QoS (Quality of
Service) que o utilizador concordou/negociou quando subscreveu um determinado serviço. Para que
isto se torne realidade, são necessários mecanismos que façam o mapeamento entre os parâmetros
de “alto-nível” do utilizador (e.g. qualidade subjectiva, preço, preferências, etc.) e as características da
rede de transporte, de uma forma transparente. Uma das funcionalidades chave para alcançar estes
objectivos é a representação escalável de vídeo, que proporciona uma forma elegante e progressiva
de adequar a qualidade subjectiva do vídeo à heterogeneidade de redes e terminais, e à sua natureza
dinâmica.
Na próxima Secção apresenta-se o conceito de escalabilidade, nomeadamente por oposição ao
modelo dos fluxo binários independentes, muito popular hoje em dia na Internet. De seguida,
apresenta-se o contexto, i.e. o âmbito onde se desenvolve o trabalho apresentado nesta Tese e os
principais motivos para o desenvolvimento de novas técnicas de codificação escalável. Finalmente,
delineiam-se os principais objectivos desta Tese e apresenta-se a forma como esta se encontra
organizada.
1.1
Codificação de vídeo: escalável versus não escalável
Tradicionalmente, o principal objectivo da codificação de vídeo tem sido maximizar a qualidade do
vídeo descodificado a um determinado débito binário. Num sistema clássico de comunicação, o
codificador comprime o sinal de vídeo com um determinado débito binário que é menor ou igual à
capacidade do canal e o descodificador reconstrói o sinal de vídeo utilizando todos os bits recebidos
do canal. Este modelo baseia-se no pressuposto de que o codificador conhece a capacidade do canal
disponível e o descodificador recebe e descodifica todos os bits enviados. No entanto, para muitas
aplicações, estes pressupostos não se verificam, como por exemplo na distribuição de vídeo pré2
CAPÍTULO 1 ― INTRODUÇÃO
codificado em que o débito binário disponível no canal não é conhecido na altura da codificação.
Uma das soluções mais utilizadas na distribuição de vídeo pré-codificado é o modelo de fluxos
binários independentes. Neste modelo, a mesma informação é codificada de forma independente
visando diferentes condições, e.g. em termos de débito binário, resolução espacial e/ou temporal. O
servidor de vídeo fica então encarregue de distribuir os fluxos binários codificados em um ou mais
canais simultaneamente, para um conjunto maior ou menor de clientes. A Figura 1.1 ilustra este
modelo para várias resoluções espaciais, mas outro tipo (ou até mais do que um tipo) de
características pode ser usado. O sinal de vídeo original (PCM) é fornecido a um conjunto de
codificadores independentes (ou a um único codificador a operar sequencialmente), cada um
encarregue de comprimir o sinal de acordo com uma dada configuração, e.g. com uma qualidade ou
resolução espacial diferentes ou mesmo de acordo com normas ou formatos diferentes. No cliente,
o descodificador recebe e descodifica um dos fluxos binários disponíveis de uma forma
independente dos restantes. Normalmente, o cliente escolhe qual dos fluxos binários pretende
receber e descodificar de acordo com as suas preferências e as características do terminal e ligação
que possui. Este modelo encontra-se muito difundido na Internet, onde o utilizador acede a um
endereço que possui conteúdos audiovisuais, selecciona a peça de conteúdo que pretende e escolhe
o tipo de ligação (e.g. modem, cabo/ADSL, T1) e/ou a qualidade (e.g. baixa, média, alta) que deseja;
cada tipo de ligação ou qualidade corresponde a um conjunto de parâmetros já utilizados na
codificação do conteúdo seleccionado (e.g. débito binário, resolução espacial/temporal) que se
encontra independentemente codificado para todas as configurações disponibilizadas. A principal
vantagem deste modelo consiste na sua simplicidade, pois apenas é necessário codificar o conteúdo
múltiplas vezes com componentes conhecidos e/ou algoritmos de codificação já existentes. No
entanto, este modelo possui uma baixa eficiência uma vez que não explora a dependência entre os
diversos fluxos binários independentes (em grande parte semelhantes uma vez que o conteúdo é o
mesmo), repetindo a informação no servidor e, quando necessário, também durante a transmissão.
Outra desvantagem deste modelo, consiste no número limitado de representações do vídeo em
questão que é necessária conservar, uma vez que sempre que se deseje obter uma representação
correspondente a condições que não tenham sido previamente consideradas e não esteja disponível
no servidor o respectivo conteúdo (e.g. com um determinado débito binário) é necessário recodificar novamente o conteúdo.
Figura 1.1 – Modelo de distribuição de vídeo com fluxos binários independentes.
3
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
Uma das formas de ultrapassar os problemas associados a este modelo é através da utilização de
uma nova funcionalidade: a escalabilidade na codificação ou seja usando uma representação escalável
do vídeo.
A escalabilidade corresponde à capacidade de extrair do fluxo binário total correspondente a um dado conteúdo
codificado em certas condições, por exemplo com uma certa qualidade e resolução, denominado neste caso por fluxo
escalável, subconjuntos eficientes de bits que podem ser utilmente descodificáveis ou seja que oferecem imagens ou vídeos
descodificados com uma variação (escala) segundo uma dada característica da imagem ou vídeo, e.g. resolução espacial
ou qualidade.
Ainda que, em sentido estrito, um conjunto de fluxos binários independentes, possa (quase)
respeitar a definição de escalabilidade apresentada, considerando como fluxo total a soma dos fluxos
independentes, na prática a exigência de eficiência faz com que a escalabilidade seja tipicamente
alcançada através de um fluxo binário base e fluxos incrementais que exploram a redundância em
relação ao fluxo base, e eventualmente em relação a outros fluxos incrementais, e que permitem
oferecer sucessivas imagens ou vídeos descodificados segundo as dimensões de escalabilidade
adoptadas (e.g. resolução espacial ou temporal).
Na Figura 1.2 apresenta-se o modelo de distribuição de vídeo com um único fluxo binário escalável,
claramente em contraste com o modelo dos múltiplos fluxos binários independentes. Com a
introdução da noção de escalabilidade, o codificador gera apenas um único fluxo binário (escalável)
com uma qualidade final correspondente à qualidade máxima desejável. Este fluxo binário pode ser
dividido em dois ou mais subconjuntos de bits, normalmente constituídos por segmentos disjuntos
ao longo do tempo, também denominados camadas; estas camadas são hierárquicas uma vez que
cada uma delas acrescenta algo às camadas anteriores, numa ordem pré-definida. Assim, cada
subconjunto de camadas hierárquicas com um número crescente de camadas, corresponde a uma
débito binário crescente e, consequentemente, a diferentes níveis de qualidade, resolução espacial ou
temporal. Cada descodificador escalável recebe e descodifica uma ou mais camadas (de forma
hierárquica) do fluxo binário total transmitido de forma a possuir um conjunto de bits utilmente
descodificável correspondente um dado nível de qualidade.
Figura 1.2 – Modelo de distribuição de vídeo com um fluxo binário escalável.
Normalmente, o fluxo binário encontra-se organizado de forma a que apenas uma camada seja
utilmente descodificada independentemente das restantes; esta camada corresponde ao nível mais
baixo de qualidade, resolução espacial ou temporal que se consegue obter, sendo referida como
4
CAPÍTULO 1 ― INTRODUÇÃO
camada base. Note-se que para obter uma imagem com uma qualidade ou resolução superior é
normalmente sempre necessário descodificar toda(s) a(s) camadas que antecedem na hierarquia a
camada correspondente à qualidade ou resolução desejada. Por exemplo, na Figura 1.2 obtêm-se 4
níveis de resolução espacial a partir do fluxo binário escalável; para se obter o nível mais alto de
resolução espacial correspondente à camada L3 é necessário descodificar também todas as camadas
que a antecedem ou seja todas as camadas de L0 a L3. A informação residual de cada camada
adicional é combinada com a informação acumulada das camadas anteriores de forma a obter um
refinamento progressivo e uma eficiência superior em relação ao modelo com fluxos binários
independentes. O número de camadas escolhidas para a codificação escalável da informação de
vídeo determina a granularidade da representação escalável do vídeo ou seja quantos subconjuntos
do fluxo total dão origem a descodificações úteis da informação. Um elevado número de camadas
corresponde a uma granularidade fina e um baixo número de camadas a uma granularidade baixa.
Quanto maior for a granularidade, maior é a capacidade de adaptação do fluxo em relação a
condições variáveis, por exemplo em termos da largura de banda do canal, uma vez que mais fluxos
binários úteis estão disponíveis a partir do mesmo fluxo binário total.
1.2
Contexto e motivação para a codificação escalável
O sistema usado para a distribuição de vídeo ou imagens influencia a forma como os esquemas de
codificação são projectados. Existem dois modelos principais de distribuição de vídeo: o modelo de
transferência completa (downloading) e o modelo de transmissão em tempo real (streaming). No
modelo de transferência completa, o utilizador selecciona o vídeo que pretende, espera que este seja
transferido para o seu terminal na totalidade e, finalmente, utiliza o descodificador adequado para
visualizar o conteúdo transferido. Neste modelo, o vídeo consiste num ficheiro binário que pode ser
transportado como qualquer ficheiro de dados, e.g. através de correio electrónico, FTP (File Transfer
Protocol) ou HTTP (Hyper Text Transport Protocol). No entanto, para ficheiros grandes (e.g. quando o
vídeo possui uma duração elevada e/ou um débito binário alto), esta solução não é satisfatória, pois
o tempo de transferência é elevado e muitas vezes inaceitável para os utilizadores com pouco espaço
de armazenamento, ligações lentas e/ou paciência limitada. Por outro lado, o modelo de transmissão
em tempo-real permite que o utilizador visualize o vídeo à medida que este é transferido para o
terminal do cliente. Normalmente, a visualização do vídeo começa com um pequeno atraso no início
da comunicação e não é necessário espaço de armazenamento para guardar toda a informação
recebida. Este modelo é um dos mais populares modelos de distribuição de vídeo (e.g. na Internet)
pois a visualização inicia-se pouco tempo depois do utilizador seleccionar o conteúdo que pretende
aceder não havendo grandes compassos de espera, como convém face ao ritmo de vida actual. Além
disso, a distribuição de conteúdos em directo (live streaming) apenas é possível com o modelo de
transmissão em tempo real, pois o vídeo é capturado, codificado, transportado e visualizado
enquanto o evento está a acontecer, com um atraso global tão pequeno quanto possível. O contexto
desta tese insere-se no modelo de transmissão em tempo-real (quer seja para transmissões em
directo ou não), onde a escalabilidade na codificação de vídeo tem um papel mais importante, pois a
estrutura hierárquica do fluxo binário permite uma adaptação dinâmica às características das redes
(e.g. largura de banda) e dos terminais dos clientes (e.g. capacidade de processamento). Os principais
três motivos para o desenvolvimento de novas técnicas de codificação escalável são:
5
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
1.
Heterogeneidade das redes e terminais:
a. O desenvolvimento e comercialização de novas redes e terminais capazes de distribuir
e processar conteúdo audiovisual, obrigam ao desenvolvimento de esquemas de
codificação de vídeo mais genéricos e independentes das características da rede e do
terminal.
b. Tipicamente, os recursos de uma rede não são estáticos e variam ao longo do tempo,
por exemplo é comum ocorrerem flutuações na largura de banda em vários tipos de
redes, bem como variações no atraso da transmissão dos dados. Neste contexto, é
necessária uma representação de vídeo capaz de lidar da forma mais eficaz possível
com esta variabilidade das características da rede ao longo do tempo.
2.
Impacto do modo de distribuição de conteúdo: Hoje em dia, vários elementos da rede
(e.g. routers) suportam as eficientes comunicações ponto-multiponto (multicast) que permitem
a transmissão de dados para um conjunto de destinos simultaneamente, levantando novos
problemas de adaptação de conteúdo para um conjunto de ligações e receptores.
3.
Avanços nas normas de codificação de vídeo: Os mais recentes avanços nas normas de
codificação não escalável de vídeo, tipicamente com um maior desempenho em termos de
compressão, também contribuem para uma melhoria das técnicas de codificação escalável
em relação à sua flexibilidade, atraso, eficiência e complexidade.
Nas próximas três Secções, apresentam-se com maior detalhe, as motivações para o
desenvolvimento de novas soluções de codificação escalável; a próxima Secção lida com os aspectos
da heterogeneidade das redes e dos terminais e da natureza dinâmica das condições de transporte.
De seguida, apresentam-se algumas tecnologias de distribuição de dados e o seu impacto na
concepção de novos esquemas de codificação de vídeo. Finalmente, apresentam-se os mais recentes
avanços nas normas de codificação de vídeo.
1.2.1 Heterogeneidade das redes e terminais
Neste momento, um conjunto bastante amplo de redes pode ser utilizado para distribuir informação
audiovisual tanto na rede fixa, e.g. a rede analógica POTS (Plain Old Telephone Service), rede digital de
integração de serviços (RDIS), linhas de subscrição digital (xDSL), TV por cabo, como em redes
móveis, e.g. o GPRS e UMTS, DVB-T, WLAN e Bluetooth. As principais características são
diferentes de rede para rede e os parâmetros mais importantes que as caracterizam são a largura de
banda, a qualidade de serviço QoS, a capacidade de protecção contra erros bem como os protocolos
de transporte e respectiva configuração. Por exemplo, a largura de banda varia entre poucos kbit/s
(e.g. GSM) e várias dezenas de Mbit/s (e.g. LAN) e muitas vezes não é fixa mas depende de vários
factores, e.g. para o UMTS a largura de banda varia entre 144 kbit/s e 2 Mbit/s dependendo da
posição e mobilidade do terminal.
As características mais importantes das redes de transporte variam ao longo do tempo (natureza
dinâmica) e as características mais típicas das redes baseadas em pacotes são a taxa de perda de
pacotes, a MTU (Maximum Transfer Unit) e o jitter no atraso da transmissão. Por outro lado, as redes
móveis apresentam normalmente muito mais ruído e atenuações de pequena (multi6
CAPÍTULO 1 ― INTRODUÇÃO
caminho)/grande escala (sombras) resultando em taxas de erro de bit (BER) por vezes elevadas.
Esta heterogeneidade nas características das redes impede a criação de conteúdo audiovisual de uma
forma independente da rede e das suas características (muitas delas dinâmicas), dificultando ou
mesmo impossibilitando o seu transporte para muitos utilizadores.
Mas não é apenas nas redes de distribuição que surge esta elevada heterogeneidade. Os mais recentes
avanços na área da microelectrónica possibilitaram o aparecimento de um variado conjunto de
terminais, com diferentes características: Web TV, PDA, computador pessoal, terminais móveis de
vários tipos, etc. Cada tipo de terminal possui diferentes características, nomeadamente em termos
das capacidades gráficas suportadas, das capacidades de processamento e armazenamento, dimensão
do écran, aplicações disponíveis, duração da bateria, dispositivos de entrada e saída, etc. Por
exemplo, uma Web TV possui normalmente ¼ da resolução espacial do monitor de um PC. A
Figura 1.3 apresenta este cenário mostrando os diferentes terminais e redes para os quais deve ser
permitido o acesso a conteúdo audiovisual disponibilizado por um servidor. Normalmente, a partir
de um dado terminal apenas é possível aceder a um conjunto seleccionado de conteúdo, adequado
para a visualização naquele terminal e para uma determinada rede de transporte, e.g. na maioria dos
telefones GSM ainda é apenas possível visualizar imagens fixas com uma resolução muito baixa e
um número de cores muito limitado (via WAP). Por outro lado, uma estação de trabalho consegue
aceder, através de uma rede de alto débito, a qualquer tipo de conteúdo, uma vez que as suas
capacidades gráficas, de processamento e comunicação são elevadas; no entanto, muitas vezes não
tira o máximo partido das suas características, especialmente quando o conteúdo foi criado para
terminais com características inferiores.
Telefone
GSM
PDA
GSM
GPRS
UMTS
Servidor de Vídeo
Computador de
bolso
Rede de Transporte
Bluetooth
DVB
LAN
RDIS
WLAN
Web TV
Estação de
trabalho
Computador
pessoal
Computador
portável
Figura 1.3 – Transmissão com heterogeneidade das redes e terminais.
Quando se utiliza o modelo de fluxos binários independentes para resolver o problema da
heterogeneidade das redes e dos terminais, é necessário codificar múltiplas versões do mesmo
conteúdo, e.g. com diferentes níveis de qualidade, resolução espacial ou temporal. No entanto, à
medida que o número de terminais, redes e combinações rede@terminal cresce, esta solução tornase cada vez mais ineficaz para distribuir o conteúdo para um vasto número de consumidores. Assim
é necessária uma tecnologia que permita a gestão, armazenamento, transmissão e acesso fácil a
informação audiovisual por qualquer terminal e em qualquer rede: a escalabilidade de vídeo permite
7
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
alcançar este objectivo de uma forma eficiente uma vez que a partir de um único fluxo binário
permite extrair múltiplas representações do mesmo conteúdo diferenciadas em termos do
desempenho e qualidade que oferecem em relação a uma ou mais dimensões, e.g. qualidade,
resolução espacial e temporal. A escalabilidade de vídeo permite codificar o conteúdo uma única vez
e distribuí-lo por vários tipos de terminais e redes, independentemente das suas características,
constituindo uma alternativa mais eficiente que a solução dos fluxos binários independentes. Além
disso, a representação escalável do vídeo constitui uma alternativa eficaz quando ocorrem variações
nas características da rede, pois permite que a qualidade subjectiva do vídeo seja facilmente adaptada
às condições da rede, como variações na largura de banda e ocorrência de erros, entre outras, e às
condições do terminal, e.g. capacidade de processamento, carga disponível da bateria, etc.
1.2.2 Impacto do modo de distribuição de conteúdo
O modelo de transmissão em tempo-real suporta dois tipos de transmissão de vídeo: a transmissão
ponto a ponto (unicast) e a transmissão ponto-multiponto (multicast). Na transmissão ponto a
ponto é estabelecida uma ligação individual para cada cliente “replicando” o mesmo conteúdo em
canais separados, se vários utentes estiverem a aceder ao mesmo conteúdo simultaneamente. Este
tipo de transmissão é exemplificado na Figura 1.4 onde cinco cópias do mesmo conteúdo são
transmitidas até ao elemento de rede 1 e três cópias são transportadas até ao elemento de rede 2. A
principal vantagem de um esquema deste tipo é que cada cliente pode negociar individualmente com
o servidor de vídeo os parâmetros de qualidade do serviço (e.g. o débito binário); no entanto, a
eficiência no uso da largura de banda disponível é globalmente muito baixa.
Figura 1.4 – Transmissão de vídeo ponto a ponto.
A transmissão ponto-multiponto (multicast) também utiliza um servidor de vídeo e múltiplos
clientes mas evita a replicação de conteúdo do modelo anterior através da transmissão de uma única
cópia dos dados para um grupo de clientes, permitindo uma melhoria de eficiência significativa em
relação à comunicação ponto a ponto que transmite N cópias dos dados, uma para cada cliente. Este
tipo de transmissão é exemplificado na Figura 1.5 onde apenas uma cópia do conteúdo é transmitida
em todas as ligações físicas da rede de distribuição.
8
CAPÍTULO 1 ― INTRODUÇÃO
Figura 1.5 – Transmissão de vídeo ponto multiponto.
Esta eficiência na distribuição do vídeo é alcançada à custa de alguma perda de flexibilidade em
relação à transmissão ponto a ponto. Por exemplo, os clientes na Figura 1.5 não podem efectuar
pedidos de conteúdo com diferentes qualidades, uma vez que apenas uma cópia do conteúdo é
transportada por toda a rede. Como resultado, todos os receptores têm de receber o vídeo com a
mesma qualidade, impedindo assim que a qualidade do vídeo recebido por cada cliente esteja de
acordo com as características da sua ligação ou terminal. Além disso, como as condições das redes
são dinâmicas, e por vezes sem qualquer garantia de QoS, para se efectuar distribuição de vídeo é
essencial que existam mecanismos de adaptação à largura de banda disponível numa determinada
ligação entre o cliente e o servidor. A escalabilidade de vídeo, devido à sua natureza hierárquica,
proporciona uma forma eficiente de solucionar este problema, uma vez que os clientes podem optar
por descodificar um subconjunto do fluxo binário escalável, de acordo com as suas exigências
computacionais, de qualidade, de resolução espacial e/ou temporal. Outra solução consiste em
efectuar a adaptação em pontos intermédios da rede através da monitorização de parâmetros que
indicam o estado da rede; a escalabilidade de vídeo permite essa adaptação sem que haja um
processamento muito intensivo (normalmente apenas é necessário seleccionar certas camadas do
fluxo binário e descartar as restantes), ao contrário dos esquemas de transcodificação que necessitam
de maior capacidade de processamento bem como conhecimento sobre o formato de vídeo
utilizado. Além disso, a escalabilidade de vídeo, devido à sua estrutura em camadas, permite a
classificação de partes do fluxo binário de acordo com a sua importância, de forma a melhorar a
qualidade de serviço em redes que suportam serviços diferenciados (e.g. diffServ) [1]. A qualidade do
vídeo recebido pelo utilizador pode ser melhorada atribuindo uma prioridade maior (ou protecção
mais elevada) às camadas mais importantes (e.g. camada base) do fluxo binário em detrimento das
camadas correspondentes aos níveis superiores.
1.2.3 Avanços nas normas de codificação de vídeo
Nos últimos 15 anos, um conjunto de normas internacionais de codificação de vídeo foram
desenvolvidas e são hoje amplamente utilizadas por várias aplicações multimédia, incluindo
videotelefonia, videoconferência, Video CD, DVD (Digital Versatile Disk), televisão digital,
distribuição de vídeo na Internet, entre outras. Novas aplicações tais como a distribuição de vídeo
em redes móveis ou cinema digital continuam a emergir e a realçar a importância, flexibilidade e
generalidade das normas desenvolvidas. Para a distribuição de vídeo em redes móveis ou para alguns
serviços de videotelefonia, a largura de banda é um bem escasso, com apenas 64 kbit/s ou menos
disponíveis (e.g. 2.5G), enquanto que para a recente aplicação de cinema digital (distribuição digital
9
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
dos filmes directamente às salas de cinema) os débitos binários em questão podem ser da ordem de
várias dezenas de Mbit/s. Esta diversidade de aplicações em conjunto com o desenvolvimento
tecnológico ao longo do tempo resultou num conjunto de normas de codificação de vídeo que
satisfazem diferentes necessidades e requisitos, em particular as normas H.261 [9], MPEG-1 Vídeo
[4], MPEG-2 Vídeo [2] (ou H.262), H.263 [10] (incluindo as versões H.263+ e H.263++) e MPEG4 Visual [3]. Mesmo para uma dada norma, podem existir vários perfis e níveis que definem qual o
sub-conjunto de ferramentas a utilizar e a gama de parâmetros permitida, de forma a satisfazer as
necessidades das várias aplicações com uma complexidade aceitável (e.g. MPEG-2 Vídeo, MPEG-4
Visual).
O vídeo está habitualmente associado com o áudio e, por vezes, com outros tipos de informação
(e.g. informação de sincronismo, descrição de conteúdo, etc.) o que obriga a definir mecanismos
para sincronizar, multiplexar e controlar os dados a transmitir. Desta forma, uma camada de sistema
conceptualmente acima das camadas de áudio e vídeo é necessária para que as aplicações possam
tirar partido das normas de codificação de vídeo (e de áudio). Finalmente, o desenho de uma norma
de codificação de vídeo deve também considerar as características da rede de transmissão,
incorporando mecanismos que permitam minimizar o impacto subjectivo dos erros (de pacote, bit
ou de rajada), explorar o facto do canal utilizado ser uni ou bidireccional, etc.
Actualmente, existe um número significativo de esquemas de codificação escalável, cada um com
diferentes propriedades em relação à tecnologia utilizada (e.g. baseados na DCT ou em ôndulas), às
características utilizadas para fornecer escalabilidade (e.g. resolução espacial ou temporal), à
granularidade permitida e ao seu desempenho em termos de eficiência. De entre todos estes
esquemas, as soluções oferecidas pelas normas de codificação têm um papel importante,
nomeadamente o JPEG [5], JPEG2000 [6] e MPEG-4 Visual para as imagens fixas, o ITU-T H.263,
MPEG-2 Vídeo e MPEG-4 Visual para o vídeo, o MPEG-4 Áudio [7] para o áudio e para a voz e,
finalmente, o MPEG-4 Visual para modelos 3D. A norma MPEG-4 é a norma de representação de
conteúdo audiovisual onde existe o maior número de mecanismos escaláveis que abrangem uma
gama ampla de tipos de dados, granularidades e características.
Uma das características mais importantes de um esquema de codificação escalável de vídeo é a sua
capacidade em separar a etapa de codificação de vídeo da etapa de transporte do fluxo produzido;
esta característica apenas é alcançada, quando o codificador gera um fluxo binário escalável em que
uma ou mais camadas podem ser truncadas ou removidas de acordo com as características da rede
(e.g. largura de banda) ou do descodificador (e.g. capacidade de processamento), sem qualquer
intervenção do codificador. Esta característica é essencial quando é necessário distribuir
simultaneamente o mesmo conteúdo para diferentes terminais e redes; quanto mais fina for a
escalabilidade ou seja a sua granularidade, maior é o número de pontos em que o vídeo pode ser
truncado e descodificado de uma forma útil e logo mais eficiente a adaptação. Para além de se obter
um uso mais eficiente da largura de banda já que quanto mais pontos de truncagem houver maior a
percentagem da banda disponível que será usada de forma útil, obter-se-á também uma degradação
mais suave da qualidade do vídeo com a diminuição do débito binário disponível na rede e uma
maior adaptação às características do terminal.
10
CAPÍTULO 1 ― INTRODUÇÃO
Este objectivo foi o principal motor para que o grupo MPEG (Moving Picture Experts Group)
normalizasse uma tecnologia de codificação escalável de vídeo com elevada granularidade
denominada Fine Granularity Scalability (FGS), incluída na norma MPEG-4 Visual. Com a norma
MPEG-4 FGS [8], respondeu-se à necessidade crescente de uma norma de codificação de vídeo
adequada a canais (e.g. Internet) ou terminais que apresentem um comportamento variável ou
desconhecido em termos de algumas das suas características, tanto em termos de velocidade máxima
de acesso como de variações da largura de banda, erros de canal, características do terminal,
tecnologias de transporte, etc. A codificação MPEG-4 FGS possui uma estrutura com apenas duas
camadas: uma camada base codificada com um débito binário Rb e uma única camada superior
codificada com elevada granularidade e com um débito binário máximo Rmax. A camada base é
codificada segundo o perfil Advanced Simple Profile (ASP) [8] definido na norma MPEG-4 Visual e
não pode ser truncada, enquanto a camada superior utiliza a técnica de codificação em planos de bit
para obter uma representação escalável do vídeo e pode ser truncada em qualquer ponto. De forma
a permitir uma degradação suave da qualidade do vídeo descodificado quando ocorrem erros de
transmissão na camada superior ou quando a largura de banda diminui, o MPEG-4 FGS não explora
a redundância temporal na camada superior. No entanto, esta característica possui um custo elevado
em termos de eficiência de codificação quando se compara com outras soluções não escaláveis, e.g.
MPEG-4 ASP.
Paralelamente, vários avanços em termos da codificação não escalável de vídeo ocorreram; um dos
esforços mais importantes foi o recente projecto de normalização conjunto, por parte dos
organismos International Telecommunications Union, Telecommunication Standardization Sector (ITU-T) e a
International Standards Organization/International Electrotechnical Commission, Joint Technical Committee nº. 1
(ISO/IEC JTC1), de uma nova norma de codificação de vídeo. Deste esforço, resultou a norma de
codificação de vídeo referida como H.264/MPEG-4 AVC [14] por corresponder à recomendação
H.264 no contexto da ITU-T e à parte 10 da norma MPEG-4 denominada como Advanced Video
Coding (AVC). Esta norma teve como principal objectivo alcançar uma eficiência de codificação
superior em relação às normas anteriores de codificação de vídeo, nomeadamente em relação ao
perfil mais eficiente da norma MPEG-4 Visual, mesmo que à custa de alguma complexidade
adicional. A utilização de novas ferramentas de codificação de vídeo contribuíram em muito para
alcançar este objectivo, nomeadamente a compensação de movimento estruturada em árvore, o
filtro de redução de efeito de bloco e a codificação aritmética adaptativa bem como a melhoria de
algumas das ferramentas já existentes em normas anteriores, e.g. transformada inteira, compensação
de movimento com precisão de ¼ pixel e múltiplas referências temporais na compensação de
movimento.
Hoje em dia, existe uma necessidade crescente de novas esquemas de codificação de vídeo, que
suportem a descodificação a partir de um único fluxo binário comprimido, de vários níveis de
qualidade, resolução espacial e temporal, e.g. na distribuição de vídeo na Internet. Os novos avanços
da codificação não escalável de vídeo, permitem o desenvolvimento de novas soluções de
codificação escalável de vídeo com um desempenho superior (uma vez que usam ferramentas mais
eficientes) e desta forma reduzir o custo da escalabilidade em relação às soluções não escaláveis.
Simultaneamente, a codificação escalável de vídeo deve suportar a distribuição de vídeo em múltiplas
11
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
redes e clientes de acordo com as recursos disponíveis, tendo particular atenção quando as
condições da rede e as capacidades dos clientes não são conhecidas à priori.
1.3
Objectivos e estrutura da tese
A escalabilidade de vídeo é uma funcionalidade que permite introduzir um nível mais elevado de
flexibilidade na codificação e descodificação de vídeo. No entanto, para muitas das aplicações
audiovisuais (que são exigentes em relação à eficiência de codificação), o desempenho limitado das
soluções de escalabilidade propostas no âmbito das actuais normas de codificação de vídeo é um
obstáculo a ultrapassar para que haja uma adopção mais generalizada das técnicas de codificação
escalável de vídeo.
Apesar da norma MPEG-4 FGS se afirmar como uma alternativa viável para aplicações de
distribuição de vídeo, possui uma quebra significativa de desempenho em comparação com a
codificação não escalável de vídeo, nomeadamente o perfil ASP da norma MPEG-4 Visual, tal como
é demonstrado no Capítulo 3 desta tese. Esta quebra de desempenho é essencialmente devida à
estrutura de escalabilidade escolhida, pois esta não explora a redundância temporal entre imagens da
camada superior tendo em vista a não introdução do efeito de deslize e uma maior resiliência a erros.
Actualmente, vários estudos estão a decorrer com vista a melhorar o desempenho da codificação
escalável de vídeo com elevada granularidade no contexto da norma MPEG-4 Visual usando
soluções baseadas nos codificadores de vídeo não escaláveis MPEG-4 ASP e H.264/AVC. Estes
estudos deram já origem a várias propostas submetidas ao grupo MPEG. Recentemente, foi emitida
pelo grupo MPEG uma chamada preliminar (draft call) de novas técnicas de codificação escalável de
vídeo [12], que permitam melhorar o desempenho da norma MPEG-4 FGS e se aproximem do
desempenho da norma não escalável H.264/AVC. Vários tipos de técnicas já foram propostas, com
soluções baseadas na norma H264/AVC e em ôndulas (wavelets) a apresentarem resultados
promissores [13]. Além disso, novos e mais exigentes requisitos [11] foram definidos para que as
técnicas de codificação escalável de vídeo propostas possam ir ao encontro das exigências de novas e
actuais aplicações de vídeo: vídeo na Internet, vídeo em redes móveis (WLAN), VOD (Video on
Demand), produção e distribuição de conteúdo em múltiplos canais, aplicações de armazenamento,
protecção por camadas, sistemas de vigilância, etc.
Além disso, tem havido um enorme interesse por parte da indústria num codificador escalável de
vídeo que ofereça uma eficiência de codificação elevada mas mantendo as propriedades do FGS
intactas, nomeadamente a granularidade fina e a boa capacidade de adaptação às características da
rede e do terminal. Esta tese insere-se no âmbito do desenvolvimento de novos esquemas de
codificação escalável de vídeo com elevada granularidade que sejam capazes de tirar partido das
novas ferramentas de codificação não escalável de vídeo, nomeadamente as recentes ferramentas
H.264/AVC com enorme eficiência, e simultaneamente propor uma nova estrutura de escalabilidade
que apresente um desempenho superior em termos de eficiência ainda que mantendo essencialmente
intactas as vantagens da escalabilidade MPEG-4 FGS. Desta forma, o trabalho desenvolvido no
contexto desta tese têm os seguintes objectivos:
― Revisão bibliográfica das técnicas de codificação escalável de vídeo: Antes do
desenvolvimento de uma novo sistema de codificação escalável de vídeo foi necessário
12
CAPÍTULO 1 ― INTRODUÇÃO
conhecer as principais abordagens, conceitos e soluções já existentes nesta área, quer na
literatura em geral, quer especificadas nas normas de codificação de vídeo. Um especial
ênfase foi dado à norma MPEG-4 FGS devido à sua importância no âmbito desta tese.
― Estudo da norma H.264/AVC: Com este estudo, pretendeu-se conhecer as novas
ferramentas de codificação de vídeo introduzidas na recente norma H.264/AVC,
responsáveis por uma melhoria de desempenho significativa em relação a abordagens
anteriores (cerca de 50% em relação ao MPEG-4 ASP). A partir das inovações introduzidas
nesta nova norma, pretendeu-se desenhar um novo codificador escalável de vídeo que
pudesse superar o desempenho associado à norma MPEG-4 FGS em termos de eficiência de
codificação.
― Melhoria do desempenho da norma MPEG-4 FGS através de:
ƒ
Desenvolvimento de um novo codificador escalável de vídeo de elevada
granularidade integrando as características de escalabilidade fina típicas da norma
MPEG-4 FGS e os recentes avanços na área da codificação não escalável de vídeo,
representados pela norma H.264/AVC. O novo codificador, referido como AVCFGS, utiliza na camada base uma solução conforme com a norma H.264/AVC e
reutiliza as novas ferramentas do H.264/AVC na camada superior mantendo uma
estrutura de escalabilidade semelhante à utilizada no MPEG-4 FGS.
ƒ
Desenvolvimento de uma nova estrutura de escalabilidade (nomeadamente em
termos de predição) que apresente um desempenho superior à norma MPEG-4
FGS e permita assim reduzir o custo em termos de eficiência da codificação
escalável em relação à codificação não escalável. Para alcançar este objectivo, foram
adicionadas ao codificador AVC-FGS, ferramentas de compensação de movimento
na camada superior (característica ausente na norma MPEG-4 FGS), para explorar
a redundância temporal do vídeo de uma forma mais eficiente.
― Redução do efeito de deslize: No novo codificador escalável de vídeo desenvolvido, a
melhoria de desempenho em relação à norma MPEG-4 FGS foi em grande parte atingida à
custa de um tipo de estrutura de escalabilidade que acarreta um grave problema: o efeito de
deslize. O efeito de deslize ocorre quando a imagem de referência utilizada pelo codificador
quando efectua a compensação de movimento na camada superior não se encontra
(parcialmente ou completamente) disponível no descodificador, devido a variações na
largura de banda ou a erros de transmissão. Para diminuir o impacto deste efeito, foram
desenvolvidas pelo autor, novas técnicas que permitem reduzir o efeito de deslize e o
impacto dos erros de transmissão na camada superior. A ideia é atenuar a contribuição da
camada superior na predição temporal, sempre que o efeito de deslize seja significativo,
através de dois tipos de técnicas: predição parcial e predição pesada. A predição parcial
baseia-se na escolha da qualidade da imagem de referência para a camada superior de forma
a minimizar o efeito de deslize. A predição pesada baseia-se na escolha de um peso que
13
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
multiplicado pela imagem de referência da camada superior permite atenuar o efeito de
deslize sem sacrificar em demasia o desempenho máximo.
Os objectivos inicialmente identificados foram alcançados e serão apresentados nesta Tese que está
organizada do seguinte modo:
― Capítulo 1, Introdução: No primeiro capítulo, descreve-se a motivação e contexto desta
Tese, introduz-se a definição de escalabilidade e as suas vantagens e apresentam-se os
objectivos e a estrutura da Tese.
― Capítulo 2, Técnicas Escaláveis de Codificação de Vídeo: Aplicações, Classificação e
Revisão: Este Capítulo têm como objectivo apresentar uma revisão bibliográfica dos vários
esquemas de codificação escalável de vídeo disponíveis na literatura. Para isso, começa-se por
identificar as principais aplicações que beneficiam da utilização de ferramentas de codificação
escalável de vídeo. Apresentam-se e classificam-se também as principais técnicas de
codificação escalável de vídeo existentes, bem como os modos de codificação escalável
disponíveis nas normas JPEG e JPEG2000 para imagens fixas e MPEG-2 Vídeo e ITU-T
H.263+ para vídeo.
― Capítulo 3, Codificação Escalável de Vídeo na Norma MPEG-4: A norma MPEG-4
inclui um número significativo de ferramentas de codificação escalável de vídeo oferecendo
vários tipos de escalabilidade (temporal, espacial e de qualidade), com vários níveis de
granularidade, tanto para imagens fixas como para vídeo. Além disso, devido ao modelo de
representação de vídeo baseado em objectos, a norma MPEG-4 também suporta
escalabilidade de conteúdo. Neste Capítulo, apresenta-se a norma MPEG-4 Visual, a sua
estrutura e as principais ferramentas de codificação não escalável de forma, movimento e
textura. Descreve-se de seguida a codificação escalável de textura para imagens fixas, baseada
na transformada de ôndulas discreta (Discrete Wavelet Transform - DWT), bem como os modos
de codificação escalável de vídeo com baixa granularidade (espacial e temporal) e de
codificação escalável de forma. Um especial ênfase é dado ao modo de codificação escalável
de vídeo com elevada granularidade (qualidade e temporal) devido ao âmbito e objectivos
desta tese. Finalmente, apresenta-se um estudo do desempenho da norma MPEG-4 FGS,
realizado pelo autor, de forma a avaliar a eficiência desta forma de codificação escalável para
um conjunto amplo de condições de teste.
― Capítulo 4, Norma H.264/MPEG-4 AVC: A norma H.264/AVC resultou do mais recente
projecto de normalização na área da codificação de vídeo por parte do grupo Video Coding
Experts Group (VCEG) da ITU-T e do grupo MPEG do ISO/IEC. Os principais objectivos
delineados para o H.264/AVC foram um desempenho elevado em termos de eficiência com o
mínimo de complexidade, boa resiliência a erros e elevada capacidade de adaptação às
características da rede de transmissão. Neste Capítulo apresenta-se a arquitectura de todas as
componentes da norma H.264/AVC, com um maior ênfase na arquitectura de codificação de
vídeo e na sintaxe do fluxo binário correspondente. Descrevem-se de seguida com maior
detalhe as ferramentas de codificação de vídeo: Intra e Inter, filtro de bloco, transformada e
14
CAPÍTULO 1 ― INTRODUÇÃO
quantificação, codificação entrópica e as slices do tipo SI e SP. Por fim, apresentam-se os perfis
e níveis definidos e um estudo do desempenho da norma H.264/AVC em relação às normas
anteriores: MPEG-2, H.263+ e MPEG-4.
― Capítulo 5, Escalabilidade Fina de Vídeo AVC-FGS: Neste Capítulo, o autor desenvolve
um novo algoritmo de codificação escalável, baseado na norma MPEG-4 FGS, e que inclui
algumas das ferramentas de codificação não escalável da norma H.264/AVC. O novo
codificador escalável de vídeo, referido como AVC-FGS, utiliza como ferramentas de
codificação as ferramentas do codificador não escalável H.264/AVC, quer na camada base,
quer na camada superior. Neste Capítulo apresenta-se a arquitectura do codificador AVC-FGS
desenvolvido, os detalhes da codificação em planos de bit, um estudo estatístico dos
elementos de sintaxe e o módulo de codificação entrópica. Por fim, apresenta-se uma
descrição da sintaxe e da semântica do fluxo binário do codificador AVC-FGS e avalia-se a
eficiência de codificação do AVC-FGS em relação às normas MPEG-4 FGS e H.264/AVC.
― Capítulo 6, Escalabilidade Fina de Vídeo AVC-MCFGS: Reconhecendo que a codificação
escalável de elevada granularidade não é uma alternativa aceitável para algumas aplicações se o
seu desempenho em termos de eficiência for significativamente inferior em relação à
codificação não escalável de vídeo, apresenta-se aqui um conjunto de técnicas com o objectivo
de melhorar a eficiência da codificação escalável. Como ponto de partida, utiliza-se o
codificador de vídeo AVC-FGS, apresentado no Capítulo anterior, e introduz-se um módulo
de compensação de movimento na camada superior (ausente no AVC-FGS e MPEG-4 FGS),
com o objectivo de explorar a redundância temporal na camada superior. Neste Capítulo,
apresentam-se várias estruturas de escalabilidade possíveis e discutem-se as vantagens e
desvantagens que cada uma delas possui. A arquitectura do novo codificador e descodificador
AVC-MCFGS, desenvolvido pelo autor, bem como os vários módulos desenvolvidos são aqui
apresentados em detalhe. No entanto, o uso de compensação de movimento na camada
superior pode causar, em certas condições; uma degradação da qualidade da imagem
descodificada dando origem ao fenómeno que é normalmente referido na literatura como
efeito de deslize (drift). Neste Capítulo, apresentam-se também algumas novas técnicas,
desenvolvidas pelo autor, que permitem reduzir o efeito de deslize e o impacto dos erros de
transmissão na camada superior. Por fim, apresenta-se um estudo do desempenho do
codificador AVC-MCFGS usando as várias técnicas de redução do efeito de deslize propostas,
para diferentes configurações de teste.
― Capítulo 7, Conclusões e Trabalho Futuro: No Capítulo 7, tecem-se considerações finais e
conclusões sobre o trabalho realizado nesta tese e identificam-se as principais tarefas que
podem ser realizadas de forma a melhorar e completar o trabalho realizado.
― Apêndice A, Distribuição de Vídeo em Tempo Real: No Apêndice A apresenta-se uma
arquitectura de distribuição de vídeo, os seus principais componentes e o impacto que as
técnicas de escalabilidade têm na melhoria do transporte de vídeo, desde o codificador até ao
terminal do cliente.
15
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
― Apêndice B, Sequências de Teste: Neste Anexo apresenta-se uma breve caracterização das
sequências de teste utilizadas ao longo desta Tese.
16
Capítulo 2
2 Técnicas escaláveis de codificação de
vídeo: aplicações, classificação e revisão
A codificação de fonte é uma das componentes mais importantes de muitos serviços e aplicações
multimédia, tais como a distribuição de vídeo na Internet e em redes móveis, acesso a bases de
dados multimédia, televisão digital, videotelefonia e videoconferência. As características das redes e
dos terminais que estas interligam colocam muitos problemas na concepção de um sistema de
distribuição de vídeo devido à grande heterogeneidade de uns e de outros. O vídeo comprimido
pode ser transportado em redes com diferentes características em termos de débito binário, padrões
de erro, atraso e variação temporal destes parâmetros. A codificação de vídeo utiliza técnicas com
predição temporal, i.e. faz uso de informação passada e/ou futura, e códigos de comprimento
variável o que torna o vídeo comprimido mais vulnerável a erros de transmissão e mais difícil de
adaptar às diferentes características da rede de transporte. Desta forma, a combinação destes dois
tipos de técnicas levanta questões importantes:
― Como se pode diminuir o impacto dos erros (e.g. erros de bit ou perdas de pacotes) que
ocorrem durante o transporte do vídeo comprimido ?
― De que forma se pode obter uma representação genérica do vídeo comprimido adequada às
características cada vez mais variadas das redes e dos terminais ?
Muitos dos mais recentes esforços de investigação em termos de codificação de vídeo
desenvolveram-se na área da codificação escalável de imagem e vídeo. Os principais objectivos no
estudo e desenvolvimento de técnicas de codificação escalável são alcançar uma compressão
eficiente (de preferência igual à da codificação não escalável), elevada flexibilidade em termos de
adequação aos meios de transmissão e baixa complexidade. Devido à natureza conflituosa dos
requisitos de eficiência, flexibilidade e complexidade, cada técnica de codificação escalável procura
um equilíbrio entre estes três factores. Isto significa que as empresas que pretendem oferecer um
serviço de distribuição de vídeo têm de escolher uma solução de codificação de acordo com as
características do serviço a oferecer. Por exemplo, no caso da distribuição de vídeo para terminais
móveis é necessário ter em conta a complexidade, enquanto que na distribuição de vídeo na Internet
este factor não é tão determinante.
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
Este capítulo tem como principal objectivo motivar, classificar e rever as várias técnicas de
codificação escalável de vídeo descritas na literatura. A próxima Secção apresenta um conjunto de
aplicações, bem como os principais problemas e requisitos associados à noção de escalabilidade. Na
Secção 2.2 classificam-se os diferentes tipos de escalabilidade e na Secção 2.3 apresentam-se diversas
técnicas de codificação escalável agrupadas segundo os algoritmos de codificação usados. De seguida
apresentam-se as soluções de codificação de vídeo escalável especificadas nas normas JPEG [25],
JPEG2000 [30], H.263+ [33] e MPEG-2 Vídeo [27]. Os modos de codificação escalável
especificados na norma MPEG-4 Visual [28] são apresentados no Capítulo 3.
No Anexo A apresenta-se uma arquitectura de distribuição de vídeo com o objectivo de
proporcionar várias opções nas áreas da compressão de vídeo, controlo de QoS, protocolos de
comunicação, redes de comunicação e servidores de vídeo. Uma direcção de investigação muito
promissora é a integração de várias técnicas de codificação, tais como a codificação escalável, a
resiliência a erros e a codificação de canal. A forma como estes três tipos de técnicas se combinam é
fundamental para permitir uma eficiente distribuição de vídeo. Para cada componente da
arquitectura de vídeo apresentam-se no Anexo A algumas das técnicas utilizadas, com especial
ênfase na escalabilidade de vídeo; espera-se desta forma conhecer o impacto que as técnicas de
escalabilidade têm na melhoria do transporte de vídeo, desde o codificador até ao terminal do
cliente.
2.1
Aplicações
As ferramentas de codificação de fonte são normalmente desenvolvidas com o objectivo de oferecer
novas funcionalidades ou melhorar as existentes, por exemplo capacidades interactivas ou mais
compressão. Neste contexto, esta Secção apresenta um conjunto de aplicações que podem beneficiar
da utilização de ferramentas de codificação escalável de vídeo. Como é natural, não se pretende aqui
descrever todas as aplicações possíveis, mas apenas dar uma ideia das principais áreas em que as
técnicas de codificação escalável de vídeo podem ser mais úteis. Para cada aplicação realçam-se os
principais problemas na transmissão de vídeo, a forma como podem ser resolvidos e as
funcionalidades requeridas.
2.1.1 Vídeo na Internet
Nos últimos anos tem-se assistido a um enorme crescimento na utilização da Internet. Entretanto, a
capacidade da Internet também está a crescer rapidamente devido à utilização de novas tecnologias e
de grandes investimentos na infra-estrutura por parte das empresas de telecomunicações. Outro
fenómeno que contribui para a difusão da Internet é o aparecimento de ligações rápidas no acesso à
Internet, dos mais variados tipos, que convivem com as ligações já anteriormente disponibilizadas.
Deste modo, o espectro de velocidades de acesso à Internet é bastante amplo, pois varia entre
modems convencionais (28.8 a 58 kbit/s), linhas RDIS (64 a 128 kbit/s com 2 linhas), modems via
cabo e via satélite (0.5 a 1.5 Mbit/s), linhas xDSL (até 6 Mbit/s) e ligações LAN até 1 Gbit/s. Isto
significa que os servidores de vídeo existentes na Internet devem servir clientes com débitos binários
muito diferentes, terminais bastante variados e exigências em termos de qualidade de vídeo também
muito diferentes. Além desta ampla gama de ligações à Internet, a largura de banda varia quando
18
CAPÍTULO 2 ― TÉCNICAS ESCALÁVEIS DE CODIFICAÇÃO DE VÍDEO
muitos clientes acedem a material de vídeo num mesmo servidor (i.e. pode existir congestão de
tráfego). Mesmo com estas dificuldades, um vasto conjunto de aplicações multimédia sobre a
Internet está a surgir, nomeadamente emissões de rádio, televisão, concertos, noticiários, filmes e
ensino à distância. A Figura 2.1 exemplifica este processo para noticiários via Internet: o primeiro
passo consiste na produção do conteúdo multimédia e corresponde à criação da página Web,
incluindo a codificação e indexação do conteúdo audiovisual; este conteúdo pode ser distribuído em
directo (live streaming) ou ter sido adquirido anteriormente e estar disponível a partir de uma base de
dados. De seguida, o servidor de vídeo e o servidor Web distribuem a informação multimédia para
cada cliente, resultando numa página Web no terminal do cliente, com vários elementos: texto,
imagens fixas, vídeo e áudio.
Figura 2.1 – Difusão de noticiários na Internet.
Para lidar com esta heterogeneidade de ligações e variações na largura de banda, não é prático
produzir vários fluxos binários com diferentes características correspondentes ao mesmo conteúdo,
uma vez que o servidor teria de possuir vários codificadores de áudio e vídeo a operar em tempo
real simultaneamente ou armazenar diferentes versões codificadas do mesmo conteúdo. Logo, é
desejável que o codificador seja capaz de produzir um fluxo binário escalável de forma a que o
servidor de vídeo e/ou certos elementos da rede (e.g. routers, gateways) possam processar facilmente o
vídeo codificado, e.g. truncando o fluxo binário, para o adaptar à capacidade disponível numa
determinada ligação sem que haja necessidade de codificar repetidamente o mesmo conteúdo.
2.1.2 Vídeo sobre redes móveis
No últimos anos, as comunicações móveis e as comunicações multimédia tiveram um
desenvolvimento muito rápido e um sucesso comercial acentuado. Naturalmente, o sucesso de
ambas as áreas é promovido por uma visão abrangente das telecomunicações: permitir a
comunicação de qualquer tipo de dados, em qualquer lugar, em qualquer altura. A convergência
destas duas áreas é agora possível com a introdução das redes móveis de terceira geração que
permitem um conjunto amplo de serviços móveis multimédia. De todos os tipos de informação a
transmitir, o vídeo é o mais exigente em termos de débito binário, o que obriga à utilização de
algoritmos de compressão que minimizem a largura de banda necessária para o transporte de vídeo.
No entanto, sem medidas especiais, os sinais de vídeo comprimido são extremamente vulneráveis a
erros de transmissão. Além disso, as redes móveis não garantem qualidade de serviço (QoS), uma
vez que as variações nas características do canal (e.g. efeitos de atenuação, multicaminho, etc.)
19
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
podem introduzir taxas de erros elevadas durante certos períodos de tempo. Os erros de transmissão
incluem erros de bit, erros de rajada e até cortes intermitentes na ligação rádio.
Deste modo é necessário um codificador de vídeo que opere a muito baixo débito (i.e. menor que 64
kbit/s), maximize a qualidade do vídeo descodificado na presença de erros e seja capaz de explorar
convenientemente a capacidade disponível do canal quando ela varia ao longo do tempo. As
principais ferramentas que podem ser usadas por parte do codificador de fonte são a codificação
resiliente a erros e a codificação escalável. As técnicas de codificação escalável são utilizadas em
ambientes móveis com três objectivos:
― Lidar com a variabilidade da largura de banda.
― Dividir o fluxo binário de vídeo em várias camadas, permitindo uma protecção de erros
adequada à importância de cada camada.
― Lidar com a heterogeneidade dos terminais, e.g. em termos de débito binário ou resolução
espacial.
Um serviço que muitos acreditam irá ser bastante utilizado nos terminais de terceira geração (Figura
2.2) é a transmissão de vídeo em tempo-real. Este serviço irá permitir que o utilizador possa
visualizar conteúdo de vídeo (e.g. boletim meteorológico, resumo de um jogo de futebol, trailers de
filmes) sem ser necessário transferir todo o ficheiro de vídeo antes de se iniciar a sua visualização.
Figura 2.2 – Protótipos de terminais móveis de terceira geração.
No contexto dos ambientes móveis é importante que a descodificação escalável seja o menos
exigente possível em relação à capacidade de processamento e consumo de energia.
2.1.3 Televisão digital
A difusão digital de sinais televisivos é um dos desenvolvimentos mais aguardados na área das
telecomunicações desde há alguns anos. A televisão digital implica uma forma normalizada de
codificar os sinais de áudio, vídeo e dados e o seu transporte (e.g. codificação de canal e modulação)
em vários meios de transmissão (e.g. terrestre, cabo, satélite). O lançamento de serviços de televisão
digital por todo o mundo está a tornar-se uma realidade. Muitos dos projectos de normalização de
televisão digital – DVB na Europa, DTV nos EUA e ISDB no Japão – utilizam as normas
desenvolvidas pelo grupo MPEG para codificação de fonte. Apesar de nenhum destes sistemas
utilizar técnicas de codificação escalável, estas permitem uma funcionalidade acrescida quando se
pretende transmitir simultâneamente um evento em diferentes formatos. Por exemplo, a
20
CAPÍTULO 2 ― TÉCNICAS ESCALÁVEIS DE CODIFICAÇÃO DE VÍDEO
escalabilidade permite a transmissão de um sinal de vídeo com uma resolução espacial equivalente à
televisão analógica, SDTV (Standard Definition TV), e alta definição, HDTV (High Definition TV), de
uma forma mais eficiente que a transmissão simultânea de dois sinais de vídeo independentes, um
para cada resolução. Deste modo, para um operador de televisão, a codificação escalável de vídeo
possui várias vantagens: um maior número de canais simultaneamente difundidos devido ao melhor
uso da banda disponível e uma gestão e complexidade menor para acomodar serviços deste tipo.
Considere-se que um número de eventos desportivos, por exemplo vários jogos de futebol, ocorrem
simultaneamente. As estações de TV podem explorar a popularidade do desporto e difundir todos
os jogos, permitindo que os telespectadores possam escolher os jogos a que pretendem assistir
simultaneamente mesmo que com menor qualidade. Deste modo podem possuir a opção de ver três
ou quatro jogos simultaneamente e/ou comentários aos jogos em diferentes resoluções ou com
diferentes níveis de qualidade (Figura 2.3).
Figura 2.3 – Televisão digital com selecção de objectos de interesse.
Outra área de aplicação televisiva é o ensino à distância. Todos os estudantes que acedem a um
serviço deste tipo podem seleccionar um objecto sobre o qual pretendem mais informação e assim
visualizar o objecto seleccionado com mais resolução e/ou qualidade. A utilização da escalabilidade
permite também ao operador de TV alcançar uma audiência mais vasta, através da difusão de
eventos seleccionados de outros tipos de redes (e.g. redes móveis de terceira geração) que possuem
requisitos de complexidade, resolução e qualidade diferentes.
2.1.4 Bases de dados multimédia
O número de bases de dados que armazenam diversos tipos de informação (e.g. áudio, vídeo, texto,
imagens fixas, modelos tridimensionais) está a aumentar consideravelmente e alguns dos problemas
com que se deparam são problemas de escalabilidade e de desempenho. Uma base de dados
multimédia pode envolver colecções extensas de dados audiovisuais e permite muitas vezes aos seus
utilizadores seleccionar o material de interesse a diferentes níveis de resolução e/ou qualidade, o que
permite reduzir consideravelmente a quantidade de dados a transferir entre o cliente e o servidor.
Por outro lado, estes sistemas também querem oferecer aos utilizadores a possibilidade de processar
ou vizualizar o material seleccionado com uma elevada resolução e/ou qualidade. De forma a
permitir um acesso à base de dados por um conjunto amplo de terminais (e.g. PDA, computador
pessoal) e por um maior número de redes (e.g. RDIS, WLAN, UMTS) é necessário que a base de
dados guarde o conteúdo em múltiplas resoluções e/ou níveis de qualidade de forma a disponibilizar
diferentes versões de acordo com as características dos terminais, redes de acesso e preferências do
21
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
utilizador. A codificação escalável permite que o conteúdo audiovisual seja representado de uma
forma eficiente e ainda assim possibilitar o seu acesso eficiente por uma vasta audiência de
utilizadores, com diferentes características, i.e. a partir de vários tipos de terminais, redes e
preferências.
Outra funcionalidade muitas vezes desejável é a capacidade de seleccionar objectos ou regiões de
interesse numa imagem ou vídeo (e.g. visualização de certas regiões em imagens de mapas adquiridas
por satélite), o que exige que o servidor envie mais informação apenas em relação aos objectos ou
regiões de interesse em vez de enviar melhor toda a imagem ou vídeo (com vista a reduzir os
requisitos de largura de banda). A utilização de técnicas de codificação escalável também permite
diminuir os requisitos em termos da capacidade de armazenamento da base de dados e facilita a
gestão e manutenção do material multimédia, pois apenas uma versão escalável da imagem ou vídeo
é necessária em vez de várias versões com diferentes qualidades e/ou resoluções. Por exemplo, no
âmbito do comércio electrónico, os utilizadores podem rapidamente visualizar vários produtos
presentes na base de dados em resolução e/ou qualidade reduzidas. Quando o cliente encontra
alguns produtos interessantes e os selecciona, um vídeo ou imagem com melhor qualidade e
resolução pode então ser visualizado. Na Figura 2.4 apresentam-se os resultados de uma pesquisa de
segmentos de vídeo (shots) que contenham florestas, no sistema de indexação, procura e distribuição
da Columbia University, referido como videoQ [58]. Neste sistema, depois de encontrar o segmento de
vídeo pretendido, o utilizador pode escolher o débito binário (e consequentemente a qualidade) a
que pretende consumir esse vído.
Figura 2.4 – Procura na base de dados audiovisual videoQ [58].
Apesar deste sistema manter três versões independentes do mesmo conteúdo (com 1.2 Mbit/s, 250
kbit/s e 50 kbit/s), a utilização de um esquema de codificação escalável evitaria a redundância de
informação na base de dados, permitindo um melhor uso do espaço de armazenamento disponível.
22
CAPÍTULO 2 ― TÉCNICAS ESCALÁVEIS DE CODIFICAÇÃO DE VÍDEO
2.2
Classificação das técnicas de escalabilidade
Antes de se apresentarem as várias técnicas de escalabilidade é importante classificá-las em várias
categorias. De forma a fazer uma classificação adequada dos esquemas de codificação escalável de
vídeo é essencial distinguir duas dimensões principais de escalabilidade:
― Características da imagem ou do vídeo: Esta dimensão de escalabilidade está relacionada
com a capacidade de obter fluxos binários oferecendo uma variação (escala) segundo uma
dada dimensão ou característica da imagem ou vídeo. As características utilizadas têm de
permitir obter diferentes representações da mesma sequência de vídeo ou da mesma
imagem; as características mais utilizadas são a resolução temporal, a resolução espacial e a
qualidade ou relação sinal ruído (SNR).
― Nível de granularidade: O nível de granularidade da escalabilidade embebida no fluxo
binário indica o número de diferentes representações que podem ser obtidas a partir do
mesmo fluxo binário codificado, segundo uma ou mais características. O nível de
granularidade determina o número de camadas que se podem obter (i.e. descodificar sem
erros) do fluxo binário escalável de uma forma independente das restantes. Quanto mais fina
for a granularidade, mais camadas ou representações podem ser obtidas e mais eficiente
pode ser a adaptação às características das redes e terminais.
Deste modo, uma determinada técnica de codificação escalável pode ser sempre analizada segundo
duas dimensões: a primeira dimensão é a característica da imagem ou do vídeo e está relacionada
com as características do terminal ou ainda as preferências do utilizador; a segunda dimensão é a
granularidade e está relacionada com as características da rede de transmissão (e.g. variação da
largura de banda) e com o número de representações desejadas.
2.2.1 Características da imagem ou do vídeo
Para caracterizar uma determinada técnica de codificação escalável, é necessário classificá-la de
acordo com a dimensão das características da imagem ou vídeo usada para oferecer uma escala de
representações. Nesta Secção apresenta-se a classificação das técnicas de codificação escalável em
relação às características da imagem ou vídeo utilizadas para extrair as múltiplas representações do
fluxo binário codificado; identificaram-se cinco características básicas: resolução espacial, resolução
temporal, qualidade ou SNR, conteúdo e uma característica que resulta da estrutura da sintaxe do
fluxo binário codificado: a separação de dados. Quando se combinam diversos tipos de
características, pode alcançar-se um número superior de representações úteis, o que resulta num
novo tipo de escalabilidade: a escalabilidade combinada ou híbrida. Salienta-se que a(s)
característica(s) usada(s) vai(ão) ter forte influência no nível de granularidade que é possível obter a
partir do fluxo binário codificado, e.g. se a característica utilizada for apenas a resolução temporal é
díficil obter uma escalabilidade de granularidade muito elevada.
2.2.1.1 Escalabilidade espacial
A escalabilidade espacial permite a extracção de fluxos binários com diferente resolução espacial a
partir do fluxo escalável completo. Esta técnica permite oferecer conteúdos a terminais com
23
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
diferentes características em termos da resolução espacial a partir do mesmo fluxo codificado. A
Figura 2.5 ilustra este tipo de escalabilidade com M camadas escaláveis.
Imagem descodificada em M camadas espaciais
L(0)
L(1)
L(2)
L(M-1)
Fluxo Binário de Dados
Figura 2.5 – M camadas de escalabilidade espacial.
Na Figura 2.5, o fluxo binário encontra-se dividido em M camadas de escalabilidade espacial, desde a
camada L(0) até à camada L(M-1). Com a descodificação da primeira camada, o utilizador obtem
uma versão da imagem ou vídeo original com a menor resolução espacial possível. A descodificação
da segunda camada permite obter mais informação que, adicionada à primeira camada, resulta numa
imagem reconstruída com uma maior resolução espacial. À medida que se descodificam mais
camadas, a imagem reconstruída possui uma resolução espacial cada vez maior, até ao nível de
resolução espacial máximo. Quando se descodificam mais camadas adicionais, o utilizador obtem
aumentos sucessivos da resolução espacial da imagem até à resolução da imagem original ou até uma
resolução máxima estabelecida na fase de codificação. A escalabilidade espacial pode ser obtida
através de técnicas de codificação piramidal ou de multi-resolução (ver Secção 2.3.1)[4].
2.2.1.2 Escalabilidade temporal
A escalabilidade temporal permite a extracção de fluxos binários correspondentes a diferentes
resoluções temporais a partir do fluxo escalável completo. A descodificação da primeira camada
resulta numa versão do vídeo com baixa resolução temporal e a descodificação progressiva das
restantes camadas permite um aumento gradual da resolução temporal, como exemplificado na
Figura 2.6.
Imagem descodificada em M camadas temporais
L(0)
L(1)
L(2)
L(M-1)
Fluxo Binário de Dados
Figura 2.6 – M camadas de escalabilidade temporal.
24
CAPÍTULO 2 ― TÉCNICAS ESCALÁVEIS DE CODIFICAÇÃO DE VÍDEO
Idealmente, uma técnica de codificação escalável deve permitir uma qualidade visual excelente na
resolução temporal máxima mas também manter uma qualidade visual aceitável a resoluções
temporais mais baixas. A possibilidade de extrair de um fluxo de vídeo diversas resoluções temporais
é determinada pelo uso das técnicas de codificação Inter usadas, i.e. as técnicas usadas para explorar
a correlação entre tramas (compensação de movimento) e a codificação dos vectores de movimento
[11].
2.2.1.3 Escalabilidade de SNR
A escalabilidade de SNR (Signal to Noise Ratio) permite a extracção de fluxos binários
correspondentes a diferentes níveis de qualidade a partir do fluxo escalável completo. Este tipo de
escalabilidade é também designado por escalabilidade de qualidade, uma vez que o erro de
descodificação está relacionado com a qualidade perceptual da imagem. Neste caso, a um aumento
do número de camadas ou bits consumidos na descodificação corresponde um aumento da
qualidade da imagem ou vídeo sem variação das resoluções espacial ou temporal. Este tipo de
escalabilidade codifica sucessivamente o erro de codificação entre a imagem original e a sua
reconstrução numa dada camada. A Figura 2.7a) apresenta um fluxo binário com N camadas de
escalabilidade de SNR.
Regão descodificada em N camadas SNR
Imagem descodificada em M camadas SNR
L(0)
L(1)
L(2)
L(M-1)
L(0)
L(1)
L(2)
Fluxo Binário de Dados
Fluxo Binário de Dados
a)
b)
L(N-1)
Figura 2.7 – M camadas de escalabilidade de qualidade: a) ao nível da imagem; b) ao nível da região.
A descodificação da primeira camada fornece uma versão de baixa qualidade do vídeo em questão.
A sucessiva descodificação das restantes camadas resulta num aumento de qualidade até ao nível de
qualidade máxima. Um caso especial da escalabilidade de SNR é a sua aplicação a regiões ou
objectos que fazem parte de uma sequência de vídeo ou imagem. A Figura 2.7b) apresenta um fluxo
binário com N camadas de escalabilidade de SNR, para duas regiões: a primeira camada contém uma
região circular com uma qualidade superior à do fundo e à medida que mais camadas são
descodificadas a qualidade da região circular aumenta proporcionalmente de uma forma mais
significativa que a qualidade do fundo da imagem. Normalmente, desde a primeira camada que a
região da imagem com maior qualidade corresponde à região de maior interesse para o utilizador,
permitindo que este consiga vizualizar com maior detalhe uma determinada região (mais importante)
em detrimento de outras. Um bom exemplo de uma região visualmente importante é uma face; com
escalabilidade de qualidade ao nível da região, pode-se combinar um algoritmo de detecção de faces
com um sistema de codificação escalável de vídeo ou imagem que atribui uma maior qualidade a este
25
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
objecto desde as primeiras camadas e, consequentemente, a qualidade subjectiva de toda a imagem
ou vídeo é melhorada. Este último tipo de escalabilidade SNR é suportado pela norma JPEG2000
através da definição de regiões de interesse (apresentadas em detalhe na Secção 2.4.2) e pela norma
MPEG-4 Visual (perfil FGS), ver Secção 3.5.5.
2.2.1.4 Escalabilidade de conteúdo
A escalabilidade de conteúdo ou de objecto permite a extracção de fluxos binários correspondentes
a cenas com diferentes números de objectos a partir do fluxo escalável completo correspondente à
cena com todos os objectos. Como é natural, descodificam-se os vários objectos na cena segundo a
ordem decrescente da sua importância de modo a que, para uma certa quantidade de recursos, sejam
sempre descodificados primeiro os objectos mais relevantes. A Figura 2.8 exemplifica este tipo de
escalabilidade para uma cena de vídeo composta por cinco objectos: dois pivots, o fundo, um logo e
um écrã com uma bailarina a dançar; os vários objectos podem sobrepor-se ou não na cena final
consoante a forma como foi gerada a cena. A primeira camada contém o objecto com mais
importância (e.g. o pivot que se encontra a falar) e à medida que o número de camadas aumenta,
outros objectos com importância decrescente são adicionados à cena.
a)
c)
b)
d)
Figura 2.8 – Escalabilidade de conteúdo: a) um pivot; b) dois pivots; c) dois pivots, logo e fundo; d) dois
pivots, logo, fundo e écrã com bailarina.
Até ao momento, a única norma de codificação que suporta este tipo de escalabilidade é a norma
MPEG-4 Visual, através da definição do conceito de objecto de vídeo VO (Video Object) que,
normalmente, corresponde a um objecto com significado semântico na cena. Numa cena de vídeo
com vários objectos, um VO pode ser descodificado de uma forma independente dos restantes
permitindo assim que o cliente seleccione quais os objectos que pretende descodificar, e.g. de acordo
com os seus recursos. A escalabilidade de conteúdo pode ser combinada com outros tipos de
escalabilidade, e.g. espacial ou SNR, permitindo que os próprios objectos sejam individualmente
escaláveis e assim obter um maior número de representações úteis, a partir do fluxo binário
codificado de um único objecto. Por exemplo, a norma MPEG-4 Visual permite que cada objecto
seja escalável segundo a dimensão espacial (ou temporal), através da combinação de técnicas de
escalabilidade para a textura e para a forma dos objectos de vídeo.
2.2.1.5 Separação de dados
A escalabilidade por separação de dados permite a extracção de fluxos binários correspondentes a
diferentes conjuntos sintáticos de dados a partir do fluxo escalável completo. Neste tipo de
escalabilidade, o fluxo binário de dados é dividido em duas ou mais camadas, também referidas
como partições. A separação de dados, apesar de não ser muitas vezes considerada uma forma de
26
CAPÍTULO 2 ― TÉCNICAS ESCALÁVEIS DE CODIFICAÇÃO DE VÍDEO
codificação escalável de vídeo, permite que os dados de vídeo codificados sejam divididos em duas
ou mais classes de forma útil em termos de descodificação: por exemplo, dados essenciais e dados
adicionais. Na separação de dados, a distinção entre este dois tipos de dados é flexível dependendo
do débito binário desejado para cada classe. Por exemplo, o fluxo de dados pode ser dividido em
duas camadas: a primeira contendo informação sintaticamente mais importante, tais como os
vectores de movimento e coeficientes de baixa frequência da DCT, e a segunda contendo os
coeficientes DCT de mais alta frequência. A separação de dados pode ser implementada com uma
complexidade inferior quando comparada com outros esquemas de codificação por exigir uma única
passagem de codificação.
2.2.1.6 Combinação de tipos de escalabilidade
Os codificadores escaláveis de vídeo podem combinar os cinco tipos de escalabilidade atrás
apresentados para formar qualquer tipo de escalabilidade composta. Este tipo de escalabilidade é
referido na literatura como escalabilidade combinada ou híbrida e pode combinar dois ou mais dos
tipos de escalabilidade previamente apresentados. Os tipos de escalabilidade híbrida mais utilizados
são a escalabilidade espacial/SNR para imagens fixas e a escalabilidade espacial/temporal ou
SNR/temporal para sequências de vídeo.
Trama descodificada em camadas espaciais/SNR
SP(0)
SP(1)
SP(2)
SP(M-1)
Fluxo Binário de Dados
Figura 2.9 – N×M camadas de escalabilidade combinada espacial/SNR.
A Figura 2.9 ilustra o caso específico da escalabilidade combinada espacial e de SNR. Neste
exemplo, o fluxo binário de dados consiste em M camadas espaciais e cada camada espacial inclui N
camadas SNR. Assim, tanto a qualidade (em termos de SNR) como a resolução espacial podem ser
melhoradas à medida que progressivamente se transmite e se descodifica mais fluxo binário. A
ordem aqui exemplificada é espacial/SNR, i.e. para uma determinada resolução espacial melhora-se a
qualidade (SNR) da imagem de uma forma progressiva até um determinado patamar, passando-se de
seguida a melhorar a qualidade da imagem para uma resolução espacial superior e assim
sucessivamente.
A principal vantagem da combinação de técnicas de codificação escalável básicas consiste na criação
de um fluxo binário com uma granularidade mais elevada. Também permite uma maior flexibilidade
por parte do descodificador, pois este pode utilizar mais do que uma característica para representar
uma imagem ou vídeo. Normalmente, a utilização de mais de uma dimensão de escalabilidade para
27
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
representar uma imagem ou vídeo é obtida à custa de um acréscimo de complexidade no codificador
e descodificador. A escolha da combinação de escalabilidade depende da aplicação em causa e dos
seus requisitos. No transporte de vídeo na Internet, a escalabilidade SNR/temporal é a mais
utilizada, uma vez que a escalabilidade espacial possui uma complexidade maior (e.g. para a norma
MPEG-2 vídeo) e possui um impacto subjectivo maior quando a resolução espacial varia (e.g. de
CIF para QCIF) durante a visualização.
2.2.2 Nível de granularidade
O nível de granularidade de um fluxo binário escalável é uma importante medida na classificação das
técnicas de escalabilidade pois indica o número de representações úteis que podem ser extraídas do
mesmo fluxo binário. Nesta Secção apresenta-se a classificação das técnicas de codificação escalável
segundo a dimensão da granularidade; foram identificadas três categorias: escalabilidade de baixa
granularidade, com um número limitado de níveis de granularidade, escalabilidade de elevada
granularidade ou contínua no débito binário, com um número elevado de níveis de granularidade e
escalabilidade hibrída que combina a escalabilidade de baixa granularidade com a escalabilidade
contínua.
2.2.2.1 Escalabilidade de baixa granularidade
Nesta categoria, o fluxo binário pode ser descodificado segundo um conjunto não muito elevado de
débitos binários estabelecidos durante a codificação. O esquema de codificação comprime a
sequência de vídeo em várias camadas sendo uma dessas camadas a camada base, que pode ser
independentemente descodificada e fornece a qualidade visual mínima. As outras camadas são
camadas de melhoria e, apesar de poderem ser descodificadas de uma forma independente, só
podem ser úteis para melhorar a qualidade ou resolução da imagem quando todas as camadas
hierarquicamente inferiores forem também descodificadas. O fluxo binário combinado de todas as
camadas fornece a qualidade mais alta, i.e. a descodificação da camada base ou qualquer subconjunto
de camadas tem sempre qualidade visual inferior ao fluxo total. Esta técnica permite que a camada
base seja codificada com técnicas de codificação de canal mais robustas ou, numa rede que suporte
serviços diferenciados, a camada base pode ser transportada com uma prioridade mais elevada. Os
modos de escalabilidade oferecidos pelas normas MPEG-2 Vídeo, H.263+ e MPEG-4 Visual (aqui
há também outros modos) encaixam nesta categoria.
2.2.2.2 Escalabilidade de elevada granularidade ou contínua no débito binário
Ao contrário da categoria anterior, o fluxo binário pode ser descodificado a qualquer débito binário
ou seja com elevada granularidade. Esta técnica é muito flexível e permite ao servidor de vídeo
adaptar o débito binário do vídeo a distribuir às disponibilidades da rede com uma granularidade
muito fina ou seja com grande eficiência (todos os bits recebidos se tornam úteis). Para que a
escalabilidade seja contínua no débito binário, é necessário que todos os dados comprimidos sejam
embebidos num único fluxo e possam ser descodificados a diferentes débitos com uma variação
muito pequena entre eles. O descodificador recebe os dados comprimidos desde o princípio do
fluxo binário até ao ponto onde o débito binário escolhido seja alcançado. As imagens codificadas
com este tipo de escalabilidade podem ser descodificadas progressivamente, i.e. o descodificador
28
CAPÍTULO 2 ― TÉCNICAS ESCALÁVEIS DE CODIFICAÇÃO DE VÍDEO
apenas precisa de receber um conjunto muito pequeno de dados para começar a visualizar a imagem.
Na compressão de uma única imagem, os bits que possuem a informação mais importante são
incluídos no início do fluxo binário, de forma a que a qualidade visual seja maximizada para todos os
débitos. As normas JPEG, JPEG2000 e o modo VTC (Visual Texture Coding) da norma MPEG-4
Visual encaixam nesta categoria.
2.2.2.3 Escalabilidade hibrída
Este tipo de escalabilidade combina a escalabilidade de baixa granularidade com a escalabilidade
contínua. Este esquema de codificação comprime uma sequência de vídeo em duas camadas: uma
camada base e uma camada superior com escalabilidade contínua. No entanto, enquanto na
escalabilidade de baixa granularidade a(s) camada(s) superior(es) têm de ser totalmente recebidas e
descodificadas (em conjunto com a camada base) para haver uma melhoria de qualidade, na
escalabilidade hibrída a camada superior pode ser truncada em qualquer ponto. A melhoria de
qualidade é proporcional ao número de bits que o descodificador utiliza da camada superior. O
codificador apenas necessita de conhecer o intervalo de débitos binários [Rmin, Rmax] que irá ser
utilizado para consumir o conteúdo. Este tipo de escalabilidade é híbrido uma vez que possui uma
camada base independente codificada com Rmin (sem continuidade de escalabilidade) e uma camada
superior com escalabilidade contínua, alcançando-se um débito binário total máximo Rmax. O modo
de escalabilidade fina do MPEG-4 Visual (FGS) [31] encaixa nesta categoria.
2.3
Técnicas de codificação escalável
Para compensar a falta de previsibilidade das características dos terminais e das redes de transmissão,
muitas soluções foram propostas. Os esforços para melhorar a qualidade do vídeo descodificado
nestas condições podem ser classificados em duas categorias principais:
― Protocolos de transporte: Desenvolvimento de novos protocolos e arquitecturas
adequadas ao transporte de vídeo.
― Codificação de fonte: Desenvolvimento de mecanismos de codificação de vídeo que
permitam que o conteúdo seja facilmente adaptável às características da rede e dos terminais.
Em relação à primeira categoria, o trabalho desenvolvido concentra-se na criação de um ambiente o
mais adequado possível ao transporte de vídeo. Exemplos de tecnologias nesta categoria são:
serviços diferenciados e integrados, gestão de tráfego, controlo de congestão, códigos correctores de
erros e interleaving. As técnicas desenvolvidas na área do transporte de vídeo nas redes de
comunicação são importantes para o desempenho de um sistema completo de distribuição de vídeo.
Outro componente igualmente importante são os algoritmos de codificação do próprio sinal de
vídeo ou de imagem. Esta Secção tem como objectivo estudar as técnicas de codificação de fonte
mais relevantes no contexto desta tese ou seja as técnicas de codificação escalável de vídeo. Estas
técnicas suscitam bastante interesse por parte da comunidade científica e por parte da indústria com
vários sistemas de distribuição de vídeo já construídos a partir delas. Além disso novos estudos,
soluções e melhorias às técnicas já existentes são propostos todos os anos, com o principal objectivo
de melhorar a eficiência de codificação e/ou flexibilidade da adaptação.
29
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
Deste modo, seleccionaram-se quatro tecnologias de escalabilidade consideradas fundamentais,
apresentadas de seguida de forma independente apesar de possuírem algumas semelhanças
conceptuais entre si. A codificação piramidal será a primeira técnica a ser apresentada e consiste na
representação de imagens com vários níveis de resolução espacial/temporal, através de filtros de
subamostragem e sobreamostragem; esta técnica é usada em algumas das normas de codificação de
imagem e vídeo (e.g. JPEG, MPEG-2 Vídeo). A segunda técnica, codificação em sub-bandas ou
codificação com ôndulas, é uma das técnicas mais promissores na área da codificação escalável de
imagens e vídeo. Este tipo de transformadas gera uma representação em camadas da imagem ou
vídeo com uma elevada granularidade. A terceira técnica apresentada é baseada na transformada de
coseno discreta (DCT de Discrete Cosine Transform). Devido à popularidade desta transformada na
área da codificação de imagem e vídeo, vários esquemas escaláveis foram propostos e serão aqui
descritos. A quarta técnica pode ser usada apenas para vídeo e baseia-se na aplicação de matching
pursuits às imagens residuais do vídeo. Este esquema permite uma escalabilidade fina e baseia-se na
codificação das características mais importantes da imagem (i.e. com maior energia) antes das menos
importantes.
2.3.1 Codificação piramidal
Através da utilização de técnicas de subamostragem e sobreamostragem é possível construir uma
representação piramidal da imagem baseada na resolução espacial. Neste contexto, o termo
“piramidal” refere-se a uma estrutura de dados que permite obter um acréscimo de informação à
medida que se obtêm as diferentes camadas que formam esta estrutura de dados. A imagem no topo
da pirâmide tem a resolução espacial mínima. Os restantes níveis da pirâmide permitem reconstruir
imagens piramidais com resolução superior; para os níveis mais próximos da base da pirâmide
(informação máxima) o acréscimo de informação é inferior. Um dos primeiros trabalhos na área da
codificação escalável de imagens fixas utiliza uma estrutura piramidal e foi desenvolvido por Burt e
Adelson [4] em 1983; a arquitectura básica adoptada é ilustrada na Figura 2.10. A imagem de entrada
é processada por um filtro passa-baixo H(z) e subamostrada (2↓) de forma a obter uma
representação mais “grosseira” da imagem original, no caso com uma resolução espacial inferior. A
imagem subamostrada é quantificada (Qb) e, como contém menos informação que a imagem
original, pode ser codificada com um menor número de bits, dando origem à camada base. A
imagem da camada base é utilizada como predição para gerar o fluxo binário da camada superior,
pois é sobreamostrada (2↑), filtrada (filtro passa alto G(z)) e subtraída à imagem original, obtendo-se
um erro de predição. Uma vez que as imagens naturais têm uma tendência para concentrar a sua
energia nas frequências espaciais mais baixas, este erro de predição (que representa as frequências
mais altas) tem uma energia inferior, o que permite uma maior eficiência de compressão. O resultado
é uma hierarquia de dois níveis constituída por uma representação básica da imagem e um erro de
predição quantificado (Qs) que permite melhorar a qualidade.
30
CAPÍTULO 2 ― TÉCNICAS ESCALÁVEIS DE CODIFICAÇÃO DE VÍDEO
Figura 2.10 – Estrutura piramidal de Burt e Adelson com 2 níveis.
Burt e Adelson ampliaram esta arquitectura para um número arbitrário de níveis, através da
aplicação recursiva desta decomposição. A Figura 2.11 apresenta o esquema genérico de codificação
desenvolvido para o caso específico de quatro fluxos binários. O operador R representa as
operações de filtragem passa-baixo e subamostragem e o operador E o filtro passa-alto
(complementar do filtro passa-baixo) e a sobreamostragem.
Neste sistema de codificação piramidal dois tipos distintos de pirâmides são gerados: a pirâmide
gaussiana e a pirâmide laplaciana, tal como é ilustrado na Figura 2.11. A pirâmide gaussiana é gerada
através da filtragem recursiva e subamostragem da imagem original e é referida com este nome
porque o filtro utilizado em [4] tem uma forma aproximadamente gaussiana. A pirâmide laplaciana
corresponde a um conjunto de imagens diferença (excepto a imagem do topo) ou seja aos erros de
predição que permitem a reconstrução perfeita da imagem original. A pirâmide laplaciana é referida
com este nome porque a operação de diferença entre duas imagens gaussianas é muito semelhante
aos operadores de Laplace utilizados no processamento de imagem [34].
Figura 2.11 – Codificação e descodificação escalável com a técnica piramidal.
Na codificação com perdas, o conjunto das imagens da pirâmide laplaciana e a imagem do topo são
quantificadas e codificadas. O processo de descodificação tem de começar pela imagem de topo e
deve seguir uma abordagem do topo para a base. Em cada nível da pirâmide, a imagem
anteriormente descodificada serve como preditor e é somada à correspondente imagem laplaciana
depois de filtrada e sobreamostrada.
31
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
A pirâmide gaussiana pode ser entendida como um conjunto de representações em frequência da
imagem original. O primeiro nível da pirâmide laplaciana (imagem com a resolução máxima) é uma
representação passa-alto da imagem original, os níveis intermédios correspondem a representações
passa-banda e a imagem no topo da pirâmide é uma versão passa-baixo. Este processo de dividir
uma imagem em bandas de frequência é também referido como decomposição em sub-bandas, o
que significa que a codificação piramidal pode ser encarada como uma variante da codificação em
sub-bandas apresentada na Secção seguinte. Na codificação de cada imagem da pirâmide laplaciana
(que representa uma banda de frequências), a sensibilidade do sistema visual humano pode ser
explorada para reduzir o débito binário total. É bastante conhecido que a sensibilidade do
observador é maior para as frequências espaciais mais baixas; logo mais bits devem ser usados para
codificar este tipo de informação. Uma escolha adequada dos quantificadores permite reduzir o
débito binário total sem que o observador se aperceba da degradação da imagem.
Uma das principais desvantagens da estrutura piramidal é o aumento do número de amostras
utilizadas para predição, i.e. as decomposições piramidais possuem muita informação redundante.
Mais concretamente, uma imagem de 512×512 pixels é decomposta numa imagem de 256×256
pixels mais uma imagem de 512×512 pixels de refinamento, o que obriga a codificar mais 25% dos
dados em comparação com a codificação não escalável. No limite, o número total de amostras a ser
codificado é no máximo:
2
2
⎛1⎞ ⎛ 1 ⎞
⎛ 1 ⎞ 4
1 + ⎜ ⎟ + ⎜ 2 ⎟ + ... + ⎜ ∞ ⎟ = ,
⎝ 2⎠ ⎝ 2 ⎠
⎝2 ⎠ 3
2
i.e. há um aumento de 33% em termos de amostras o que é significativo. Em esquemas de
codificação de imagem, um aumento de 33% no número de amostras a codificar resulta numa
degradação apreciável na qualidade da imagem (se se usar um número determinado de bits). Esta
desvantagem pode ser ultrapassada se for utilizado um esquema de codificação entrópica eficiente;
no entanto, uma solução aceitável deste tipo ainda não foi encontrada.
Este esquema de codificação serviu de ponto de partida para muitos algoritmos de codificação
escalável de vídeo e imagem. Chaddha et al. [5] desenvolveram um esquema baseado numa pirâmide
laplaciana com três níveis, quantificação vectorial (estruturada em árvore) de cada nível e codificação
entrópica. Medidas de distorção baseadas na DCT e no erro quadrático médio foram incorporadas
na medição da distorção da quantificação vectorial. O algoritmo de codificação foi integrado num
sistema completo de distribuição de vídeo com vista oferecer serviços como o acesso a bases de
dados e o ensino à distância.
Em [21] é apresentado um sistema de codificação escalável espacial de vídeo através da extensão da
pirâmide laplaciana para uma sequência de vídeo. A estimação e compensação de movimento é
realizada entre tramas, no mesmo nível da pirâmide, obtendo-se assim um erro de predição que é
codificado numa estrutura piramidal. Em [14], Girod et al. apresentam um esquema de codificação
escalável baseado na decomposição piramidal do vídeo. A principal inovação deste esquema é a
introdução de uma pirâmide espacio-temporal combinada com um esquema de quantificação
vectorial. Um esquema de compensação de movimento permite explorar a redundância no domínio
temporal. Em [14] e [18] estudam-se técnicas de compensação de movimento em diferentes níveis
32
CAPÍTULO 2 ― TÉCNICAS ESCALÁVEIS DE CODIFICAÇÃO DE VÍDEO
da pirâmide (escalas) e técnicas de estimação de movimento hierárquicas de forma a obter uma
melhor eficiência de codificação em todos os débitos binários. A Figura 2.12 mostra a pirâmide
utilizada: as camadas 1 e 2 correspondem aos formatos SIF e QSIF, respectivamente, a camada 0
fornece a resolução espacial máxima de acordo com a norma ITU-R 601 (versão Americana) e a
camada 3 oferece a menor resolução espacial possível, para permitir o transporte do vídeo em redes
de baixo débito. Para permitir uma transmissão robusta em canais com elevadas taxas de erro (e.g.
difusão de TV digital terrestre), o codificador de fonte é combinado com um esquema de protecção
de erros que utiliza códigos convolucionais com taxas de codificação adequadas à importância de
cada camada [18].
Camada 3:
88 60
3.33Hz
Camada 2:
176 120
10Hz
Camada 1:
352 240
60Hz
Camada 0:
704 240
60Hz
Figura 2.12 – Exemplo de pirâmide espacio-temporal.
Este tipo de codificador foi também integrado num servidor de vídeo [19] que permite a transmissão
de vídeo na Internet através do protocolo RTP para controlo da sessão e transmissão de dados. Em
conclusão, a codificação piramidal serviu de ponto de partida para o desenvolvimento de muitos
algoritmos utilizados hoje em dia, nomeadamente para o modo hierárquico incluído na norma JPEG
e para a escalabilidade espacial e espacio-temporal incluídas nas normas MPEG-2 Vídeo, H.263+ e
MPEG-4 Visual.
2.3.2 Codificação em sub-bandas
A codificação em sub-bandas ou codificação baseada em ôndulas foi introduzida por Crochiere et al.
em 1976 para codificar áudio [12] e tem sido amplamente utilizada na codificação de imagem, vídeo
e áudio. Esta técnica simples, mas bastante poderosa, é baseada na decomposição do sinal utilizando
pares de filtros que permitem uma reconstrução perfeita (ou quase perfeita) do sinal. A operação
mais importante num sistema de codificação em sub-bandas é ilustrado na Figura 2.13: o sinal
original é dividido em dois, cada um com metade das amostras, através de filtragem e
subamostragem.
Figura 2.13 – Decomposição do sinal original em 2 sub-bandas.
33
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
Tal como na codificação piramidal, o sinal é decomposto em duas camadas, uma que permite uma
representação mais grosseira do sinal e outra que combinada com a primeira permite a recuperação
completa do sinal original. Neste caso, a decomposição é realizada através de dois filtros – um filtro
passa-baixo H1(z) e um filtro passa-alto H2(z) – usualmente referidos como filtros de análise. Os
sinais resultantes são subamostrados, quantificados e transmitidos independentemente. Para
reconstruir o sinal original, os sinais resultantes são sobreamostrados, filtrados por um par de filtros
de síntese G1(z) e G2(z) e, finalmente, adicionados.
Este princípio básico de dividir espectralmente o sinal em duas ou mais bandas de frequência é
adequado à codificação de imagem. Primeiro, as imagens têm tendência a concentrar a sua energia
nas frequências mais baixas. Segundo, o sistema visual humano possui uma sensibilidade menor às
frequências mais altas, o que permite ajustar a distorção na imagem de acordo com critérios
perceptuais. Por último, as imagens são processadas de forma diferente de outros codificadores que
estruturam a imagem em blocos adjacentes (codificadores baseados na DCT). A principal vantagem
é a eliminação do efeito de bloco, i.e. dos artefactos espaciais que ocorrem nas fronteiras entre os
blocos codificados. Na codificação em sub-bandas, os filtros de análise e síntese são desenhados de
forma a que a sua resposta em frequência não seja sobreposta (nonoverlapping criteria); como
consequência, as sub-bandas resultantes não estão correlacionadas (um teorema já provado diz que
processos aleatórios cuja banda de frequência não esteja sobreposta, não estão correlacionados [55])
o que satisfaz um dos principais objectivos de uma transformada num sistema de codificação de
vídeo ou imagem. Normalmente, os filtros são organizados em bandas com oitavas, tal como é
ilustrado na Figura 2.14; esta organização corresponde a dividir o espectro completo (W) por dois,
voltar a dividir a banda de frequência mais baixa por 2 e assim sucessivamente. Com esta
organização é possível uma adaptação mais adequada às características do sistema visual humano,
uma vez que as frequências mais baixas da imagem (e onde existe uma maior energia) ficam mais
descorrelacionadas e podem ser quantificadas de uma forma independente das outras sub-bandas.
Figura 2.14 – Banco de filtros passa-banda.
Na ausência de erros de quantificação, a imagem reconstruída deve ser uma cópia perfeita da
imagem de entrada. Para permitir esta característica, é necessário que os filtros de análise ocupem
todo o espectro sem se sobreporem na frequência, o que implica regiões de transição infinitamente
abruptas que não podem ser realizadas na prática. Como alternativa, os filtros de análise têm de
possuir regiões de transição finitas e que se sobrepõem na frequência, tal como ilustrado na Figura
2.14, o que significa que distorções podem ocorrer, devido ao efeito de aliasing. Para cancelar este
efeito, é necessária a utilização de uma certa classe de filtros, denominados por filtros ortogonais,
que permitem a eliminação das componentes de distorção.
34
CAPÍTULO 2 ― TÉCNICAS ESCALÁVEIS DE CODIFICAÇÃO DE VÍDEO
Em [57], Vetterli sugeriu que a transformada DWT (Discrete Wavelet Transform) fosse aplicada à
codificação de imagem, através da filtragem sucessiva nas direcções horizontais e verticais. Um
exemplo deste tipo de codificação é ilustrado na Figura 2.15.
Figura 2.15 – Decomposição bidimensional na frequência de uma imagem.
Em primeiro lugar, aplicam-se os filtros horizontais, do que resultam duas imagens distintas,
referidas como a sub-banda L e a sub-banda H; de seguida, aplicam-se os filtros verticais a cada uma
delas do que resulta uma imagem LL e três bandas LH, HL e HH que, quando somadas, permitem
obter uma reconstrução da imagem original. Saliente-se que, devido às operações de
subamostragem, o número total de amostras não se altera.
Como se pode reparar, a estrutura em camadas está implícita no esquema de codificação, podendo
cada banda ser codificada e transmitida independentemente, i.e. a escalabilidade é inerente ao
próprio esquema de codificação. Esquemas de codificação bidimensionais com múltiplas bandas
podem ser desenvolvidos a partir da estrutura apresentada na Figura 2.13 ou seja através da
aplicação recursiva da decomposição em duas bandas. Uma transformada DWT de sete bandas é
apresentado na Figura 2.16, onde a divisão de bandas é aplicada alternadamente nas direcções
horizontal e vertical.
Figura 2.16 – Decomposição DWT multi-banda.
A hierarquia que resulta da aplicação de uma transformada deste tipo é apresentada na Figura 2.17.
No lado esquerdo apresentam-se as imagens correspondentes às sete bandas, devidamente
amplificadas para permitir a visualização dos detalhes que contêm. À direita, apresenta-se a
disposição das sete bandas com a respectiva correspondência em relação à decomposição
apresentada na Figura 2.16.
35
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
LL
HL2
1
2
3
4
5
LH2
HH2
6
HL1
7
LH1
HH1
Figura 2.17 – Sete bandas geradas pelo codificador da Figura 2.16.
As vantagens desta transformada em relação aos codificadores baseados na DCT são a ausência de
efeito de bloco, o bom desempenho em termos de eficiência, especialmente para imagens fixas, e a
geração de uma representação escalável. Por estes motivos, esta técnica foi adoptada pelas normas
MPEG-4 Visual (para imagens fixas) e JPEG2000 e várias propostas interessantes para a codificação
de vídeo com base nesta técnica foram recentemente feitas ao MPEG no contexto da actividade
dedicada ao estudo da codificação escalável de vídeo.
2.3.2.1 Codificação de imagens em sub-bandas
As técnicas de codificação em sub-bandas descritas até aqui permitem transformar o sinal do
domínio do tempo para o domínio da frequência, mas não o codificam. Uma das vantagens da
representação em sub-bandas de uma imagem é permitir usar algoritmos de compressão perceptual
eficientes já que a estrutura hierárquica em escalas (ou resoluções) é adequada às características do
sistema visual humano. Uma das técnicas de codificação em sub-bandas mais simples [57] consiste
em processar cada uma das bandas numa ordem de varrimento definida, quantificar cada coeficiente
de acordo com a importância de cada banda (são atribuídos mais bits às bandas com frequências
espaciais mais baixas) e codificar os coeficientes quantificados com um codificador entrópico
adequado à estatística do sinal.
Um dos objectivos da análise em sub-bandas consiste na decomposição de uma imagem num
conjunto descorrelacionado (na frequência) de bandas e isolar os detalhes da imagem em diferentes
escalas; no entanto, a representação em sub-bandas de imagens naturais possui uma forte correlação
espacial entre bandas. Tal como se pode observar na Figura 2.17, existe uma correlação entre a
localização de regiões em diferentes sub-bandas. Muitas vezes estas regiões correspondem a
descontinuidades ou contornos na imagem original, i.e. frequências altas que necessitam da
contribuição de todas as sub-bandas para serem representadas. Outra característica importante é que
existem muitos coeficientes numa determinada sub-banda que têm valores muito perto de zero.
Assim, parece conveniente seleccionar um conjunto reduzido de coeficientes que minimize o erro
quadrático médio da codificação para um dado débito binário, i.e. codificar apenas um conjunto
limitado de coeficientes na zona de mais alta frequência. Contudo este método exige que o
codificador envie informação sobre a posição dos coeficientes escolhidos bem com a respectiva
36
CAPÍTULO 2 ― TÉCNICAS ESCALÁVEIS DE CODIFICAÇÃO DE VÍDEO
amplitude, para que os dados possam ser descodificados correctamente. Dependendo do método
usado, a informação sobre a posição dos coeficientes pode requerer um número de bits mais ou
menos significativo, penalizando mais ou menos a eficiência de codificação.
Um grande avanço na codificação de imagens baseada na DWT, surgiu quando Shapiro introduziu o
algoritmo EZW [48] (Embedded Zero-tree Wavelet) que codifica implicitamente a posição dos
coeficientes. O algoritmo apresentado tem um desempenho superior em relação aos codificadores
baseados na DCT [44] e marcou uma nova era para os codificadores DWT. Este algoritmo gera um
fluxo binário embebido, i.e. que pode ser cortado em qualquer ponto e ainda obter uma
representação útil da imagem; à medida que mais bits são descodificados maior é a qualidade da
imagem descodificada. O codificador EZW baseia-se em duas observações importantes:
― As imagens naturais tendem a possuir maior energia nas frequências mais baixas. Quando a
uma imagem é aplicada a transformada DWT, os coeficientes resultantes irão ter uma
amplitude decrescente à medida que a sub-banda tem uma resolução espacial superior (o que
corresponde a frequências mais altas).
― Coeficientes com amplitudes maiores são mais importantes que pequenos coeficientes.
A última observação é explorada através da codificação dos coeficientes DWT em vários
varrimentos. O algoritmo EZW implementa uma aproximação sucessiva dos coeficientes através de
limiares sucessivamente decrescentes. O limiar é inicializado com o valor do coeficiente com maior
amplitude e em cada varrimento este valor é dividido por dois. Este limiar é utilizado para sinalizar
ao descodificador se os valores de cada coeficiente são maiores ou menores que o limiar. Este
esquema é equivalente a enviar o bit mais significativo de cada coeficiente primeiro e refinar
sucessivamente o valor de cada coeficiente através do envio dos restantes bits nos varrimentos
seguintes. Paralelamente, este algoritmo oferece também uma solução elegante para o problema da
correlação entre sub-bandas e elimina a necessidade de enviar a posição dos coeficientes DWT
através da definição de uma estrutura em árvore, referida como quad-tree. Um coeficiente num subbanda baixa (i.e. que corresponde a uma banda de frequência baixa) possui quatro descendentes na
próxima sub-banda mais alta; ver Figura 2.18a). Os quatro descendentes por sua vez também
possuem quatro descendentes na próxima sub-banda mais alta e assim sucessivamente até todas as
sub-bandas serem varridas; emerge assim uma árvore quad-tree onde cada nó (ou coeficiente) da
árvore possui sempre quatro descendentes, ver Figura 2.18b). Esta estrutura permite uma
representação compacta dos coeficientes, em sub-bandas diferentes mas espacialmente
correlacionados.
b)
37
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
a)
Figura 2.18 – Relações entre os coeficientes DWT em sub-bandas diferentes.
O algoritmo EZW tira partido desta estrutura através da definição de um tipo específico de árvore: a
zero-tree. Uma zero-tree é uma quad-tree na qual todos os nós da árvore são iguais ou menores que a raiz
da árvore [48]. A árvore é codificada com um único símbolo e de acordo com o princípio da
aproximação sucessiva, a raiz da árvore tem de ser menor que o limiar estabelecido para o
varrimento em causa. O codificador explora a ocorrência de zero-trees baseado na primeira
observação atrás estabelecida ou seja que os coeficientes DWT decrescem de amplitude com o
aumento da resolução da sub-banda. Se a imagem for varrida com uma ordem pré-definida,
começando na sub-banda com menor resolução e evoluindo para a maior resolução, muitas posições
são implicitamente codificadas através de símbolos que correspondem a zero-trees. Para este efeito, o
algoritmo EZW mantem duas listas: uma lista dominante que contém a localização de todos os
coeficientes não significativos (i.e. menores que o valor do limiar) encontrados em varrimentos
anteriores e uma lista subordinada que contém a magnitude de todos os coeficientes significativos
(i.e. maiores que o valor do limiar) encontrados em varrimentos anteriores. Em [56] pode encontrarse uma descrição mais detalhada deste algoritmo, com exemplos e estudos de desempenho.
Um grande número de métodos de codificação foram propostos desde a introdução do algoritmo
EZW [53][61][45] tendo como característica comum a utilização dos conceitos fundamentais
introduzidos pelo algoritmo EZW. Um dos métodos mais populares é o algoritmo SPIHT [45] (Set
Partitioning in Hierarchical Trees) que melhora o desempenho do algoritmo EZW e evita a utilização do
codificador entrópico. Este algoritmo utiliza estruturas em árvore diferentes e permite que os
símbolos zero-tree sejam gerados em mais casos, i.e. permite a combinação em paralelo de zero-trees.
Este algoritmo define regras para dividir e varrer o conjunto de árvores e coeficientes partilhados
pelo codificador e descodificador. Outra técnica é o algoritmo EBCOT [53] (Embedded Block Coding
with Optimized Truncation) que foi escolhido como base para a norma JPEG2000 e é apresentado em
detalhe na Secção 2.4.2. Uma comparação do desempenho deste e de outros algoritmos pode ser
encontrada em [22].
2.3.2.2 Codificação de vídeo em sub-bandas
Todas as técnicas apresentadas até ao momento nesta Secção, são exemplos de algoritmos de
codificação de imagens fixas, i.e. só funcionam a duas dimensões e não se aplicam directamente a
sequências de vídeo. Uma extensão trivial da codificação em sub-bandas de imagens fixas é a
codificação de cada trama de vídeo independentemente, tal como no designado formato MJPEG
(Motion JPEG) onde cada trama da sequência de vídeo é codificada independentemente com a
norma de compressão de imagem JPEG. No entanto, este esquema resulta numa eficiência de
codificação baixa, uma vez que não se explora a redundância temporal entre tramas. Por este
motivo, várias técnicas de codificação de vídeo utilizando ôndulas foram propostas.
Codificador híbrido DCT/DWT
Um das arquitecturas possíveis consiste em combinar a transformada DWT com a transformada
DCT num esquema de codificação híbrido [50]. A Figura 2.19 mostra o diagrama de blocos do
38
CAPÍTULO 2 ― TÉCNICAS ESCALÁVEIS DE CODIFICAÇÃO DE VÍDEO
codificador. Cada trama do vídeo de entrada é transformada em N sub-bandas através da
transformada DWT. A sub-banda LL é codificada usando um codificador baseado na DCT, neste
caso segundo a norma MPEG-1 Vídeo. As sub-bandas restantes são compensadas de movimento e
codificadas com a técnica EZW. As três sub-bandas HL, LH e HH, como possuem a mesma
resolução espacial, sofrem a mesma compensação de movimento que a sub-banda LL, i.e. utilizando
os mesmos vectores de movimento que são usados na codificação MPEG-1 da banda LL. Para as
sub-bandas com resolução espacial superior, são necessários vectores de movimento com uma
maior precisão. Para este efeito, a imagem reconstruída a partir das sub-bandas LL, HL, LH e HH é
utilizada para calcular novos vectores de movimento. Todas as sub-bandas no nível de resolução
espacial superior são compensadas utilizando estes novos vectores de movimento. Este processo é
repetido até que todas as sub-bandas sejam codificadas com o método EZW.
Figura 2.19 – Esquema de codificação híbrido DCT/DWT.
O codificador MPEG-1 Vídeo codifica apenas a sub-banda LL que possui a menor resolução
espacial e a menor qualidade (apenas as frequências mais baixas estão presentes) e o fluxo binário
gerado corresponde à camada base. O algoritmo EZW gera uma representação escalável de elevada
granularidade e permite extrair do fluxo binário (camada superior) vários níveis de qualidade e
resolução espacial, dependendo da forma como as zero-trees são quantificadas e varridas. Por
exemplo, se se desejarem vários níveis de qualidade é necessário estabelecer um conjunto de limiares
(aproximações sucessivas) com valores decrescentes. Se se desejarem vários níveis de resolução
espacial, é necessário percorrer primeiro todos os coeficientes das zero-trees pertencentes às subbandas com resolução espacial inferior e depois a percorrer todos os coeficientes das zero-trees de
sub-bandas com resolução espacial superior e assim sucessivamente.
Codificação em sub-bandas do sinal residual
Outro tipo de técnicas concentra-se na codificação da diferença entre as imagens descodificadas
localmente pelo codificador e as imagens originais. Esta diferença corresponde a um sinal residual,
que contém toda a informação necessária para representar o sinal de vídeo com a qualidade máxima.
A estrutura do codificador é apresentada na Figura 2.20. Este codificador possui uma estrutura
híbrida em termos de escalabilidade (tal como a técnica anterior) pois gera duas camadas: uma
camada base que tem de ser totalmente descodificada e uma camada superior que permite uma
granularidade elevada, i.e. pode ser truncada em qualquer ponto do débito binário. Em [43],
apresenta-se um esquema em que a camada base é gerada por um codificador baseado na DCT
(MPEG-4 Visual) e a camada superior é gerada por um codificador baseado na transformada DWT,
permitindo oferecer uma escalabilidade muito fina. A codificação dos coeficientes resultantes da
39
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
DWT pode ser efectuada por qualquer um dos métodos de codificação já apresentados ou um novo
método desenvolvido para o efeito. Esta técnica foi uma das candidatas para o modo de
escalabilidade fina desenvolvido para a norma MPEG-4 e o modo de codificação utilizado foi o
SPIHT.
Figura 2.20 – Esquema de codificação híbrida DCT/DWT de imagens residuais.
Pirâmide de ôndulas espacio-temporal
Karlsson e Vetterli foram dos primeiros, em 1989, a aplicar as técnicas de codificação em subbandas ao vídeo através da introdução de uma pirâmide de ôndulas espacio-temporal [35]. Neste
modelo, a decomposição em sub-bandas é efectuada espacialmente em cada trama mas também
temporalmente entre tramas consecutivas. Em vez de codificar cada trama independentemente, a
decomposição em sub-bandas cria duas novas tramas que representam a média e a diferença das
duas tramas originais. Se existe pouco movimento, a diferença entre tramas é aproximadamente zero
e logo é comprimida utilizando poucos bits. Caso contrário, se existe muito movimento, a média
captura o movimento de uma forma difusa e a diferença contém a informação de melhoria
necessária para recuperar o detalhe original. Este esquema pode ser generalizado para um número
arbitrário de tramas através de filtros temporais com uma maior dimensão e/ou com várias
iterações. A principal desvantagem deste método advêm do facto de não possuir os módulos de
estimação e compensação de movimento, explorando assim de forma pouco eficiente a correlação
temporal.
Em [13] apresenta-se uma solução com o objectivo de melhorar o modo de escalabilidade espacial e
temporal da norma MPEG-2 Vídeo através da análise em sub-bandas. A filtragem temporal é
efectuada através de dois filtros lineares (ver Figura 2.21) o que resulta em duas tramas. Estas duas
tramas são decompostas em oito sub-bandas espacio-temporais. Três sub-bandas da trama diferença
são eliminadas por corresponderem a informação menos relevante para o sistema visual humano. A
sub-banda LL da trama média é codificada através da DCT e enviada na camada base. As subbandas restantes são também codificadas através da DCT mas enviadas na camada superior. Neste
sistema explora-se a correlação temporal entre sub-bandas da mesma camada, através de módulos de
estimação e compensação de movimento.
40
CAPÍTULO 2 ― TÉCNICAS ESCALÁVEIS DE CODIFICAÇÃO DE VÍDEO
∑
∑
Figura 2.21 – Análise em sub-bandas: filtro espacio-temporal
Codificação de vídeo em sub-bandas 3D
A codificação tri-dimensional (horizontal, vertical e temporal) é uma abordagem alternativa aos
sistemas de codificação híbrida, baseados na DCT e compensação de movimento, utilizados hoje em
dia nas normas de codificação de vídeo. Este tipo de técnicas permite oferecer múltiplas resoluções
espaciais e temporais e uma gama fina de débitos binários. O diagrama de blocos do codificador é
apresentado na Figura 2.22. O vídeo a codificar é processado por um módulo de estimação e
compensação de movimento e por técnicas de decomposição e codificação em sub-bandas de forma
a explorar a correlação espacial e temporal do vídeo.
Figura 2.22 – Estrutura do codificador de vídeo usando bandas 3D.
As sub-bandas de alta frequência contêm a informação sobre os contornos presentes na imagem.
Quando estes contornos estão em movimento, a filtragem temporal torna-os pouco nítidos o que
leva a uma diminuição na eficiência de codificação. Para evitar este efeito, é necessária a utilização de
um esquema de compensação de movimento de forma a apresentar ao sistema de codificação em
sub-bandas uma sequência de imagens com o mínimo de movimento possível. Em [52], uma técnica
de compensação de movimento global elimina movimentos de câmara translacionais e, em [54], um
modelo de movimento mais complexo efectua compensação de movimento quando ocorrem
ampliações (zooms) ou movimentos (locais) de objectos. De seguida, as imagens compensadas são
decompostas em sub-bandas, através da transformada DWT. Dependendo das resoluções espaciais
e temporais que se pretendem obter, vários filtros temporais e espaciais são utilizados. Em [52],
utilizam-se estruturas em que uma decomposição temporal em duas sub-bandas (frequências altas e
baixas) é aplicada a cada sub-banda espacial. Cada sub-banda temporal correspondente às
frequências baixas pode ainda ser dividida em mais sub-bandas temporais para se construir uma
hierarquia temporal; deste modo uma combinação de 34 modos de resolução espacial e temporal são
suportados. Em [54], um conjunto de tramas é agrupado (este conjunto é constituído por um
41
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
número par de tramas) e decomposto temporalmente em sub-bandas; de seguida, uma
decomposição espacial é efectuada para cada sub-banda temporal. Esta estrutura permite obter entre
0 a 30 sub-bandas que correspondem a um conjunto de resoluções espaciais e temporais. Por fim, a
última etapa do codificador consiste na codificação de cada sub-banda, uma das etapas mais
importantes. Para que o desempenho seja o mais elevado possível, é necessário explorar a correlação
entre sub-bandas, tanto espacialmente como temporalmente. Em [52], uma combinação de
esquemas de codificação baseados nas técnicas PCM, DPCM (Diferential Pulse Code Modulation) e RLE
(Run Length Encoding) é utilizada; em [54], usa-se uma extensão 3D do algoritmo EZW; e, finalmente,
em [36] uma extensão 3D do algoritmo SPIHT foi desenvolvida para o efeito. Este tipo de técnicas
apresentam um bom desempenho mas necessitam de múltiplas tramas em memória para serem
processadas simultaneamente, o que significa que as exigências de memória no codificador e
descodificador são elevadas e o tempo de atraso na comunicação é maior quando comparado com
os algoritmos de codificação baseados na DCT e compensação de movimento.
Em conclusão, as principais dificuldades na utilização de esquemas de codificação em sub-bandas
para vídeo estão associadas à forma de modelar o movimento e à elevada complexidade
computacional. Por estes motivos, as técnicas baseadas na DWT não foram ainda adoptadas em
nenhuma norma de codificação de vídeo (e.g. MPEG). Por enquanto, a melhoria no desempenho
não parece ser significativa ou as exigências em termos computacionais, de memória ou atraso são
ainda muito elevadas. Contudo, estudos [15][16] recentes parecem indicar que esta situação poderá
vir a alterar-se um futuro próximo.
2.3.3 Transformada DCT
A transformada do coseno discreta (DCT) é utilizada por várias normas de codificação de imagem e
vídeo, e.g. JPEG, H.261, MPEG-1, MPEG-2, H.263 e MPEG-4. Esta técnica é aplicada a blocos da
imagem e está normalmente associada a técnicas de compensação de movimento, nomeadamente no
popular esquema híbrido de codificação de vídeo DPCM/DCT. Neste esquema, vários tipos de
imagens codificadas podem coexistir, nomeadamente se houver requisitos de acesso aleatório:
imagens do tipo I que não possuem referências a tramas passadas e/ou futuras, imagens do tipo P
que dependem da trama I ou P anterior e imagens do tipo B que dependem das tramas I ou P
anterior e seguinte. A primeira técnica aqui apresentada explora esta estrutura; técnicas mais simples
poderão possuir apenas codificação do tipo P como a norma H.261.
Ao contrário das técnicas baseadas na transformada DWT, a transformada DCT não produz uma
representação em camadas e, por este motivo, foi necessário o desenvolvimento de técnicas que
permitissem uma codificação eficiente e progressiva dos coeficientes DCT. Algumas das técnicas
aqui apresentadas podem ser aplicadas a outras transformadas ou utilizadas em esquemas de
transcodificação (ou filtragem); no entanto, são aqui apresentadas devido à sua popularidade nos
esquemas de codificação escalável baseados na DCT:
― Selecção de Tramas: Uma representação escalável do vídeo pode ser obtida através da
selecção de tramas para diferentes camadas. No caso de vídeo codificado com as normas
MPEG-2 Vídeo, MPEG-4 Visual ou ITU-T H.26x, a abordagem mais comum é estabelecer
duas camadas: as tramas I e P são transmitidas na primeira camada (camada base) e as tramas
42
CAPÍTULO 2 ― TÉCNICAS ESCALÁVEIS DE CODIFICAÇÃO DE VÍDEO
B são transmitidas na camada de melhoria (camada superior). Com uma estrutura temporal
apropriada, é possível obter uma duplicação ou triplicação da frequência de trama com a
camada superior e assim oferecer escalabilidade temporal. Este esquema de codificação
encontra-se normalizado na norma H.263+, mas pode ser aplicado a qualquer representação
não escalável de vídeo, e.g. Chang e Zakhor [6] implementaram escalabilidade temporal na
norma MPEG-1 Vídeo através da selecção e armazenamento das tramas de um GOP (Group
of Pictures) numa ordem específica.
― Selecção de Componentes: As imagens ou sequências de imagens a codificar possuem já
por si uma representação escalável uma vez que são representadas por um espaço de cor que
possui mais do que uma componente. O espaço de cor YUV é normalmente usado (nas
normas de codificação de imagem e vídeo) e é constituído por uma componente Y que
corresponde à luminância e duas componentes U e V que correspondem às crominâncias.
Deste modo, é possível desenvolver esquemas de codificação escalável que tiram partido
desta característica. Vários esquemas foram propostos, por exemplo enviar numa camada
apenas os coeficientes DCT da luminância e noutra camada os coeficientes DCT das
crominâncias, ou enviar numa camada os coeficientes DCT da luminância e o coeficiente
DC da crominância e noutra camada enviar os coeficientes AC das crominâncias. Este
esquema é apropriado para o caso dos terminais possuírem diferentes características em
termos da resolução de cor, e.g. quando coexistem terminais móveis em que o écrã apenas
suporta uma paleta de cinzentos e terminais em que o écrã suporta uma paleta com vários
níveis de cor. Este esquema é suportado pela norma JPEG.
― Selecção de coeficientes: Uma característica importante da transformada DCT é que esta
técnica é aplicada a pequenos blocos da imagem (e.g. em quase todas as normas, a dimensão
dos blocos é de 8×8 pixels). Outra característica importante é que a transformada DCT está
relacionada com a transformada de Fourier discreta e os coeficientes DCT têm uma
interpretação no domínio da frequência. Os coeficientes DCT são normalmente varridos
para um vector numa sequência pré-definida (zig-zag), das frequências mais baixas para as
mais altas, tal como é ilustrado na Figura 2.23. Deste modo, os coeficientes DCT nas
posições mais baixas do vector correspondem a frequências espaciais baixas no bloco da
imagem; por outro lado, os coeficientes DCT em posições altas correspondem a frequências
altas. O coeficiente na posição [0,0] do bloco é referido como coeficiente DC e corresponde
à intensidade média num bloco da imagem (luminância ou crominância); os restantes
coeficientes são referidos como coeficientes AC. Várias técnicas de codificação escalável
tiram partido desta característica, através da implementação de filtros no domínio da
frequência. A Figura 2.23 exemplifica o caso da filtragem para duas camadas, uma passabaixo e outra passa-alto: todos os coeficientes com ordem no varrimento zig-zag inferior a
um dado valor (coordenada T) são codificados na camada base (a camada com maior
importância) e todos os restantes coeficientes são codificados na camada superior. Este
esquema pode ser generalizado para um maior número de camadas através de filtros passabanda, tendo sido adoptado pelo modo de separação de dados da norma MPEG-2 Vídeo e
pela norma JPEG.
43
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
Figura 2.23 – Geração de duas camadas de coeficientes através de filtragem passa-baixo no domínio da
frequência.
― Re-quantificação: Este esquema é baseado na aplicação de diferentes passos de
quantificação para cada camada do vídeo ou da imagem a codificar. A Figura 2.24 ilustra este
tipo de escalabilidade. Os coeficientes DCT são quantificados pelo passo a e de seguida
inversamente quantificados com o mesmo passo. Os coeficientes DCT originais e os
coeficientes DCT inversamente quantificados são subtraídos, gerando-se o erro de
quantificação. Este erro pode ser re-quantificado com um passo de quantificação diferente
(menor) e processado da forma já descrita. Este estrutura pode ser generalizada para um
número arbitrário de camadas. Através do uso de passos de quantificação adequados, é
possível distribuir o débito binário (e consequentemente a qualidade) para cada camada, de
acordo com os requisitos da aplicação. Normalmente, à medida que o número da camada
diminui, o passo de quantificação diminui ( c < b < a ). Este esquema de codificação é
suportado pelo modo de escalabilidade SNR da norma MPEG-2 Vídeo.
Figura 2.24 – Re-quantificação dos coeficientes DCT em 3 camadas.
― Codificação em planos de bit: Na codificação convencional baseada na DCT, os
coeficientes DCT quantificados são codificados através da técnica RLE (Run Length
Encoding). Com esta técnica, o número de zeros consecutivos antes de um coeficiente
diferente de zero na ordem de varrimento zig-zag é referido como número de ocorrências
(run). O valor absoluto do coeficiente DCT quantificado, diferente de zero, é referido como
nível (level). De seguida, os símbolos bidimensionais (n.º de ocorrências, nível) ou (run, level)
são codificados usando uma tabela VLC (Variable Length Codes). Um símbolo eob (End Of
Block) é utilizado para definir o fim do bloco ou seja o facto de não haver mais coeficientes
para codificar no bloco em questão. O método de codificação em planos de bit é diferente
pois considera cada coeficiente DCT como um número binário com vários bits em vez de
44
CAPÍTULO 2 ― TÉCNICAS ESCALÁVEIS DE CODIFICAÇÃO DE VÍDEO
um inteiro com um determinado valor [37]. A Figura 2.25 ilustra esta técnica. Para cada
bloco de 8×8 coeficientes DCT, os 64 valores absolutos são estruturados num cubo em que
a altura corresponde ao número máximo de bits necessário para representar todos os
coeficientes. Os coeficientes são varridos em zig-zag e codificados com símbolos (n.º de
ocorrências, EOP) em que EOP (End Of Plane) vale 1 se se tiver chegado ao fim do plano de
bit e 0 no caso contrário. Esta técnica pode também ser aplicada a coeficientes resultantes da
aplicação de outro tipo de transformada, e.g. coeficientes DWT. Este esquema é utilizado
pela norma JPEG, JPEG2000 e pelo modo de escalabilidade fina da norma MPEG-4 Visual.
Figura 2.25 – Codificação dos coeficientes DCT em planos de bit.
― DCT Piramidal: Esta técnica tira partido de uma característica da DCT: a capacidade de se
efectuar subamostragem e sobreamostragem no domínio da frequência. Deste modo, é
possível combinar a estrutura piramidal atrás apresentada (ver Secção 2.3.1) e gerar uma
pirâmide de coeficientes DCT que são posteriormente quantificados e codificados
entropicamente [51]. Para se subamostrar uma imagem (no domínio da frequência) por um
factor de M/N (com M < N), é necessário aplicar a transformada DCT directa em blocos de
dimensão N×N e de seguida aplicar a transformada IDCT em blocos M×M utilizando os
coeficientes das frequências espaciais mais baixas. Este processo permite decompor a
imagem em duas componentes distintas: uma imagem subamostrada filtrada passa-baixo e
um conjunto de coeficientes DCT que correspondem às frequências mais altas da imagem. A
iteração deste método permite a geração de um conjunto de camadas, tal como é ilustrado na
Figura 2.26. Em cada nível da pirâmide, cada bloco de N×N pixels é codificado com a DCT.
O canto superior esquerdo de M×M coeficientes é inversamente transformado com a IDCT
para formar uma nova imagem com uma resolução inferior. Os restantes coeficientes são
quantificados e codificados. A imagem no último nível, que corresponde à imagem com a
resolução inferior, é simplesmente codificada com a DCT. Para se efectuar a descodificação,
a operação inversa é realizada, tendo como partida a imagem com resolução mais baixa. Esta
técnica permite um desempenho superior em relação à pirâmide laplaciana [50].
Figura 2.26 – Pirâmide DCT com três camadas.
45
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
Muitas das técnicas de escalabilidade aqui apresentadas podem ser combinadas para que o sistema
completo cumpra determinados requisitos; por exemplo, a norma JPEG combina as técnicas de
filtragem e codificação em planos de bit para permitir uma maior granularidade da escalabilidade.
2.3.4 Matching Pursuits
Um dos componentes mais importantes de um codificador de vídeo com estimação/compensação
de movimento é o algoritmo que se utiliza para codificar o erro de predição ou imagem residual, i.e.
a diferença entre a imagem compensada a partir da anterior e a imagem actual. Os sistemas atrás
descritos utilizam a transformada DCT ou a transformada DWT seguidas de quantificação e
codificação entrópica (e.g. códigos de Huffman). Uma técnica alternativa para a codificação do erro
de predição é o algoritmo de matching pursuits [41] que permite uma representação escalável do vídeo.
O algoritmo de matching pursuits (MP) utiliza, tal como a DCT, um conjunto de funções base para
representar o sinal de vídeo; no entanto, o número de funções base definidas é superior (permitindo
assim uma maior flexibilidade) em comparação com a transformada DCT. A utilização de um
conjunto maior de funções base (overcomplete basis set) contendo estruturas mais variadas que as
funções de base da DCT, permite representar o sinal residual com um conjunto menor de
coeficientes. A Figura 2.27 apresenta as funções base da DCT e as funções base do algoritmo MP
apresentado em [41] com 400 funções base (a DCT usa apenas 64), obtidas a partir de funções de
Gabor bidimensionais (2D). No contexto deste algoritmo, um conjunto de funções base é referido
como dicionário.
b)
a)
Figura 2.27 – a) Funções base da DCT; b) dicionário de Gabor 2D com 400 funções base [41].
A primeira etapa do codificador de matching pursuits é a divisão em blocos da imagem que
corresponde ao erro de predição. De seguida, o codificador mede a energia de cada bloco através da
soma quadrada dos valores dos pixels residuais e o centro do bloco que possui a maior energia é
utilizado como estimativa inicial para um processo de procura iterativo. O primeiro passo consiste
em definir uma janela de procura S×S em redor da estimativa inicial e de uma forma exaustiva (i.e.
percorrendo todas as posições da janela de procura) encontrar uma posição (x,y) e uma função do
dicionário adequada à representação de uma região da imagem (da mesma dimensão que a função do
dicionário escolhida). Mais detalhadamente, o processo de procura consiste em centrar cada função
do dicionário (com dimensão N×N) em todas as posições (x,y) contidas na janela de procura S×S e
calcular o produto interno entre a estrutura no dicionário e a correspondente região da imagem
N×N.
46
CAPÍTULO 2 ― TÉCNICAS ESCALÁVEIS DE CODIFICAÇÃO DE VÍDEO
O maior produto interno, uma referência para a estrutura do dicionário utilizada (posição x e y) e a
respectiva localização na imagem (posição x e y) formam o conjunto de cinco parâmetros a
codificar. Este conjunto de parâmetros é referido como um átomo e é codificado entropicamente.
Quando um átomo é determinado, é subtraído da imagem e o processo de procura é repetido. A
decomposição em átomos do erro de predição é ilustrada na Figura 2.28. Na Figura 2.28a)
apresenta-se uma trama da sequência original cujo resíduo é ilustrado em b); em c), apresenta-se a
localização dos primeiros cinco átomos. Como se pode ver, as características visuais mais
proeminentes são codificadas primeiro. A Figura 2.28d) e e) mostram a representação da imagem
residual com 30 e 64 átomos. O número total de átomos codificados é determinado pelo sistema de
controlo de débito face ao débito disponível.
a)
b)
c)
d)
e)
Figura 2.28 – Algoritmo de matching pursuits: a) trama 50 da sequência Hall Monitor; b) erro de predição: os
primeiros c) 5 átomos; d) 30 átomos; e) 64 átomos.
Quando se codifica a baixos débitos binários, a escolha das funções de base é extremamente
importante uma vez que o codificador deve representar cada imagem residual com poucos
coeficientes. Os codificadores baseados na DCT produzem imagens em que são muitas vezes
visíveis efeito de bloco e ruído de alta frequência em torno dos contornos dos objectos em
movimento. Ao utilizar um conjunto amplo de funções de base (e.g. 400 como em [41]) com uma
variedade de escalas e com localizações arbitrárias na imagem, é possível a eliminação desses efeitos.
Este codificador apresenta uma eficiência de codificação superior quando comparado com o
codificador H.263+, especialmente para débitos binários baixos (10 a 25 kbit/s); no entanto, possui
uma complexidade computacional superior o que limitou as suas possibilidades de sucesso no
contexto da norma MPEG-4 [1][41].
Este algoritmo permite que a representação do vídeo seja escalável com uma elevada granularidade,
uma vez que cada imagem residual é representada por um conjunto de átomos e cada átomo pode
ser independentemente descodificável, oferecendo um acréscimo de qualidade. No entanto, a
codificação entrópica dos 5 parâmetros dos átomos vai influenciar o desempenho e o número de
camadas de escalabilidade possíveis; normalmente, para se obter um desempenho superior, os
átomos são codificados em grupos de N átomos, permitindo assim que a respectiva localização na
imagem residual seja codificada de uma forma mais eficiente. Em [1], utiliza-se a codificação
entrópica de Huffman para codificar cada conjunto de átomos e conclui-se que o desempenho do
algoritmo de matching pursuits melhora à medida que o número de átomos codificados em conjunto
aumenta, i.e. existe uma troca entre eficiência de codificação e a granularidade do fluxo binário.
Vários métodos de codificação de pequenos grupos de átomos são apresentados em [1], incluindo
47
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
estudos sobre o seu desempenho e a sua granularidade. Esta técnica foi uma das propostas
apresentadas ao grupo MPEG como método de codificação de vídeo com elevada escalabilidade [7]
a ser incorporado na norma MPEG-4 Visual, mas não foi escolhida.
2.4
Normas de codificação para imagens fixas
As normas actualmente existentes para a codificação de imagens fixas ou texturas são o JPEG,
JPEG2000, o modo de codificação de textura incluído na norma MPEG-4 Visual designado por
VTC, a recomendação PNG (Portable Network Graphics) [59] e a norma JPEG-LS [26]. A norma
JPEG, finalizada em 1988, foi a primeira norma de codificação de imagens fixas e baseia-se na
transformada de coseno discreta conhecida por DCT de Discrete Cosine Transform. A norma JPEG
alcançou um enorme sucesso em todo o mundo e foi adoptada por um vasto conjunto de aplicações
como um meio eficiente para armazenar e transferir imagens fixas. No entanto, passados alguns
anos, tornou-se clara a necessidade de uma nova norma de codificação que respondesse às
exigências de um conjunto de aplicações que surgiram mais recentemente, e.g. bases de dados
multimédia. Apesar da popularidade do JPEG ultrapassar todas as restantes, as recentes normas
JPEG2000 e MPEG-4 VTC podem ter um futuro promissor, devido à sua maior eficiência de
codificação (ver Figura 2.29) e à capacidade de oferecerem novas funcionalidades (e.g. escalabilidade
SNR de regiões/objectos de interesse), ainda que à custa de alguma complexidade adicional. As
normas JPEG2000 e MPEG-4 VTC são baseadas na transformada discreta de ôndulas DWT e os
testes realizados indicam uma melhoria de desempenho, especialmente para taxas de compresssão
elevadas [46]; além disso, permitem um novo conjunto de funcionalidades, nomeadamente
resiliência a erros, escalabilidade espacial de qualidade, fácil processamento no domínio comprimido,
entre outras.
Figura 2.29 – Comparação entre a) JPEG e b) JPEG 2000 com 0.27 bpp (bits per pixel).
Nesta Secção apresenta-se uma descrição das normas JPEG e JPEG2000 dando ênfase aos modos
de escalabilidade especificados em cada uma delas. O modo de codificação escalável de textura da
norma MPEG-4 Visual é apresentado no Capítulo 3 onde se apresentam todos os modos escaláveis
incluídos nesta norma. Uma comparação entre as normas JPEG, JPEG2000, JPEG-LS, MPEG-4
VTC, PNG e outros algoritmos baseados na DWT pode ser encontrada em [42].
48
CAPÍTULO 2 ― TÉCNICAS ESCALÁVEIS DE CODIFICAÇÃO DE VÍDEO
2.4.1 A norma JPEG
Desde meados dos anos 80 que membros das organizações internacionais ITU (International
Telecommunications Union) e ISO (International Organization for Standardization) trabalham em conjunto
para definir normas internacionais para a codificação de imagens fixas. Este esforço de normalização
é conhecido como JPEG (Joint Photographic Experts Group). A norma mais conhecida do grupo JPEG
é a norma ISO 10918-1 ou ITU-T T.81, a primeira parte de um conjunto de normas para a
codificação de imagens fixas. O principal objectivo que esta norma pretendia atingir era desenvolver
um sistema de codificação o mais genérico possível que cumprisse os seguintes requisitos [3]:
1. Permitir que a aplicação (ou um utilizador) possa trocar facilmente eficiência de codificação
por qualidade de imagem.
2. Funcionar independentemente do tipo de imagem, i.e. o sistema não deve ser dependente do
conteúdo da imagem, espaço de cor, dimensão ou resolução espacial.
3. Possuir uma complexidade computacional baixa para permitir implementações em software e
hardware pouco exigentes.
4. Permitir codificação sequencial e progressiva; no modo sequencial a imagem é descodificada
num único varrimento e no modo progressivo a imagem é descodificada em múltiplos
varrimentos, permitindo a visualização da imagem à medida que é descodificada (e recebida).
5. Permitir codificação hierárquica da imagem, na qual uma representação de baixa resolução
espacial pode ser acedida sem ser necessário descodificar a imagem de máxima resolução.
A norma JPEG é utilizada por um grande e variado número de aplicações, como por exemplo
máquinas fotográficas digitais, digitalização de documentos, bases de dados multimédia e
transmissão de imagens. A sua inclusão como formato para imagens no sistema operativo Windows
teve uma influência determinante na sua difusão sendo hoje uma ferramenta básica para quem edita
documentos em HTML, Word ou produz apresentações em Powerpoint.
O algoritmo de compressão utilizado na norma JPEG é baseado na transformada de coseno discreta
(DCT). A DCT tem como principal objectivo descorrelacionar a informação que representa a
imagem e permitir explorar facilmente algumas características do sistema visual humano. Como o
sistema visual humano é menos sensível a altas frequências, os coeficientes DCT de alta frequência
são mais grosseiramente quantificados do que os coeficientes de baixa frequência. A norma JPEG
contém quatro modos básicos de operação: sequencial, progressivo, hierárquico e sem perdas. Os
modos escaláveis são o modo progressivo (escalabilidade de qualidade ou SNR) e o modo
hieráquico (escalabilidade espacial). De seguida, apresenta-se cada um dos modos de funcionamento
da norma JPEG com maior detalhe.
Modo sequencial
Para o modo sequencial, a imagem de entrada é dividida em blocos de 8×8 pixels não sobrepostos
que são processados sequencialmente pelos três módulos apresentados na Figura 2.30. Cada bloco
com 8×8 pixels de luminância ou crominância é transformado para o domínio da frequência através
da DCT bidimensional. Os 64 coeficientes DCT resultantes são quantificados usando uma tabela de
49
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
quantificação com 64 elementos que determina o passo de quantificação para cada um dos 64
coeficientes. Cada elemento da tabela pode ser um inteiro de 1 a 255 que especifica o passo de
quantificação para o coeficiente DCT correspondente. O objectivo da quantificação é representar os
coeficientes DCT com menos precisão de forma a alcançar a qualidade desejada (ou taxa de
compressão) para a imagem. Os valores na tabela de quantificação variam consoante a posição (ou
frequência) no bloco do coeficiente DCT; passos de quantificação baixos correspondem a
frequências baixas e passos de quantificação mais altos correspondem a frequências altas. Desta
forma, atribui-se uma maior importância às frequências mais baixas, explorando-se a maior
irrelevância para o sistema visual humano das componentes de mais alta frequência. Depois da
quantificação, o coeficiente DC (valor médio), i.e. o coeficiente no canto superior esquerdo do bloco
de 8×8 coeficientes DCT, é codificado diferencialmente em relação ao valor do coeficiente DC do
bloco preditor ou seja o bloco à esquerda. Os restantes coeficientes (AC) DCT são varridos em zigzag para um vector unidimensional e codificados entropicamente. A sequência zig-zag facilita a
codificação entrópica, pois coloca os coeficientes das frequências mais baixas (mais próximos) antes
dos coeficientes das frequências mais altas no vector (mais esparsos).
Figura 2.30 – Diagrama de blocos do JPEG.
De seguida, os coeficientes DCT quantificados são processados por um codificador entrópico de
Huffman ou aritmético que explora a redundância estatística presente no sinal. A codificação de
Huffman é a mais popular e é realizada através de um conjunto de tabelas presentes no codificador e
descodificador (no entanto, também podem ser calculadas adaptativamente para uma dada imagem e
enviadas ao descodificador). A codificação entrópica pode ser realizada de duas formas: codificação
de Huffman e codificação aritmética. A codificação entrópica de Huffman é realizada em duas etapas: a
primeira etapa converte o vector de entrada num conjunto de pares (run, level); cada coeficiente AC
diferente de zero é representado por um valor run que indica o número de coeficientes a zero que o
precedem (a sua posição) e pela sua amplitude quantificada, level. Um símbolo especial eob (end of
block) é transmitido se o resto dos coeficientes a codificar no bloco tem o valor zero. Desta forma,
consegue-se explorar a maior probabilidade dos coeficientes que correspondem a frequências altas
serem zeros (especialmente depois do processo de quantificação). A segunda etapa converte a
sequência de pares (run, level) em códigos de comprimento variável que não possuem limites
identificáveis, através de um conjunto de tabelas de codificação. Por outro lado, o método de
codificação aritmética não necessita de tabelas para codificar os coeficientes DCT, uma vez que
efectua uma adaptação à distribuição estatística dos coeficientes DCT da imagem. A codificação
aritmética possui um desempenho superior em 5 a 10 % para as imagens de teste usadas para testar a
norma JPEG [60]; no entanto, este método não é tão popular como a codificação de Huffman devido
à sua maior complexidade. Como consequência, a codificação entrópica é obrigatória em todos os
descodificadores JPEG enquanto a codificação aritmética é facultativa.
O fluxo binário resultante da codificação JPEG para o modo sequencial não é escalável, i.e. nenhum
subconjunto do fluxo binário total pode produzir uma representação completa da imagem original
50
CAPÍTULO 2 ― TÉCNICAS ESCALÁVEIS DE CODIFICAÇÃO DE VÍDEO
com uma qualidade inferior. Se, por exemplo, se descodificar um conjunto inicial de bits, obter-se-ão
apenas os primeiros N blocos da imagem na ordem de varrimento (da esquerda para a direita e de
cima para baixo) em vez da imagem completa numa resolução mais baixa ou qualidade inferior (ver
Figura 2.31).
Figura 2.31 – Evolução temporal da descodificação usando o modo sequencial.
Modo progressivo
No modo progressivo, os blocos da imagem também são processados sequencialmente, mas em
sucessivos varrimentos. O primeiro varrimento contém uma imagem completa mas sem todos os
detalhes contidos nos varrimentos seguintes. Este modo necessita de uma memória entre o
quantificador e o codificador entrópico para armazenar todos os coeficientes DCT quantificados
uma vez que estes são parcialmente codificados em cada varrimento. Existem duas formas de
codificação parcial ou progressiva permitidas pela norma JPEG:
― Selecção espectral: Neste modo, apenas um conjunto específico de coeficientes DCT são
codificados em cada varrimento. Os mais importantes coeficientes DCT ou seja os de mais
baixa frequência são codificados antes dos coeficientes de mais alta frequência.
― Aproximações sucessivas: Neste modo, os coeficientes são codificados com precisão
numérica crescente em cada varrimento. Assim, apenas os bits mais significativos dos
coeficientes são codificados no primeiro varrimento; nos varrimentos seguintes, os bits
menos significativos são então codificados.
Considerem-se blocos de 8×8 coeficientes DCT quantificados, tal como é ilustrado na Figura 2.32;
nesta figura, cada bloco de coeficientes DCT quantificados é representado como um cubo
tridimensional onde a profundidade está associada à precisão numérica dos coeficientes
quantificados. Na selecção espectral, cada bloco é dividido em bandas de frequência e cada banda é
transmitida num varrimento diferente; ver Figura 2.32a).
51
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
1
a
ºV
to
to
to
to
en
en
en
en
m
rim
rim rrim
rri
ar
ar
a
V
V
V
2º
3º
4º
a)
b)
Figura 2.32 – Modo progressivo no JPEG: a) selecção espectral; b) aproximações sucessivas.
Como para a maior parte das imagens a maior parte da informação está contida no coeficiente DC e
nos primeiros coeficientes AC, a descodificação do primeiro conjunto de coeficientes irá permitir,
no receptor, a visualização de uma imagem completa ainda que com uma qualidade baixa. A Figura
2.33 mostra um exemplo de codificação progressiva baseada na selecção espectral com 3 bandas.
a)
b)
c)
Figura 2.33 – Exemplo de codificação JPEG usando selecção espectral com: a) apenas coeficiente DC; b)
coeficiente DC mais 4 primeiros coeficientes AC; c) todos os coeficientes DCT.
Nas aproximações sucessivas, os coeficientes DCT quantificados são divididos por uma potência de
dois antes de serem codificados entropicamente; o resultado é então transmitido ao descodificador.
Este esquema permite ao codificador codificar/transmitir primeiro os bits mais significativos dos
coeficientes DCT quantificados, de modo a permitir uma visualização rápida ainda que grosseira da
imagem; os bits menos significativos são codificados de seguida, permitindo alcançar uma qualidade
sucessivamente melhor à medida que mais precisão é introduzida. Por exemplo, na Figura 2.32b) a
imagem é codificada utilizando quatro varrimentos de aproximação sucessiva. No descodificador, os
coeficientes DCT recebidos são multiplicados pela potência de dois adequada antes de ser calculada
a IDCT de forma a restituir-lhes o valor original. A Figura 2.34 mostra um exemplo de codificação
progressiva baseada na técnica de aproximações sucessivas.
52
CAPÍTULO 2 ― TÉCNICAS ESCALÁVEIS DE CODIFICAÇÃO DE VÍDEO
a)
b)
c)
Figura 2.34 – Exemplo de codificação JPEG usando aproximações sucessivas com: a) quatro bits mais
significativos; b) seis bits mais significativos; c) todos os bits.
Os modos acima descritos podem ser usados separadamente ou combinados de uma forma
adequada. Apesar do modo progressivo do JPEG estar obrigado a produzir uma representação das
imagens em camadas, é usual possuir um desempenho superior ao algoritmo não progressivo do
JPEG [23] [2]. Utilizando a implementação publicamente disponível do Independent JPEG Group [24],
o modo progressivo do JPEG tem um desempenho superior de 0.5 a 1 dB em relação ao modo
sequencial [2]. O modo progressivo do JPEG é bastante flexível, permitindo a competitividade entre
diferentes codificadores uma vez que o seu desempenho pode variar, dependendo da forma como a
informação é agrupada e transmitida. Em [23] utiliza-se um esquema RD (rate/distortion) para
escolher quais são os coeficientes a codificar em cada varrimento (selecção espectral) e os bits de
cada coeficiente (aproximação sucessiva), de acordo com a sua contribuição para reduzir o erro de
reconstrução (erro quadrático médio) e o respectivo custo em termos de débito binário (número de
bits). O codificador agrupa os bits de cada coeficiente numa sequência de varrimentos de forma a
alcançar um desempenho mais elevado que o modo sequencial do JPEG.
Uma das desvantagens do modo progressivo do JPEG é a necessidade de uma memória adicional
no codificador para armazenar todos os coeficientes DCT; além disso, o tempo de processamento
também aumenta à medida que o número de varrimentos aumenta. Como vantagem, permite que a
operação de quantificação não seja realizada de uma forma explícita, uma vez que os coeficientes são
apenas divididos por uma potência de dois antes de serem transmitidos, isto no modo de
aproximações sucessivas.
O modo progressivo do JPEG é bastante utilizado na Internet porque os vendedores de
navegadores (browsers) para a World Wide Web adoptaram esta tecnologia pouco tempo depois de esta
ser implementada e fornecida livremente pelo Independent JPEG Group. Na Internet, a principal
vantagem deste modo é permitir que os utilizadores com uma ligação de baixo débito possam
visualizar imagens de dimensões e resoluções espaciais elevadas sem terem de esperar que toda a
imagem seja transferida.
Modo hierárquico
No modo hierárquico, cada componente da imagem (luminância e crominâncias) é codificada
através de uma sequência de varrimentos agora com uma resolução espacial cada vez mais elevada
(em vez de constante como no modo progressivo). No primeiro varrimento, é codificada uma
imagem com a menor resolução espacial; no segundo varrimento, a imagem codificada possui o
dobro da resolução espacial que a imagem codificada no varrimento inferior e assim sucessivamente
até se atingir a resolução espacial original da imagem a codificar. O processo de codificação no
modo hierárquico é o seguinte:
1.
A imagem para o primeiro varrimento é criada sub-amostrando espacialmente a imagem de
entrada usando um factor de subamostragem igual a uma potência de dois; esta imagem é
então codificada com o modo de operação sequencial ou progressivo.
53
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
2.
As imagens seguintes são formadas através da sobreamostragem da imagem inicial
anteriormente codificada (depois de descodificada) com um factor de sobreamostragem igual
a dois, subtraindo a imagem obtida da imagem original sub-amostrada para a mesma
resolução espacial.
3.
Obtem-se assim uma imagem resíduo para a resolução espacial em questão que é então
codificada através dos modos de operação sequencial, progressivo ou sem perdas (no último
nível).
4.
Este processo continua até que a imagem descodificada tenha a mesma resolução espacial
que a imagem original de entrada, i.e. repetindo os passos 2 e 3.
As operações de subamostragem e sobreamostragem podem ser efectuadas a uma ou duas
dimensões. Os filtros de subamostragem e sobreamostragem podem ser usados de forma a construir
uma pirâmide de resoluções espaciais, tal como é ilustrado na Figura 2.35.
Figura 2.35 – Codificação hierárquica multi-resolução.
As sucessivas imagens resíduo podem ser codificadas utilizando o modo sem perdas ou os modos
com perdas já apresentados; no entanto, o modo sem perdas só pode ser utilizado na última etapa
do processo de codificação, i.e. no último nível da pirâmide. Um descodificador hierárquico pode
terminar o processo de descodificação depois de ter descodificado a imagem que possui a resolução
espacial desejada. Este tipo de codificação é indicado para aplicações em que os descodificadores
potenciais ‘clientes’ possuem diferentes capacidades em termos de resolução espacial (e.g. acesso a
bases de dados multimédia). O codificador e descodificador que suportem o modo hierárquico têm
de possuir ferramentas que permitam a sobreamostragem, subamostragem e diferença de tramas, o
que os torna inerentemente mais complexos e não muito usados hoje em dia.
Modo sem perdas
No modo sem perdas, o descodificador gera uma reprodução exacta da imagem de entrada. Neste
modo não é utilizado a DCT, sendo esta substituída por um codificador preditivo espacial seguido
de um codificador aritmético ou de Huffman. O codificador preditivo combina os valores de três
amostras vizinhas, esquerda (A), topo (B) e esquerda-topo (C), para obter uma predição para o valor
da amostra a codificar. O valor da predição é subtraído ao valor actual da amostra e a diferença é
54
CAPÍTULO 2 ― TÉCNICAS ESCALÁVEIS DE CODIFICAÇÃO DE VÍDEO
codificada entropicamente, de uma forma semelhante à codificação entrópica do coeficiente DC no
modo sequencial. A norma JPEG definiu 8 preditores possíveis, i.e. 8 formas diferentes de combinar
os valores das três amostras vizinhas, e.g. média de A e B, valor de A, A+B-C, etc. Em conclusão, a
codificação consiste na determinação para cada amostra da imagem de qual o melhor modo de
predição espacial e de qual o erro de predição correspondente. Mais recentemente, o grupo JPEG,
desenvolveu a norma de codificação sem perdas JPEG-LS (ou JPEG Lossless) [26] indicada para
aplicações em que nenhuma perda de qualidade pode ser tolerada. Esta norma tem um desempenho
superior [47] em relação a qualquer outra norma de codificação sem perdas (e.g. PNG) e aos modos
sem perdas das normas JPEG e JPEG2000.
2.4.2 A norma JPEG2000
A norma de codificação de imagem JPEG tem sido usada ao longo de mais de uma década e
demonstrou a sua utilidade num conjunto amplo de aplicações, especialmente na Internet, fotografia
digital e edição de documentos em geral. Depois da conclusão em 1988 da norma JPEG, baseada na
DCT, muitos avanços na área da codificação de imagem surgiram, nomeadamente na área das
técnicas de codificação em sub-bandas. Paralelamente, muitas limitações e desvantagens da norma
JPEG foram-se tornando conhecidas tal como o efeito de bloco para as taxas de compressão mais
elevadas, a escalabilidade espacial ineficiente e complexa, a ausência de técnicas de resiliência a erros
e o facto de não permitir representações baseadas em objectos. Por outro lado, assiste-se
actualmente a uma contínua expansão das aplicações, cada vez mais exigentes em termos de
qualidade, dimensão da imagem (desde 2 kbyte a 1 Gbyte), tipos de imagem (bi-nível, tons de
cinzento, cor), características (imagens naturais, científicas, médicas, texto, gráficos, etc.) e modelos
de consumo (e.g. cliente/servidor, transmissão em tempo-real, com memória reduzida e largura de
banda limitada). Reconhecendo as limitações da norma JPEG e as novas necessidades e requisitos
por parte de um vasto conjunto de aplicações emergentes, o grupo JPEG decidiu, em finais de 1996,
iniciar o desenvolvimento de uma nova norma de codificação de imagem, a norma JPEG2000 [30].
A norma JPEG2000 possui uma longa lista de características/requisitos [8], salientando-se as
seguintes:
― Desempenho superior para taxas de compressão elevadas: A norma JPEG2000 oferece
um desempenho superior em relação à norma JPEG existente, sobretudo para as taxas de
compressão mais elevadas. Estudos comparativos [46] mostram que o desempenho desta
norma ultrapassa todas as restantes, incluindo o modo de codificação de textura definido na
norma MPEG-4 Visual, apesar de a diferença não ser significativa.
― Escalabilidade espacial, SNR e SNR de regiões: A norma JPEG2000 reconheceu que
para muitas aplicações é necessário ter várias imagens simultaneamente disponíveis com
resoluções e qualidades diferentes. Este requisito teve um enorme impacto no
desenvolvimento das ferramentas de codificação de forma a permitir que a sintaxe do fluxo
binário comprimido ofereça várias representações da mesma imagem com uma elevada
flexibilidade. A norma JPEG2000 permite a descodificação de imagens com diferentes
resoluções e diferentes níveis de qualidade para toda a imagem ou para regiões arbitrárias da
imagem a partir de um único fluxo escalável.
55
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
― Modos de operação com e sem perdas: A norma JPEG2000, tal como a norma JPEG,
define dois modos de operação diferentes: com e sem perdas. Além disso, permite combinar
estes modos para alcançar uma codificação progressiva com perdas até se obter uma imagem
sem perdas. Exemplos de aplicações que podem usar o modo de operação sem perdas
incluem:
ƒ
Imagens médicas, onde qualquer tipo de perda de qualidade não é tolerada.
ƒ
Imagens de arquivo, onde uma imagem com uma qualidade muito elevada é
necessária para o arquivo e/ou processamento, mas não necessariamente para a
visualização.
ƒ
Aplicações em rede onde existem terminais com diferentes requisitos e capacidades
(e.g. impressora de elevada qualidade, computador pessoal).
― Acesso aleatório a regiões espaciais da imagem: Esta característica permite que o
utilizador defina regiões de interesse na imagem a que pretende aceder, sem ter de
descodificar toda a imagem. Esta característica é muito útil no processamento e visualização
de imagens com grandes dimensões.
― Processamento no domínio comprimido: A norma JPEG2000 permite que as aplicações
possam manipular o fluxo binário comprimido para realizar algumas operações. Deste
modo, não é necessário descodificar e recodificar a imagem quando se pretende efectuar
uma operação simples, e.g. rotação, ampliação, cortes, alterar o tipo de escalabilidade. Esta
característica é bastante útil para sistemas de transcodificação de imagem.
― Resiliência a erros: A norma JPEG2000 utiliza códigos de comprimento variável
(codificador aritmético) para comprimir os coeficientes da transformada DWT. Os códigos
de comprimento variável são sensíveis a erros na transmissão e podem ter um efeito
desastroso na qualidade da imagem descodificada. Para melhorar o desempenho da
transmissão de imagens em redes sujeitas a erros, foi definida uma sintaxe do fluxo binário
resiliente a erros em conjunto com ferramentas que permitem minimizar o impacto dos
erros na imagem.
Além destas características, o formato de ficheiro JP2 definido na norma JPEG2000 permite
associar outros dados (metadata) ao fluxo binário comprimido como, por exemplo, descrições
segundo a norma MPEG-7 [29], outras características da imagem e informação sobre a existência de
direitos de autor. Outras características importantes da norma JPEG2000 são a sua flexibilidade em
termos do número de componentes de cor a codificar, a gama dinâmica de variação de cada
componente (1 a 16 bit) e o envio de informação de forma, nomeadamente planos de transparência.
Codificação JPEG2000
O processo de desenvolvimento da norma JPEG2000 iniciou-se com uma chamada de tecnologias
de codificação para serem avaliadas pelo grupo JPEG face aos requisitos definidos para a nova
norma. Do processo de avaliação, surgiu como vencedor, tanto em termos de avaliação subjectiva
como objectiva, o algoritmo WTCQ (Wavelet Trellis Coded Quantization). Este algoritmo foi utilizado
como ponto de partida para o desenvolvimento colaborativo da norma JPEG2000, tendo ao longo
56
CAPÍTULO 2 ― TÉCNICAS ESCALÁVEIS DE CODIFICAÇÃO DE VÍDEO
deste processo sido feitas várias alterações, quer em termos de modificar as ferramentas iniciais, quer
em termos de introduzir novas ferramentas.
Figura 2.36 – Processo de codificação segundo a norma JPEG2000.
A Figura 2.36 ilustra o processo básico de codificação segundo a norma JPEG2000. De seguida,
apresenta-se uma síntese de todo o processo de codificação:
1. Conversão de cor: A primeira operação consiste em transformar as diferentes componentes
de cor da imagem (e.g. RGB) num espaço de cor mais apropriado à compressão e
quantificação. A norma JPEG2000 define duas conversões de cor: uma transformada
irreversível ICT (Irreversible Component Transform) e uma transformada reversível RCT
(Reversible Component Transform); no modo sem perdas, é obrigatório o uso da transformada
ICT, enquanto que no modo com perdas ambas as transformadas podem ser usadas. A
transformada ICT é definida de uma forma semelhante à norma JPEG (i.e. através de uma
conversão RGB - YCbCr), enquanto a transformada RCT é uma aproximação inteira da
ICT, i.e. permite uma reconstrução exacta com precisão inteira finita. Saliente-se que a
norma JPEG2000 suporta imagens com múltiplas componentes e não é obrigatória a
conversão de cor através das transformadas RCT ou ICT; neste caso cada componente é
processada em paralelo tal como as componentes Y,Cb,Cr são codificadas após a
transformada RCT ou ICT.
2. Transformada DWT: A segunda operação consiste em aplicar uma transformada DWT
irreversível (modo sem perdas) ou reversível (modo com ou sem perdas) às várias
componentes de cor. A transformada DWT irreversível é implementada através de um filtro
Daubechies e a transformada reversível através de um filtro Le Gall; ambos os filtros estão
definidos na norma JPEG2000 [49]. Contudo, antes de se aplicar a transformada DWT, é
necessário estender o sinal periodicamente nas margens da imagem de forma a garantir que
as operações de filtragem possam ser realizadas; para cada coeficiente da máscara do filtro
tem de existir uma amostra do sinal no local correspondente. A norma JPEG2000 permite
dois modos de filtragem:
a. Convolution: Consiste em calcular um conjunto de produtos ponto a ponto entre os
coeficientes da máscara do filtro e a imagem.
57
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
b. Lifting: Consiste numa sequência de operações de filtragem nas quais as amostras
ímpares do sinal são substituídas por uma soma pesada das amostras pares e as
amostras pares por uma soma pesada das amostras ímpares. A grande vantagem
deste modo de filtragem em comparação com o anterior consiste na redução do
número de operações necessário para calcular a DWT e no facto de não ser
necessária memória auxiliar.
3. Quantificação: Depois da aplicação da transformada DWT, todos os coeficientes são
quantificados usando quantificação escalar uniforme com uma zona morta fixa em torno da
origem (i.e. amostras com valores baixos são quantificadas como zero). Um passo de
quantificação para cada sub-banda é permitido. Estes passos de quantificação podem ser
escolhidos de forma a atingir um determinado nível de qualidade ou uma determinada taxa
de compressão. No modo sem perdas, o factor de quantificação é 1 ou seja esta operação
não é realizada.
4. Codificação progressiva: Depois da quantificação, cada sub-banda é sujeita a uma “divisão
em partições” (packet partition ou precinct). Esta divisão consiste em dividir cada sub-banda em
blocos rectangulares não sobrepostos. Três blocos rectangulares espacialmente consistentes,
um de cada sub-banda, formam uma partição referida como precinto (precinct), tal como
ilustrado na Figura 2.37a. Um nível adicional de granularidade espacial é obtido através da
divisão do precinto em rectângulos não sobrepostos, referidos como blocos (code blocks). A
dimensão destes blocos pode variar; no entanto, é tipicamente de 64×64 coeficientes e
sempre superior a 32×32 coeficientes. Estes blocos são as entidades fundamentais para a
codificação entrópica em JPEG2000.
a)
b)
Figura 2.37 – Organização do fluxo binário: a) divisão em blocos; b) varrimento em planos de bits.
5. Codificação entrópica: Os blocos atrás definidos são rearranjados em planos de bit, i.e.
cada bloco é representado por um conjunto de planos de bit que contêm os coeficientes. O
primeiro plano de bit contém os bits mais significativos MSB (Most Significant Bit) de todos os
coeficientes do bloco, o segundo plano de bit contém os bits MSB-1 e assim sucessivamente,
até que todos os bits menos significativos (de todos os coeficientes pertencentes a um bloco)
estejam representados. Cada bloco é varrido da direita para a esquerda, do topo para a base
(raster scan) e cada plano de bit é varrido numa ordem particular, ilustrada na Figura 2.37b.
Este último padrão de varrimento corresponde a um varrimento em colunas com uma altura
58
CAPÍTULO 2 ― TÉCNICAS ESCALÁVEIS DE CODIFICAÇÃO DE VÍDEO
de quatro bits, referidas como faixas de bits. No fim da primeira faixa de bit, o varrimento
continua no canto superior esquerdo da próxima faixa de bits, até que todos os bits sejam
varridos. Cada bit de cada coeficiente é codificado num de três passos de codificação. A
decisão de escolher em que passo de codificação um dado bit é codificado é realizada em
função da importância da localização do bit e da importância das localizações vizinhas (a
verde na Figura 2.37b). Uma localização é considerada importante se um bit com o valor ‘1’
é codificado naquela localização no plano de bit actual ou anterior. Os três passos de
codificação (que correspondem a três tipos de varrimento) são definidos como [38]:
a. Propagação significativa: Um bit é codificado neste passo se a sua localização não
é importante, mas pelo menos um dos seus oito vizinhos é importante. Se um bit é
codificado neste passo e o seu valor for ‘1’, a sua localização é marcada como
importante, com o intuito de codificar bits em passos subsequentes.
b. Refinamento: Neste passo, todos os bits com localizações importantes num plano
de bit anterior são codificados, i.e. o passo de refinamento inclui bits de coeficientes
com uma ou mais localizações significativas que não foram incluídos no passo
anterior.
c. Limpeza: O terceiro e último passo consiste na codificação de todos os bits que não
foram codificados nos passos anteriores. Neste passo, resta apenas codificar os bits
dos coeficientes sem localizações importantes.
6. Codificação entrópica: A codificação entrópica é realizada independentemente para cada
bloco, i.e. não existem dependências entre blocos na mesma ou em sub-bandas diferentes, ao
contrário do codificador EZW ou SPIHT apresentado na Secção 2.3.2. Esta característica
apresenta vantagens em termos do acesso a zonas espaciais da imagem, resiliência a erros,
manipulações geométricas e paralelismo computacional. A codificação do primeiro e do
segundo passo é idêntica, mas os bits do passo de limpeza são codificados com a técnica
RLE. O codificador entrópico utilizado é o codificador aritmético MQ especificado na
norma JBIG-2 [20]. Este codificador foi escolhido por razões de compatibilidade e por estar
isento do pagamento de direitos de propriedade intelectual.
Para cada bloco, um fluxo binário separado e independente é gerado. Este fluxo binário pode ser
truncado em qualquer ponto e a partir da sua reconstrução, estimativas de distorção podem ser
obtidas, para permitir o controlo da taxa de compressão. Todo este processo de codificação pode
ser, opcionalmente, realizado em janelas de dimensão fixa pertencentes a cada componente da
imagem, designadas como tiles. Deste modo, pode-se alcançar uma implementação mais eficiente em
termos de memória à custa de um desempenho inferior (adequado para imagens com uma resolução
muito elevada).
Organização do fluxo binário
Cada bloco codificado é obtido através da codificação entrópica dos bits que resultam dos três
varrimentos (propagação significativa, refinamento e limpeza) efectuados numa faixa de bits;
nenhuma informação de outros blocos é utilizada para a geração do fluxo binário para um
determinado bloco. O conjunto dos blocos codificados que pertencem a um dado precinto são
59
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
agrupados para formar o corpo de um pacote (Figura 2.38). O corpo do pacote é precedido por um
cabeçalho (Header). O conjunto dos pacotes, um de cada precinto de cada nível de resolução, forma
uma camada. Um pacote pode ser interpretado como um incremento de qualidade para um nível de
resolução, numa dada região da imagem e a camada pode ser interpretada como um incremento de
qualidade para a resolução máxima da imagem. Cada camada melhora a qualidade da imagem e o
fluxo binário final é formado por uma sucessão de camadas. Cada componente é codificada
independentemente e os dados codificados de cada componente são arranjados alternadamente
(interleaved) ao nível da camada. Existem quatro tipos de organização de pacotes na norma
JPEG2000, nomeadamente: resolução, qualidade, localização espacial e componente. Estes
diferentes tipos de organização permitem vários tipos de escalabilidade.
Figura 2.38 – Correspondência conceptual entre as representações espaciais e o fluxo binário.
A norma JPEG2000 permite um desempenho superior, para qualquer taxa de compressão, em
relação à norma JPEG. No entanto, as melhorias mais significativas são observadas a taxas de
compressão muito altas ou muito baixas. A adopção generalizada desta nova norma não depende
apenas do desempenho, uma vez que também oferece um conjunto de funcionalidades adicionais,
nomeadamente a escalabilidade espacial e de qualidade (SNR) para toda a imagem ou para regiões
arbritárias. Estas funcionalidades, mais importantes no contexto desta tese, são apresentadas de
seguida.
Escalabilidade de SNR e espacial
Existem três tipos de escalabilidade na norma JPEG2000: resolução espacial, SNR (para toda a
imagem ou para regiões de interesse) e componente. Estes tipos de escalabilidade correspondem a
diferentes tipos de progressão no débito binário, uma vez que o fluxo binário pode ser truncado em
qualquer ponto. A única diferença entre os vários tipos de escalabilidade é a organização dos pacotes
no fluxo binário. Apesar das janelas permitirem um mecanismo básico para a escalabilidade espacial,
assume-se (por simplicidade) que uma imagem consiste numa única janela. Cada pacote está
associado a uma componente (i), uma camada (j), um nível de resolução (k) e um precinto (m). Um
fluxo binário escalável na qualidade (SNR) pode ser construído organizando os pacotes através de
quatro ciclos hierárquicos, i.e. cada ciclo está contido noutro. O ciclo mais interior corresponde ao
60
CAPÍTULO 2 ― TÉCNICAS ESCALÁVEIS DE CODIFICAÇÃO DE VÍDEO
precinto, seguido do ciclo que corresponde a cada nível de resolução, a cada componente da imagem
e, por fim, a cada camada. No caso da escalabilidade espacial, a ordem é diferente: precinto, camada,
componente e nível de resolução. A Figura 2.39a) ilustra a escalabilidade SNR para toda a imagem.
Para se obter o primeiro nível de qualidade (a verde escuro), é necessário enviar precintos de todas
as sub-bandas, para que se possa obter uma imagem com resolução espacial máxima. De seguida,
enviam-se precintos que correspondem a níveis de qualidade superiores, i.e. que contêm bits menos
significativos (a verde mais claro). Na escalabilidade espacial, a ordem de transmissão é diferente (ver
Figura 2.39b), pois primeiro são enviados todos os precintos que pertencem ao nível mais baixo de
resolução espacial (a verde escuro) e a progressão é alcançada através do envio dos precintos de
níveis superiores de resolução (a verde mais claro).
a)
b)
Figura 2.39 – Ilustração da escalabilidade: a) SNR; b) espacial.
A norma JPEG2000 suporta uma combinação da escalabilidade espacial e SNR. É importante
salientar que os dados nos pacotes são idênticos e independentes do tipo de escalabilidade; apenas
existem sequências de bits de sinalização para identificar o tipo de escalabilidade. Deste modo, é
possível modificar o tipo de escalabilidade oferecida sem ser necessário descodificar e voltar a
codificar a imagem. Esta operação é rápida e corresponde a modificar a sequência de bits que
identificam o tipo de escalabilidade oferecida e a escrever os pacotes no fluxo binário com outra
ordem. Esta funcionalidade é muito útil para servidores de vídeo que necessitem de adaptar a
imagem, de uma forma muito rápida, de acordo com as características do terminal que a vai
consumir .
Escalabilidade de SNR para regiões de interesse
A escalabilidade de SNR para regiões de interesse ROI (Region Of Interest) é importante em aplicações
onde certas partes da imagem são de maior importância que outras. Nesse caso, essas regiões podem
necessitar de ser codificadas com maior qualidade que as restantes. Durante a transmissão da
imagem, estas regiões são transmitidas em primeiro lugar ou com uma prioridade mais elevada,
como, por exemplo, no caso da transmissão progressiva. A norma JPEG2000 suporta apenas uma
região de interesse por imagem, com uma forma arbitrária, conexa ou não. A primeira etapa de
processamento consiste em definir a máscara que corresponde à região da imagem que se pretende
distinguir e eventualmente codificar com maior fidelidade.
O esquema de codificação da ROI definido na parte I da norma (i.e. sistema de codificação básico) é
referido como MAXSHIFT e consiste em deslocar (shift) os coeficientes da DWT que pertencem à
região de interesse para planos de bit mais elevados [9]. Durante o processo de codificação, os
61
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
planos de bit mais significativos que correspondem à ROI são colocados no fluxo binário antes dos
planos de bit correspondentes ao fundo da imagem (BG). Este processo é ilustrado na Figura 2.40a.
Isto implica que a ROI irá ser sempre descodificada antes do resto da imagem. Se o fluxo binário for
truncado para que a imagem tenha um determinado número de bits, a ROI irá sempre ter maior
fidelidade que o resto da imagem.
a)
b)
Figura 2.40 – Região de interesse: a) deslocamento dos coeficientes da DWT; b) geração da máscara.
Se uma ROI for definida para uma dada imagem, é necessário que a máscara correspondente a essa
ROI seja determinada para todas as sub-bandas geradas pela transformada DWT; ver Figura 2.40b).
De acordo com o método MAXSHIFT, não é necessário enviar a informação de forma ao
descodificador. O codificador varre os coeficientes codificados e escolhe um valor de deslocamento
S de forma a que o coeficiente mínimo que pertence à ROI seja superior ao coeficiente máximo que
pertence ao fundo. No descodificador, cada coeficiente menor que S pertence ao fundo e cada
coeficiente maior que S pertence à ROI e é deslocado do valor correspondente. Deste modo, evitase a codificação e transmissão da forma da região e permite-se que o número de planos de bit para a
ROI e para o fundo possam ser escolhidos independentemente, o que permite obter qualidades e
taxas de compressão diferentes para cada região. Experiências realizadas com este método,
permitiram concluir que o débito sofre um acréscimo de apenas 1% [9] quando a escalabilidade de
SNR para regiões de interesse é utilizada. A Figura 2.41 mostra um exemplo de codificação de uma
ROI com este método.
a)
b)
c)
d)
Figura 2.41 – Exemplo de codificação escalável para uma região de interesse: a) 0.05 bpp; b) 1.4 bpp; c) 2.43
bpp; d) sem perdas.
62
CAPÍTULO 2 ― TÉCNICAS ESCALÁVEIS DE CODIFICAÇÃO DE VÍDEO
2.5
Normas de codificação de vídeo
As normas de codificação de vídeo existentes actualmente são o H.261, H.263 (e versões
subsequentes, H.263+ e H.263++), MPEG-1 Vídeo, MPEG-2 Vídeo e MPEG-4 Visual. Destas
normas apenas algumas oferecem a possibilidade de construir um fluxo binário escalável para a
informação de vídeo codificada, nomeadamente as normas H.263+, MPEG-2 Vídeo e MPEG-4
Visual. Nesta Secção apresentam-se os modos escaláveis disponíveis nas normas MPEG-2 Vídeo e
H.263+. A norma MPEG-4 Visual, devido à sua importância para esta Tese, será considerada com
mais detalhe no Capítulo 3.
2.5.1 A norma MPEG-2 vídeo
Devido à flexibilidade da norma MPEG-2 Vídeo, um número cada vez maior de produtos e
aplicações adoptando esta norma tem surgido, nomeadamente nas áreas da televisão digital, e.g.
através dos projectos de normalização DVB (Digital Video Broadcasting) e ATSC (Advanced Television
Systems Committee), do armazenamento de vídeo em DVD (Digital Versatile Disc) e das câmaras de
vídeo digital. A norma MPEG-2 é formalmente designada por “Information technology - Generic
coding of moving pictures and associated audio information” (ISO/IEC 13818) e é constituída por
várias partes, sendo as mais importantes as seguintes:
― MPEG-2 Sistema: Especifica a forma como devem ser multiplexados e sincronizados
vários tipos de informação multimédia (e.g. áudio, vídeo, dados) num único fluxo binário.
― MPEG-2 Vídeo: Especifica a sintaxe do fluxo binário de vídeo e o respectivo processo de
descodificação; vários perfis e níveis foram definidos de forma a oferecer diferentes tipos de
funcionalidades, e.g. suporte de vários formatos de vídeo (4:2:0 e 4:2:2), de vídeo entrelaçado
e não entrelaçado, resoluções espaciais, etc.
― MPEG-2 Áudio: Especifica a sintaxe do fluxo binário de áudio e o respectivo processo de
descodificação sendo definidas três camadas de codificação às quais estão associados
diferentes compromissos em termos de qualidade versus complexidade.
Codificação MPEG-2 de vídeo não escalável
A arquitectura simplificada do codificador MPEG-2 Vídeo (ver Figura 2.42) baseia-se num esquema
híbrido com compensação de movimento e transformada discreta do coseno (DCT). A DCT
explora a redundância espacial, i.e. a correlação entre pixels vizinhos na mesma trama, e a
compensação de movimento explora a redundância temporal, i.e. a correlação entre pixels em tramas
próximas no tempo. A primeira etapa da codificação corresponde à divisão da imagem em
macroblocos não sobrepostos. Cada macrobloco contém 16×16 pixels de luminância e os
correspondentes pixels de crominância. Para o formato de subamostragem da crominância 4:2:0, um
macrobloco corresponde a quatro blocos (8×8 pixels) de luminância e dois blocos de crominância
(um para cada uma das crominâncias).
63
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
Figura 2.42 – Arquitectura do codificador MPEG-2 de vídeo não escalável.
A codificação de vídeo no contexto da norma MPEG-2 considera três tipos de imagens:
― Imagens do tipo Intra (I): O algoritmo de codificação de vídeo MPEG-2 codifica as
imagens do tipo Intra, sem qualquer referência a imagens no passado ou no futuro. No
modo Intra, a transformada DCT é aplicada a cada bloco 8×8 de luminância e crominância e
os coeficientes resultantes são quantificados. O coeficiente DC corresponde ao valor médio
da intensidade em cada bloco e é codificado diferencialmente (devido à forte correlação
entre os valores médios de cada bloco); os restantes coeficientes (AC) são varridos em zigzag e codificados entropicamente usando códigos de comprimento variável. Este modo de
codificação não explora a redundância temporal entre imagens e é muito semelhante à
codificação de imagens fixas tal como é feita na norma JPEG.
― Imagens do tipo P: Primeiro modo de codificação Inter explorando a redudância temporal
entre imagens pertencentes à mesma sequência de vídeo através das ferramentas de
estimação e compensação de movimento. Uma imagem do tipo P utiliza como referência
para a sua codificação a informação descodificada da imagem I ou P imediatamente anterior.
A estimação de movimento é efectuada ao nível do macrobloco, podendo gerar-se um único
vector de movimento por macrobloco resultado da estimação de movimento entre a imagem
P actual e a imagem I ou P imediatamente anterior. Os vectores de movimentos são
codificados e transmitidos ao receptor. O erro de predição é calculado através da diferença
entre o macrobloco da imagem actual a ser codificada e o macrobloco de predição na
imagem I ou P imediatamente anterior (depois de se efectuar a compensação de
movimento). A este erro de predição é aplicada a DCT, a quantificação e a codificação
entrópica.
― Imagens do tipo B: Segundo modo de codificação Inter; de forma a explorar de uma forma
mais eficiente a redundância temporal, foram introduzidas as imagens do tipo B (imagens
bidireccionais preditas ou bidireccionais interpoladas) que utilizam como referência as tramas
mais próximas do passado e do futuro do tipo I ou P (uma imagem do tipo B nunca pode
ser usada como referência de codificação). A utilização deste tipo de imagens, obriga a uma
reordenação das tramas antes da codificação, i.e. as imagens I e P usadas como referência
64
CAPÍTULO 2 ― TÉCNICAS ESCALÁVEIS DE CODIFICAÇÃO DE VÍDEO
para as imagens B devem ser codificadas e transmitidas antes das correspondentes imagens
B.
Finalmente, para garantir um débito binário constante, o codificador alimenta uma memória de saída
(buffer) e ajusta o passo de quantificação para cada macrobloco de forma a obter o débito binário
desejado.
A arquitectura do descodificador é apresentada na Figura 2.43. O descodificador realiza as operações
inversas do codificador para reproduzir um macrobloco no receptor. Primeiro, faz a descodificação
entrópica das palavras de comprimento variável, depois reconstrói os coeficientes da DCT e,
finalmente, aplica a transformada DCT inversa (IDCT). Para as imagens do tipo P e B, a imagem
descodificada corresponde ao erro de predição devendo por isso ser somada à imagem predição
determinada a partir da imagem I ou P anterior e/ou seguinte usando os vectores de movimento
enviados.
Passo de quantificação
Buffer
DE
MUX
Descodificação
Entrópica
1/Q
Ordenação
de Tramas
IDCT
Memória
Vectores de Movimento
Figura 2.43 – Arquitectura do descodificador MPEG-2 de vídeo não escalável.
Codificação MPEG-2 de vídeo escalável
O principal objectivo da codificação escalável de vídeo na norma MPEG-2 é oferecer
interoperabilidade entre terminais com diferentes capacidades, e.g. em termos de resolução espacial
ou débito binário disponível. Os terminais que não são capazes ou por qualquer motivo não desejem
descodificar vídeo na resolução ou qualidade máxima podem utilizar subconjuntos do fluxo binário
total para obter uma representação do vídeo em questão adequada às suas capacidades. Outro
objectivo da codificação escalável na norma MPEG-2 Vídeo é tornar o fluxo binário de vídeo mais
adequado para a transmissão em canais com erros (e.g. perda de pacotes em redes ATM,
interferências na difusão de televisão digital terreste) através da divisão do fluxo binário em camadas
escaláveis. Um dos objectivos mais importantes que se pretendia alcançar com esta norma, era
permitir a descodificação de vídeo para a televisão digital de definição normal SDTV (Standard
Definition TV) e a televisão de alta definição HDTV (High Definition TV) a partir de um único fluxo
binário escalável. Com a codificação escalável do sinal de vídeo HDTV, evita-se a transmissão de
dois fluxos binários independentes para os receptores de HDTV e SDTV.
Durante a fase de desenvolvimento da norma MPEG-2 Vídeo, revelou-se impossível desenvolver
um esquema de codificação escalável genérico, capaz de se adequar aos diferentes requisitos de
escalabilidade das várias aplicações consideradas. Como consequência, a norma MPEG-2 Vídeo
normalizou quatro ferramentas de escalabilidade: separação de dados, escalabilidade de SNR,
escalabilidade espacial e escalabilidade temporal. Combinações dos diversos tipos de escalabilidade
são também suportadas e referidas como escalabilidade combinada. Por exemplo, a
interoperabilidade entre HDTV e SDTV e a resiliência a erros de canal pode ser alcançada através da
65
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
combinação da escalabilidade espacial e de SNR. A sintaxe da norma MPEG-2 Vídeo suporta até
três níveis de escalabilidade combinada.
Separação de dados
Multiplexer
Demultiplexer
A separação de dados na norma MPEG-2 Vídeo permite a extracção de dois fluxos binários
correspondentes a diferentes conjuntos sintáticos de dados a partir do fluxo escalável completo.
Apenas são suportadas duas camadas para este tipo de escalabilidade, apesar desta técnica poder ser
facilmente generalizada para mais camadas. A informação mais importante, tal como os cabeçalhos,
os vectores de movimento e os coeficientes DCT de baixa frequência, é incluída na camada base
enquanto a informação menos importante, tal como os coeficientes DCT de mais alta frequência, é
incluída na camada superior. Esta ferramenta de escalabilidade é indicada quando dois canais
(lógicos) estão disponíveis para transmissão ou armazenamento de vídeo, como no caso de redes
ATM, difusão terrestre, suporte magnético e outros. A camada base é enviada num canal com
menor taxa de erros ou com maior protecção contra erros e a camada superior é enviada num canal
com maior taxa de erros ou com menor protecção contra erros. Desta forma, é possível melhorar a
qualidade do vídeo descodificado uma vez que a camada base dará quase sempre origem a vídeo
com a qualidade mínima necessária. A arquitectura geral do codec MPEG-2 Vídeo com separação de
dados é apresentada na Figura 2.44; esta arquitectura consiste num codificador e descodificador
MPEG-2 Vídeo não escalável, dois módulos de divisão e composição de dados, um multiplexer e o
correspondente demultiplexer.
Figura 2.44 – Arquitectura geral do codec MPEG-2 Vídeo com separação de dados.
Os detalhes associados aos módulos de divisão e composição de dados são apresentados na Figura
2.45. No módulo de divisão de dados, o vídeo codificado bem como uma versão descodificada
entropicamente pelo módulo VLD (Variable Lenght Decoder) servem de entrada a um demultiplexer de
vídeo. Este demultiplexer tem como saída dois fluxos binários de vídeo correspondentes à camada
base e à camada superior. Dependendo do débito binário desejado para cada camada, o controlador
de débito pode determinar a informação em cada partição, através do envio de uma tabela
(denominada PBP: Priority Break Point) que indica quais os elementos sintáticos que são colocados na
camada base, determinando-se implicitamente que todos os outros são colocados na camada
superior. Esta tabela é enviada ao descodificador e pode ser ajustada periodicamente (no começo de
cada slice).
66
CAPÍTULO 2 ― TÉCNICAS ESCALÁVEIS DE CODIFICAÇÃO DE VÍDEO
a)
b)
Figura 2.45 – Arquitectura detalhada: a) módulo de divisão; b) módulo de composição de dados.
No módulo de composição de dados, ambos os fluxos binários transmitidos são descodificados pelo
VLD que tem como saída o comprimento de cada palavra de comprimento variável. Os fluxos
binários e a informação sobre o comprimento de cada palavra são enviados ao cancelador de erros,
cuja principal função é substituir partes do fluxo binário onde tenham ocorrido erros por códigos
válidos. Apenas desta forma se consegue obter o sincronismo entre o fluxo binário da camada
superior e da camada base. De seguida, ambos os fluxos binários são enviados ao demultiplexer de
vídeo que combina os dados da forma indicada na tabela PBP também recebida.
As principais vantagens deste tipo de escalabilidade é que não modifica significativamente o débito
binário necessário para a transmissão de vídeo e a qualidade obtida ao combinar as duas camadas é
idêntica à codificação não escalável de vídeo. No entanto, ao contrário de outras técnicas de
escalabilidade, não é possível descodificar a camada base utilizando apenas um descodificador de
MPEG-2 não escalável, uma vez é sempre necessário um módulo intermédio de composição de
dados. Outra desvantagem é que a reconstrução apenas da camada base conduz a uma redução da
qualidade ao longo do tempo até que um refrescamento ocorra (imagem do tipo I). Este problema é
conhecido como deslize (drift) [40] e ocorre porque a imagem utilizada para efectuar a compensação
de movimento no descodificador não é igual à imagem que é utilizada no codificador (MC Mismatch),
uma vez que a camada base descodificada só contém os coeficientes DCT de baixa frequência.
Alguns sistemas conseguem eliminar este problema e aumentar a qualidade da camada base através
de um sinal de correcção [39]. Além disso, se o débito binário total for dividido igualmente entre as
duas camadas e se se descodificar apenas a camada base, esta possui uma qualidade muito baixa que
pode não ser adequada para visualização [17]. Por este motivo, a separação de dados só é indicado
para sistemas em que mais de metade dos dados a dividir possam ser atribuídos à camada base.
Devido a estas desvantagens, este método não é muito usado como forma de escalabilidade.
Escalabilidade de SNR
Este tipo de escalabilidade gera duas camadas do vídeo com a mesma resolução espacial e temporal
mas com qualidades diferentes. A camada base fornece a qualidade básica e a camada superior
combinada com a camada base gera uma representação com qualidade melhorada do vídeo
codificado. Como a camada superior melhora a relação sinal ruído (SNR) do vídeo descodificado a
partir da camada base, este tipo de escalabilidade é referido como escalabilidade de SNR. As mais
importantes aplicações da escalabilidade de SNR identificadas pela norma MPEG-2 são a
disponibilização de dois níveis de qualidade para a SDTV ou a HDTV e serviços de VOD (Video on
Demand) com diferentes níveis de qualidade.
67
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
A Figura 2.46 apresenta o diagrama de blocos do codec MPEG-2 Vídeo com escalabilidade de SNR.
O fluxo binário da camada base possui a mesma sintaxe que um fluxo binário MPEG-2 Vídeo não
escalável. Os coeficientes DCT não quantificados e os coeficientes DCT grosseiramente
quantificados são disponibilizados ao codificador da camada superior que tem como principal
objectivo quantificá-los mais finamente (com menor passo de quantificação) para produzir o fluxo
binário da camada superior. No descodificador, a operação inversa é realizada ou seja os coeficientes
DCT refinados (melhor quantificados) são somados aos coeficientes DCT grosseiramente
quantificados da camada base.
Codificador SNR da camada superior
Descodificador SNR da camada superior
Codificador de
requantificação dos
coef. da DCT
Descodificador de
requantificação dos
coef. da DCT
coef. DCT
difer.
coef. DCT
difer.
coef.
DCT
coef. DCT
quant.
Entrada
de vídeo
coef. DCT
quant.
Codificador
de vídeo MPEG-2
não escalável
Descodificador
de vídeo MPEG-2
não escalável
Codificador da camada de base
Saída de
vídeo
Descodificador da camada de base
Figura 2.46 – Arquitectura do codec MPEG-2 Vídeo com escalabilidade de SNR (sem deslize).
Se a camada superior não estiver disponível no descodificador, a camada base é descodificada sem
problemas fazendo todos os coeficientes DCT refinados tomar o valor zero. No entanto, o
descodificador apresentado com ligações a preto na Figura 2.46 possui problemas de deslize (drift),
uma vez que os coeficientes refinados não são utilizados na predição temporal pelo codificador da
camada base, mas são utilizados pelo descodificador. Para resolver este problema, é necessário que o
mesmo somador utilizado no descodificador seja também usado no codificador (ligação a azul na
Figura 2.46).
Devido à dificuldade em visualizar o fluxo dos coeficientes DCT entre as duas camadas, apresentase na Figura 2.47 uma arquitectura mais detalhada do codificador com escalabilidade de SNR sem o
problema de deslize (drift). Tal como é ilustrado, os coeficientes DCT da camada base não
quantificados e grosseiramente quantificados são utilizados pelo codificador da camada superior.
Este codificador calcula a diferença entre estes dois conjuntos de coeficientes DCT, obtendo assim
o erro de quantificação do codificador da camada base. De seguida, estes coeficientes são
quantificados mais finamente e codificados entropicamente. Para evitar o efeito de deslize, é
necessário que estes coeficientes correspondentes ao erro de quantificação da camada base sejam
somados aos coeficientes grosseiramente quantificados para se obterem os coeficientes DCT que
representam a imagem de alta qualidade (camada base + camada superior). Deste modo, a imagem
(descodificada) utilizada pelo módulo de compensação de movimento do codificador da camada
base é igual à utilizada pelo descodificador quando este descodifica ambas as camadas (quando só
descodifica a camada base continua a ocorrer o efeito de deslize).
68
CAPÍTULO 2 ― TÉCNICAS ESCALÁVEIS DE CODIFICAÇÃO DE VÍDEO
Figura 2.47 – Codificador MPEG-2 Vídeo com escalabilidade de SNR sem deslize.
A operação do descodificador é ilustrada na Figura 2.48 e é muito semelhante à do descodificador
MPEG-2 Vídeo não escalável. Ambos os fluxos binários são descodificados entropicamente e os
coeficientes DCT inversamente quantificados. Os dois conjuntos de coeficientes são então somados
e passam pelo módulo que calcula a transformada de coseno inversa (IDCT). Caso os coeficientes
DCT da camada superior não estejam disponíveis, estes coeficientes são colocados a zero.
Figura 2.48 – Descodificador MPEG-2 Vídeo com escalabilidade de SNR.
Esta técnica de escalabilidade tem uma complexidade maior e um desempenho menor em relação à
separação de dados apresentada anteriormente. A qualidade obtida quando se descodificam ambas
as camadas de vídeo é menor entre 0.5 e 1.1 dB [17] em relação à codificação não escalável, isto para
o mesmo débito binário total. Além disso, esta solução sofre de problemas de deslize (mesmo com
as ligações a azul na Figura 2.46) se ocorrerem erros de transmissão na camada superior ou quando a
camada superior não se encontrar disponível, uma vez que o descodificador não possui os
coeficientes da DCT refinados. A divisão do débito binário entre camadas depende da resolução
espacial, da quantidade de movimento presente no vídeo (todos os vectores de movimento são
69
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
transportados na camada base) e dos passos de quantificação usados para cada camada. Este modo
de escalabilidade possui uma complexidade inferior em relação à escalabilidade temporal e espacial e
permite uma degradação mais suave da qualidade subjectiva do vídeo.
Escalabilidade temporal
Um dos objectivos do modo de escalabilidade temporal na norma MPEG-2 Vídeo consiste em
oferecer um fluxo binário adequado a terminais que possuam formas de visualizar vídeo
estereoscópio. Para o caso do vídeo estereoscópio, a escalabilidade é alcançada através da predição
de uma das imagens do vídeo estereoscópio (e.g. imagem da esquerda) transmitida na camada
superior a partir das imagens (e.g. imagem da direita) transmitidas na camada base. No entanto,
outras aplicações são possíveis, tais como oferecer interoperabilidade entre a HDTV progressiva e
entrelaçada ou entre terminais de HDTV com diferentes resoluções temporais (e.g. de 25 Hz para 50
Hz). Além disso, a escalabilidade temporal permite que descodificadores com menor capacidade
computacional possam descodificar vídeo com uma menor resolução temporal.
Existem várias formas de codificar as imagens da camada superior utilizando as imagens
descodificadas da camada base com vista a oferecer escalabilidade temporal. As principais questões
têm a ver com o número de imagens a usar como referência, o tipo de codificação a usar na camada
superior (I, P ou B) e quais são as imagens de referência que devem ser usadas. O modo de
escalabilidade temporal do MPEG-2 Vídeo restringe o número máximo de imagens de referência a
duas e permite o uso de imagens do tipo I, P ou B na camada superior. No entanto, devem ser
usadas essencialmente imagens do tipo B para que se possa obter uma elevada eficiência de
codificação. Em relação à escolha das imagens de referência, a norma MPEG-2 Vídeo define duas
configurações possíveis. Na primeira configuração, para cada imagem B na camada superior as
imagens de referência usadas são as duas imagens adjacentes na camada base (Figura 2.49).
Figura 2.49 – Dependência entre imagens das duas camadas para escalabilidade temporal (caso 1).
No outro tipo de configuração, as imagens B da camada superior utilizam duas referências: a
imagem mais recentemente descodificada da camada superior e a imagem mais recentemente
descodificada da camada base, segundo a ordem de visualização (Figura 2.50). Neste tipo de
configuração, a primeira imagem da camada superior é obrigatoriamente do tipo P, uma vez que
ainda não foi codificada nenhuma imagem na camada superior.
70
CAPÍTULO 2 ― TÉCNICAS ESCALÁVEIS DE CODIFICAÇÃO DE VÍDEO
Figura 2.50 – Dependência entre imagens nas duas camadas para escalabilidade temporal (caso 2).
Em ambas as configurações, as imagens B da camada superior utilizam as duas imagens de
referência para gerar três modos de predição: predição em relação à imagem anterior da camada
base, predição em relação à imagem seguinte na camada base (caso 1) ou predição em relação à
imagem anterior da camada superior (caso 2) e predição interpolada, de uma forma semelhante às
imagens B da camada base; na verdade, apenas as imagens de referência mudam. Cada um destes
três modos pode ser escolhido ao nível do macrobloco.
A escalabilidade temporal usa o mesmo esquema de estimação e compensação de movimento
utilizado na codificação de imagens B na camada base com uma característica adicional: a
compensação e estimação de movimento pode ser efectuada entre camadas. Na Figura 2.51
apresenta-se a arquitectura do codec MPEG-2 Vídeo com escalabilidade temporal. A sequência de
vídeo com a resolução temporal máxima é processada por um demultiplexer temporal que tem como
principal função dividir a sequência em duas com resoluções temporais mais baixas. Uma das
sequências é utilizada como entrada do codificador da camada base que consiste num codificador de
vídeo MPEG-2 não escalável, sendo na descodificação usado o descodificador correspondente. A
outra sequência é dada ao codificador da camada superior que consiste num versão modificada do
codificador de vídeo MPEG-2 não escalável de forma a suportar compensação de movimento entre
camadas. O bloco de estimação de movimento entre camadas tem como principal função calcular os
vectores de movimento entre macroblocos pertencentes a imagens da camada base e da camada
superior. Estes vectores de movimento são usados pelo módulo de compensação de movimento e
são também incluídos no fluxo binário da camada superior.
Figura 2.51 – Arquitectura do codec MPEG-2 Vídeo com escalabilidade temporal.
71
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
Na Figura 2.52 é apresentada a arquitectura detalhada do codificador da camada superior. Como se
pode verificar, o esquema de codificação é semelhante ao de um codificador MPEG-2 Vídeo não
escalável. As principais diferenças são a utilização de dois módulos de compensação de movimento
(CM, CMC), dois módulos de estimação de movimento (EM, EMC) e duas memórias para poder
explorar a redundância temporal entre imagens da camada superior e entre imagens da camada
superior e camada base (uma vez que este codificador suporta as duas configurações atrás definidas).
Os módulos correspondentes ao analisador de predições (AP) e ao gerador de predições (GP) estão
presentes para escolher ao nível do macrobloco um de três modos de codificação: modo de predição
em relação à imagem anterior da camada base, à imagem seguinte na camada base (caso 1) ou à
imagem anterior da camada superior (caso 2) e modo de predição interpolada, i.e. através de uma
média ponderadada das duas imagens de referência.
Codificador da camada superior
Entrada
DCT
-
Codificação
entrópica
Q
fluxo binário
da camada
superior
1/Q
IDCT
Legenda
Q - Quantização
IDCT - DCT inversa
M - Memória
CM - Compensação movimento
EM - Estimação de movimento
AP - Analisador de predições
GP - Gerador de predições
EMC - Estimação de movimento entre camadas
CMC - Compensação de movimento entre camadas
AP
GP
CM
M
EM
CMC
EMC
Codificador de vídeo
MPEG-2 não
escalável
M
Referência
da camada
base
fluxo binário
da camada base
Figura 2.52 – Codificador MPEG-2 Vídeo com escalabilidade temporal.
Na Figura 2.53 apresenta-se o descodificador MPEG-2 Vídeo com escalabilidade temporal. A
operação do descodificador da camada superior é semelhante a um descodificador MPEG-2 não
escalável. A arquitectura do descodificador é independente da configuração utilizada (caso 1 ou caso
2). O gerador de predições (GP) tem como principal função determinar, ao nível do macrobloco,
a(s) imagem(ns) de referência a utilizar a partir do modo de codificação enviado pelo codificador. As
imagens descodificadas na camada superior (saída de vídeo 2) e da camada base (saída de vídeo 1)
são multiplexadas temporalmente de forma a obter-se o vídeo descodificado final.
72
CAPÍTULO 2 ― TÉCNICAS ESCALÁVEIS DE CODIFICAÇÃO DE VÍDEO
Figura 2.53 – Descodificador MPEG-2 Vídeo com escalabilidade temporal.
A técnica de escalabilidade temporal definida na norma MPEG-2 Vídeo oferece uma flexibilidade
elevada na divisão do débito binário entre camadas porque várias frequências de tramas podem ser
escolhidas para a camada base e superior. Como no codificador existem dois módulos de
compensação de movimento independentes, não ocorre o efeito de deslize (drift). No entanto,
comparando com os codificadores de escalabilidade de SNR e divisão de dados, esta técnica é mais
complexa e exige mais memória e capacidade de processamento por parte do codificador e
descodificador. A qualidade da sequência de vídeo quando se combinam as duas camadas é
comparável à codificação não escalável com o mesmo débito, podendo verificar-se variações entre 0.3 dB e +0.2 dB [17].
Escalabilidade espacial
A escalabilidade espacial na norma MPEG-2 Vídeo permite uma flexibilidade elevada na escolha de
resoluções e formatos para cada camada. A camada base pode até ser codificada usando uma norma
de codificação diferente da camada superior, oferecendo assim interoperabilidade entre normas (e.g.
compatibilidade entre H.261 e MPEG-2 Vídeo). A escalabilidade espacial é baseada nas técnicas de
codificação piramidal apresentadas na Secção 2.3.1. As principais aplicações são a interoperabilidade
entre sistemas com diferentes resoluções (e.g. SDTV e HDTV) e formatos de vídeo (e.g. entrelaçado
para progressivo), distribuição de vídeo em redes de computadores e bases de dados multimédia.
Este modo de escalabilidade da norma MPEG-2 Vídeo representa uma melhoria em relação às
técnicas tradicionais de codificação piramidal, pois permite uma maior eficiência de codificação e um
acréscimo de flexibilidade. Uma das principais diferenças tem a ver com a utilização da técnica
designada por predição espacio-temporal pesada. Esta técnica combina em termos de predição, e ao
nível do macrobloco, duas imagens: a imagem descodificada da camada base espacialmente
interpolada e a imagem predita da camada superior (i.e. depois da compensação de movimento).
Estas duas imagens são combinadas através de um conjunto de pesos definidos numa tabela. Para
cada macrobloco e para cada peso incluído na tabela, uma predição é gerada e utilizada para calcular
o erro de predição; a entrada da tabela que der origem ao menor erro de predição é seleccionada e
identificada no fluxo binário para ser usada pelo descodificador. O processo de predição espaciotemporal pesado é ilustrado na Figura 2.54. Cada macrobloco descodificado da camada base é
interpolado e multiplicado pelo peso w1 e o macrobloco correspondente da camada superior (depois
73
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
da compensação de movimento) é multiplicado pelo peso 1-w1; ambos os macroblocos são somados
para se obter a predição final a utilizar como referência na camada superior.
Figura 2.54 – Predição espacio-temporal pesada.
Na Figura 2.55, a arquitectura do codec MPEG-2 Vídeo com escalabilidade espacial é apresentada.
Em primeiro lugar, tal como na escalabilidade temporal, o codificador e descodificador da camada
base são iguais aos seus equivalentes num codec de vídeo MPEG-2 não escalável, apesar de
poderem ser substituídos por codecs de outras normas (e.g. codec H.261 ou MPEG-1) e assim
permitir uma interoperabilidade entre normas. A entrada de vídeo original é subamostrada por um
decimador espacial e serve de entrada ao codificador da camada base (correspondente à resolução
espacial mínima). O codificador da camada base produz uma imagem descodificada que é
sobreamostrada no interpolador espacial e serve de entrada ao codificador da camada superior. Este
consiste num codificador com compensação de movimento e transformada DCT, modificado para
permitir a utilização da técnica de predição espacio-temporal pesada. Para além disso, dois novos
módulos são introduzidos: o analisador espacio-temporal (AET) que tem como principal função
seleccionar o conjunto de pesos que resulta no menor erro de predição e o processador de pesos
(PP) que determina a predição pesada dada a imagem da camada de base, a imagem predita da
camada superior e o conjunto de pesos seleccionado.
Codificador da camada superior
Descodificador da camada superior
Codificador
DCT + compensação
de movimento
Analisador
espaciotemporal
Decimador
espacial
Interpolador
espacial
Codificador de vídeo
MPEG-2 não
escalável
Demultiplexer de sistema
Processamento
de pesos
Descodificador
DCT + compensação
de movimento
Multiplexer de sistema
Entrada
de vídeo
Pesos
Saída de
vídeo 2
Processamento
de pesos
Interpolador
espacial
Descodificador de
vídeo MPEG-2 não
escalável
Saída de
vídeo 1
Figura 2.55 – Arquitectura do codec MPEG-2 Vídeo com escalabilidade espacial.
74
CAPÍTULO 2 ― TÉCNICAS ESCALÁVEIS DE CODIFICAÇÃO DE VÍDEO
No receptor, a imagem da camada base descodificada é sobreamostrada pelo interpolador espacial
para servir como entrada ao processador de pesos no descodificador da camada superior. A partir
das imagens recentemente descodificadas na camada superior e dos vectores de movimento, obtemse a predição temporal que é dada ao processador de pesos. O processador de pesos, depois de
extrair do fluxo binário a indicação de quais foram os pesos seleccionados pelo codificador, pode
finalmente calcular a predição pesada da imagem a ser usada pelo descodificador da camada
superior.
Na Figura 2.56 é apresentada a arquitectura detalhada do codificador da camada superior. Como se
pode verificar, este codificador é muito semelhante a um codificador MPEG-2 Vídeo não escalável;
a única diferença reside nos dois novos módulos de processamento, o AET e o PP, que seleccionam
e processam o conjunto de pesos que corresponde ao menor erro de predição.
Figura 2.56 – Arquitectura detalhada do codificador da camada superior.
No descodificador da camada superior, a principal diferença em relação ao descodificador MPEG-2
Vídeo não escalável é a introdução do processador de pesos necessário para que a imagem predita
seja a mesma no codificador e descodificador.
Figura 2.57 – Arquitectura detalhada do descodificador da camada superior.
Esta técnica de escalabilidade permite uma elevada flexibilidade na divisão do débito binário entre
camadas e nas resoluções espaciais adoptadas para as imagens da camada base e da camada superior.
Como no codificador dois módulos de realimentação diferentes são utilizados, não existe efeito de
deslize (drift). A qualidade da sequência de vídeo quando se combinam as duas camadas é menor em
relação à codificação não escalável entre 0.75 dB e 1.5 dB [17], isto para o mesmo débito binário.
75
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
Em comparação com a escalabilidade de SNR e a separação de dados, esta técnica é mais complexa;
no entanto, é mais flexível e possui um desempenho superior para a camada base (devido à ausência
do efeito de deslize).
Escalabilidade combinada
A norma MPEG-2 Vídeo permite combinar diferentes tipos elementares de escalabilidades tais
como a escalabilidade espacial, temporal e de SNR para permitir um novo tipo de escalabilidade: a
escalabilidade combinada. Neste caso, três camadas de vídeo podem ser criadas, normalmente
referidas como: camada base, camada superior 1 e camada superior 2. Considerando a escalabilidade
com três camadas (o número máximo de camadas permitido pela sintaxe da norma MPEG-2 Vídeo),
seis tipos de escalabilidade combinada resultam. Nesta Secção apresentam-se sumariamente três
dessas combinações: escalabilidade espacial e temporal, escalabilidade de SNR e espacial e
escalabilidade temporal e de SNR.
Na Figura 2.58 apresenta-se a arquitectura do codec com escalabilidade combinada espacial e
temporal. A escalabilidade espacial é utilizada entre a camada base e a camada superior 1, enquanto a
escalabilidade temporal é usada entre a camada superior 1 e a camada superior 2. A entrada de vídeo
é dividida temporalmente no demultiplexer temporal; uma sequência de menor resolução temporal
bem como uma sua versão subamostrada espacialmente serve de entrada ao codificador MPEG-2
Vídeo com escalabilidade espacial. O codificador com escalabilidade temporal da camada superior
recebe também as imagens localmente descodificadas pelo codificador da camada superior 1. As
operações inversas são efectuadas no receptor.
Figura 2.58 – Arquitectura do codec com escalabilidade combinada espacial e temporal.
Na Figura 2.59 apresenta-se a arquitectura do codec com escalabilidade combinada SNR e espacial.
Neste codec, a escalabilidade de SNR é utilizada entre a camada base e a camada superior 1 e a
escalabilidade espacial entre a camada superior 1 e a camada superior 2. A sequência de vídeo na
entrada é subamostrada espacialmente para uma resolução espacial inferior e é utilizada pelo
codificador MPEG-2 com escalabilidade de SNR para gerar dois níveis de qualidade. As imagens de
alta qualidade (camada superior 1) descodificadas localmente pelo codificador MPEG-2 com
escalabilidade SNR são sobreamostradas para a resolução máxima e utilizadas pelo codificador
espacial da camada superior. No receptor, as operações inversas são realizadas.
76
CAPÍTULO 2 ― TÉCNICAS ESCALÁVEIS DE CODIFICAÇÃO DE VÍDEO
Figura 2.59 – Arquitectura do codec com escalabilidade combinada SNR e espacial.
Na Figura 2.60 apresenta-se outro exemplo de escalabilidade combinada. Este codificador utiliza
escalabilidade de SNR entre a camada base e a camada superior 1 e escalabilidade temporal entre a
camada superior 1 e a camada superior 2. A sequência de vídeo na entrada é subamostrada
temporalmente para uma resolução temporal inferior que é utilizada pelo codificador MPEG-2
Vídeo com escalabilidade de SNR (camadas base e 1) para obter dois níveis de qualidade. Tal como
no exemplo anterior, as imagens de mais alta qualidade localmente descodificadas pelo codificador
MPEG-2 Vídeo com escalabilidade de SNR são utilizadas pelo codificador com escalabilidade
temporal da camada superior 2.
Figura 2.60 – Arquitectura do codec com escalabilidade combinada SNR e temporal.
Os modos de escalabilidade combinada definidos na norma MPEG-2 Vídeo têm como principal
objectivo permitir uma maior flexibilidade na divisão do débito binário, da qualidade e da resolução
espacial e temporal entre as várias camadas de vídeo. Uma das aplicações que a norma MPEG-2
Vídeo pretende cobrir com a escalabilidade combinada é a migração suave entre diversos sistemas de
televisão digital; por exemplo, permitir a interoperabilidade entre receptores de televisão digital com
resolução normal SDTV e receptores de HDTV com dois níveis de qualidade ou oferecer dois
níveis de qualidade para receptores SDTV e um nível de resolução superior para HDTV.
2.5.2 A recomendação ITU-T H.263+
A recomendação ITU-T H.263 versão 2, também referida como H.263+, foi oficialmente aprovada
em Janeiro de 1998 [33] sendo uma extensão da recomendação H.263 [32]; esta recomendação
possui 12 novos modos negociáveis e um conjunto de ferramentas adicionais. Estes novos modos
melhoram a eficiência de codificação e oferecem novas funcionalidades, nomeadamente fluxos
77
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
binários escaláveis, melhorias em termos de eficiência, resiliência a erros, suporte a um conjunto
mais amplo de formatos de vídeo, etc. Ambas as recomendações H.263 e H.263+ têm como
principal objectivo permitir que aplicações como a videotelefonia, a videoconferência e o correio
electrónico com vídeo possam surgir em redes com largura de banda reduzida, tais como as redes
móveis e a rede telefónica pública (PSTN). Os principais parâmetros que se pretendem optimizar
são a eficiência de codificação e a robustez a erros de canal. Apesar da arquitectura de codificação
ser baseada na recomendação H.261, as recomendações H.263 e H.263+ permitem uma qualidade
de imagem superior, especialmente para débitos binários baixos, à custa de um acréscimo de
complexidade. O principal objectivo desta Secção é a apresentação das ferramentas de codificação
incluídas no anexo O da recomendação H.263+ que oferecem modos de escalabilidade temporal, de
SNR e espacial [10]. Para melhor compreender estas ferramentas, apresenta-se primeiro uma breve
descrição da recomendação H.263 e dos seus quatro modos opcionais negociáveis.
Arquitectura H.263
A Figura 2.61 apresenta o diagrama de blocos do codificador H.263. A compensação de movimento
explora a redundância temporal e a transformada de coseno discreta (DCT) é usada para codificar o
erro de predição. Os coeficientes DCT quantificados, os vectores de movimento e informação
adicional são codificados entropicamente através de códigos de comprimento variável (VLCs).
Modo Intra/Inter
Controlo de Codificação
Passo de Quantif.
Entrada
de vídeo
DCT
Q
Coeficientes DCT
Para o
codificador
entrópico e
multiplexer
Q–1
IDCT
Memória
Vectores de
movimento
Figura 2.61 – Arquitectura do codificador de vídeo H.263.
Cada imagem a codificar é dividida em macroblocos (de 16×16 amostras), constituídos por quatro
blocos (de 8×8 amostras) de luminância e dois blocos de crominância (formato de subamostragem
4:2:0). Um grupo de blocos GOB (Group of Blocks) é definido como um número inteiro de linhas de
macroblocos. O H.263 especifica dois modos de codificação: o modo Inter baseado na
compensação e estimação de movimento em relação à imagem anterior e o modo Intra sem
qualquer tipo de referência a outra imagem. Os módulos de estimação e compensação de
movimento, transformada DCT e codificação entrópica são muito semelhantes aos usados na norma
MPEG-2 Vídeo já descrita. Uma diferença importante a assinalar é a não existência de imagens do
tipo B no modo de funcionamento básico do H.263 (apenas imagens P podem ser usadas no modo
Inter).
78
CAPÍTULO 2 ― TÉCNICAS ESCALÁVEIS DE CODIFICAÇÃO DE VÍDEO
Além dos algoritmos de codificação do modo base, a recomendação H.263 inclui quatro modos
opcionais negociáveis que permitem um melhor desempenho de compressão à custa do aumento da
complexidade:
― Vectores de movimento sem restrições: Este modo permite que os vectores de
movimento apontem para posições fora da imagem. Além disso, também permite uma maior
gama de variação para a amplitude dos vectores de movimento. Vectores de movimento
com maior amplitude permitem melhorar a eficiência de codificação quando a resolução da
imagem é elevada (e.g. 4CIF, 16CIF). Ao permitir que os vectores de movimento apontem
para fora da imagem, um ganho significativo de compressão é alcançado quando existe
movimento ao longo das margens da imagem (e.g. quando ocorrem translações).
― Predição avançada: Este modo permite o uso de quatro vectores de movimento por
macrobloco, um para cada um dos quatro blocos de luminância. Para além disso, permite o
uso de compensação de movimento baseada na sobreposição pesada de vários blocos. O uso
deste modo melhora a eficiência de codificação de imagens do tipo Inter e reduz os
artefactos na imagem (e.g. efeito de bloco).
― Codificação aritmética: Quando este modo é activado, o módulo de codificação entrópica
utiliza a codificação aritmética para explorar a correlação estatística na sequência de símbolos
a codificar em vez da codificação de Huffman. Uma vez que a codificação aritmética também
não introduz perdas, a qualidade da imagem não é modificada; no entanto, o débito binário
pode ser reduzido de aproximadamente 5% devido ao uso de códigos mais eficientes.
― Tramas PB: Neste modo admite-se a codificação de tramas designadas por tramas PB,
consistindo numa imagem P e numa imagem B, tal como é exemplificado na Figura 2.62. Os
coeficientes DCT quantificados das imagens P e B são intercalados ao nível do macrobloco,
i.e. um macrobloco na imagem P é imediatamente seguido do macrobloco correspondente
na imagem B. Os vectores de movimento utilizados para os macroblocos na imagem B são
interpolados a partir do vector de movimento para o macrobloco correspondente na imagem
P (determinado entre imagens P). Se este vector de movimento não oferecer uma boa
predição, pode ser melhorado através do envio de um vector diferença adicional. Quando se
usa o modo de tramas PB, a resolução temporal pode ser duplicada sem um aumento
significativo do débito binário.
Trama PB
Figura 2.62 – Estrutura das tramas PB.
79
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
Um das extensões da recomendação H.263+ em relação à recomendação H.263 é a introdução de
escalabilidade. No contexto do H.263, a escalabilidade tem como principal objectivo melhorar a
distribuição de vídeo em redes sujeitas a erros ou perdas de pacotes ou ainda em ambientes
heterogéneos, permitindo que o descodificador possa consumir um conjunto amplo de resoluções
temporais, espaciais e débitos binários (escalabilidade de SNR). Para permitir a inclusão de métodos
escaláveis de codificação de vídeo, foram introduzidos três novos tipos de imagens que apenas
podem ser utilizados na camada superior:
― Trama B: Imagem que possui duas imagens de referência para a sua predição, uma que a
precede temporalmente e outra que a sucede temporalmente.
― Trama EI: Imagem que possui um imagem de referência simultânea no tempo para a sua
predição.
― Trama EP: Imagem que possui duas imagens de referência para a sua predição, uma
simultânea no tempo e outra que a precede temporalmente.
Descrevem-se de seguida as técnicas usadas pelo modo opcional de codificação escalável de vídeo
definido no anexo O do H.263+. Para cada um das técnicas descritas, não se apresenta agora a
arquitectura detalhada do codificador e descodificador escalável devido à sua forte semelhança com
as soluções já apresentadas para a norma MPEG-2 Vídeo.
Escalabilidade temporal
A escalabilidade temporal fornece um mecanismo para melhorar a qualidade de vídeo através do
aumento da resolução temporal e é alcançada através da introdução de tramas do tipo B entre pares
de imagens na camada base (Figura 2.63). Estas tramas B são preditas a partir de uma ou de ambas
as imagens deste par. Saliente-se que as tramas B são diferentes das imagens B de uma trama PB,
tanto na sua forma de codificação como na sintaxe do fluxo binário.
I1
B2
P3
B4
P5
Figura 2.63 – Escalabilidade temporal na recomendação H.263+ (camada base a branco e camada superior a
cinzento).
No H.263+, as tramas do tipo B (e as imagens B das tramas PB) não podem ser usadas como
imagens de referência. Estas imagens possuem uma eficiência de codificação superior à custa do
aumento da complexidade do codificador, da memória necessária e do atraso introduzido. Devido a
esta propriedade, as tramas do tipo B podem ser desprezadas pelo descodificador permitindo assim
obter escalabilidade temporal. A localização das tramas B no fluxo binário não obedece à ordem
temporal, pois antes de se enviar uma trama do tipo B é necessário enviar a imagem do tipo I ou P
seguinte.
Escalabilidade espacial e de SNR
80
CAPÍTULO 2 ― TÉCNICAS ESCALÁVEIS DE CODIFICAÇÃO DE VÍDEO
As escalabilidades espacial e de SNR estão intimamente relacionadas sendo a única diferença entre
elas o aumento da resolução espacial permitido pelo modo de escalabilidade espacial. Um exemplo
de escalabilidade de SNR é apresentado na Figura 2.64. A escalabilidade de SNR permite a
recuperação do erro de codificação da camada base, i.e. a diferença entre a imagem original e a
imagem reconstruída, através da quantificação mais fina da imagem diferença na camada superior.
Camada
superior
Camada
base
EI
EP
EP
EI
EP
I
P
P
P
P
Figura 2.64 – Escalabilidade de SNR na recomendação H.263+ (camada base a branco e camada superior a
cinzento).
Se a imagem utilizada como referência for apenas uma imagem da camada base, a imagem da
camada superior é designada como trama do tipo EI (Enhancement Intra). No entanto, é possível
utilizar duas imagens de referência: a imagem da camada base simultânea no tempo e a imagem da
camada superior anteriormente descodificada. Este tipo de imagem é referido como trama EP
(Enhancement P). Quando as imagens da camada base estão grosseiramente codificadas, a codificação
da camada superior pode exigir um débito binário bastante elevado. A utilização de imagens do tipo
EP pode prevenir este fenómeno, uma vez que utiliza a imagem anterior EP ou EI já codificada com
melhor qualidade. Note-se que o cálculo da média de ambas as imagens de referência permite um
modo de predição bidireccional para as tramas EP.
Este esquema de codificação corresponde à utilização de dois codificadores independentes iguais ao
codificador H.263+ não escalável. A única diferença é que a entrada do codificador da camada
superior recebe a imagem diferença enquanto o codificador da camada base recebe a imagem
original. Em relação ao esquema de codificação definido na norma MPEG-2 Vídeo este esquema é
mais complexo, mas evita o efeito de deslize (drift) em virtude de possuir dois módulos de
realimentação, um em cada codificador. Além disso, permite uma melhor eficiência de codificação
uma vez que explora a redundância temporal entre imagens da camada superior através das imagens
do tipo EP.
A terceira técnica definida na recomendação H.263+ é a escalabilidade espacial ilustrada na Figura
2.65. A única diferença em relação à escalabilidade de SNR é que a imagem da camada base usada
como predição para a imagem na camada superior é interpolada com um factor dois,
horizontalmente ou verticalmente (escalabilidade a uma dimensão) ou tanto horizontalmente como
verticalmente (escalabilidade a duas dimensões).
81
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
Camada
superior
EI
EP
EP
EI
EP
Camada
base
I
P
P
P
P
Figura 2.65 – Escalabilidade espacial na recomendação H.263+ (camada base a branco e camada superior a
cinzento).
Os filtros utilizados para a interpolação são explicitamente definidos na norma H.263+.
Exceptuando o processo de interpolação, o processamento e a sintaxe para a codificação com
escalabilidade espacial são idênticos aos da escalabilidade de SNR. Em ambos os casos, as imagens
da camada superior são referidas como tramas do tipo EI e EP. Em relação ao esquema de
codificação da norma MPEG-2 Vídeo, este esquema é mais simples uma vez que se processa ao
nível da imagem e não ao nível do macrobloco e não se utiliza a predição espacio-temporal pesada.
Escalabilidade combinada
A recomendação H.263+ permite que tramas do tipo B não sejam apenas introduzidas entre tramas
do tipo I, P e PB mas também entre tramas do tipo EI e EP, sejam elas espacialmente escaláveis ou
SNR escaláveis. Além disso, é possível ter mais do que uma camada superior, cada uma delas com
um aumento de resolução espacial, temporal ou de qualidade. Deste modo, pode gerar-se um fluxo
binário escalável com múltiplas camadas que pode resultar da combinação de camadas SNR,
camadas espaciais e tramas do tipo B. A Figura 2.66 ilustra este tipo de escalabilidade combinada.
Camada
superior 2
EI
B
EI
EP
B
Camada
superior 1
EI
EP
EP
EI
B
Camada
base
I
P
P
P
P
Figura 2.66 – Escalabilidade multi-camada: SNR e espacial.
Como se pode verificar, as tramas do tipo B podem ocorrer em qualquer camada. No entanto, a
utilização de tramas B conduz a uma restrição: tem de se usar obrigatoriamente uma trama do tipo B
(ou a imagem B de uma trama PB) quando na camada inferior e simultaneamente no tempo a trama
é do tipo B. Tomando como exemplo a Figura 2.66, a última trama da camada superior 2 tem de ser
82
CAPÍTULO 2 ― TÉCNICAS ESCALÁVEIS DE CODIFICAÇÃO DE VÍDEO
do tipo B. Esta restrição permite que o descodificador possa eliminar facilmente todas as tramas do
tipo B.
Ordem de transmissão
A introdução de vários níveis de escalabilidade obrigou à definição na recomendação H.263+ da
localização das vários imagens a transmitir no fluxo binário. As imagens que são dependentes de
outras imagens devem ser colocadas no fluxo binário depois das imagens das quais dependem.
5,6
Camada
superior 2
7,8
B
2,2
Camada
superior 1
6,7
EI
4,4
B
1,1
Camada
base
B
8,5
I
EP
3,3
B
P
Figura 2.67 – Ordem de transmissão das tramas codificadas.
A Figura 2.67 ilustra duas ordens de transmissão permitidas pelas regras definidas para a
escalabilidade multi-camada (os números nas caixas indicam a ordem no fluxo binário para as duas
alternativas).
2.6
Conclusões
Este capítulo começou por apresentar um conjunto de aplicações onde a codificação escalável de
vídeo pode ter um papel importante. Além disso, apresentou-se um conjunto de técnicas de
codificação escalável de vídeo, devidamente classificadas e apresentaram-se os modos de codificação
escalável de vídeo especificados nas normas JPEG, JPEG2000, MPEG-2 Vídeo e H.263+. O
principal objectivo não foi apresentar uma revisão exaustiva de todas as técnicas de codificação
escalável, mas estudar as principais abordagens e tecnologias nesta área, bem como a adopção destas
tecnologias pelas normas de codificação de imagem e vídeo. Uma das formas de classificação das
técnicas de escalabilidade é em relação à sua granularidade. A Tabela 2.1 apresenta um resumo da
classificação das técnicas de codificação escalável de vídeo oferecidas pelas normas de codificação de
imagem e vídeo em termos de granularidade. As normas que oferecem representações escaláveis de
elevada granularidade permitem uma maior flexibilidade na adaptação do fluxo binário comprimido
às características do canal (e.g. variação do débito binário disponível).
83
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
Tabela 2.1 – Classificação dos modos escaláveis das normas de codificação em termos da granularidade.
Tipos de escalabilidade
Normas de imagens fixas
JPEG
JPEG2000
MPEG-4
VTC
Baixa granularidade
Elevada granularidade
√
√
Normas audiovisuais
MPEG-2
H.263+
MPEG-4
Visual
√
√
√
√
√
Híbrida
As técnicas de codificação escalável permitem gerar múltiplas representações do vídeo a partir do
mesmo fluxo codificado e possibilitam que o conteúdo seja adaptável às características dos
terminais, tais como a resolução e dimensão do écrã, capacidade de processamento, memória e
consumo de energia. A Tabela 2.2 ilustra os vários tipos de escalabilidade disponibilizados pelas
normas estudadas (em termos das características usadas) e pela norma MPEG-4 Visual. A
normalização de uma sintaxe que permita um tipo específico de escalabilidade numa determinada
norma está relacionada com as exigências das aplicações que a norma pretende satisfazer. Como a
maior parte das normas de codificação tende a ser o mais genérica possível e a satisfazer um
conjunto amplo de aplicações, as normas definem perfis, i.e. subconjuntos de ferramentas (e.g. na
norma MPEG-2 Vídeo e MPEG-4 Visual), ou modos opcionais e negociáveis (e.g. na norma
H.263+) que permitem que uma determinada aplicação possa escolher entre vários tipos de
escalabilidade.
Tabela 2.2 – Classificação das normas em termos das características usadas para a escalabilidade.
Tipos de escalabilidade
Espacial
SNR
Temporal
Combinada
Conteúdo
Separação de dados
Normas de imagens fixas
JPEG
JPEG2000
√
√
−
√
×
×
√
√
−
√
√
×
Normas audiovisuais
MPEG-4
VTC
MPEG-2
H.263+
MPEG-4
Vídeo
√
√
−
√
√
×
√
√
√
√
×
√
√
√
√
√
×
×
√
√
√
√
√
×
Como se pode verificar a partir das duas tabelas apresentadas, a norma MPEG-4 Visual oferece o
maior número de ferramentas de escalabilidade, tanto para imagens fixas, através do MPEG-4 VTC
(Visual Texture Coding), como para vídeo, cobrindo todos os tipos de escalabilidade (em termos de
características): espacial, SNR, temporal, conteúdo e combinada. Além disso é a única norma até ao
momento que possui um modo escalável híbrido, onde a camada superior possui uma elevada
granularidade. A norma MPEG-4 Visual é uma norma aberta (tal como as outras), i.e. qualquer
entidade pode aceder à especificação completa de qualquer parte da norma (ao contrário do
Windows Media 8 e Real Media 8), promovendo-se assim a competitividade entre diferentes
implementações da mesma norma. Em termos de desempenho em relação às normas apresentadas
84
CAPÍTULO 2 ― TÉCNICAS ESCALÁVEIS DE CODIFICAÇÃO DE VÍDEO
neste capítulo, a norma MPEG-4 Visual possui uma boa eficiência de compressão (especialmente na
camada base) e uma complexidade relativamente baixa. Por estes motivos, a norma MPEG-4 Visual
merece uma atenção especial nesta tese e irá ser descrita com maior detalhe no capítulo seguinte.
85
Capítulo 3
3 Codificação escalável de vídeo na norma
MPEG-4
No mundo das telecomunicações, a largura de banda é um bem escasso e como tal a codificação de
vídeo tem um papel importante na redução da quantidade de informação a transmitir. O impacto
das novas tecnologias digitais, devido à sua importância económica e à necessidade de garantir
interoperabilidade entre terminais, levou ao desenvolvimento de normas de compressão de vídeo
digital, segundo determinados requisitos. Um dos principais objectivos consistia em alcançar a
melhor qualidade visual para um determinado débito binário. Para desenvolver este tipo de normas,
o grupo MPEG (Motion Picture Experts Group) foi fundado em 1988, sob o patrocínio conjunto da
ISO (International Standards Organization) e IEC (International Engineering Consortium). A primeira norma
desenvolvida por este grupo, a norma MPEG-1, permite a codificação de informação audiovisual
com débitos binários na ordem de 1.5 Mbit/s e foi desenvolvida com o objectivo principal da
gravação de informação audiovisual em CD-ROM. A norma seguinte, a norma MPEG-2, é mais
abrangente pois permite uma gama mais ampla de débitos binários e resoluções espaciais para o
vídeo e um maior número de canais de áudio. Esta norma é hoje largamente utilizada em televisão
digital e gravação audiovisual DVD (Digital Versatile Disc). As normas MPEG-1 e MPEG-2, a par da
norma ITU-T H.261, foram pioneiras em termos da representação digital de sequências de vídeo,
com benefícios vários: uma maior eficiência em termos de largura de banda, qualidade e fiabilidade
acrescidas, fácil processamento da informação, etc. No entanto, as formas de consumo do conteúdo
pelos utentes mantiveram-se fundamentalmente as mesmas por não mudar o modelo de dados
utilizado na representação. Mais concretamente, as aplicações implementadas com base nestas
normas oferecem ao utente essencialmente as mesmas funcionalidades que aquelas já oferecidas com
base no vídeo analógico, uma vez que o conteúdo visual continua a ser representado segundo o
mesmo modelo de dados – uma sequência periódica de tramas rectangulares – mas agora num
formato digital ou seja com cada trama constituída por um dado número de pixels organizados
numa matriz.
Contudo, a crescente difusão das tecnologias digitais, nomeadamente via Internet, tem vindo a pôr
cada vez mais à vista as limitações do modelo de vídeo baseado em tramas, mostrando que novas
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
funcionalidades podem ser oferecidas aos utentes, nomeadamente em termos de acesso e
manipulação da informação, se um novo modelo de dados baseado na compoisção de uma cena por
vários objectos independentes for adoptado. A norma MPEG-4 veio disponibilizar e normalizar
tecnologias de representação audiovisual que permitem oferecer novas funcionalidades,
nomeadamente codificação baseada no conteúdo, interactividade e a combinação eficiente na
mesma cena de objectos com origem natural e sintética. Por outro lado, um grande esforço tem sido
feito para permitir a transmissão de vídeo a débitos binários muito baixos, especialmente para
terminais móveis. A norma MPEG-4 Visual apresenta uma eficiente compressão de vídeo para
débitos binários entre 5 kbit/s e 1 Gbit/s e para resoluções espaciais entre sub-QCIF (128 × 96
pixels de luminância) e alta resolução (4 k × 4 k pixels de luminância). Esta norma inclui também
novas ferramentas de resiliência a erros de forma a minimizar o impacto dos erros de transmissão na
qualidade do vídeo visualizado na recepção. Estas ferramentas são indicadas para uma grande
variedade de canais de transmissão (incluindo redes móveis) e para uma ampla gama de condições
(e.g. erros de rajada, de pacote ou uniformes), sem causar um impacto significativo na diminuição da
eficiência de codificação.
3.1
A norma MPEG-4
O modelo de representação baseado na composição de objectos audiovisuais está na base das novas
funcionalidades oferecidas pela norma MPEG-4 e constitui a maior diferença conceptual
relativamente às normas MPEG anteriores (MPEG-1 e MPEG-2). Na Figura 3.1 está representada
uma versão simplificada da arquitectura de um sistema MPEG-4. No lado do emissor, os vários
objectos de áudio e de vídeo e ainda a informação de composição da cena são codificados
separadamente. Os fluxos elementares gerados são depois multiplexados, formando um único fluxo
binário que é enviado para o canal. No receptor, o fluxo binário recebido é desmultiplexado para se
obterem os fluxos elementares correspondentes aos vários objectos de áudio e vídeo e à informação
de composição de cena. Os fluxos elementares são então descodificados por descodificadores
adequados e o compositor compõe a cena com base na informação de composição de cena
entretanto recebida e descodificada.
objectos AV
codificados
cod.
BIFS
Weather Report
...
desc.
BIFS
desc.
...
compositor
cod.
demultiplexer
cod.
objectos AV
descodificados
desc.
multiplexer
informação de
composição
objectos AV
codificados
desc.
cod.
Figura 3.1 – Arquitectura de um sistema MPEG-4.
88
CAPÍTULO 3 ― CODIFICAÇÃO ESCALÁVEL DE VÍDEO NA NORMA MPEG-4
O facto de uma cena audiovisual ser modelada como uma composição de objectos, habitualmente
com valor semântico ou seja com significado relevante no contexto da aplicação em questão,
apresenta grandes potencialidades técnicas e funcionais, nomeadamente:
― Processamento e codificação selectiva dos objectos: O modelo baseado em objectos
permite que tipos diferentes de objectos sejam processados e codificados de maneira
diferente e adequada a cada um deles. Por exemplo, texto e vídeo não são codificados
utilizando as mesmas ferramentas de codificação porque são tipos de dados com
características muito diferentes e que, como tal, beneficiarão em ser codificados com
ferramentas ajustadas a essas características.
― Reutilização de objectos: Com a norma MPEG-4, qualquer objecto que seja colocado na
cena permanece individualmente acessível, já que o fluxo codificado é independente para
cada objecto, podendo deste modo cada objecto ser facilmente reutilizado em outras cenas.
― Integração de conteúdos com origem natural e sintética: A norma MPEG-4 permite
integrar, numa mesma cena e com elevada eficiência, objectos com origem natural ou
sintética, e.g. modelos 3D. Por exemplo, é possível integrar na mesma cena uma personagem
de desenho animado e um actor real, permancendo ambos individualmente acessíveis. Por
outro lado, um actor pode fazer parte de um cenário virtual. Com a norma MPEG-4,
conteúdos naturais e sintéticos “habitam” harmoniosamente na mesma cena sem
discriminação como acontecia no passado.
― Interacção com e entre objectos: Como os objectos são independentemente acessíveis, o
utilizador pode interagir com a cena de várias formas, e.g. alterando a dimensão espacial de
um objecto ou acedendo a informação (metadados) sobre ele. Além disso, os objectos
podem interagir entre si: por exemplo, um objecto pode alterar a sua posição ou aparência
ou a de outro objecto se, ao moverem-se, chocarem na cena.
Devido aos objectivos ambiciosos com os quais foi concebida, a norma MPEG-4 especifica um
numeroso conjunto de ferramentas relacionadas com várias áreas tecnológicas. Para facilitar o seu
uso na implementação de produtos de acordo com a norma, esta norma está organizada em várias
partes, que podem ser utilizadas em conjunto ou separadamente ainda que o máximo benefício deva
resultar quando as tecnologias MPEG-4 são usadas em sinergia. De seguida apresentam-se as partes
mais significativas:
― Parte 1 (Sistema) [12]: Especifica a arquitectura global dum terminal MPEG-4, bem como
a multiplexagem e sincronização dos fluxos binários, tal como na norma MPEG-2 Sistema.
No entanto, para permitir um conjunto de novas funcionalidades, também se especifica o
formato de descrição/composição de cena BIFS (Binary Format for Scenes), informação
descritiva do conteúdo OCI (Object Content Information), ferramentas visando permitir o uso
de técnicas para proteger a propriedade intelectual IPMP (Intellectual Property Management and
Protection), o formato de ficheiro mp4 e interfaces visando o controlo programático do
terminal (MPEG-J), entre outras coisas.
― Parte 2 (Visual) [13]: Especifica a sintaxe e semântica do fluxo binário comprimido da
informação visual de origem sintética (gerada por computador) bem como para objectos de
89
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
vídeo com forma rectangular ou arbitrária. Para além da sintaxe e semântica do fluxo binário,
são também especificadas as ferramentas correspondentes de descodificação, nomeadamente
de forma, movimento e textura, de resiliência a erros, escalabilidade e sprites1, indicadas para
objectos de origem natural. Para objectos de origem sintética, esta parte da norma especifica
o fluxo binário e a descodificação de modelos 2D e 3D, nomeadamente faces e corpos, bem
como a sua animação de modo eficiente mas realista.
― Parte 3 (Áudio) [15]: Especifica a representação codificada dos objectos áudio, naturais
(fala e música) e sintéticos. Esta parte inclui várias ferramentas de descodificação,
composição de objectos de áudio sintéticos e naturais, escalabilidade no débito binário,
representação de áudio estruturado (sintético), uma interface para conversão de texto em fala
TTS (Text to Speech), descodificação de fala CELP (Coded Excited Linear Prediction) e HVXC
(Harmonic Vector eXcitation Coding).
― Parte 4 (Teste de Conformidade) [16]: Esta parte da norma define um conjunto de testes
concebidos para verificar se os fluxos binários e os descodificadores cumprem as
especificações definidas nas partes 1, 2 e 3 da norma de modo a garantir interoperabilidade.
Através destes testes é possível verificar se um dado codificador produz fluxos binários
válidos (ainda que a codificação propriamente dita não seja normativa).
― Parte 5 (Software de referência) [17]: Inclui programas que implementam as ferramentas
especificadas nas partes 1, 2, 3 e 6 da norma (ferramentas normativas mas também algumas
não normativas como codificadores). Ainda que as várias implementações de codificadores e
descodificadores segundo a norma MPEG-4 não tenham de usar estes programas, o seu
comportamento deve ser semelhante, e tal como descrito nas partes 1, 2, 3 e 6. De notar que
estes programas estão livres de copyright (mas não de patentes) quando usados na
implementação de produtos comerciais em conformidade com a norma MPEG-4.
― Parte 6 (DMIF – Delivery Multimedia Integration Framework) [19]: A parte Sistema da
norma MPEG-4 não especifica a forma como o fluxo binário codificado é transportado nas
diferentes redes de acesso (ao contrário da norma MPEG-2 Sistema). Esta parte da norma
MPEG-4 especifica uma interface entre a representação codificada do conteúdo e um
conjunto de protocolos de transporte. Para este efeito define um protocolo de sessão (em
termos OSI) que permite uma distribuição sincronizada e em tempo-real de conteúdo
MPEG-4.
― Parte 7 (Software optimizado) [60]: Esta parte inclui programas optimizados para alguns
algoritmos relevantes para a implementação da parte Visual da norma (ferramentas
normativas e não normativas), e.g. algoritmos de estimação de movimento.
― Parte 8 (MPEG-4 em redes IP) [56]: Esta parte especifica uma arquitectura para o
transporte de conteúdo MPEG-4 em redes IP. Também inclui regras (na forma de
recomendações) para os formatos de transporte do conteúdo MPEG-4 em diversos
protocolos IP, nomeadamente as regras de fragmentação e concatenação para o protocolo
RTP, regras de uso do SDP (Session Description Protocol), definições MIME (Multi-Purpose
1
Uma sprite consiste numa vista panorâmica de um cena de vídeo.
90
CAPÍTULO 3 ― CODIFICAÇÃO ESCALÁVEL DE VÍDEO NA NORMA MPEG-4
Internet Mail Extensions) e considerações sobre segurança e ligações ponto-multiponto
(multicast).
― Parte 9 (Hardware optimizado) [11]: Esta parte inclui as descrições de circuitos integrados
correspondentes a ferramentas MPEG-4 normativas e não normativas (e.g. DCT/IDCT,
estimação de movimento, etc). Estas descrições utilizam a linguagem VHDL (Very High speed
integrated circuit hardware Description Language) e têm como principal objectivo facilitar o
desenvolvimento de implementações em hardware ou hardware/software de codificadores e
descodificadores MPEG-4.
― Parte 10 (AVC – Advanced Video Coding) [66]: Esta parte especifica a sintaxe de uma
nova norma de codificação de vídeo que permite uma maior eficiência de codificação e
robustez a redes com erros. Esta parte foi desenvolvida pelo grupo JVT (Joint Video Team),
formado a partir do grupo VCEG (Video Coding Experts Group) da ITU-T e do grupo MPEG
do ISO/IEC e será descrita em detalhe no Capítulo 4.
Este capítulo pretende dar uma visão geral da parte Visual da norma de codificação ISO/IEC 14496
(MPEG-4), apresentando as suas principais ferramentas e funcionalidades. Devido à importância da
escalabilidade no contexto desta tese, será dada uma ênfase especial às ferramentas de codificação
que permitem obter representações escaláveis do vídeo, da textura e da forma dos objectos que
constituem uma cena.
3.2
A norma MPEG-4 visual
A norma MPEG-4 Visual consiste num conjunto de ferramentas que permite a codificação de
objectos de vídeo e imagens fixas (especificando-se a sintaxe e descodificação para cada uma destas
ferramentas) bem como de objectos sintéticos tais como malhas 2D e modelos 3D, com especial
relevância para os modelos faciais e do corpo humano. Nesta Secção será dada particular enfâse à
codificação de objectos de imagem e vídeo (naturais). Enquanto a codificação de vídeo é baseada na
transformada DCT (Discrete Cosine Transform) e na compensação de movimento, a codificação de
imagens fixas é baseada na transformada DWT (Discrete Wavelet Transform) e na codificação com zerotrees. Para ambos os casos, foi necessário definir ferramentas que permitissem a codificação eficiente
da forma, de modo a realizar o modelo de representação baseado em objectos de forma arbitrária.
As ferramentas MPEG-4 de codificação de informação de vídeo proporcionam o seguinte conjunto
de funcionalidades [41]:
― Codificação de objectos de forma arbitrária: Em consequência do novo modelo de
dados, baseado na composição de objectos, a norma MPEG-4 permite a codificação de
objectos com forma arbitrária (Figura 3.2). Esta funcionalidade permite que o utilizador
interaja com o próprio conteúdo visual, por exemplo alterando o tamanho de um objecto
para melhor visualização, reposicionando o objecto espacialmente e/ou temporalmente para
personalização da composição da cena, determinando a evolução de uma história consoante
o objecto seleccionado ou até mesmo reutilizando o objecto noutra cena. O utilizador pode
também obter informação sobre um dado objecto de vídeo, e.g. o nome de uma personagem
num filme ou os dados biográficos do actor seleccionado.
91
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
Figura 3.2 – Exemplo de composição de uma cena com três objectos distintos (com transparência).
― Eficiência de compressão para um conjunto amplo de débitos binários: A eficiência
de compressão foi o grande objectivo das normas MPEG-1 e MPEG-2, o que permitiu o
desenvolvimento da televisão digital e do DVD, entre outras aplicações. A norma MPEG-4
introduz novas ferramentas de codificação mais eficientes, especialmente para os débitos
binários mais baixos mas também para os mais elevados2. Além disso, é possível escolher
para cada objecto as ferramentas de codificação mais ajustadas às suas características,
aumentando a eficiência de codificação. Por exemplo, o texto é codificado com ferramentas
adequadas, ao contrário do que acontece nas normas anteriores MPEG-1 e MPEG-2 onde o
texto é codificado como textura.
― Escalabilidade de conteúdo, espacial, temporal e de qualidade: A norma MPEG-4
normalizou um conjunto de ferramentas para garantir que descodificadores com diferentes
capacidades computacionais ou diferentes larguras de banda possam escolher um fluxo
binário adequado às suas características. A norma MPEG-4 Visual oferece escalabilidade
espacial, temporal e de qualidade com baixa e elevada granularidade, tanto para o vídeo
como para imagens fixas. Devido ao novo modelo baseado em objectos, também permite
escalabilidade de objecto ou de conteúdo ou seja o descodificador pode consumir mais ou
menos objectos (começando pelos mais prioritários) consoante os recursos disponíveis. As
principais aplicações que a norma pretende possibilitar com estas ferramentas são a
transmissão de vídeo através da Internet ou das redes móveis, serviços de vídeo com
qualidade variável entre os vários consumidores e a procura de vídeo em bases de dados com
diferentes resoluções ou qualidades.
― Transmissão robusta em canais com erros: De forma a permitir a transmissão de vídeo
em canais (móveis ou fixos) com erros, a norma MPEG-4 inclui ferramentas visando
aumentar a resiliência (robustez) a erros do fluxo binário. Dependendo das características do
canal de transmissão, estas ferramentas podem substituir ou complementar a codificação de
canal de forma a maximizar a qualidade do vídeo recebido pelo cliente, por exemplo através
do aumento da capacidade de ressincronismo ou de ocultação (concealment) dos erros. Sendo
o seu principal objectivo a maximização da qualidade visual subjectiva na presença de erros,
ou seja, a minimização do impacto negativo dos erros, é necessário salientar que a norma
não especifica qual o comportamento dos descodificadores na presença dos erros (ou seja o
comportamento de descodificação é sempre especificado para condições ideais em termos
92
CAPÍTULO 3 ― CODIFICAÇÃO ESCALÁVEL DE VÍDEO NA NORMA MPEG-4
de erros) mas apenas a sintaxe e semântica do fluxo binário correspondente a estas
ferramentas.
Tal como acontece com as anteriores normas MPEG-1 e MPEG-2, a norma MPEG-4 não
especifica o codificador, mas apenas o descodificador e a sintaxe e semântica do fluxo binário uma
vez que isso é suficiente para garantir interoperabilidade. O facto do processo de codificação não
precisar de ser normalizado, incentiva a competição e inovação por parte da indústria, com
resultados evidentes na obtenção de melhores e mais eficientes algoritmos para o codificador, e.g.
estimação de movimento, controle de débito, etc. É também este o caso para os algoritmos de
segmentação de sequências de vídeo, fundamentais para se obterem objectos de vídeo com uma
forma arbitrária a partir de cenas obtidas com uma câmara de vídeo; estes algoritmos podem
continuar a evoluir por muito tempo ou pode até fazer-se a segmentação com auxílio humano, se a
aplicação assim o permitir (conteúdo criado off-line).
3.2.1 Estrutura e sintaxe do fluxo codificado
O conceito mais importante definido pela norma MPEG-4 é o de objecto; este conceito permite uma
representação adequada a aplicações interactivas e permite um acesso directo ao conteúdo de cada
cena. No contexto desta tese só se consideram objectos de vídeo, mas os mesmos princípios
permanecem válidos para outros tipos de objectos. Um objecto de vídeo pode ser constituído por
uma ou mais camadas escaláveis em termos espaciais, temporais ou de qualidade. Para atingir este
objectivo, um codificador MPEG-4 possui à sua disposição três tipos de ferramentas que permitem:
― Representação escalável de vídeo com baixa granularidade: Permite que um objecto
seja descodificado a partir de uma camada base à qual são acrescentadas outras camadas (em
número bastante limitado) que melhoram sucessivamente a resolução espacial ou temporal
do objecto [13]. Cada camada têm de ser descodificada por completo, para se obter uma
melhoria na resolução espacial ou temporal.
― Representação escalável de vídeo com elevada granularidade: Para os casos onde seja
necessária uma granularidade mais elevada em termos de escalabilidade, a norma MPEG-4
permite que um objecto rectangular seja codificado em duas camadas, uma camada base não
escalável e uma camada superior codificada de uma forma progressiva (com uma elevada
granularidadade) para obter uma representação escalável em termos de qualidade (SNR).
Este modo é referido como MPEG-4 FGS (Fine Granularity Scalability) [14].
― Representação escalável da textura com elevada granularidade: Para o caso de texturas
ou imagens fixas (e.g. o fundo de uma cena), a norma MPEG-4 Visual define um modo de
codificação especial, designado por VTC (Visual Texture Coding), baseado na transformada
DWT [13]. Neste modo é possível obter uma representação escalável da textura com elevada
granularidade, tanto em termos espaciais como de qualidade.
A codificação escalável permite que, para cada objecto, seja gerado um conjunto eficiente de fluxos
binários, úteis para uma ampla gama de larguras de banda e características dos terminais, e.g.
dimensão do écrã, complexidade computacional, etc.
2
O studio profile, destinado a vídeo de estúdio (alta qualidade), é considerado bastante eficiente e inclui níveis para débitos
93
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
Uma cena de vídeo MPEG-4 pode ser constituída por um ou mais objectos. Cada objecto de vídeo é
caracterizado através de informação espacial e temporal, referente a três características principais:
forma, movimento e textura. Para as aplicações que não necessitam de objectos de vídeo de forma
arbitrária, a norma MPEG-4 permite a codificação de objectos rectangulares, que constituem assim
um caso particular de objectos de forma arbitrária. Os fluxos binários resultantes da codificação de
cada um dos objectos numa dada cena seguem uma estrutura hierárquica, como se mostra na Figura
3.3.
VS2 ... VSN
VS2
VS1
Visual Object Sequence (VS)
VO1
Visual Object (VO)
VO2
VOL1
Video Object Layer (VOL)
VO2 ... VON
VOL2
VOL2 ... VOLN
GOV2 ... GOVN
GOV1
Group Of VOPs (GOV)
Video Object Plane (VOP)
VOP1
VOP1 ... VOPk-1
GOV2
VOPk
VOPk+1
VOPk+1 ... VOPN
Layer 1
VOP1
VOP2
VOP1 ... VOPN
Layer 2
Figura 3.3 – Estrutura hierárquica do fluxo binário de vídeo MPEG-4.
Os níveis hierárquicos que descrevem os objectos visuais numa cena MPEG-4 são os seguintes:
― Visual Object Sequence (VS): É a estrutura sintáctica que está no topo da hierarquia do
fluxo codificado. Inclui objectos visuais 2D ou 3D, naturais ou sintéticos, e as respectivas
camadas de melhoramento. Este nível hierárquico indica quais os objectos visuais presentes
na cena e qual o perfil e o nível dessa cena (ver Secção 3.2.6).
― Visual Object (VO): O ‘objecto visual’ é a mínima entidade presente na cena que o
utilizador pode aceder e manipular. Este objecto pode ter origem natural ou sintética, ou
seja, pode ser uma sequência de tramas rectangulares, uma sequência de formas arbitrárias,
uma textura estática, uma malha 2D ou 3D genérica ou um objecto facial 3D.
Habitualmente, um objecto visual corresponde a um objecto com significado semântico (e
que pode merecer ser acedido e manipulado) ou ao fundo de uma cena. Este nível
hierárquico serve para indicar qual o tipo de objecto visual em questão e quais as camadas
escaláveis que o constituem.
― Video Object Layer (VOL): A sintaxe da codificação de vídeo na norma MPEG-4 inclui
codificação escalável (várias camadas) e não escalável (uma única camada). Cada camada de
codificação de um objecto de vídeo designa-se por VOL. A escalabilidade permite a
de várias dezenas de Mbit/s.
94
CAPÍTULO 3 ― CODIFICAÇÃO ESCALÁVEL DE VÍDEO NA NORMA MPEG-4
reconstrução de um objecto partindo da camada de base (que pode ser descodificada
independentemente) à qual são adicionadas camadas superiores de melhoria. Como já foi
referido, um dado objecto de vídeo pode ser codificado utilizando escalabilidade temporal,
espacial ou de qualidade, combinadas ou não. Este nível (VOL) contém toda a informação
referente a uma dada camada de um objecto de vídeo, nomeadamente os parâmetros de
codificação e o fluxo binário.
― Group of Video Object Planes (GOV): Os GOVs agrupam VOPs e são essenciais para o
acesso aleatório à informação de vídeo. No início de cada GOV, o VOP é codificado de
modo independente (codificação Intra), sem se pendurar em tramas anteriores ou posteriores,
permitindo deste modo que existam pontos de acesso aleatório para que se possa
descodificar só uma dada parte do fluxo binário.
― Video Object Plane (VOP): Uma instância de um objecto de vídeo num determinado
instante de tempo denomina-se por VOP. O processo de codificação gera representações
codificadas de VOPs, juntamente com informação de composição que permite compô-los
numa cena. A norma MPEG-4 Visual suporta três modos de codificação de VOPs,
ilustrados na Figura 3.4:
ƒ
Intra VOP ou I-VOP: O VOP é codificado independentemente de qualquer outro
VOP.
ƒ
Predicted VOP ou P-VOP: O VOP é codificado utilizando o VOP I ou P mais
recentemente descodificado (sempre no passado), através de técnicas de estimação e
compensação de movimento.
ƒ
Bidirectional VOPs ou B-VOPs: O VOP pode ser codificado utilizando como
predição VOPs I ou P passados e/ou futuros (sempre os mais próximos), em termos
de apresentação/visualização.
Figura 3.4 – Modos de codificação de um VOP.
Apesar da norma MPEG-4 utilizar um modelo de representação baseado em objectos, o
processamento dos VOPs é realizado ao nível do bloco, i.e. cada VOP é dividido em blocos
quadrados, cujo conteúdo é então codificado. Deste modo, cada VOP é codificado a partir do
rectângulo de menor área, e com dimensões múltiplas de 16 pixels, que engloba completamente o
objecto nesse instante, designado por VOP Bounding Box; a bounding box é então sub-dividida em
blocos quadrados de dimensão 16×16 pixels (luminância), os designados macroblocos (ver Figura
3.5).
95
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
VOP Bounding Box para
um objecto de vídeo
Objectos de vídeo
(VOPs)
Figura 3.5 – Bounding box para um objecto e divisão em macroblocos.
Cada um destes macroblocos é dividido em blocos de dimensão 8×8 pixels que contêm as
componentes de luminância e de crominância, podendo a crominância ser sub-amostrada
espacialmente em relação à luminância. Assim, para o formato 4:2:0 (crominâncias com metade da
resolução da luminância nas linhas e nas colunas), cada macrobloco contém 4 blocos de luminância
(16×16 pixels) e 2 blocos de crominância (8×8 pixels) (um para cada uma das crominâncias). Três
tipos de macroblocos podem ser distinguidos para cada VOP, numa arquitectura de representação
como a adoptada pela norma MPEG-4:
― Transparentes: Macroblocos que estão completamente fora do VOP, mas dentro da sua
bounding box. Para estes macroblocos, nenhuma informação de textura (YUV) é codificada,
uma vez que através da informação de forma do objecto em questão o receptor sabe que
estes macroblocos são transparentes, i.e. não são visíveis na cena descodificada.
― Opacos: Macroblocos que se encontram totalmente dentro do VOP. Estes macroblocos são
codificados da mesma forma que os macroblocos em objectos rectangulares, i.e. ou são
codificados no modo Intra através da utilização da informação de textura naquele instante
ou são codificados no modo Inter através de técnicas de estimação e compensação de
movimento e codificação do erro de predição (P- ou B-VOPs).
― Fronteira: Macroblocos que se encontram na fronteira do VOP ou seja que incluem uma
parte opaca e uma parte transparente. Estes macroblocos são codificados através de
ferramentas específicas para a codificação de objectos com uma forma arbitrária.
Figura 3.6 – Tipos de macroblocos usados para a codificação de um VOP com forma arbitrária.
Depois de se introduzir a estrutura e a sintaxe do vídeo codificado segundo a norma MPEG-4,
apresenta-se de seguida a arquitectura MPEG-4 para codificação de vídeo.
96
CAPÍTULO 3 ― CODIFICAÇÃO ESCALÁVEL DE VÍDEO NA NORMA MPEG-4
3.2.2 Arquitectura da codificação de vídeo
Um dos princípios adoptados para o processo de normalização do grupo ISO/MPEG é o de que se
deve especificar o número mínimo de ferramentas para garantir interoperabilidade, deixando o
máximo de liberdade e logo de espaço para competição nas ferramentas cuja especificação não é
essencial para garantir interoperabilidade. Este princípio leva a que o codificador nunca seja
normalizado nas normas MPEG (áudio ou vídeo) mas apenas o fluxo binário e o descodificador.
Desta forma, os algoritmos de codificação podem ser optimizados segundo certos critérios
relevantes para a aplicação em questão, e.g. eficiência de codificação ou complexidade
computacional, e estimula-se a competitividade entre diversas implementações do mesmo
codificador. Por exemplo, os codificadores MPEG-2 Vídeo (MainProfile@MainLevel) conseguem
hoje garantir com 2 Mbit/s a qualidade que no início só conseguiam garantir com 6 a 8 Mbit/s
devido à evolução das técnicas utilizadas na codificação.
Figura 3.7 – Resumo das ferramentas de descodificação de vídeo especificadas na norma MPEG-4 Visual.
Na Figura 3.7 apresentam-se as ferramentas de descodificação que são especificadas na norma
MPEG-4 Visual para o caso de imagens (VTC) e vídeo. Os módulos a cinzento não fazem parte da
norma MPEG-4 Visual3 e por este motivo não são aqui apresentados. A grande inovação da norma
MPEG-4 em termos de codificação de vídeo é o módulo de descodificação de forma, necessário
para se obter uma representação baseada em objectos de forma arbitrária. A informação de forma é
também utilizada pelos módulos de compensação de movimento e descodificação de textura. Se
apenas se pretender descodificar vídeo baseado em tramas rectangulares, o módulo de
descodificação de forma não é necessário e o descodificador apresenta a estrutura do já conhecido
esquema híbrido com DCT e compensação de movimento. Apesar desta estrutura básica ser a
mesma das normas anteriores, vários algoritmos de codificação foram melhorados ou introduzidos
pela primeira vez numa norma que tinha também o objectivo de aumentar a eficiência de
codificação e a robustez aos erros.
Tendo sido introduzida a arquitectura geral da codificação de imagem e vídeo MPEG-4, serão de
seguida apresentadas as principais ferramentas de codificação de vídeo e imagens fixas, incluídas na
versão 24 da norma MPEG-4 Visual, cuja descrição mais detalhada pode ser encontrada em
[61][7][8]. Devido ao âmbito desta tese, optou-se por dar uma maior ênfase às ferramentas de
codificação escalável de vídeo. No entanto, apresentam-se primeiro as ferramentas não-escaláveis de
Enquanto que a multiplexagem está definida na parte de Sistema, a composição de objectos de vídeo não é
normalizada no contexto da norma MPEG-4.
3
97
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
vídeo presentes na norma MPEG-4, organizadas segundo o tipo de dados que processam: forma,
movimento e textura. A norma MPEG-4 possui ainda outras ferramentas que, por razões de espaço,
não serão aqui apresentadas, nomeadamente as técnicas de resiliência a erros e a codificação de
sprites. Para mais detalhes, o leitor pode consultar [59] e [38], respectivamente.
3.2.3 Codificação de forma
A norma MPEG-4 é a primeira norma a incluir objectos de vídeo com forma arbitrária no seu
modelo de representação e, por isso, inclui ferramentas para a codificação da informação de forma.
Cada VOP de um objecto de forma arbitrária é representado por quatro matrizes com os valores
correspondentes às variáveis Y, U, V e A (alpha). Enquanto as três primeiras matrizes definem a
textura de um objecto (luminância e crominâncias), os valores alpha definem a sua forma e o nível de
transparência de cada pixel do VOP.
Na norma MPEG-4 Visual existem dois tipos de máscaras alpha: a máscara binária e a máscara
multi-nível. No caso multi-nível, a gama de valores possíveis na máscara encontra-se entre 0 e 255
(inteiro de 8 bits); no caso binário, apenas dois valores são permitidos: pixel completamente
transparente (‘0’) ou pixel completamente opaco (‘1’), não havendo transparências intermédias. O
VOP apenas está definido para os pixels cujo valor alpha seja superior a zero (sendo transparente
nos restantes pixels da sua bounding box).
Codificação de forma binária
A codificação de forma é feita ao nível do macrobloco, i.e. para cada macrobloco os valores alpha
são independentemente codificados. Os macroblocos com valores alpha binários são denominados
como BAB (Binary Alpha Blocks). A informação de forma binária é codificada através de uma técnica
denominada como Context Based Arithmetic Encoding (CAE) [3] [4], baseada na codificação Inter e
Intra de blocos BAB; esta codificação pode ser feita com ou sem perdas. Neste algoritmo, é
calculado um contexto para cada pixel, baseado nos pixels vizinhos, que podem pertencer ao BAB
actual ou ao BAB anterior, depois da compensação de movimento. Para BABs codificados no modo
Intra, um contexto de 10 bit é construído para cada pixel usando pixels pertencente apenas ao BAB
actual, tal como é apresentado na Figura 3.8a), onde ck = 0 para pixels transparentes e ck = 1 para
pixels opacos.
c9 c8 c7
c6 c5 c4 c3 c2
c1 c0
?
BAB Actual
BAB compensado
de movimento
c3 c2 c1
c8
c0
?
c7 c6 c5
c4
a)
b)
Figura 3.8 – Definição do contexto utilizado pela técnica CAE: modo Intra (a) e Inter (b).
A versão 2 da norma MPEG-4 Visual surgiu aproximadamente um ano depois da versão 1 e inclui todas as ferramentas
especificadas na versão 1 mais algumas entretanto concluídas como a codificação escalável FGS.
4
98
CAPÍTULO 3 ― CODIFICAÇÃO ESCALÁVEL DE VÍDEO NA NORMA MPEG-4
Para BABs codificados no modo Inter, a redundância temporal é explorada utilizando pixels que
pertencem ao BAB actual e ao BAB anterior depois da compensação de movimento (ver Figura
3.8b). O contexto obtido serve para indexar uma tabela de probabilidades definida na norma que
estima a probabilidade do pixel a codificar ser 0 ou 1. O valor de probabilidade obtido e o contexto
em questão são utilizados como parâmetros para o codificador aritmético, que gera os bits de saída.
Codificação de forma multi-nível
A codificação de informação de forma multi-nível segue a mesma estrutura de codificação da
informação de forma binária, mas cada elemento da máscara alpha pode ter agora valores
compreendidos entre 0 e 255 que representam o grau de transparência desse pixel. O primeiro passo
da codificação consiste na extracção da máscara binária (também designada como suporte do
objecto por incluir os pixels onde este assenta) a partir da máscara multi-nível. Cada valor da máscara
binária é colocado a ‘0’ se o valor correspondente da máscara multi-nível for também 0 e é colocado
a ‘1’ se o valor correspondente for diferente de 0. Esta máscara binária é codificada com as
ferramentas acima descritas para a codificação de forma binária. O valor da transparência de cada
pixel é codificado como se da luminância de uma textura com forma arbitrária se tratasse, ou seja,
utilizando a transformada DCT. A arquitectura deste tipo de codificação é ilustrada na Figura 3.9.
Figura 3.9 – Diagrama de blocos da codificação de forma multi-nível.
Para mais detalhes sobre o processo de codificação e descodificação da informação de forma na
norma MPEG-4 consultar [3].
3.2.4 Estimação e compensação de movimento
Tal como nas normas anteriores, as técnicas de estimação e compensação de movimento também
são utilizadas na codificação de textura em MPEG-4 e destinam-se a comprimir a informação de
vídeo através da exploração da redundância temporal entre tramas ou VOPs. As principais
diferenças advêm do facto de as técnicas típicas de estimação e compensação de movimento terem
de ser adaptadas para lidar com objectos de forma arbitrária, representados por sequências de VOPs.
A estimação de movimento só é necessária para P-VOPs e B-VOPs, pois são estes tipos de VOPs
que necessitam de predição temporal. Para os macroblocos transparentes não é efectuada estimação
de movimento e para os macroblocos opacos a estimação de movimento é efectuada de maneira
semelhante às normas anteriores, ou seja, através do emparelhamento de macroblocos de dimensão
16×16 (na luminância e dos correspondentes blocos de dimensão 8×8 nas crominâncias), resultando
um vector de movimento por macrobloco, ou através do emparelhamento de blocos de dimensão
8×8 (na luminância e correspondentes crominâncias), resultando um vector de movimento por cada
99
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
um dos quatro blocos de luminância que fazem parte do macrobloco. Tal como as anteriores
normas MPEG, a norma MPEG-4 não normaliza a técnica de estimação de movimento, nem o
critério de emparelhamento, por isso não ser necessário para garantir interoperabilidade. No entanto,
a norma MPEG-4 Visual introduziu novas e melhoradas ferramentas para compensação de
movimento em relação às anteriores normas MPEG, nomeadamente:
― Compensação de movimento a ¼ de pixel: Algoritmo de compensação de movimento
com uma resolução de ¼ pixel, em vez da resolução de ½ pixel utilizada nas normas
MPEG-1 e MPEG-2 Vídeo. Este algoritmo permite uma melhoria na precisão dos vectores
de movimento e deste modo um decréscimo no erro de predição.
― Compensação de movimento global GMC (Global Motion Compensation): Apenas
um conjunto de parâmetros de movimento é transmitido para o VOP em causa,
representando o movimento global do VOP. Estes parâmetros podem ser utilizados como
alternativa ou complemento aos vectores de movimento estimados localmente para cada
macrobloco. Em sequências com um movimento global constante em grande parte da
imagem (e.g. translações), observa-se um decréscimo do débito binário usado para a
informação local de movimento.
― Modo directo: Este algoritmo permite uma melhoria da eficiência de codificação para as
tramas B, tal como são definidas na norma MPEG-2 Vídeo, baseada na abordagem da
norma ITU-T H.263 para as tramas PB. Na compensação de movimento, dois VOPs podem
ser utilizados como predição: o VOP imediatamente anterior do tipo I ou P, que
corresponde a um instante de apresentação no passado (referência no passado), e o VOP
imediatamente posterior do tipo I ou P, que corresponde a um instante de apresentação no
futuro (referência no futuro). A norma MPEG-4 começa por incluir os três modos de
predição definidos nas normas MPEG-1 e 2 ou seja os modos I, P e B, atrás definidos. Além
destes três modos, o modo directo da norma H.263 é também definido na norma MPEG-4.
No modo directo, os vectores de movimento para uma dada trama ou VOP são calculados a
partir dos vectores de movimento do P-VOP de referência no futuro, através de uma
operação de interpolação linear levando em conta o tempo decorrido entre os vários VOPs
em questão, e do envio de um termo de correcção ∆MV, tal como é exemplificado na Figura
3.10. Esta técnica permite reduzir o débito binário necessário para enviar os vectores de
movimento associados a um B-VOP.
Figura 3.10 – Modo directo na predição bidireccional.
100
CAPÍTULO 3 ― CODIFICAÇÃO ESCALÁVEL DE VÍDEO NA NORMA MPEG-4
― Codificação preditiva dos vectores de movimento: A codificação dos vectores de
movimento para os P-VOPs e B-VOPs é diferencial, tomando-se como predição a mediana
de três vectores de movimento vizinhos já transmitidos (dos macroblocos em cima, à
esquerda e na diagonal superior esquerda do macrobloco corrente). Se a estimação de
movimento for baseada em blocos (em vez de macroblocos), utilizam-se nesse caso quatro
vectores de movimento por macrobloco (um por cada bloco) para a compensação de
movimento.
Para o caso de VOPs de forma arbitrária, o VOP de referência utilizado para a compensação de
movimento possui uma forma arbitrária. Como alguns dos pixels no macrobloco de referência
podem estar fora do VOP de referência (i.e. o macrobloco contem pixels transparentes), é utilizada
uma técnica de preenchimento (padding) para extrapolar o valor destes pixels a partir dos pixels que
estão dentro do VOP de referência. Estes algoritmos de preenchimento têm de ser normativos, de
forma a garantir que cada descodificador gera macroblocos de referência/predição idênticos. Os
macroblocos opacos são codificados pelas ferramentas acima descritas; para os macroblocos
fronteira e transparentes foram desenvolvidas ferramentas de preenchimento que se descrevem de
seguida.
Padding para macroblocos fronteira
Os pixels transparentes dos macroblocos fronteira são preenchidos através de uma concatenação de
operações de preechimento (padding) horizontal e vertical, nesta ordem. A Figura 3.11 ilustra este
processo para um bloco de 8×8 pixels. Os pixels na fronteira do VOP têm os valores “A”, “B”, “C”,
etc. Em primeiro lugar, os pixels na fronteira são repetidos horizontalmente, para a esquerda ou para
a direita. No caso de haver dois valores na fronteira, é calculada uma média e preenchidos os pixels
transparentes com esse valor (como é ilustrado na Figura 3.11 para a terceira linha a contar de
baixo). O mesmo processo é repetido verticalmente, tendo em conta os pixels que foram
preenchidos no passo anterior. No final, todos os pixels foram preenchidos e não existe nenhum
pixel transparente.
Figura 3.11 – Processo de preenchimento (padding) para macroblocos fronteira.
Padding para macroblocos transparentes
Os macroblocos transparentes (que estão completamente fora do VOP) são preenchidos de uma
forma diferente, com uma técnica denominada extended padding. Estes macroblocos são preenchidos
através da repetição dos valores na fronteira de um dos macroblocos de fronteira vizinhos. Se existe
mais do que um macrobloco fronteira, apenas um dos macroblocos fronteira é escolhido, de acordo
com as prioridades definidas na Figura 3.12.
101
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
Figura 3.12 – Processo de preenchimento para macroblocos transparentes.
No caso de haver mais de um macrobloco fronteira na vizinhança, o macrobloco transparente é
preenchido repetindo os valores dos pixels na fronteira horizontal ou vertical de acordo com a
prioridade estabelecida.
Compensação de movimento com sobreposição
A norma MPEG-4 Visual também suporta compensação de movimento com sobreposição (como
na norma H.263), designada por OBMC (Overlapped Block Motion Compensation). Neste caso, para cada
bloco de um macrobloco, são utilizados para a compensação de movimento três vectores de
movimento (do próprio bloco ou macrobloco) e dos seus dois vizinhos mais próximos. A predição
para o bloco (ou macrobloco) em questão é obtida através da média das predições dadas pelos vários
vectores candidatos, ponderando cada parcela de acordo com pesos pré-definidos e que dependem
da posição de cada pixel dentro do bloco (ou macrobloco). No entanto, esta ferramenta não faz
parte de nenhum tipo de objecto e logo perfil da norma MPEG-4 Visual e por este motivo não pode
ser utilizada neste momento por nenhuma aplicação em conformidade com a norma.
3.2.5 Codificação de textura
A informação de textura de um VOP é constituída por uma componente de luminância (Y) e duas
componentes de crominância (U e V). No caso de um I-VOP, a informação de textura é
directamente codificada, enquanto que no caso de um P ou B-VOP a informação de textura reside
no erro de predição depois de se efectuar a compensação de movimento. Em ambos os casos, o
processo de codificação é ilustrado na Figura 3.13. Para codificar a informação de textura é utilizada
a transformada DCT (Discrete Cosine Transform) aplicada sobre blocos de 8×8 pixels, já conhecida das
normas anteriores, mas adaptada de forma a lidar também com objectos de forma arbitrária.
Figura 3.13 – Processo de codificação da textura de um VOP.
102
CAPÍTULO 3 ― CODIFICAÇÃO ESCALÁVEL DE VÍDEO NA NORMA MPEG-4
Como se pode observar na Figura 3.13, a norma MPEG-4 Visual trata de forma diferente os
macroblocos fronteira e os macroblocos opacos (os macroblocos transparentes não têm informação
de textura). No caso dos macroblocos opacos, a DCT é aplicada directamente às três componentes
da textura (YUV); no caso dos macroblocos fronteira, dois métodos são permitidos:
― Preenchimento (padding) + DCT: Os pixels transparentes dentro do macrobloco
fronteira são preenchidos com valores de textura de acordo com alguma regra ou algoritmo
de preenchimento. Qualquer valor é permitido, uma vez que depois da descodificação da
forma, o descodificador possui a informação sobre quais os pixels que são transparentes ou
não. Depois deste processo de preenchimento, os macroblocos fronteira são codificados do
mesmo modo que os macroblocos opacos, ou seja, usando a DCT. A forma como se
preenchem os valores transparentes não é normativa e é deixada ao critério do codificador.
Existem contudo várias estratégias [54][61] que tentam minimizar o débito binário para
codificar o conteúdo dos macroblocos fronteira (i.e. pixels transparentes e opacos), tanto
para o modo Intra como para o modo Inter.
― SA-DCT (Shape Adaptive DCT): Este método codifica e transmite apenas os valores dos
pixels opacos dentro dos macroblocos transparentes. Este algoritmo é baseado num
conjunto pré-definido de funções base da DCT [55] e é constituído por quatro passos: i)
deslocamento vertical para o topo; ii) DCT unidimensional na vertical; iii) deslocamento
horizontal; e iv) DCT unidimensional na horizontal. A Figura 3.14 mostra um exemplo de
aplicação da SA-DCT para um bloco de 8×8 pixels. De seguida, os coeficientes são varridos
em zig-zag, omitindo os coeficientes não definidos, e finalmente codificados entropicamente.
Uma variação deste algoritmo, referido como ∆SA-DCT [23], pode também ser utilizada;
esta variação consiste em adicionar alguns passos de pré e pós-processamento ao algoritmo
SA-DCT de forma a melhorar a sua eficiência.
Figura 3.14 – Exemplo de aplicação da transformada SA-DCT.
De forma a reduzir o débito binário e a eliminar a informação irrelevante, os coeficientes DCT
obtidos são quantificados. Existem dois métodos de quantificação para vídeo especificados na
norma MPEG-4 Visual:
― Quantificação MPEG-2: O primeiro método é muito semelhante ao especificado na
norma MPEG-2 Vídeo, utilizando uma de duas matrizes de quantificação (uma para o modo
Intra e outra para o modo Inter) para definir o passo de quantificação para cada coeficiente
DCT. O codificador pode utilizar as matrizes previamente definidas na norma ou transmitir
novas matrizes ao descodificador. Este método permite que o codificador tenha em conta as
características do sistema visual humano, pois cada passo de quantificação (ou peso) na
matriz pode ser ajustado individualmente.
103
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
― Quantificação H.263: O segundo método é o especificado na norma H.263. Este método é
menos complexo e mais fácil de implementar pois utiliza o mesmo passo de quantificação
para todos os coeficientes.
O codificador escolhe qual dos dois métodos de quantificação pretende utilizar para a codificação
do objecto de vídeo em questão e sinaliza essa opção ao descodificador. O coeficiente DC de um
bloco 8×8 codificado no modo Intra (representa a luminância ou crominância média) é tratado de
uma forma diferente, sendo sempre quantificado com um passo de quantificação fixo (normalmente
8).
Para alguns dos coeficientes DC e AC pertencentes a blocos vizinhos existe uma forte dependência
estatística, i.e. o valor de um coeficiente pode ser predito a partir do valor do coeficiente na mesma
posição espacial mas pertencente a um bloco vizinho. Este facto é explorado na codificação de
textura da norma MPEG-4 Visual através do módulo designado na Figura 3.13 como “Predição de
coeficientes”. No entanto, este tipo de predição só é utilizado em macroblocos Intra. O processo é
ilustrado na Figura 3.15. Para o coeficiente DC, do bloco X, a predição pode ser feita a partir dos
coeficientes DC dos blocos A ou C. Os coeficientes AC na primeira linha são preditos a partir dos
coeficientes correspondentes do bloco de topo (C) e os coeficientes AC na primeira coluna são
preditos a partir dos coeficientes correspondentes do bloco à esquerda (A).
Figura 3.15 – Coeficientes candidatos para a predição dos coeficientes AC e DC.
De seguida, os coeficientes DCT preditos são convertidos num vector unidimensional com o
objectivo de gerar símbolos para o codificador entrópico. A sequência de varrimento assegura
sempre a transmissão prioritária dos coeficientes mais relevantes, independentemente do número de
coeficientes enviados, pois a maior parte da energia está concentrada no canto superior esquerdo
(baixas frequências) de cada bloco. A norma MPEG-4 suporta além do popular varrimento em zigzag utilizado em normas anteriores mais dois modos de varrimento adicionais para estruturas de
imagem em que exista uma predominância de frequências horizontais ou verticais. O resultado do
varrimento consiste num vector em que os coeficientes mais significativos estão no princípio e os
zeros no fim. Esta característica e a estatística do sinal são exploradas pela última etapa de
processamento: o codificador entrópico de Huffman.
3.2.6 Perfis e níveis
A norma MPEG-4 contém um grande número de ferramentas associadas às inúmeras
funcionalidades desejadas, o que a torna bastante complexa e difícil de implementar na totalidade.
Por este motivo, existe a necessidade de limitar a complexidade dos descodificadores que estão em
conformidade com a norma, pois não se deve esperar que um descodificador conforme tenha de
104
CAPÍTULO 3 ― CODIFICAÇÃO ESCALÁVEL DE VÍDEO NA NORMA MPEG-4
implementar todas as ferramentas da norma com as respectivas capacidades máximas, por exemplo
em termos de débito binário e/ou resolução, devido à grande complexidade de implementação que
resultaria e por muitas ferramentas serem desnecessárias em algumas classes de aplicações.
A necessidade de limitar a complexidade dos descodificadores levou à definição de subconjuntos de
ferramentas e à definição de limites de complexidade para os parâmetros de codificação. Para
minimizar a complexidade, garantindo ainda assim a interoperabilidade entre terminais num dado
domínio de aplicação, a norma MPEG-4 normalizou determinados subconjuntos relevantes de
ferramentas, para que os codificadores possam produzir fluxos binários de acordo com esta
especificação e assim encontrar descodificadores menos complexos mas mesmo assim com as
capacidades necessárias à sua descodificação.
Para limitar a complexidade de implementação, a norma MPEG-4 utiliza um mecanismo baseado
em três conceitos principais - tipos de objecto, perfis e níveis – de acordo com as seguintes
definições:
― Tipo de objecto: Define a sintaxe do fluxo binário para um dado objecto que representa
uma entidade com significado na cena audiovisual. Estabelece uma lista de ferramentas de
codificação que podem ser utilizadas para a codificação desse objecto. Definem-se tipos de
objecto para objectos de áudio e visuais.
― Perfil: Define o conjunto de ferramentas que podem ser utilizadas num determinado
terminal, por exemplo para descodificar uma cena MPEG-4. Na norma MPEG-4, existem
perfis de áudio, visuais, gráficos, de descrição de cena, de descritores de objecto e MPEG-J.
Os perfis de áudio e visuais são definidos com base nos tipos de objecto, especificando quais
os tipos de objecto que podem ser usados para codificar os objectos de uma cena codificada
de modo conforme com um dado perfil. Os perfis destinam-se a limitar o conjunto de
ferramentas que é necessário implementar no descodificador para garantir interoperabilidade
entre terminais que só utilizem uma parte das ferramentas especificadas na norma.
― Nível: Especifica as restrições impostas aos perfis acima descritos, ou seja, às ferramentas
por eles utilizadas, através de limitações impostas a alguns parâmetros relevantes. Os níveis
especificam limites para a complexidade computacional que é exigida definindo limites
máximos para os codificadores ao produzir os fluxos binários e limites mínimos para os
descodificadores.
Resumindo, uma dada combinação perfil e nível (denominada por perfil@nível) estabelece um limite
superior para a complexidade do fluxo binário criado no codificador e um limite inferior para as
capacidades do descodificador. Como a norma MPEG-4 é baseada em objectos, as cenas são
compostas por vários objectos audiovisuais e um determinado perfil@nível especifica a
complexidade máxima para a totalidade dos objectos presentes na cena e não para cada objecto
individualmente. Por uma questão de espaço, não se apresentam aqui detalhadamente os
subconjuntos de ferramentas que podem ser utilizados para codificar um dado objecto na cena, os
tipos de objecto suportados por cada perfil ou os níveis definidos para cada perfil. No entanto, o leitor
pode recorrer a [24] [13] para obter mais detalhes sobre estes assuntos.
105
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
3.3
Codificação escalável de textura (VTC)
Nos últimos anos, as indústrias multimédia, de telecomunicações e de animação computadorizada
assistiram a um aumento do interesse pelos serviços multimédia interactivos. A eficiência dos
esquemas de codificação utilizados para a compressão de conteúdo multimédia, a capacidade de
suportar vários níveis de transparência e a flexibilidade para codificar múltiplos níveis de detalhe
para uma cena num único fluxo binário são essenciais para o desenvolvimento destes novos
serviços. Para responder a estas necessidades, o grupo ISO MPEG desenvolveu um método de
codificação de textura denominado VTC (Visual Texture Coding), incorporado na norma MPEG-4
Visual, para suportar aplicações deste tipo, nomeadamente a codificação de texturas para mapear em
modelos 3D. O método VTC baseia-se na transformada DWT e na codificação das correspondentes
sub-bandas com zero-trees (ver Secção 2.3.2). Esta ferramenta oferece as seguintes capacidades [25]:
1. Compressão eficiente para uma ampla gama de débitos binários: A capacidade de
comprimir eficientemente texturas, imagens fixas e documentos num conjunto amplo de
débitos binários utilizando um única ferramenta permite simplificar o processo de criação de
conteúdos multimédia.
2. Codificação de objectos com forma arbitrária: Uma vez que um objecto de vídeo
MPEG-4 pode possuir uma forma arbitrária, a ferramenta SA-DWT (Shape Adaptative Discrete
Wavelet Transform) foi normalizada de forma a garantir uma codificação eficiente de texturas
com forma arbitrária, tal como o faz a técnica SA-DCT para objectos de vídeo.
3. Escalabilidade espacial e de SNR (qualidade) com elevada granularidade: Esta
capacidade torna possível a criação de texturas com múltiplas resoluções e qualidades,
essenciais para aplicações de mapeamento 2D/3D, comércio electrónico, documentos
compostos, entre outras, a partir de um único fluxo binário.
4. Transmissão robusta em canais sujeitos a erros: Para permitir a transmissão em canais
com erros, o método de codificação VTC adoptou ferramentas de resiliência a erros.
Dependendo do canal de transmissão, estas ferramentas podem ser utilizadas para substituir
ou complementar a codificação de canal de forma a melhorar a qualidade da imagem
visualizada.
Para que as capacidades acima descritas pudessem ser alcançadas, o método VTC adoptou uma
estrutura de codificação baseada nas seguintes técnicas:
― Transformada DWT bi-ortogonal e algoritmo de codificação baseado em zero-trees.
― Esquema de codificação SA-DWT para a codificação de objectos com forma arbitrária.
― Três modos de quantificação e dois modos de varrimento dos coeficientes da DWT de
forma a permitir diferentes níveis de granularidade para a escalabilidade espacial e de
qualidade.
― Um esquema de empacotamento capaz de oferecer robustez a erros de transmissão.
― Um esquema de divisão da imagem (tiling) para reduzir os requisitos de memória do
codificador e descodificador, nomeadamente face a imagens de grandes dimensões.
106
CAPÍTULO 3 ― CODIFICAÇÃO ESCALÁVEL DE VÍDEO NA NORMA MPEG-4
Estas ferramentas foram adoptadas em diferentes versões da norma MPEG-4 Visual. O módulo da
transformada DWT, a codificação em zero-trees e a quantificação foram incluídas na versão 1 da
norma MPEG-4 Visual, enquanto que o esquema de codificação SA-DWT e as técnicas de
resiliência a erros e divisão da imagem foram incluídas na versão 2 da mesma norma. A arquitectura
do codificador é apresentada na Figura 3.16 assumindo que os dados de entrada são três objectos
visuais com forma arbitrária (duas crianças e uma bola). A forma e a textura dos objectos são
codificadas separadamente: no módulo de codificação escalável da forma e no módulo de
codificação escalável de textura para objectos com forma arbitrária, respectivamente. A informação
de saída de ambos os módulos é combinada em três fluxos binários elementares que correspondem
a cada objecto presente na cena. Por fim, os fluxos binários são multiplexados de modo a formar o
fluxo binário final a enviar para o canal.
Figura 3.16 – Diagrama de blocos do codificador MPEG-4 VTC.
Explica-se de seguida cada um dos componentes da arquitectura de codificação incluída na Figura
3.16. Apresenta-se primeiro o sistema de codificação quando os objectos a codificar possuem forma
rectangular, i.e. sem informação de forma, generalizando-se de seguida para objectos com forma
arbitrária; por fim, descreve-se a escalabilidade espacial e de qualidade, intrínsecas à solução de
codificação adoptada.
3.3.1 Codificação de textura com forma rectangular
O sistema de codificação MPEG-4 VTC baseia-se na transformada DWT e na codificação em zerotrees, introduzidas na Secção 2.3.2. Tal como é ilustrado na Figura 3.17, a codificação VTC inclui três
módulos principais: a transformada DWT, o módulo de quantificação e codificação em zero-trees e o
codificador entrópico.
Figura 3.17 – Codificação VTC para objectos rectangulares.
A transformada DWT é aplicada à imagem de entrada para se obter uma representação em subbandas com várias resoluções. Na norma MPEG-4 Visual, uma transformada DWT bi-ortogonal
[42] foi definida para ser usada por omissão; no entanto, a sintaxe da norma suporta qualquer
transformada DWT, i.e. o codificador pode definir os filtros a utilizar pelo descodificador. Os filtros
definidos podem possuir coeficientes inteiros, permitindo que o mesmo sistema de codificação seja
107
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
utilizado para a codificação sem perdas. O fluxo binário pode ser escalável desde débitos binários
muito baixos até à codificação sem perdas, sempre de uma forma contínua.
A sub-banda com a resolução espacial mais baixa (normalmente referida como sub-banda DC) é
codificada separadamente das restantes sub-bandas (AC). Os coeficientes DC são uniformemente
quantificados e adaptativamente preditos a partir dos coeficientes vizinhos. Tal como é ilustrado na
Figura 3.18a, o coeficiente X é diferencialmente codificado enviando um erro de predição calculado
a partir de três coeficientes vizinhos já quantificados (A, B e C) da seguinte forma: se |A-B| for
menor que |B-C| então X’ = X – C; caso contrário X’ = X – A. Finalmente, o erro de predição é
codificado com um codificador aritmético adaptativo.
Coeficientes da DWT
(apenas as componentes AC)
B
Q(0)
C
Buffer
A
CS e ZTC
AAC
BS0
CS e ZTC
AAC
BS1
CS e ZTC
AAC
BSn
Q-1(0)
X
Q(1)
Buffer
Q-1(1)
Q(n)
a)
b)
Figura 3.18 – a) Predição dos coeficientes DC; b) Modo com múltiplos passos de quantificação.
As sub-bandas AC são codificadas utilizando uma combinação de algoritmos, variantes do algoritmo
EZW (Embedded Zero-Tree Wavelet) original [53] (descrito na Secção 2.3.2): o algoritmo ZTE (ZeroTree Entropy) [40], o algoritmo MZTE (Multiscale Zero-Tree Entropy) [57] e o algoritmo PEZW
(Predictive Embedded Zero-tree Wavelet) [34]. Todos os algoritmos possuem um quantificador (implícito
ou explícito), varrimento dos coeficientes e codificador aritmético.
Quantificação
Baseando-se nestes três algoritmos, e garantindo uma flexibilidade acrescida em termos de eficiência
e complexidade, o método MPEG-4 VTC suporta três modos de quantificação:
― Passo de quantificação único: É utilizado um único passo de quantificação para todos os
coeficientes da DWT.
― Múltiplos passos de quantificação: São utilizados múltiplos passos de quantificação de
Q(0) a Q(n) nas várias etapas (ver Figura 3.18b). Os coeficientes DWT são primeiro
quantificados com o passo de quantificação Q(0) e de seguida varridos pelo módulo CS
(Coefficient Scanning), codificados em zero-trees pelo módulo ZTC (ZeroTree Coding) e
codificados aritmeticamente pelo módulo AAC (Adaptive Arithmetic Coding). Os coeficientes
quantificados são também desquantificados e subtraídos aos coeficientes originais. O erro de
quantificação é quantificado novamente e processado pelos restantes quantificadores (Q(1) a
Q(n)). O fluxo binário irá consistir numa combinação dos fluxos binários de cada etapa (BS0
a BSn na Figura 3.18b) e fornece n +1 camadas de escalabilidade de qualidade.
― Quantificação bi-nível: Igual ao modo de quantificação do algoritmo EZW (definido na
Secção 2.3.2), pois utiliza uma aproximação sucessiva dos coeficientes através de limiares
108
CAPÍTULO 3 ― CODIFICAÇÃO ESCALÁVEL DE VÍDEO NA NORMA MPEG-4
sucessivamente decrescentes. O limiar é inicializado com o valor do coeficiente com
amplitude maior e, em cada varrimento, este valor é dividido por dois. Por este motivo, este
modo é também referido como modo de quantificação implícita.
Varrimento
O próximo passo de codificação consiste no varrimento dos coeficientes DWT, disponibilizando a
norma MPEG-4 Visual duas ordens de varrimento:
― Árvore: Ordem igual à utilizada no algoritmo EZW, onde todos os coeficientes de uma
árvore são codificados antes de se codificar a próxima árvore, ver Figura 3.19a).
― Sub-banda a sub-banda: Todos os coeficientes de uma sub-banda são codificados antes de
se codificar a próxima sub-banda, ver Figura 3.19b). As sub-bandas são varridas numa
ordem de resolução espacial crescente, i.e. da sub-banda com resolução espacial mais baixa
para a mais alta.
As duas ordens de varrimento servem para cumprir vários objectivos. Por exemplo, o varrimento
em árvore requer menos memória para a codificação e descodificação da imagem; por outro lado, o
varrimento sub-banda a sub-banda pode codificar os coeficientes com um menor atraso.
a)
b)
c)
Figura 3.19 – Ordens de varrimento: a) em árvore e b) sub-banda (a ordem de varrimento é indicada pela
sequência 1...9,a...z). c) Exemplo da estrutura em zero-trees.
Codificação com zero-trees
O passo seguinte consiste na codificação com zero-trees. A estrutura em zero-trees explora a correlação
entre um coeficiente numa escala grosseira e os seus descendentes em escalas mais finas (ver Figura
3.19c), através de uma estrutura em árvore (quad-trees). O conjunto de símbolos utilizado pela
codificação com zero-trees é muito semelhante (mas não igual) ao utilizado pelo codificador EZW:
― ZTR (zero tree root): Representa um nó da árvore cujo coeficiente é zero e todos os seus
descendentes são zero.
― VZTR (valued zero tree root): Representa um nó da árvore cujo coeficiente é diferente de
zero e todos os seus descendentes são zero.
109
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
― IZ (isolated zero): Representa um nó da árvore cujo coeficiente é zero mas nem todos os
seus descendentes são zero.
― VAL (isolated non-zero value): Representa um nó da árvore cujo coeficiente é diferente
de zero mas nem todos os seus descendentes são zero.
A principal diferença em relação ao codificador EZW (apresentado na Secção 2.3.2) é a introdução
do símbolo VZTR que permite representar eficientemente os descendentes zero de um nó diferente
de zero. No algoritmo original EZW é necessário enviar seis símbolos para codificar este tipo de
árvore. Este novo conjunto de símbolos permite uma melhoria na eficiência de codificação (ver [34]
para mais detalhes). Além desta diferença, a codificação diferencial é utilizada no modo de
quantificação com múltiplos passos. Os coeficientes quantificados com um determinado passo de
quantificação (e.g. Q(1)) são refinados a partir dos coeficientes do nível anterior (e.g. Q(0)) e só
depois é que são codificados com zero-trees (ver [57] para mais detalhes).
A última etapa é a codificação entrópica dos símbolos gerados. No método MPEG-4 VTC utiliza-se
um codificador aritmético adaptativo para codificar os símbolos gerados pelo codificador de zerotrees, os valores dos coeficientes diferentes de zero quantificados e os valores refinados no modo de
quantificação com múltiplos passos. Para mais detalhes, consultar [42].
3.3.2 Codificação de textura com forma arbitrária
A codificação SA-DWT [22] (Shape Adaptative Discrete Wavelet Transform) é utilizada para a codificação
de texturas com forma arbitrária. A única diferença em relação à codificação com zero-trees
apresentada na Secção anterior é o tratamento das regiões que se encontram na fronteira das
texturas com forma arbitrária. A codificação SA-DWT garante que o número de coeficientes a
codificar é igual ao número de pixels opacos da região com forma arbitrária. Além disso, esta
transformada mantem a correlação espacial e a semelhança entre coeficientes de sub-bandas
diferentes, tal como a transformada DWT. Para lidar com objectos de forma arbitrária, foi também
necessário definir algumas extensões ao algoritmo de codificação com zero-trees, para garantir uma
eficiência de codificação alta nas sub-bandas AC que possuem coeficientes a ignorar, i.e. que não
contribuem fortemente para a textura do objecto.
Na codificação SA-DWT, a transformada DWT é aplicada a cada segmento de linha e coluna de
pixels consecutivos, de uma forma semelhante à transformada SA-DCT. Extensões simétricas e
estratégias de sub-amostragem foram incorporadas de forma a ter em consideração o comprimento
e posição de começo do segmento de linha ou de coluna a ser transformado. Mais detalhes podem
ser encontrados em [27].
3.3.3 Escalabilidade espacial e de qualidade
A ordem de varrimento e o modo de quantificação estão intimamente ligados com as propriedades
escaláveis do fluxo binário. Por exemplo, quando se utiliza um passo de quantificação único em
conjunto com o modo de varrimento em árvore, o fluxo binário gerado não é escalável, nem em
qualidade (SNR), nem espacialmente. A granularidade do fluxo binário depende também do método
de quantificação utilizado: o modo de quantificação bi-nível permite uma granularidade muito fina
na qualidade enquanto no modo de quantificação com múltiplos passos a granularidade depende do
110
CAPÍTULO 3 ― CODIFICAÇÃO ESCALÁVEL DE VÍDEO NA NORMA MPEG-4
número de passos utilizados. Como geralmente não se utiliza um número de passos muito elevado
(no método MPEG-4 VTC o número máximo de passos é 31), o fluxo binário possui uma
granularidade menor em relação ao modo de quantificação bi-nível. A Tabela 3.1 ilustra o número
de níveis de granularidade que o codificador pode seleccionar, através da combinação de diferentes
técnicas de quantificação e varrimento dos coeficientes. Max_wavelet é o número de sub-bandas
geradas pela transformada DWT e max_snr é o número máximo de divisões por dois (ou
equivalentemente o número máximo de planos de bits) que cada coeficiente resultante da
transformada DWT pode sofrer; este valor depende do passo de quantificação utilizado.
Tabela 3.1 – Níveis de escalabilidade espacial e de qualidade possíveis com o método MPEG-4 VTC.
Modos de quantificação
Ordem de
varrimento
Níveis de escalab.
espacial
Níveis de
escalab. de
qualidade
Passo de quantificação único
Árvore
1
1
Sub-banda a subbanda
max_wavelet
1
Árvore
1
[1,31]
Sub-banda a subbanda
max_wavelet
[1,31]
Árvore
1
[1, max_snr]
Sub-banda a subbanda
max_wavelet
[1, max_snr]
Múltiplos passos de
quantificação
Quantificação bi-nível
A norma MPEG-4 Visual optou por normalizar três modos de quantificação VTC, não só para
permitir vários níveis de escalabilidade, mas também para garantir uma maior flexibilidade entre três
factores: eficiência, escalabilidade e complexidade computacional. O modo do passo de
quantificação único (1) possui uma complexidade baixa e uma alta eficiência, mas possui uma
escalabilidade limitada. O método de quantificação bi-nível (2) possui flexibilidade máxima ou seja
muitos níveis de escalabilidade em múltiplas resoluções; no entanto, possui uma complexidade
elevada. O método com múltiplos passos de quantificação é um compromisso entre (1) e (2), pois
possui uma nível pré-determinado de escalabilidade mas possui uma complexidade inferior ao
método (2).
Em relação ao tipo de escalabilidade, o método MPEG-4 VTC suporta dois tipos: escalabilidade
espacial e de qualidade. A escalabilidade espacial e de qualidade podem ser aplicadas a objectos com
forma arbitrária através da combinação de diferentes técnicas de quantificação e ordens de
varrimento. A Figura 3.20 ilustra os dois modos de escalabilidade suportados pelas ferramentas
MPEG-4 VTC.
111
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
a)
b)
Figura 3.20 – Codificação escalável de textura: a) SNR; b) espacial.
Se a ordem de varrimento dos coeficientes for em árvore, pode obter-se um fluxo binário escalável
na qualidade mas se a ordem de varrimento dos coeficientes for de sub-banda em sub-banda, o
fluxo binário é escalável em termos de resolução espacial. A combinação da escalabilidade espacial e
de qualidade pode ser obtida mantendo a ordem de varrimento em sub-bandas mas escolhendo um
dos dois modos de quantificação: a quantificação em múltiplos passos ou a quantificação bi-nível,
com este último modo a permitir uma granularidade mais fina. Quando se utilizam os métodos de
quantificação com um único ou múltiplos passos de quantificação, é importante salientar que o(s)
passo(s) de quantificação definidos pelo codificador podem ser alterados entre níveis de
escalabilidade, permitindo assim definir o débito binário que cada camada de escalabilidade possui.
De forma a oferecer escalabilidade de qualidade para objectos com forma arbitrária, o método SADWT explicado na Secção anterior pode ser utilizado, pois herda todas as propriedades e
funcionalidades do método utilizado para a codificação de objectos com forma rectangular.
Contudo, a informação de forma não é escalável e para oferecer escalabilidade espacial, a informação
de forma necessita de ser também escalável espacialmente. O método de codificação escalável de
forma baseia-se no algoritmo SISC (Scan Interleaving based Shape Coding) semelhante ao utilizado para a
escalabilidade espacial em sequências de vídeo e usa ainda um codificador aritmético. Para mais
detalhes, consultar a Secção 3.4.1 e [26].
3.4
Codificação escalável de vídeo com baixa granularidade
A norma MPEG-4 Visual suporta um modo de codificação escalável de vídeo com baixa
granularidade. Para se criar um fluxo de vídeo escalável neste modo, cada objecto é codificado em
duas ou mais camadas: uma camada de base codificada de modo independente e uma ou mais
camadas superiores, codificadas como melhoramentos em relação às camadas anteriores. Para
permitir um fácil acesso a cada camada de codificação do objecto, a norma MPEG-4 Visual define
uma sintaxe que permite uma fácil identificação de cada camada, através do nível hierárquico VOL
(Video Object Layer).
Neste modo escalável, dois tipos de escalabilidade são suportados: a escalabilidade espacial e a
escalabilidade temporal, o que permite obter várias resoluções espaciais e temporais para o mesmo
objecto de vídeo, sem que isso implique a codificação repetida do mesmo conteúdo. Como os
objectos de vídeo podem ser utilizados de uma forma independente, existe a possibilidade de
112
CAPÍTULO 3 ― CODIFICAÇÃO ESCALÁVEL DE VÍDEO NA NORMA MPEG-4
descodificar um número de objectos limitado do fluxo binário total correspondente à cena: este tipo
de escalabilidade é designado por escalabilidade de conteúdo ou objecto. Por exemplo, o receptor
pode escolher só receber os objectos presentes na cena a visualizar com maior importância,
eliminando o fundo e os objectos menos importantes até atingir o débito binário desejado. Outra
forma de escalabilidade de conteúdo consiste em seleccionar as camadas VOL de cada objecto de
forma a que o débito binário total, i.e. de todos os objectos na cena, cumpra determinados
requisitos. As ferramentas de escalabilidade espacial e temporal da norma MPEG-4 Visual são
semelhantes às ferramentas correspondentes da norma MPEG-2 Vídeo. No entanto, o modo SNR
de elevada granularidade (FGS) utiliza uma estratégia diferente. De seguida, descrevem-se com mais
detalhe as ferramentas de codificação escalável de vídeo de baixa granularidade.
3.4.1 Escalabilidade espacial
A escalabilidade espacial da norma MPEG-4 Visual possui muitas semelhanças com a escalabilidade
espacial definida na norma MPEG-2 Vídeo, já explicada na Secção 2.5.1. Nesta Secção apenas as
diferenças em relação à norma MPEG-2 Vídeo irão ser descritas.
Uma das diferenças entre a norma MPEG-2 Vídeo e a norma MPEG-4 Visual é que a norma
MPEG-2 permite escalabilidade espacial para vídeo entrelaçado e inclui um processo de
desentrelaçamento no filtro de sobre-amostragem para permitir vídeo entrelaçado na camada base e
vídeo progressivo na camada superior, enquanto que a norma MPEG-4 apenas permite a
codificação escalável de vídeo progressivo. Como a norma MPEG-4 permite codificar objectos de
vídeo com forma arbitrária, a escalabilidade espacial pode ser aplicada a tramas rectangulares e a
objectos de vídeo com forma arbitrária (apenas na versão 2 da norma MPEG-4 Visual). Neste caso,
são necessários dois tipos de escalabilidade:
― Escalabilidade da forma: A codificação da forma é feita de acordo com o algoritmo SISC
(Scan Interleaving based Shape Coding) aplicado à informação de forma binária. De acordo com
este algoritmo, a forma é decomposta em duas ou mais camadas através de um processo de
sub-amostragem e selecção das linhas a codificar. A camada base é codificada de acordo com
a codificação não escalável da forma, descrita na Secção 3.2.3. As camadas superiores são
codificadas com um codificador aritmético baseado em contextos (CAE) que explora a
redundância temporal (tal como o codificador da camada base) e a redundância espacial
entre as diversas camadas espaciais [58].
― Escalabilidade da textura: A textura da camada base tem de ser preenchida (padded) antes
de ser filtrada (para obter a sobre-amostragem). O processo de preenchimento é igual ao
descrito na Secção 3.2.4 para o caso da estimação e compensação de movimento e o
processo de filtragem é igual ao da norma MPEG-2 Vídeo.
Ao contrário da norma MPEG-2 em que é utilizada uma predição espacio-temporal pesada, na
norma MPEG-4 define-se um conjunto de regras para a codificação de I, P e B-VOPs na camada
superior:
― I-VOPs: Nenhuma predição espacial é realizada para I-VOPs que pertencem às camadas
superiores. Os I-VOPs são codificados sem qualquer referência a outro VOP, i.e. são
codificados como se pertencessem à camada base.
113
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
― P-VOPs: Os P-VOPs são preditos apenas a partir do VOP correspondente na camada base
filtrada sem qualquer uso de predição temporal dentro da camada superior.
― B-VOPs: Os B-VOPs possuem duas referências temporais. Uma delas é o VOP
correspondente da camada base sobre-amostrado (i.e. filtrado) e a outra é o VOP mais
recentemente descodificado da camada superior.
3.4.2 Escalabilidade temporal
A escalabilidade temporal da norma MPEG-4 Visual possui muitas semelhanças em relação à
escalabilidade temporal definida na norma MPEG-2 Vídeo, já explicada na Secção 2.5.1. Nesta
Secção apenas as diferenças em relação à norma MPEG-2 Vídeo irão ser descritas.
Na norma MPEG-4 Visual, a codificação de VOPs do tipo I, P ou B da camada superior realiza-se
da mesma forma que a codificação de tramas I, P ou B da camada superior na norma MPEG-2
Vídeo. A única excepção é que a norma MPEG-4 não oferece o modo de escalabilidade temporal
entrelaçado/progressivo da norma MPEG-2 Vídeo.
No entanto, existem algumas diferenças entre a codificação dos B-VOPs em camadas superiores e
os B-VOPs da camada base na norma MPEG-4: o modo directo da estimação de movimento não
pode ser utilizado para os B-VOPs da camada superior. Tal como na norma MPEG-2 Vídeo, os BVOPs da camada superior podem ser utilizados como referência para outros VOPs da camada
superior; no entanto, não é permitido utilizar B-VOPs da camada base como referência. Para o caso
de objectos com forma arbitrária, a descodificação da forma realiza-se do mesmo modo que para o
caso não escalável (Secção 3.2.3) uma vez que a dimensão do objecto não é alterada.
3.5
Codificação escalável de vídeo com elevada granularidade
A informação audiovisual é hoje transmitida num número cada vez maior de tipos de redes
diferentes. Com a massificação da Internet, os utilizadores querem ter acesso a áudio e a vídeo
quando desejam e com exigências cada vez maiores em termos de qualidade. A transmissão de vídeo
através da Internet está a assumir um papel cada vez mais importante, como o demonstra o grande
número de locais na Web que incluem conteúdo multimédia (e.g. notícias, filmes, concertos ao vivo,
etc.), especificamente codificado para a distribuição na Internet. A quantidade de informação
audiovisual e o conjunto de aplicações que permitem a distribuição audiovisual na Internet têm
aumentado consideravelmente nos últimos anos. No entanto, a qualidade do conteúdo multimédia
distribuído, em particular do vídeo, ainda necessita de melhorias significativas para que seja aceite
pelos utilizadores como uma alternativa fiável e viável, por exemplo à televisão. Por outro lado, a
mobilidade das comunicações é um dado adquirido, como o comprova a explosão do número de
telefones móveis, cada vez mais sofisticados em termos de funcionalidades. Com o aparecimento de
novas redes móveis (e.g. GPRS e UMTS) num futuro próximo, as comunicações móveis não estarão
limitadas à voz e aos dados, mas irão incluir também informação multimédia. Atento à importância
destes dois ambientes – Internet e redes móveis – o grupo MPEG incluiu na norma MPEG-4 um
conjunto de ferramentas que permitem uma melhor resiliência a erros e uma maior eficiência de
codificação, dois dos requisitos mais característicos destes ambientes. No entanto, estas ferramentas
não bastam e a escalabilidade do fluxo de dados, em termos de qualidade, resolução espacial e
114
CAPÍTULO 3 ― CODIFICAÇÃO ESCALÁVEL DE VÍDEO NA NORMA MPEG-4
temporal, tem um papel crucial na obtenção de melhor qualidade visual em redes com largura de
banda variável. A variação ao longo da comunicação da largura de banda disponível é uma das
características mais determinantes em ambientes deste tipo. A escalabilidade do vídeo codificado
permite que a aplicação adapte a qualidade de vídeo transmitido a variações nas características da
rede. Uma solução de codificação escalável de vídeo para redes deste tipo deve possuir uma
arquitectura simples e flexível para a distribuição de vídeo e deve cumprir os seguintes requisitos
[43]:
1. Processamento mínimo no servidor: O servidor de vídeo, responsável pelo controlo de
débito, deve efectuar o menor processamento possível de forma a controlar um grande
número de ligações simultâneamente.
2. Heterogeneidade das tecnologias de transporte: A própria representação escalável do
vídeo deve permitir uma fácil adaptação do conteúdo a diferentes tipos de redes (e.g. xDSL,
cabo, ISDN, etc.) e a alterações nas suas características (e.g. em termos de congestão ou
banda).
3. Descodificação de baixa complexidade: O descodificador deve possuir baixa
complexidade e baixos requsitos de memória para permitir que o maior número de terminais
(e.g. terminais móveis) possam ser capazes de descodificar o conteúdo desejado.
4. Suporte de aplicações ponto a ponto (unicast) e ponto-multiponto (multicast): Este
requisito elimina a necessidade de codificar o conteúdo em múltiplos formatos para
diferentes tipos de aplicação.
5. Resiliência com degradação suave (graceful) à perda de pacotes: Sendo a perda de
pacotes bastante comum na Internet, a própria representação do vídeo deve permitir uma
degradação suave da qualidade quando este tipo de erros ocorre.
Para que estes requisitos sejam cumpridos, é necessário que o fluxo binário de vídeo possa ser
descodificado a qualquer débito binário e não apenas ao débito total que lhe corresponde. A Figura
3.21 ilustra este aspecto: o eixo horizontal indica a largura de banda do canal, o eixo vertical a
qualidade de vídeo recebida pelo utilizador e a curva distorção/débito indica a qualidade máxima
possível para qualquer técnica de codificação a um dado débito binário. Apesar de uma técnica de
codificação não escalável alcançar um desempenho óptimo para um determinado débito binário, um
fluxo binário pré-codificado não pode ser transmitido se a largura de banda disponível na rede é
inferior ao débito binário que se utilizou para codificar o vídeo. Por outro lado, a qualidade do vídeo
não pode aumentar se a largura de banda disponível for superior. Na Figura 3.21, também se
apresenta a curva distorção/débito óptima que indica o limite máximo de qualidade para qualquer
técnica de codificação para um determinado débito binário. O objectivo da codificação escalável de
vídeo com elevada granularidade é gerar um fluxo binário que pode ser descodificado a qualquer
débito binário, eventualmente com uma curva distorção/débito ligeiramente inferior à curva
distorção/débito óptima.
115
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
a)
b)
Figura 3.21 – Objectivo da escalabilidade FGS numa rede com largura de banda variável: a) comparando com
a codificação não escalável e b) com a codificação escalável de baixa granularidade .
Para ultrapassar este problema, uma estratégia de codificação com múltiplos débitos binários SSL
(Switched Single Layer) tornou-se muito popular, especialmente na Internet, onde um número
arbitrário de fluxos binários com diferentes débitos é armazenado no servidor e transmitido de
acordo com as condições da rede ou as preferências do utilizador (e.g. os três fluxos binários não
escaláveis, ilustrados na Figura 3.21a). No entanto, esta estratégia é inferior ao FGS em termos do
desempenho distorção/débito binário se a largura de banda disponível na rede não for igual ao
débito binário de codificação. Uma técnica de codificação escalável, mesmo que tenha um
desempenho inferior à codificação não escalável para um dado débito, possui um desempenho
superior ao da solução SSL, uma vez que entre os pontos de operação do SSL irá apresentar um
desempenho bem superior.
Outra estratégia de codificação é a utilização de técnicas de escalabilidade com baixa granularidade
(presentes nas normas MPEG-2 Vídeo, H.263+ e MPEG-4 Visual). Tal como é ilustrado na Figura
3.21b), estas técnicas de escalabilidade apenas transformam a curva não escalável com um único
degrau numa curva escalável com dois ou mais degraus. O débito binário da camada base determina
o primeiro degrau e o débito binário total determina o segundo degrau se apenas duas camadas de
codificação forem usadas.
Deste modo, o principal objectivo da codificação de vídeo na distribuição de vídeo em canais com
largura de banda variável é obter uma curva contínua paralela à curva de distorção/débito binário
óptima usando um único fluxo binário. Deste modo, obter-se-á um uso mais eficiente da largura de
banda e uma degradação suave da qualidade do vídeo com a diminuição do débito binário
disponível, ao contrário das técnicas SSL e da codificação não escalável com baixa granularidade
onde as degradações são bruscas.
Este objectivo justificou que o grupo MPEG normalizasse uma tecnologia de codificação escalável
de vídeo com elevada granularidade denominada Fine Granularity Scalability (FGS). Inicialmente, três
tipos de técnicas foram propostos para alcançar a funcionalidade FGS, nomeadamente: codificação
em planos de bits dos coeficientes DCT [30], codificação através da transformada DWT [51][5][35] e
codificação usando matching pursuits [6][1]. Estas técnicas já foram descritas na Secção 2.3. Depois de
várias experiências e comparações [31][37], a codificação em planos de bit foi escolhida para inclusão
na norma MPEG-4 Visual devido à sua baixa complexidade, elevada eficiência e simplicidade de
implementação.
116
CAPÍTULO 3 ― CODIFICAÇÃO ESCALÁVEL DE VÍDEO NA NORMA MPEG-4
3.5.1 Estrutura de escalabilidade
De forma a cumprir os requisitos definidos na Secção anterior, a codificação MPEG-4 FGS foi
desenvolvida tendo em vista cobrir uma ampla gama de larguras de banda e mantendo uma estrutura
de escalabilidade simples. Tal como é ilustrado na Figura 3.22a), a estrutura de codificação consiste
em apenas duas camadas: uma camada base codificada com um débito binário Rb e uma única
camada superior codificada com elevada granularidade e com um débito binário máximo Rmax. O
codificador apenas necessita de conhecer a gama de variação do débito no canal [Rb, Rmax] e não
necessita de conhecer o valor do débito binário efectivo que irá ser utilizado em cada momento para
distribuir o conteúdo. Deste modo, o processo de codificação é totalmente independente das
condições de distribuição, i.e. das características da rede em que o conteúdo irá ser distribuído em
cada instante, permitindo uma abstracção entre o processo de codificação e de distribuição. Por
outro lado, o servidor possui liberdade para enviar qualquer parte da camada superior em simultâneo
com a camada base. Na Figura 3.22b), apresenta-se este processo onde a linha vermelha
corresponde ao débito binário disponível no canal de transmissão e logo a ser transmitido pelo
servidor. Este, independentemente dos parâmetros de codificação de vídeo, é capaz de adaptar o
conteúdo às características da rede num determinado momento, através da selecção da quantidade
de informação que deseja enviar. Deste modo, apenas é necessário cortar o fluxo binário de cada
trama com um número arbitrário de bits e, se durante o processo de transmissão não ocorrerem
erros, a qualidade de vídeo no cliente será sempre proporcional ao número de bits enviado ou seja
mais bits mais qualidade e vice-versa (ver Figura 3.22c).
a)
b)
c)
Figura 3.22 – Exemplos da estrutura de escalabilidade FGS numa aplicação unicast: a) no codificador; b) no
servidor; c) no cliente.
Por outro lado, como o conteúdo é codificado um única vez e adaptado quantas vezes se desejar,
evita-se a utilização de algoritmos de controlo de débito com uma complexidade elevada. Como o
vídeo já se encontra codificado, o servidor de vídeo é capaz de manter um grande número de
ligações ponto a ponto (unicast) simultaneamente e adaptar o débito binário para cada uma das
ligações individualmente e em tempo-real, independentemente da complexidade do codificador (este
até pode não funcionar em tempo-real e normalmente não funciona). No cliente, o descodificador
FGS possui requisitos de memória e processamento comparáveis aos de um descodificador MPEG4 Visual do perfil Advanced Simple [14] e a qualidade do vídeo recebido é proporcional ao débito
binário que a ligação em causa oferece.
Para ligações ponto-multiponto (multicast), a codificação FGS oferece um arquitectura adequada à
codificação, distribuição e descodificação de vídeo [52]. Tal como no caso unicast, o vídeo é
codificado para uma gama de variação do débito binário [Rb, Rmax]. Deste modo, o mesmo fluxo
117
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
binário pode ser utilizado tanto para aplicações unicast como multicast, ainda que o processo de
distribuição seja diferente. O servidor de vídeo divide a camada superior num número arbitrário de
partições que correspondem a diferentes canais multicast em que cada um tem um débito binário
diferente (ver Figura 3.23). O cliente subscreve um número arbitrário de canais, e.g. de acordo com
o débito binário disponível ou com a sua capacidade de processamento. Uma restrição importante é
que todos os clientes têm de receber a camada base, enviada num canal multicast separado. A
codificação FGS oferece a flexibilidade necessária para este tipo de situação, pois deixa ao cliente a
possibilidade de definir o débito binário que pretende receber e o servidor apenas necessita de
transmitir um único fluxo binário (contudo, a solução mais popular ainda é transmitir vários fluxos
binários com débitos diferentes).
Figura 3.23 – Exemplos da estrutura de escalabilidade FGS numa aplicação multicast.
A solução multicast é suportada pela popular rede IP Multicast BackBONE (i.e. MBONE) [9]. Como
os protocolos de transporte e de controlo para redes deste tipo estão definidos, apenas é necessária
uma representação escalável do vídeo adequada para obter um sistema de distribuição audiovisual
completo. A codificação MPEG-4 FGS permite alcançar este objectivo.
Na norma MPEG-4 FGS não existe nenhuma dependência entre tramas da camada superior, pois
estas são sempre codificadas no modo Intra; o que penaliza a eficiência de codificação, apesar de um
esquema de codificação com compensação de movimento ser utilizado na camada base. A
codificação Intra possui uma vantagem inerente importante: a robustez a erros de transmissão. Uma
vez que as imagens da camada base são codificadas tanto em modo Intra como Inter, esta pode ser
distribuída com uma elevada robustez e protecção usando técnicas de codificação de canal [10] ou
de retransmissão da informação (se houver tempo para isso) [46] uma vez que a sua recepção é
essencial. Por outro lado, a camada superior pode ser distribuída com menos ou mesmo sem
qualquer tipo de protecção uma vez que os erros de transmissão não se propagam de trama para
trama. A Figura 3.24 exemplifica a ocorrência de erros de transmissão na camada superior para os
dois tipos de codificação: FGS e codificação escalável com baixa granularidade descrita na Secção
3.4. Para FGS, um erro numa trama da camada superior provoca apenas um decréscimo de
qualidade na trama em que ocorreu o erro (Figura 3.24a), enquanto que na codificação escalável com
118
CAPÍTULO 3 ― CODIFICAÇÃO ESCALÁVEL DE VÍDEO NA NORMA MPEG-4
baixa granularidade um erro numa trama P irá propagar-se para as tramas que dependendem desta,
i.e. para as tramas P seguintes e para as tramas B que a têm como referência (e.g. para duas tramas B
na Figura 3.24b).
a)
b)
Figura 3.24 – Robustez à perda de pacotes: a) FGS e b) codificação escalável com baixa granularidade.
Descreve-se de seguida a técnica de codificação em planos de bit; esta técnica pode ser utilizada por
qualquer codificador híbrido e possui uma importântancia vital no contexto da especificação
MPEG-4 FGS.
3.5.2 Codificação em planos de bit
Na codificação DCT convencional, os coeficientes DCT quantificados são codificados com a
técnica Run Lenght Encoding (RLE). Com esta técnica, o número de zeros consecutivos antes de um
coeficiente DCT diferente de zero é referido como run e o valor absoluto do coeficiente DCT
quantificado diferente de zero é referido como level. Os pares (run, level) são codificados usando uma
tabela VLC bidimensional e um símbolo eob é utilizado para assinalar o fim do bloco da DCT, i.e. o
facto de não existirem mais coeficientes DCT diferentes de zero para codificar (esta é a solução
usada na recomendação ITU-T H.261 e nas normas MPEG). Outra hipótese é a utilização de uma
tabela VLC tridimensional em que o símbolo (run, level, eob) é codificado, onde eob assinala o fim dos
coeficientes não nulos para um dado bloco da DCT quando toma o valor 1 (esta é a solução usada
na recomendação ITU-T H.263). A principal diferença entre o método de codificação em planos de
bit e o método RLE é que o primeiro considera cada coeficiente DCT quantificado como um
número binário com vários bits, em vez de um valor inteiro com um determinado valor [29][36]. Na
codificação em planos de bit, para cada bloco de 8×8 coeficientes DCT, os 64 valores são varridos
em zig-zag para um vector. Cada plano de bit do bloco de coeficientes DCT é definido como um
vector de 64 bits de comprimento, em que os seus valores (bits ‘0’ ou ‘1’) correspondem a uma dada
posição significativa e são extraídos a partir dos valores absolutos em binário dos coeficientes DCT
quantificados. Para cada plano de bit de cada bloco, símbolos (run, eop) são calculados e codificados
entropicamente. Começando pelo plano de bit mais significativo (plano MSB) os símbolos são
gerados em dois componentes:
1. Run: Número de zeros consecutivos antes de um bit com o valor ‘1’.
2. Eop: Indica se existem mais bits com o valor ‘1’ ou não nesse plano de bit; se um plano de
bit só contém valores ‘0’, um símbolo especial designado por ALL_ZERO representa esse
plano.
119
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
O exemplo na Figura 3.25 ilustra esta técnica. Na Figura 3.25a), os valores absolutos de cada
coeficiente DCT quantificado e os bits de sinal correspondentes são apresentados. O valor máximo
dos coeficientes DCT neste bloco é 10 e o número máximo de bits necessário para o representar é 4
(10 = 1010). Escrevendo cada valor no formato binário, quatro planos de bit são gerados (Figura
3.25b). Utilizando a técnica acima descrita, convertem-se os quatro planos de bit em símbolos (run,
eop), tal como é ilustrado na Figura 3.25c). Deste modo, são obtidos 10 símbolos que irão ser
codificados entropicamente simultaneamente com o bit de sinal.
a)
b)
c)
Figura 3.25 – Codificação em planos de bits: a) coeficientes da DCT; b) matriz de planos de bit; c) codificação
em pares (run, eop).
Cada bit de sinal é colocado no fluxo binário apenas uma vez (para cada coeficiente DCT), depois
do par (run, eop) que contém o MSB do valor absoluto associado ao bit de sinal. A Figura 3.26 ilustra
este processo, para os mesmos coeficientes da DCT da Figura 3.25. Como exemplo, considere-se o
coeficiente da DCT com valor 10 que contém 4 bits, dois dos quais a ‘1’. O código VLC usado para
codificar o bit mais significativo deste coeficiente é o código VLC(0,1), colocando-se o bit ‘0’ a
seguir para indicar o sinal positivo. Um bit a ‘1’ indicaria um sinal negativo. No entanto, quando se
codifica outro plano de bit do mesmo coeficiente (1010) não se deve colocar de novo o bit de sinal,
i.e. no MSB-2 a seguir a VLC(0,0) não existe nenhum bit de sinal.
Figura 3.26 – Codificação em planos de bit com inserção dos bits de sinal.
Para avaliar a eficiência da codificação em planos de bit, deve-se substituir o módulo de codificação
RLE de um codificador não escalável, pelo módulo de codificação em planos de bit descrito. Várias
120
CAPÍTULO 3 ― CODIFICAÇÃO ESCALÁVEL DE VÍDEO NA NORMA MPEG-4
experiências mostraram que a codificação em planos de bits é mais eficiente que a codificação RLE
[28]. A principal razão para esta melhoria da eficiência de codificação é o facto de as estatísticas para
cada plano de bit serem independentes do valor Qp utilizado para a quantificação dos coeficientes
DCT, i.e. as tabelas VLC definidas para o método RLE são um compromisso para todos os valores
Qp possíveis enquanto na codificação em planos de bit as estatísticas dos vários planos de bit são
independentes do valor Qp.
3.5.3 Arquitectura de codificação FGS
Como é ilustrado na Figura 3.27, a arquitectura do codificador MPEG-4 FGS necessita de dois
andares de codificação, um para a camada base e outro para a camada superior. A camada base pode
ser codificada através de qualquer codificador de vídeo baseado na transformada DCT e na
compensação de movimento. Naturalmente, a norma MPEG-4 Visual oferece vários candidatos
válidos (os vários perfis) para o codificador da camada base devido à sua elevada eficiência,
especialmente para débitos binários baixos. Como a norma MPEG-4 Visual contém inúmeras
ferramentas de codificação de vídeo, foi necessário definir o subconjunto das ferramentas de
codificação a ser utilizado pelo codificador da camada base e pelo codificador da camada superior,
i.e. definir os perfis visuais correspondentes às duas camadas [44] [14]. O perfil visual adoptado para
a camada base foi o Advanced Simple Profile (ASP), por ser aquele que oferecia à data da escolha a mais
elevada eficiência de codificação na norma MPEG-4 Visual [39], para uma ampla gama de débitos
binários, ainda que apenas para objectos rectangulares. Este perfil inclui ferramentas de codificação
para P e B-VOPs, predição dos coeficientes DC e AC, quatro vectores de movimento por bloco,
vectores de movimento sem restrições, dois métodos de quantificação, ferramentas de codificação
de vídeo entrelaçado, ferramentas de resiliência a erros e compensação de movimento global e com
precisão de ¼ pixel. Além disso, este perfil permite compatibilidade directa com a norma H.263
através da opção short headers (ou seja um descodificador MPEG-4 com este perfil pode descodificar
um fluxo binário H.263). Com vista à codificação FGS, teve de ser definido um outro perfil visual,
que engloba também o codificador FGS da camada superior e que utiliza a técnica de codificação em
planos de bit. Devido ao tipo de ferramentas incluídas nos perfis da camada base e da camada
superior, a codificação MPEG-4 FGS apenas suporta objectos rectangulares (e não objectos com
forma arbitrária). O fluxo binário gerado por este codificador pode ser cortado em qualquer ponto
da camada superior (e.g. devido a limitações do débito binário na rede), mesmo depois do processo
de codificação estar completo, devendo o descodificador ser capaz de descodificar qualquer fluxo
binário cortado. Como é natural, a qualidade do vídeo visualizado pelo utente depende do número
de bits descodificados para cada trama mas há a garantia que todos os bits recebidos são
aproveitados para melhorar esta qualidade. Para o codificador são apresentadas na Figura 3.27 duas
estruturas: uma vez que o codificador não é normalizado, ambas podem ser usadas. Como se pode
verificar na arquitectura do codificador apresentada na Figura 3.27, a imagem residual a codificar
pela camada superior pode ser calculada de duas formas: no domínio do tempo (a verde na Figura
3.27) ou no domínio da frequência (a azul na Figura 3.27). Se a imagem residual for calculada no
domínio do tempo, o codificador da camada superior deve calcular a diferença entre a imagem
original e a imagem descodificada para o mesmo instante de tempo correspondente à camada base.
121
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
Figura 3.27 – Arquitectura do codificador MPEG-4 FGS.
A estrutura normalizada do descodificador MPEG-4 FGS é apresentada na Figura 3.28. Na
arquitectura do descodificador, a operação inversa é calculada, i.e. descodifica-se a camada base e a
camada superior separadamente e, no fim, adiciona-se a imagem da camada base com a imagem
residual correspondente. Esta separação dos descodificadores das camadas superior e de base
permite uma implementação prática e eficiente, especialmente se o descodificador da camada base já
estiver disponível.
Figura 3.28 – Arquitectura do descodificador MPEG-4 FGS.
Outra forma de calcular a imagem residual no codificador é no domínio da frequência (a azul na
Figura 3.27); neste caso, o módulo DCT da camada superior já não é utilizado. Esta arquitectura tira
partido de uma propriedade da transformada DCT: a linearidade. No entanto, o descodificador
normalizado possui um módulo não linear, o módulo de saturação (clipping). A saturação tem como
objectivo colocar a 0 qualquer pixel com valor inferior a 0 e a 255 qualquer pixel com valor superior
a 255. Esta operação é necessária devido aos erros que se introduzem quando se calcula a DCT e de
seguida a IDCT, com uma precisão finita.
Mesmo com esta não linearidade, e uma vez que a estrutura do codificador não é normalizada, o
cálculo do resíduo pode continuar a ser efectuado no domínio da frequência, evitando o módulo da
122
CAPÍTULO 3 ― CODIFICAÇÃO ESCALÁVEL DE VÍDEO NA NORMA MPEG-4
DCT no codificador da camada superior. No entanto, como a estrutura do descodificador é
normalizada, a imagem da camada base será somada à imagem residual da camada superior depois
de se efectuar a saturação, o que causa uma diferença (mismatch) entre as imagens descodificadas no
codificador e no descodificador. Como as imagens descodificadas da camada superior não são
utilizadas para predição, esta diferença apenas afecta as imagens individualmente, pois não existe o
problema da propragação de erros de uma imagem para outra(s). Várias experiências foram
realizadas com vista a avaliar o impacto desta diferença [20][33], tendo-se concluído que erros
grandes ocorrem poucas vezes e não são visualmente importantes. Deste modo, quando se
implementa um codificador FGS pode-se eliminar o módulo DCT na camada superior ou seja
adoptar a solução a azul da Figura 3.27.
Outro módulo presente na camada superior é o “Deslocamento de planos de bit” que corresponde
às funcionalidades “selecção de frequências” e “melhoria selectiva”; estas funcionalidades têm como
principal objectivo melhorar a qualidade objectiva e subjectiva do vídeo transmitido. Estas
funcionalidades podem não ser utilizadas pelo codificador e são apresentadas na Secção 3.5.5.
O módulo “Procurar o máximo” tem como objectivo encontrar o número máximo de planos de bit
necessários para representar uma trama, uma vez que as três componentes de cor (Y, U e V) podem
ser representadas por um número arbitrário de planos de bit, para uma determinada trama. Os três
valores maximum_level_y, maximum_level_u e maximum_level_v são codificados no cabeçalho de
cada trama FGS e indicam ao descodificador o número máximo de planos de bit para as
componentes Y, U e V, respectivamente. O passo seguinte consiste em efectuar o varrimento em
“zig-zag” dos planos de bit, começando pelo plano de bit mais significativo BP(1) e acabando no
plano de bit menos significativo BP(N), tal como é ilustrado na Figura 3.29 para a componente de
luminância de um macrobloco (para a crominância a ordem de varrimento é igual).
Figura 3.29 – Ordem de varrimento dos coeficientes DCT num macrobloco para os vários planos de bit.
Depois de se efectuar o varrimento dos planos de bit dos coeficientes da DCT, obtêm-se um vector
constituído por elementos (bits) com o valor ‘0’ ou ‘1’, determinando-se então os símbolos (run, eop),
tal como é descrito na Secção 3.5.2.
Codificação entrópica
Este módulo tem como principal objectivo codificar entropicamente os símbolos (run, eop). Quatro
tabelas VLC foram definidas com esse objectivo, correspondendo ao plano de bit mais significativo
123
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
(MSB), ao plano de bit MSB-1, ao plano de bit MSB-2 e aos restantes planos de bit. Note-se que, no
contexto da utilização das tabelas VLC, o plano de bit mais significativo é definido ao nível do
bloco. O plano de bit MSB de cada bloco é o primeiro plano de bit que não possui todos os seus
elementos a zero (plano de bit ALL_ZERO) e pode variar de bloco para bloco. Uma vez que
existem 64 bits em cada plano de bit (correspondentes aos 64 coeficientes), o valor do run pode
variar entre 0 e 62 para eop = 0 e entre 0 e 63 para eop = 1. Note-se que não existe o caso de 63 zeros
consecutivos com eop = 0 pois isso significaria que existiam mais bits no plano de bit do que é
possível. Deste modo, cada tabela VLC deve conter 128 símbolos (63+64+1), incluindo o símbolo
ALL_ZERO. No entanto, uma vez que as probabilidade para valores grandes do símbolo run são
reduzidas, um código ESCAPE é utilizado em cada tabela VLC para assinalar um símbolo com um
valor run a partir de 77 para o MSB; 66 para o MSB-1; 53 para MSB-2; e 37 para MSB-3. Depois do
código ESCAPE, seis bits são utilizados para codificar o valor de run e um bit para codificar o valor
de eop.
No lado do receptor, o fluxo binário FGS é descodificado entropicamente pelo módulo VLD
(Variable Lenght Decoder), tal como é ilustrado na Figura 3.28. Devido à estrutura do fluxo binário, o
VLD começa por descodificar primeiro os planos de bit mais significativos até chegar aos menos
significativos. Além disso, o tipo de varrimento utilizado pelo codificador FGS (Figura 3.29) permite
que o descodificador não receba todos os blocos que pertencem a um determinado plano de bit sem
que isso cause problemas irreversíveis. Qualquer bloco não recebido (e.g. devido a erros de
transmissão) pode ser preenchido pelo descodificador com valores iguais a zero. O resíduo recebido
é inversamente transformado pela IDCT para gerar a imagem residual que irá ser somada à saída do
descodificador da camada base e obter uma imagem com a máxima qualidade possível para o
conjunto de bits recebidos.
Numa aplicação típica da codificação FGS, o fluxo binário na entrada do descodificador FGS é uma
versão truncada da saída do codificador FGS. Isto significa que no fim de cada trama FGS, e antes
da próxima trama FGS, apenas parte da informação correspondente a essa trama FGS está
disponível na entrada do descodificador, devido ao corte da trama FGS, e.g. pelo servidor de vídeo.
A forma como se descodifica um fluxo binário FGS truncado não é normalizada na norma MPEG-4
FGS. Um dos métodos possíveis para descodificar uma trama FGS cortada é ler os 32 bits em cada
posição alinhada ao byte no fluxo binário e verificar se esses 32 bits correspondem ao começo de
uma nova trama (i.e. se são iguais a fgs_vop_start_code), uma vez que a palavra fgs_vop_start_code
tem 32 bits e está alinhada ao byte. Se surgir o ínicio de uma nova trama, o descodificador pode
completar a descodificação até ao fgs_vop_start_code ou desprezar os bits antes do
fgs_vop_start_code. No caso de não corresponder ao início de uma nova trama, os primeiros 8 bits
dos 32 bits correspondem a informação útil de textura para ser descodificada. De seguida, o
descodificador deve continuar a verificar se os próximos 32 bits a começar no próximo byte são
iguais ao fgs_vop_start_code ou não e assim sucessivamente.
3.5.4 Escalabilidade híbrida qualidade/temporal
Na estrutura de escalabilidade já descrita, a frequência de trama da camada superior é sempre igual à
frequência de trama da camada base, independentemente do débito binário disponível. No entanto,
um dos principais objectivos da codificação FGS é abranger uma gama ampla de débitos binários,
124
CAPÍTULO 3 ― CODIFICAÇÃO ESCALÁVEL DE VÍDEO NA NORMA MPEG-4
especialmente em redes IP. Consequentemente, surgiu a necessidade de combinar a escalabilidade de
qualidade (SNR) do FGS com a escalabilidade temporal, numa arquitectura que permita flexibilidade
entre a suavidade do movimento e a qualidade espacial da imagem [49].
Nas normas H.263, MPEG-2 e MPEG-4, a escalabilidade temporal é alcançada através da variação
da frequência de trama da sequência de vídeo, codificando a camada base com frequência de trama fB
e introduzindo tramas adicionais na camada superior até uma frequência de trama total fE. A
sequência de vídeo é visualizada com uma frequência de trama adequada ao débito binário
disponível, à capacidade computacional do descodificador ou às preferências do utilizador, i.e. com
frequência de trama fB ou fB + fE. No entanto, na codificação FGS é desejável uma abordagem que
proporcione uma escalabilidade de elevada granularidade em termos da qualidade nas tramas da
camada superior que proporcionam um aumento da frequência de trama.
Uma das soluções possíveis consiste em separar as camadas SNR e temporais, tal como é ilustrado
na Figura 3.30a). Neste caso, a camada FGS é codificada no topo de duas camadas: a camada base e
a camada temporal, conseguindo-se deste modo a desejável escalabilidade híbrida SNR/temporal.
No entanto, devido à ausência de escalabilidade na camada temporal este esquema possui algumas
desvantagens. O débito binário da camada temporal tem de ser conhecido quando esta é codificada
e, para melhorar a resolução temporal da sequência descodificada, é necessária a descodificação
completa da camada temporal. Outra desvantagem consiste no aumento da complexidade
computacional do descodificador, uma vez que é necessário efectuar estimação/compensação de
movimento em duas camadas (FGS e temporal).
Outra estrutura possível é apresentada na Figura 3.30b). Além das tramas FGS que proporcionam
escalabilidade na qualidade, esta estrutura inclui tramas residuais na camada superior, designadas por
tramas FGS temporais (FGST). Tal como é ilustrado na Figura 3.30b), estas tramas FGST são
preditas a partir das tramas da camada base que estão temporalmente antes e depois da trama FGST,
o que proporciona a desejada escalabilidade temporal. Uma vez que a predição temporal só pode
basear-se nas tramas da camada base, a qualidade das tramas FGST não afecta a qualidade de outras
tramas, o que é desejável em ambientes onde ocorram erros de transmissão ou quando é necessário
enviar ou descodificar apenas uma parte da trama FGST. A estrutura de escalabilidade temporal
baseada em tramas FGST foi a adoptada pela norma MPEG-4 Visual.
a)
b)
Figura 3.30 – Estruturas de escalabilidade temporal: a) com camada temporal; b) com tramas FGST.
As tramas FGST são constituídas por dois tipos de informação: vectores de movimento, calculados
em relação às tramas da camada base temporalmente adjacentes, e dados de textura que representam
125
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
a trama residual codificada com o mesmo método que as tramas FGS, i.e. com elevada
granularidade. Estes dois tipos de informação são codificados e transmitidos através de uma
estratégia de separação de dados. Ao contrário da camada base, onde os vectores de movimento e os
dados de textura são multiplexados ao nível do macrobloco, nas tramas FGST todos os vectores de
movimento são agrupados e transmitidos primeiro e só depois todos os planos de bit que
representam a trama residual; ou seja a multiplexagem dos dois tipos de informação faz-se ao nível
da trama. Este método é uma ferramenta útil de resiliência a erros pois permite que os vectores de
movimento tenham uma prioridade superior à informação de textura, reduzindo o impacto negativo
das perdas de informação em tramas FGST.
No entanto, este esquema de codificação coloca duas questões importantes: o desempenho
associado à codificação em planos de bit das tramas FGST e o acréscimo de complexidade
correspondente à codificação das tramas FGST. Para esclarecer estas questões, um conjunto de
testes foi efectuado [50], tendo-se demonstrado que apesar das diferenças conceptuais, os sinais FGS
e os sinais FGST possuem uma estatística muito semelhante. Além disso, o desempenho é idêntico
quando se utiliza a codificação em planos de bit para o sinal residual (tramas FGS) em comparação
com as tramas FGST [49]. Quanto à complexidade, este esquema de codificação não necessita de
uma alteração significativa da arquitectura do codificador e do descodificador FGS, mas apenas de
um simples controlo do fluxo de dados que tire partido do facto do codificador não comprimir uma
trama da camada base e uma trama da camada superior no mesmo instante temporal. Deste modo,
todos os módulos disponíveis para o cálculo da camada base podem ser utilizados quando é
necessário codificar uma trama FGST, i.e. a complexidade computacional é semelhante à do
codificador FGS quando este funciona à mesma frequência de trama que o codificador FGST.
Esta arquitectura proporciona um novo nível de abstracção entre o codificador e o servidor de vídeo
através do suporte simultâneo da escalabilidade temporal e de qualidade (SNR) numa única camada
superior. Esta abstracção é muito importante uma vez que o débito binário disponível e/ou as
preferências do utilizador não são conhecidas quando o vídeo é codificado. A arquitectura de
codificação adoptada permite ao servidor de vídeo decidir que tipo de escalabilidade deve ser
utilizado e qual a qualidade (SNR) que cada trama FGS e/ou FGST deve ter. Resumindo, esta
estrutura de escalabilidade permite:
― Escalabilidade de qualidade (SNR) mantendo a mesma frequência de trama.
― Escalabilidade temporal aumentando a frequência de trama.
― Escalabilidade híbrida de qualidade e temporal.
a)
126
b)
CAPÍTULO 3 ― CODIFICAÇÃO ESCALÁVEL DE VÍDEO NA NORMA MPEG-4
c)
Figura 3.31 – Exemplos de escalabilidade híbrida (■ indica a quantidade da camada superior transmitida).
Dependendo do conteúdo do vídeo e do débito binário disponível, o servidor pode decidir melhorar
a qualidade da camada base de diversas formas: por exemplo, enviando apenas as tramas FGS que
melhoram a qualidade das tramas da camada base e mantendo a mesma frequência de trama (Figura
3.31a). Como alternativa pode decidir melhorar a suavidade do movimento, enviando apenas as
tramas FGST, para que a sequência de vídeo seja visualizada com uma frequência de trama superior
(Figura 3.31b); se ainda existir débito binário disponível, a qualidade SNR das tramas da camada
base pode ser melhorada, enviando as correspondentes tramas FGS (Figura 3.31c). É importante
salientar que este esquema permite uma troca entre a resolução temporal e a qualidade da sequência
de vídeo na altura da transmissão do vídeo e não a anteriori na altura da codificação.
3.5.5 Quantificação adaptativa
De forma a melhorar a qualidade visual do vídeo codificado de acordo com a norma MPEG-4 FGS,
duas funcionalidades foram introduzidas: selecção de frequências e melhoria selectiva. Estas duas
funcionalidades estão intimamente relacionadas com as técnicas de quantificação adaptativa
utilizadas pelo codificador não escalável. Dos dois métodos de quantificação definidos pela norma
MPEG-4 Visual, um deles permite o ajuste individual do passo de quantificação para cada
coeficiente DCT, através de uma matriz de quantificação (como na norma MPEG-2 Vídeo)
enquanto que o outro método adopta um passo de quantificação constante para todos os
coeficientes da DCT; este passo de quantificação pode ser ajustado ao nível do macrobloco, através
da sintaxe de vídeo definida. No entanto, nenhuma destas técnicas pode ser utilizada para a
codificação MPEG-4 FGS, uma vez que o débito binário não é conhecido à partida, i.e. o módulo
de quantificação não é utilizado na arquitectura do codificador. Para se efectuar quantificação ao
fazer codificação MPEG-4 FGS, outro tipo de técnicas é utilizada. Cada plano de bits corresponde a
uma determinada qualidade e débito binário, onde o primeiro plano de bits contém os bits mais
significativos de cada coeficiente da DCT, o segundo plano contém os bits MSB-1 e assim
sucessivamente. A ideia designada por quantificação adaptativa consiste em atribuir um peso (ou
importância) maior a determinados coeficientes da DCT, i.e. a enviá-los primeiro que os restantes.
Assim, quando um determinado coeficiente é multiplicado por um peso, os bits que o representam
são deslocados para um plano de bit superior. Quando o fluxo binário for cortado, os coeficientes
DCT com maior importância são representados com um número de bits maior, i.e. com uma maior
exactidão, e consequentemente uma maior qualidade. O processo de codificação é semelhante com e
sem quantificação adaptativa; no entanto, a forma de organizar os bits no fluxo binário é diferente.
De modo a oferecer a mesma flexibilidade que o método de quantificação adaptativa do codificador
não escalável, foram definidas duas ferramentas que podem ser utilizadas individualmente ou em
conjunto:
127
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
― Selecção de frequências: Corresponde à selecção de coeficientes DCT pertencentes a um
bloco de 8×8 pixels. A selecção de frequências permite a utilização de diferentes pesos para
diferentes componentes de frequência, de forma a que os bits associados com frequências
visualmente importantes sejam colocados no fluxo binário antes de outras componentes de
frequência. A Figura 3.32a) ilustra este processo para um macrobloco em que os coeficientes
DCT com frequências horizontais e verticais baixas (4×4) são deslocados do plano de bit N
para o plano de bit N’.
― Melhoria selectiva: Corresponde à selecção de macroblocos pertencentes a uma trama
FGS. A melhoria selectiva permite que diferentes tipos de pesos sejam utilizados em
diferentes localizações da imagem (normalmente aquelas subjectivamente mais importantes),
de forma a que os coeficientes que correspondem a determinadas zonas de uma imagem
sejam amplificados em relação a outros coeficientes. A Figura 3.32b) ilustra este processo
para um macrobloco, em que os coeficientes DCT do bloco no topo e à esquerda são
deslocados do plano de bit N para N’.
a)
b)
Figura 3.32 – Exemplo de quantificação adaptativa para MPEG-4 FGS: a) selecção de frequências; b)
melhoria selectiva (BP(1) corresponde ao plano de bit menos significativo).
Selecção de frequências
Um facto largamente conhecido é que os coeficientes DCT de baixa frequência são visualmente
mais importantes que os coeficientes DCT de alta frequência. Deste modo, a qualidade visual da
sequência de vídeo é melhorada se os bits que correspondem às componentes de baixa frequência da
imagem forem amplificados em relação aos restantes. Quando o fluxo binário da camada superior
for truncado, há uma maior exactidão para os coeficientes DCT de baixa frequência recebidos, uma
vez que os bits mais significativos que o representam foram colocados antes no fluxo binário. A
técnica de selecção de frequências foi incorporada no FGS [32][21] para alcançar este objectivo,
consistindo em elevar estes coeficientes para um plano de bit mais elevado. Esta operação é
equivalente a multiplicar um conjunto específico de coeficientes DCT por uma potência de dois
antes de serem transmitidos e dividir esses coeficientes pela mesma potência depois de serem
recebidos. Para isso, define-se uma matriz de pesos de frequência em que cada elemento indica o
número de planos de bit que cada coeficiente DCT deve ser elevado, i.e. o expoente da potência de
dois. O codificador pode definir esta matriz e transmiti-la ao descodificador ou utilizar uma matriz
128
CAPÍTULO 3 ― CODIFICAÇÃO ESCALÁVEL DE VÍDEO NA NORMA MPEG-4
de defeito. Esta matriz equivale à matriz de quantificação utilizada pelo codificador não escalável. Se
a matriz de quantificação for inserida no fluxo binário, esta é constituída por uma lista de 2 a 64
inteiros de três bits sem sinal, em ordem zig-zag, onde o valor zero indica que mais nenhum valor da
matriz será enviado porque os restantes são zero. Esta matriz pode ser definida ao nível da
sequência ou ao nível da trama.
No entanto, ao efectuar esta operação, as estatísticas de cada plano de bit são alteradas porque os
planos de bit mais significativos contêm menos coeficientes e estes coeficientes obedecem à
distribuição de bits dos coeficientes de baixa frequência. Por exemplo, verifica-se que existem mais
valores pequenos de run com eop = 1, uma vez que os coeficientes de baixa frequência estão no
início do vector de coeficientes (depois do varrimento zig-zag). Assim, de forma a que o codificador
entrópico esteja optimizado, definiram-se mais duas tabelas VLC [14] quando se utiliza a selecção de
frequências.
A utilização desta técnica permite reduzir os efeitos de bloco típicos da utilização da transformada
DCT na codificação de vídeo através da utilização de uma matriz que realce as baixas frequências. A
avaliação subjectiva da qualidade visual indica que estes artefactos podem ser reduzidos e a qualidade
visual melhora especialmente para débitos binários baixos. No entanto, esta melhoria é alcançada
porque existe uma atenuação das altas frequências da imagem, tal como na técnica de quantificação
adaptativa da norma MPEG-2 Vídeo. Esta técnica pode dar origem a valores mais baixos de PSNR
(Peak Signal Noise Ratio) para um dado débito binário (ver Figura 3.33) porque os coeficientes AC
possuem uma menor exactidão (quando o fluxo binário for cortado) em comparação com os
coeficientes DC para um dado débito binário mas em princípio a qualidade subjectiva é maior.
PSNR(dB)
35
Foreman Y, Rbl = 128 kbit/s
PSNR(dB)
33.5
Foreman Y, Rbl = 256 kbit/s
PSNR(dB)
38
33
34
37
32.5
33
36.5
32
36
31.5
32
35.5
31
31
Selecção de frequências
35
30.5
Selecção de frequências
30
Normal
30
200
300
400
500
kbits/s
29
200
34.5
Selecção de frequências
34
Normal
29.5
29
100
Foreman Y, Rbl = 512 kbit/s
37.5
Normal
33.5
400
600
800
1000
kbits/s
33
400
800
1200
1600
2000
kbits/s
Figura 3.33 – Comparação do PSNR para a sequência “Foreman” com e sem selecção de frequências para
vários débitos binários (em kbit/s) [21].
Melhoria selectiva
Para algumas tramas da sequência de vídeo, algumas regiões da imagem podem ser visualmente mais
importantes que outras, e.g. a zona da cara em sequências videotelefónicas. Para permitir explorar
esta característica, a codificação FGS define uma técnica (apresentada com mais detalhe em [47]) que
permite privilegiar algumas regiões da imagem através da colocação dos planos de bit dos
macroblocos de interesse antes de outros no fluxo binário. Deste modo, quando o fluxo binário da
camada superior for truncado, estes macroblocos possuem uma maior qualidade (ou exactidão) que
os restantes. Num codificador não escalável, esta funcionalidade é alcançada através do controlo, ao
nível do macrobloco, do passo de quantificação. No codificador FGS, utiliza-se a mesma técnica já
usada para a selecção de frequências anteriormente apresentada, i.e. elevar os planos de bit
129
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
pertencentes a um macrobloco para um plano de bit superior o que é equivalente a multiplicá-los
por uma potência de dois. Um elemento da sintaxe (shifted_bit_planes) é utilizado para especificar o
factor de deslocamento dos planos de bit seleccionados. O factor de deslocamento máximo
permitido na codificação MPEG-4 FGS é cinco, pois proporciona ao codificador flexibilidade
suficiente na melhoria de regiões de interesse.
É importante salientar que apenas um número limitado de macroblocos deve ser seleccionado para
ser privilegiado, de forma a obter uma melhoria observável na qualidade da imagem. Além disso, o
desempenho objectivo de um codificador FGS que utilize esta técnica pode ser globalmente menor
se o número de factores de deslocamento usado for muito significativo. Note-se que o principal
objectivo desta técnica não é melhorar a eficiência de codificação em geral mas sim melhorar a
qualidade subjectiva do vídeo descodificado, privilegiando a qualidade das zonas subjectivamente
mais importantes.
Para se obter uma maior qualidade visual a qualquer débito binário, este algoritmo deve ser
combinado com um método de segmentação que identifique as regiões visualmente mais
importantes de uma sequência. Este método, a ser combinado com o codificador FGS, deve possuir
uma baixa complexidade, especialmente para aplicações em tempo real. Em [48] propõe-se um
sistema de detecção de faces, combinado com o método de melhoria selectiva do codificador FGS.
Como se pode observar na Figura 3.34, este sistema permite uma melhoria da qualidade na região da
face à custa de alguma degradação da qualidade no fundo da imagem.
b)
a)
Figura 3.34 – Impacto da melhoria selectiva a 250 kbit/s: a) sem melhoria selectiva; b) com melhoria selectiva
[48].
Resumindo, a utilização das ferramentas de quantificação adaptativa apresentadas permite melhorar
a qualidade subjectiva do vídeo descodificado. Esta melhoria pode ser alcançada através de
algoritmos eficientes que ajustem a matriz de pesos na frequência (usando selecção de frequências)
ou dos factores de deslocamento dos macroblocos (usando melhoria selectiva). Deste modo, o
desafio na optimização do codificador do FGS é o desenvolvimento de algoritmos que se adaptem a
diferentes sequências de vídeo, diferentes cenas na mesma sequência e diferentes regiões numa
trama de vídeo; estes algoritmos, residindo no codificador, não são normativos, e como tal podem
evoluir em resultado da investigação e competição entre implementações.
130
CAPÍTULO 3 ― CODIFICAÇÃO ESCALÁVEL DE VÍDEO NA NORMA MPEG-4
3.5.6 Resiliência a erros
Nas aplicações de distribuição de vídeo em canais com erros (e.g. redes sem fios), a codificação
MPEG-4 FGS possui ferramentas adequadas a uma transmissão robusta de vídeo. Em primeiro
lugar, a própria representação escalável do vídeo codificado permite que o descodificador facilmente
possa recuperar de erros que possam ocorrer na camada superior, uma vez que não existe
dependência entre tramas consecutivas na camada superior. Em segundo lugar, a estrutura em
camadas permite a atribuição de diferentes prioridades à informação codificada, facilitando a
atribuição de diferentes níveis de protecção ao vídeo codificado, e.g. através de técnicas de
codificação de canal. Na estrutura de codificação FGS, a camada base possui uma sensibilidade
elevada a erros de codificação. Quaisquer tipos de erros podem levar a que o descodificador perca o
sincronismo e os erros se propaguem até ao próximo GOP. A norma MPEG-4 Visual inclui
algumas técnicas de resiliência a erros que facilitam a transmissão de vídeo comprimido em canais
com erros, nomeadamente uma sintaxe com partição de dados, resincronização, códigos RVLC
(Reversible Variable Lenght Codes), introdução de HECs (Header Extension Code) e técnicas NEWPRED
[59][65]. Como a codificação da camada base do MPEG-4 FGS é feita de modo conforme com o
perfil MPEG-4 Visual ASP e este inclui as técnicas acima referidas de resiliência a erros, então a
camada base pode utilizar estas ferramentas se assim o desejar. Em relação ao codificador da camada
superior, surgiu a necessidade de incluir algumas ferramentas de resiliência a erros de forma a
melhorar a robustez do fluxo binário em canais com erros, nomeadamente canais móveis [63]. De
forma a obter um compromisso adequado entre a informação a adicionar, e logo a eficiência de
codificação, e a robustez aos erros do canal, a sintaxe da camada superior inclui apenas a capacidade
de introduzir marcas de sincronismo (fgs_resync_marker) tão frequentemente quanto o codificador
o desejar.
Devido à utilização de códigos VLC, quando ocorre um erro de transmissão, o descodificador
normalmente perde o sincronismo com o codificador, uma vez que o comprimento dos códigos é
variável e implicíto. Se nenhuns mecanismos de resiliência a erros forem introduzidos, os bits
seguintes são descodificados incorrectamente e eventualmente o descodificador irá detectar a
ocorrência do erro (e.g. através de um código VLC inválido ou de um parâmetro não permitido),
tentando de seguida recuperar o sincronismo (ver Figura 3.35). Nestas condições, uma parte
significativa do fluxo binário não poderá ser utilizada, degradando a qualidade do vídeo de forma
significativa.
Figura 3.35 – Exemplo (pessimista) do processo de descodificação com marcas de sincronismo.
As marcas de sincronismo também podem ajudar na detecção de erros pois o descodificador pode
determinar se um pacote de vídeo (dados entre marcas de sincronismo) foi correctamente
131
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
descodificado ou não verificando se o número de macrobloco que se encontra a seguir à marca de
sincronismo é valido ou não. Estas marcas são códigos únicos, i.e. uma sequência de bits que não
pode ser emulada pelo codificador por nenhum código ou combinação de códigos.
A Figura 3.36 ilustra a estrutura do fluxo binário FGS com as marcas de sincronismo. Um elemento
de sintaxe (fgs_resync_marker_disable) pode ser utilizado para activar ou desactivar a utilização de
marcas de sincronismo. No entanto, com ou sem marcas de sincronismo, existe sempre um
elemento da sintaxe, fgs_bp_start_code, que serve para separar planos de bit pertencentes à mesma
trama. Este código possui duas finalidades:
― Funcionar como marca de sincronismo para tornar o fluxo binário mais robusto a erros.
― Permitir que o servidor e/ou o descodificador identifique o começo de um plano de bit sem
ser necessário descodificar os dados por completo. Por exemplo, num ambiente multicast o
descodificador pode identificar e subscrever um número de planos de bit de acordo com a
sua capacidade de processamento, débito binário disponível, etc.
Figura 3.36 – Estrutura do fluxo binário da camada superior com marcas de sincronismo.
O elemento de sintaxe fgs_resync_marker é constituído por uma palavra de 23 bits (22 bits a ‘0’ e
um bit a ‘1’) e é seguido pelo número do macrobloco que corresponde a um código VLC com
comprimento entre 1 e 14 bits. Esta técnica permite aumentar até 3 vezes o número de bits
correctamente descodificados, dependendo do débito binário utilizado e da taxa de erros [63].
3.6
Avaliação do desempenho da norma MPEG-4 FGS
Esta Secção apresenta um estudo da eficiência da norma MPEG-4 FGS, utilizando o software de
referência incluído na Parte 5 da norma MPEG-4 [18]. Para avaliar a eficiência de codificação da
técnica FGS utilizada na norma MPEG-4 várias experiências foram efectuadas, nomeadamente
comparando-a com duas outras técnicas:
― Codificação simulcast: Consiste em gerar múltiplos fluxos binários com débitos diferentes
para o mesmo conteúdo. Para ligações do tipo unicast, os fluxos binários gerados são
guardados no servidor e um deles é transmitido a um cliente de acordo com as características
do canal (e.g. débito binário disponível, erros) ou de acordo com o pedido do cliente (e.g.
qualidade baixa, média ou alta). Para ligações do tipo multicast, todos os fluxos binários são
simultaneamente transmitidos pelo servidor e cada cliente recebe um dos fluxos binários de
acordo com o tipo de ligação que possui, capacidade de processamento, qualidade que
deseja, etc.
132
CAPÍTULO 3 ― CODIFICAÇÃO ESCALÁVEL DE VÍDEO NA NORMA MPEG-4
― Codificação não escalável MPEG-4 Visual ASP: Apesar da técnica de codificação
MPEG-4 FGS possuir um conjunto de características adequadas a aplicações de distribuição
de vídeo, possui um desempenho inferior em termos de eficiência de codificação em
comparação com a codificação não escalável (ao débito da codificação não escalável). Um
dos aspectos mais importantes do estudo aqui efectuado é saber em quanto é inferior esse
desempenho, ou seja, qual o custo da escalabilidade em termos de eficiência de codificação.
Normalmente, a codificação não escalável indica o limite superior de qualidade que qualquer
técnica de codificação escalável pode alcançar para um dado débito binário.
Para ambas as técnicas é utilizado um codificador MPEG-4 ASP, igual ao utilizado na camada base
do MPEG-4 FGS.
3.6.1 Condições de teste
As condições de teste foram escolhidas de forma a abranger uma gama variada de sequências,
débitos binários, frequência de trama e resoluções espaciais. Na Tabela 3.2, apresentam-se as
condições de teste para todas as sequências de teste apresentadas no Anexo B. Foram escolhidos 6
cenários de teste, semelhantes às condições de teste adoptadas pelo próprio MPEG quando fez a sua
avaliação desta tecnologia [62]. Cada cenário corresponde a uma determinada gama de débitos
binários, sendo o cenário 1 adequado a débitos binários baixos (entre 16 e 64 kbit/s); no segundo
cenário duplicam-se os limites do intervalo (entre 32 e 128 kbit/s) e assim sucessivamente. Com
estes 6 cenários, cobre-se uma ampla gama de débitos binários e consequentemente de condições de
utilização. Para cada cenário, escolheu-se uma resolução espacial e temporal adequada ao débito
binário que se pretende alcançar: por exemplo, para se obter um débito binário de 16 kbit/s é
necessário que as resoluções espacial e temporal sejam pequenas (QCIF a 5 Hz). Cada sequência é
codificada com múltiplos débitos binários Ri ∈ [RB, Rmax] para gerar fluxos binários não escaláveis
com estes débitos. Os fluxos binários não escaláveis são descodificados, medindo-se a qualidade
(PSNR) para cada débito binário, e obtendo-se assim a correspondente curva RD (rate/distortion).
Para o FGS é necessário gerar um fluxo binário escalável no intervalo [Rb, Rmax] e truncar o número
de bits para cada trama FGS de acordo com o débito binário desejado e a frequência de trama:
bits/trama = débito binário / frequência de trama.
De seguida, descodificam-se ambas as camadas (base e superior) e calcula-se o PSNR para os
mesmos débitos usados para o caso não escalável. Para todos os cenários, foram escolhidos 7
débitos binários diferentes equiespaçados no intervalo [Rb, Rmax].
Tabela 3.2 – Condições de teste.
Cenário 1
Cenário 2
Cenário 3
Cenário 4
Cenário 5
Cenário 6
Resolução espacial
QCIF
QCIF
QCIF
CIF
CIF
CIF
Resolução
temporal (Hz)
5
10
10
10
30
30
Débito binário da
camada base - Rb
(kbit/s)
16
32
64
128
256
512
133
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
Débito binário
máximo - Rmax
(kbit/s)
64
128
256
Débitos binários Ri 16, 24, 32, 32, 48, 64, 64, 96, 128,
40, 48, 56, 80, 96, 112, 160, 192,
(kbit/s)
224, 256
128
64
512
1024
2048
128, 192,
256, 320,
384, 448,
512
256, 384,
512, 640,
768, 896,
1024
512, 768,
1024, 280,
1536, 792,
2048,
128+384
256+768
512+1536
Referência
Simulcast
16+48
32+96
64+192
(kbit/s)
16+20+28
32+40+56
64+80+112
Período das
tramas I
N=14
N=28
N=28
N=30
N=60
N=60
Período das
tramas P
M=2
M=2
M=2
M=3
M=3
M=3
Quantificação
H.263
H.263
H.263
H.263
H.263
H.263
QI inicial
28
28
28
28
28
28
QP inicial
28
28
28
28
28
28
QB inicial
28
28
28
28
28
28
Amplitude
vectores
movimento
16
16
16
32
32
32
Controlo de débito
TM5
TM5
TM5
TM5
TM5
TM5
128+160+2 256+320+4 512+640+8
24
48
96
Para a codificação simulcast é necessário escolher, para o mesmo conteúdo, quantos fluxos binários
vão ser gerados e a que débitos. Em ambientes deste tipo, existem normalmente duas restrições:
― O débito binário total, i.e. de todos os fluxos binários, não pode exceder um valor máximo
(Rmax).
― A diferença de qualidade entre fluxos binários não deve ser (demasiado) perceptível no
terminal do cliente para limitar o impacto negativo no receptor na mudança de fluxos.
Com estas duas restrições, as escolhas para o número de fluxos binários simulcast e respectivos
débitos são muito limitadas. A primeira opção é escolher dois débitos binários, um com a qualidade
miníma e outro com a qualidade máxima, apesar desta escolha não satisfazer a segunda restrição pois
para a cumprir é necessário escolher pelo menos três fluxos binários [28] com débitos Rh, Rm e Rl,
que, por exemplo, satisfaçam as seguintes relações:
Rh + Rm + Rl = R max
Rm = 0.75 Rh
(3.1)
Rl = Rb
Dependendo do intervalo de variação [Rb, Rmax], um número maior de fluxos binários pode ser
usado. No entanto, para os intervalos aqui definidos, é difícil escolher um número superior a três.
Por exemplo, para o cenário 4 (intervalo de variação [128, 512]), se o número de fluxos binários
fosse 4, cada um deles teria o mesmo débito binário de 128 kbit/s (512 kbit/s a dividir por 4) o que
134
CAPÍTULO 3 ― CODIFICAÇÃO ESCALÁVEL DE VÍDEO NA NORMA MPEG-4
não faz sentido. Para todos os cenários, os débitos utilizados para a codificação simulcast são
definidos na Tabela 3.2, usando dois ou três fluxos binários.
Por fim, apresentam-se na Tabela 3.2 alguns parâmetros utilizados pelo codificador da camada base
para efectuar estas experiências. Os primeiros parâmetros definem a estrutura do GOP, através do
período de tramas I e P. O controlo de débito utilizado é o TM5 (semelhante ao utilizado no
modelo TM5 da norma MPEG-2 Vídeo) e os passos de quantificação para as primeiras tramas I, P e
B possuem sempre o valor fixo 28 (de 0 a 31). O modo de quantificação utilizado é o modo H.263
da norma MPEG-4 Visual (ver Secção 3.2.5). A estimação de movimento é realizada com um
alcance máximo de 16 pixels para as sequências QCIF e 32 pixels para as sequências CIF.
3.6.2 Medida de desempenho
Para se poder efectuar um estudo do desempenho da norma MPEG-4 FGS em relação à codificação
não escalável, definiu-se uma medida de desempenho que exprime as diferenças de PSNR entre duas
curvas débito binário/distorção (RD). Esta medida é capaz de traduzir num único valor o ganho de
qualidade médio de uma técnica de codificação em relação a outra para um intervalo de débitos
binários. Além disso, devido ao método de controlo de débito utilizado na camada base e pelo
codificador não escalável (TM5), os débitos binários podem não possuir rigorosamente o valor
desejado, dependendo da dificuldade em codificar a sequência em questão com os parâmetros
definidos. Por exemplo, para a sequência Rugby, o débito binário minímo que se conseguiu obter foi
de 33 kbit/s ou seja mais do dobro do valor desejado no caso de 16 kbit/s; isto dificulta a
comparação dos resultados para diferentes técnicas, uma vez que o débito binário não é
rigorosamente o mesmo. Quando se comparam duas curvas de débito binário/distorção (RD), por
exemplo usando uma medida de desempenho como aquela aqui usada, estes problemas
simplesmente não existem. A técnica aqui apresentada foi desenvolvida pelo grupo VCEG (Video
Coding Experts Group), sendo referida como medida de Bjontegaard [2] e não pretende substituir as
curvas RD, apenas é uma forma mais compacta e rápida de apresentar os resultados.
Um dos resultados das experiências realizadas com as condições de teste atrás definidas é um gráfico
RD, onde o eixo vertical indica a qualidade medida em dB e o eixo horizontal o débito binário em
bit/s. O cálculo da qualidade de uma sequência de vídeo é aqui feito usando a popular medida de
qualidade PSNR com todas as limitações e vantagens que isso implica. O método para calcular a
diferença média de qualidade entre duas curvas RD consiste em três passos:
― Interpolação de ambas as curvas por um polinómio de terceira ordem a partir de 4 pontos.
― Cálculo do integral em relação ao eixo horizontal (débito binário) para ambas as curvas.
― A diferença média de qualidade entre as duas curvas corresponde à diferença entre os
integrais divididos pelo intervalo de integração.
A utilização de uma interpolação por um polinómio de terceira ordem permite uma boa interpolação
das curvas RD para a maior parte das técnicas de codificação de vídeo. Com este método obtêm-se a
diferença média de PSNR (dPSNR) em dB para um dado intervalo de débitos binários. No entanto,
também se pode calcular a diferença média do débito binário em % para um dado intervalo de
PSNR (dRate) se o integral das curvas for calculado em relação ao eixo vertical (qualidade). A
135
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
diferença média de débito binário (dRate) entre as duas curvas corresponde à diferença entre os
respectivos integrais divididos pelo intervalo de integração.
3.6.3 Resultados e avaliação
Nesta Secção, compara-se a codificação MPEG-4 FGS com a codificação não escalável MPEG-4
Visual ASP e com a codificação simulcast nas condições de teste anteriormente definidas. A
comparação com a codificação não escalável recorre à utilização da medida de desempenho já
apresentada e a comparação com a codificação simulcast com dois e três fluxos binários recorre a
gráficos PSNR.
FGS versus Codificação não escalável
De uma forma geral, a introdução da escalabilidade dá origem a um desempenho inferior em relação
à codificação não escalável ou seja para o mesmo débito binário a qualidade é mais baixa. Muitas das
técnicas apresentadas hoje em dia, estão precisamente relacionadas com a diminuição deste custo de
desempenho, idealmente para zero. No entanto, este tipo de comparação pode ser injusta para o
FGS, uma vez que os fluxos binários não escaláveis são optimizados para um débito binário
conhecido enquanto que o FGS não conhece a priori qual é o débito binário que o cliente deseja
extrair do fluxo binário escalável. No entanto, esta comparação pretende responder a duas questões:
― Qual é a quebra de eficiência do FGS em comparação com a codificação não escalável (ASP)
ou seja:
ƒ
Qual a diferença média de PSNR (dPSNR) para um dado intervalo de débitos
binários ?
ƒ
Qual a diferença média do débito binário (dRate) para um dado intervalo de PSNR ?
― Em que condições, i.e. para que sequências e cenários, essa quebra de eficiência é mais
elevada ?
Os resultados apresentados permitem conhecer os limites teóricos do desempenho associado à
norma MPEG-4 FGS, bem como qual é a penalização na qualidade da imagem quando se utiliza a
técnica de codificação escalável fina FGS em detrimento da codificação não escalável MPEG-4 ASP.
Os ganhos de desempenho, para a luminância, da codificação não escalável em relação ao FGS são
apresentados na Tabela 3.3 para um conjunto significativo de sequências com características de
movimento e textura bastante variadas (ver Anexo B para uma descrição mais detalhada). Valores
positivos indicam que a codificação não escalável possui um desempenho superior, valores negativos
indicam o contrário.
Tabela 3.3 – Desempenho da codificação não escalável MPEG-4 ASP em relação ao MPEG-4 FGS.
Boat
Canoa
Carphone
Coastguard
Rugby
DPSNR
dRate
dPSNR
dRate
dPSNR
Drate
dPSNR
dRate
dPSNR
dRate
Cenário 1
4.537
60.76
0.242
6.77
2.015
38.01
1.523
33.98
-0.02
-0.37
Cenário 2
4.798
64.80
0.881
20.75
2.189
41.61
1.865
42.87
0.283
6.86
Cenário 3
4.996
69.81
1.579
30.13
1.645
36.40
1.848
40.44
0.527
11.18
136
CAPÍTULO 3 ― CODIFICAÇÃO ESCALÁVEL DE VÍDEO NA NORMA MPEG-4
Cenário 4
3.177
53.62
0.676
14.26
1.361
31.82
1.921
37.36
0.257
4.82
Cenário 5
4.366
62.26
1.188
28.59
2.119
46.09
2.722
55.58
1.024
20.03
Cenário 6
1.998
48.35
1.729
31.24
0.617
17.65
1.606
33.55
1.618
27.21
Foreman
Stefan
Table Tennis
Tempete
Waterfall
DPSNR
dRate
dPSNR
dRate
dPSNR
dRate
dPSNR
dRate
dPSNR
dRate
Cenário 1
1.756
30.42
0.566
16.20
2.391
38.87
1.875
42.22
2.165
54.28
Cenário 2
3.019
47.06
1.673
35.62
2.709
47.80
2.517
52.76
2.948
62.64
Cenário 3
2.312
42.32
2.279
41.19
1.987
40.84
2.278
47.05
2.604
56.07
Cenário 4
2.259
40.42
1.797
31.81
2.892
47.73
2.111
43.35
2.409
51.78
Cenário 5
3.230
56.72
3.009
49.03
2.756
54.28
3.022
61.10
2.506
60.51
Cenário 6
1.546
37.59
2.143
41.22
1.898
43.07
1.833
43.11
2.364
56.89
Para quase todos os cenários, a codificação não escalável possui um desempenho superior, surgindo
como única excepção a extremamente rápida sequência Rugby para débitos binários muito baixos.
No extremo oposto, para a extremamente lenta sequência Boat, a codificação não escalável apresenta
ganhos bastante significativos (entre 2 e 5 dB para o PSNR e 48 e 70% para o débito).
Consequentemente, com base no estudo aqui apresentado, podem tirar-se as seguintes conclusões:
― Quando comparada com a codificação não escalável, a codificação FGS apresenta, para a
maior parte das sequências, um desempenho inferior, especialmente elevado para sequências
com uma elevada correlação entre tramas sucessivas5. Este resultado é de algum modo
intuitivo, uma vez que a codificação FGS apenas explora a redundância temporal na camada
base, e “paga” deste modo a ausência de um módulo de predição temporal com
compensação de movimento na camada superior. Além da sequência Boat, as sequências
Waterfall e Tempete também apresentam uma quebra de desempenho significativo.
― Por outro lado, para as sequências com um elevado grau de movimento, o desempenho da
codificação FGS não é muito penalizado, e.g. para os cenários 1 e 4 das sequências Rugby e
Canoa. Nestas sequências, o movimento é bastante rápido e a correlação temporal entre
tramas é mais baixa. Nestes casos, o codificador não escalável não consegue explorar muito a
redudância temporal da imagem e a débitos binários baixos é forçado a utilizar passos de
quantificação elevados, o que degrada a qualidade da imagem significativamente. Devido ao
esquema preditivo utilizado pela codificador não escalável, normalmente a qualidade da
imagem degrada-se ao longo do tempo, até ser codificada uma trama Intra. Como na camada
superior do FGS não se explora a redundância temporal, o FGS não sofre este problema de
uma forma tão significativa e consegue apresentar um desempenho mais semelhante quando
comparado com a codificação não escalável.
― A comparação do desempenho entre diferentes cenários é um pouco mais díficil, uma vez
que não se pode estabelecer uma correlação directa para todas as sequências. De uma forma
geral, a codificação não escalável apresenta um menor ganho para os cenários 1 e 6, que
5
Aqui, o termo correlação temporal é baseado em observações subjectivas em vez de uma medida objectiva.
137
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
correspondem a débitos binários baixos e altos. Especialmente para as sequências com
muito movimento, à medida que o débito binário da camada base aumenta para uma
determinada resolução espacial, o desempenho da codificação não escalável também
aumenta.
Saliente-se que apesar do desempenho da codificação FGS ser comparativamente inferior, todos os
resultados foram obtidos sem a introdução de quaisquer erros. Se se considerar um sistema de
distribuição de vídeo completo, a ocorrência de erros é comum e o seu impacto na codificação não
escalável é muitas vezes bastante significativo, mesmo com a utilização de técnicas de cancelamento
de erros. Num cenário deste tipo, a camada superior do FGS, devido à organização em planos de
bit, permite uma degradação suave da qualidade e consegue recuperar elegantemente, uma vez que
não explora a redundância temporal na camada superior. Aqui, o principal factor responsável pela
quebra do desempenho em termos de eficiência torna-se uma mais valia.
FGS versus Simulcast
A Figura 3.37 mostra alguns resultados para a codificação simulcast permitindo comparar a
codificação FGS com dois ou três fluxos binários em simulcast. O eixo horizontal mostra o débito
binário do canal em bit/s e o eixo vertical a qualidade da imagem descodificada no cliente (PSNR).
A curva a azul representa o MPEG-4 FGS, a curva a vermelho dois fluxos binários em simulcast e a
curva a verde três fluxos em simulcast. Por exemplo, se o débito binário disponível for inferior a 384
kbit/s para o cenário 4, e no caso do simulcast de dois fluxos binários, o utilizador recebe apenas o
fluxo binário codificado a 128 kbit/s e logo a qualidade do vídeo recebida é a mesma que se o débito
disponível for 128 kbit/s, desaproveitando-se o débito adicional disponível.
PSNR (dB)
PSNR (dB)
Boat (Cenário 1)
35.5
Carphone (Cenário 2)
35.5
34.5
34.5
33.5
32.5
33.5
31.5
32.5
30.5
29.5
31.5
28.5
30.5
27.5
16000
bits/s
bits/s
26.5
26000
36000
46000
56000
29.5
66000
30000
Canoa (Cenário 3)
PSNR (dB)
31.0
50000
31.5
29.0
30.5
28.0
29.5
27.0
28.5
90000
110000
27.5
26.0
bits/s
bits/s
25.0
64000
130000
Coastguard (Cenário 4)
PSNR (dB)
32.5
30.0
70000
26.5
114000
164000
214000
264000
128000
138
178000
228000
278000
328000
378000
428000
478000
528000
CAPÍTULO 3 ― CODIFICAÇÃO ESCALÁVEL DE VÍDEO NA NORMA MPEG-4
Waterfall (Cenário 5)
PSNR (dB)
Football (Cenário 6)
PSNR (dB)
34.5
37.0
33.5
36.0
32.5
31.5
35.0
30.5
34.0
29.5
33.0
28.5
bits/s
bits/s
27.5
32.0
240000
340000
440000
540000
640000
740000
840000
500000
940000 1040000
700000
900000 1100000 1300000 1500000 1700000 1900000 2100000
Figura 3.37 – Resultados da codificação simulcast: azul - MPEG-4 FGS, verde - três fluxos binários, vermelho
- dois fluxos binários.
Tal como as figuras indicam, o FGS aumenta a qualidade da imagem suavemente à medida que o
débito binário aumenta. Por outro lado, as curvas simulcast mantêm a qualidade constante dentro de
um determinado intervalo, aumentando esta bruscamente em forma de escada quando o débito
varia. Na codificação simulcast com dois fluxos binários, o FGS apresenta um melhor desempenho
para débitos binários baixos e um desempenho inferior para débitos binários altos. Para três fluxos
binários, o desempenho do FGS é superior a débitos binários altos e baixos e inferior para débitos
binários intermédios, com excepção das sequências Boat e Waterfall onde o FGS apresenta quase
sempre um desempenho inferior. Para estas sequências (muito estáveis), o desempenho do FGS em
relação à codificação não escalável é de tal modo inferior que o FGS não consegue superar a
codificação simulcast mesmo para débitos altos.
3.7
Conclusões
As normas MPEG-1 e MPEG-2 permitiram o desenvolvimento de novos produtos e sistemas
audiovisuais com tecnologia digital, como o CD interactivo (CDi), difusão de áudio digital (DAB),
Digital Versatile Disc (DVD) e televisão digital (DVB e ATSC). No entanto, várias áreas de aplicação
ficaram por explorar. A mais genérica norma MPEG-4, oferecendo novas funcionalidades, pretende
estimular a criação de novos serviços. Por exemplo, a norma MPEG-4 oferece ao utilizador novos
modos de criar, reutilizar, aceder e consumir o conteúdo audiovisual através da representação
baseada em objectos. Esta norma é também adequada para a distribuição de vídeo em redes móveis
devido à sua elevada eficiência de compressão, robustez a erros e flexibilidade na complexidade dos
processos de codificação e descodificação. Devido ao grande número de funcionalidades que a
norma MPEG-4 oferece, novas aplicações vão surgindo, desde sistemas de vigilância, comunicações
móveis em tempo-real, difusão de conteúdo audiovisual interactivo, portais com conteúdo híbrido,
etc. [45]. Para evitar que os descodificadores tenham de ser desnecessariamente demasiado
complexos, a norma MPEG-4 definiu perfis e níveis que indicam as ferramentas e capacidades que
um descodificador tem de possuir para ser sempre capaz de descodificar o conteúdo conforme com
esse perfil@nível.
Com tantas opções, coloca-se a questão: onde é que a norma MPEG-4 irá ser utilizada ? As áreas
mais promissoras são a distribuição de conteúdo audiovisual em redes móveis de 2.5 e 3ª geração e
em redes IP, tais como o ADSL. A estabilidade, interoperabilidade e robustez oferecida pela norma
139
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
MPEG-4 torna-a uma solução ideal para a construção de novos serviços e aplicações para a
distribuição de conteúdo audiovisual como notícias, desporto ou entretenimento. Em redes deste
tipo, a escalabilidade é uma funcionalidade desejável, de forma a lidar com a variação da largura de
banda e a heterogeneidade dos terminais, bem como com a ocorrência de erros. A norma MPEG-4
desenvolveu vários esquemas de codificação escalável, tanto para imagens fixas como para vídeo,
com baixa e elevada granularidade. Este capítulo apresentou as soluções técnicas definidas na norma
MPEG-4, dando especial ênfase à codificação escalável de vídeo com elevada granularidade (FGS)
definida na norma MPEG-4 Visual [14]. O perfil MPEG-4 Visual FGS foi estabelecido de forma a
responder à necessidade crescente de uma norma de codificação de vídeo adequada a canais ou
terminais (e.g. Internet) que apresentem um comportamento variável ou desconhecido em termos de
algumas das suas características, tanto em termos de velocidade máxima de acesso como de
variações da largura de banda, erros de canal, características do terminal, tecnologias de transporte,
etc. As ferramentas de codificação adoptadas para a camada base correspondem ao perfil MPEG-4
Visual ASP (Advanced Simple Profile) e foram escolhidas para alcançar uma eficiência de codificação
elevada. A técnica de codificação em planos de bit dos coeficientes DCT é utilizada pelo codificador
da camada superior e permite uma degradação suave da qualidade quando o débito binário varia. O
esquema de codificação FGS, bem como as suas funcionalidades acrescidas, foi desenvolvido tendo
em conta a simplicidade de implementação e a eficiência de codificação. Os resultados das
experiências aqui realizadas demonstraram que o FGS possui um desempenho inferior à codificação
não escalável, especialmente para sequências com uma correlação temporal alta. No entanto, estes
resultados eram de esperar uma vez que não se explora a redundância temporal entre tramas na
camada superior, sacrificando-se a qualidade em detrimento da resiliência a erros e da complexidade.
Contudo, para o cenário simulcast, um dos esquemas mais populares na Internet, o FGS é
competitivo para uma conjunto significativo de sequências e débitos binários. É também verdade
que, devido ao enorme interesse recente neste tipo de tecnologia, têm surgido inúmeras sugestões
com vista a melhorar o desempenho da codificação FGS, à custa ou não de alguma perda de
resiliência a erros.
O sucesso das soluções MPEG-4 FGS irá depender de muitos factores, tais como as necessidades
do mercado, a disponibilidade de outras soluções concorrentes, nomeadamente proprietárias, e a
implementação eficiente e barata em software e hardware. No entanto, o FGS pode constituir uma
alternativa viável e espera-se que seja utilizado em algumas aplicações, especialmente na área de
transmissão de vídeo na Internet. Neste momento, já se encontra em comercialização uma versão
em tempo-real do codificador e descodificador FGS para comércio electrónico na Internet por parte
da empresa WebCast Technologies, Inc [64].
140
Capítulo 4
4 Norma H.264/MPEG-4 AVC
Todas as normas de codificação até agora desenvolvidas visam permitir a interoperabilidade entre os
produtos de vários fabricantes conformes com uma mesma norma e promovem o crescimento do
mercado multimédia. Existem duas organizações internacionais de normalização com um papel mais
relevante no desenvolvimento de normas de codificação de vídeo: a International Telecommunications
Union, Telecommunication Standardization Sector (ITU-T) e a International Standards
Organization/International Electrotechnical Commission, Joint Technical Committee nº. 1 (ISO/IEC JTC1). As
normas de codificação de vídeo da ITU-T são referidas como recomendações e são designadas por
H.26X (H.261, H.262, H.263 e H.264) e as normas ISO/IEC são designadas por MPEG-X
(MPEG-1, MPEG-2 e MPEG-4). Até agora, as recomendações ITU-T foram principalmente
desenhadas para comunicações de vídeo bidireccionais e em tempo-real, enquanto as normas
MPEG são mais abrangentes, englobando um conjunto vasto de aplicações (e.g. televisão digital,
armazenamento, distribuição de vídeo).
Depois do grupo Video Coding Experts Group (VCEG) da ITU-T ter finalizado a recomendação
H.263, em 1995, iniciou o desenvolvimento de dois novos projectos de codificação: um projecto de
curto prazo que visava adicionar novas funcionalidades (e também alguma eficiência) ao H.263, e
que resultou em vários anexos incluídos nas recomendações H.263+ e H.263++ (versões
posteriores da recomendação H.263), e um projecto de longo prazo que tinha como objectivo
desenvolver uma nova norma com uma eficiência de codificação muito superior em relação às
anteriores, sendo referido como H.26L. Em Março de 2001, o grupo MPEG fez uma chamada de
novas tecnologias de codificação de vídeo [8] com vista a avaliar o desempenho dos codificadores de
vídeo incluídos na norma MPEG-4, na altura já com 3 anos, face à tecnologia em desenvolvimento
fora do MPEG. A avaliação foi realizada através de testes subjectivos das várias tecnologias
recebidas e concluiu que a tecnologia H.26L apresentava os resultados mais promissores [9],
relevando ganhos substanciais de eficiência, tendo por isso sido escolhida como o ponto de partida
para o desenvolvimento de uma nova norma de codificação de vídeo. O desenvolvimento desta
nova norma ficou a cargo do grupo Joint Video Team (JVT), propositadamente criado, e que inclui
especialistas de ambas as organizações ou seja ITU-T e MPEG. O objectivo deste grupo era
desenvolver uma nova norma de codificação baseada no modelo H.26L. Esta nova norma
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
corresponde a uma nova parte da norma MPEG-4 (Parte 10) designada como Advanced Video Coding
e também à recomendação H.264 no contexto da ITU-T. Ao contrário da norma MPEG-2 Vídeo
que corresponde à recomendação ITU-T H.262 onde se adoptou uma estratégia de texto conjunto,
adoptou-se agora uma estratégia de textos formalmente independentes (mas na prática semelhantes)
como forma de evitar o ‘pesadelo’ burocrático associado à abordagem anterior. A Figura 4.1 mostra
as várias normas de codificação de vídeo desenvolvidas por ambas as organizações, por ordem
cronológica.
Figura 4.1 – Progressão das normas de codificação de vídeo MPEG e das recomendações ITU-T.
Esta nova norma é referida na literatura de várias formas, sendo os acrónimos H.26L, JVT, MPEG4 part 10, Advanced Video Coding (AVC) e H.264 utilizados frequentemente. Neste capítulo, optou-se
por referir esta norma usando os seus nomes oficiais ou seja H.264 para a ITU-T e AVC para o
MPEG.
Tal como todas as normas de codificação de vídeo anteriores, a norma H.264/AVC não define um
codec (par codificador/descodificador) mas apenas a sintaxe do fluxo binário codificado e o seu
método de descodificação. Na verdade, a especificação da codificação não é necessária para garantir
interoperabilidade. Além da especificação técnica, o JVT está a desenvolver software de referência
(codificador e descodificador) e os testes de conformidade. A versão final da norma Final Draft
International Standard (FDIS) foi aprovada pelo MPEG em Dezembro de 2002 [5]. Aprovação
semelhante foi também feita pela ITU-T no início de 2003.
Neste capítulo começa-se por descrever os principais objectivos que a norma H.264/AVC pretende
cumprir e as principais áreas de aplicação. De seguida, apresenta-se a arquitectura de todas as
componentes da norma H.264/AVC, com um maior ênfase na arquitectura de codificação de vídeo
e na respectiva sintaxe do fluxo binário. A descrição das ferramentas de codificação de vídeo é
apresentada de seguida com um detalhe superior; por fim, apresentam-se os perfis e níveis definidos
e um estudo de desempenho da norma H.264/AVC em relação às normas anteriores.
4.1
Objectivos e aplicações
O principal objectivo da norma H.264/AVC é oferecer uma nova norma de codificação de vídeo,
que não sendo compatível com nenhuma das normas anteriores, possua um elevado desempenho.
Deste modo, as principais características definidas para esta norma são [4]:
142
CAPÍTULO 4 ― NORMA H.264/MPEG-4 AVC
― Desempenho elevado: Redução em cerca de 50% do débito binário para a mesma
qualidade em relação às normas H.263++ ou MPEG-4 Advanced Simple Profile (ASP), para
qualquer nível de qualidade.
― Máxima simplificação: Adopção de uma arquitectura simples, utilizando blocos
conhecidos e com uma complexidade reduzida.
― Adaptação a serviços com diferentes requisitos de atraso: Deve permitir serviços em
tempo-real ou com um atraso reduzido (e.g. videotelefonia), bem como serviços sem
quaisquer restrições de atraso (e.g. armazenamento e distribuição de vídeo).
― Resiliência a erros: Deve incluir ferramentas com vista a minimizar o impacto subjectivo
resultante da perda de pacotes e erros de bit em redes móveis ou fixas.
― Escalabilidade da complexidade do codificador/descodificador: A assimetria entre a
complexidade do codificador e do descodificador deve ser alta (de forma a haver um grande
número de terminais capazes de descodificar conteúdo codificado com o H.264/AVC) e
deve haver escalabilidade entre a quantidade de processamento do codificador e a qualidade
alcançada.
― Adaptação às características da rede de transmissão (network friendliness) – Deve
haver um conjunto de mecanismos que facilitem o transporte do fluxo binário codificado em
redes com características diferentes, e.g. através de mecanismos de empacotamento,
atribuição de prioridades, etc.
Outro dos objectivos desta norma, é a integração com normas já existentes, nomeadamente com a
parte de Sistema da norma MPEG-4 (e.g. usando o ficheiro mp4), com a parte de Sistema da norma
MPEG-2 e com as recomendações H.320 e H.323. Essa integração poderá requerer algumas
alterações (acrescentos, não mudanças ao que existe) nas normas existentes, de forma a tirar o
melhor partido de todas as potencialidades do H.264/AVC. Para o transporte em redes IP, o IETF
deverá definir o formato de empacotamento necessário para o protocolo RTP.
Cumpridos estes objectivos, esta norma deverá permitir novos serviços e um uso mais eficiente da
largura de banda disponível para os serviços já existentes. Por exemplo, deverá ser possível
transmitir sinais de vídeo a 1 Mbit/s com qualidade PAL [25], o que permitirá a distribuição de
vídeo em ligações xDSL. Outra área bastante interessante será a transmissão de televisão digital por
satélite. Com uma modulação 8-PSK, codificação de canal turbo (em discussão para a norma DVBS2 [7]) e a utilização da norma H.264/AVC, o número de canais poderá ser triplicado em
comparação com os actuais sistemas DVB-S, que utilizam a norma MPEG-2 Vídeo. Também para a
televisão digital terrestre, a norma H.264/AVC é uma opção a considerar. Assumindo a
configuração utilizada na Alemanha, o débito binário disponível por cada canal de 8 MHz é de 13.27
Mbit/s, o que com codificação MPEG-2 Vídeo, permite 4 programas por canal. A norma
H.264/AVC irá permitir aumentar o número de canais de uma forma significativa ou manter os
mesmos quatro canais diminuindo a potência transmitida e utilizando um tipo de modulação e
codificação de canal menos eficiente. Outra área interessante é a transmissão e o armazenamento de
sinais de vídeo de alta definição, High Definition (HD). Com esta norma será possível codificar sinais
HD a cerca de 8 Mbit/s [20], permitindo armazenar um filme em alta definição num DVD, evitando
143
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
deste modo a necessidade de desenvolver DVDs com maior capacidade (blue-laser DVDs). Outra
opção é transmitir 4 programas de alta definição por cada canal de satélite ou cabo, o que pode
tornar estes serviços muito mais atractivos para as cadeias de televisão, pois os custos de transmissão
são mais baixos do que com a norma MPEG-2 Vídeo. Na área das comunicações móveis, a largura
de banda disponível é um bem escasso, podendo a norma H.264/AVC vir a ter um papel
importante. A eficiência de compressão irá ser duplicada em relação aos sistemas de codificação
actualmente definidos pelo 3GPP [1], i.e. H.263 Baseline (obrigatório), H.263+ e MPEG-4 Simple
Profile (opcionais). Resumindo, as principais áreas de aplicação que a norma H.264/AVC abrange
são:
1. Serviços de difusão e armazenamento (de 1 a mais de 8 Mbit/s, elevado atraso e
complexidade elevada), e.g. difusão por satélite, cabo, DSL, terrestre, DVD, etc.
2. Serviços H.32X (normalmente com menos de 1 Mbit/s, atraso reduzido e complexidade
reduzida), e.g. videotelefonia e videoconferência sobre ISDN, Ethernet, LAN, DSL, UMTS,
etc.
3. Serviços de distribuição de vídeo (débitos binários baixos, elevado atraso e complexidade
média), e.g. em redes móveis, na Internet, etc.
4. Outros serviços como mensagens multimédia 3GPP, VOD, etc.
A caracterização destes serviços é bastante importante pois é a partir dela que os perfis são
definidos. No caso da norma H.264/AVC, quatro características foram tidas em conta para a
definição dos perfis: complexidade do codificador e do descodificador, atraso e ocorrência de erros
no canal.
4.2
Arquitectura
A norma H.264/AVC especifica duas camadas principais de representação: uma camada de
codificação de vídeo Video Coding Layer (VCL) que permite representar eficientemente o conteúdo de
uma sequência de imagens e uma camada de adaptação de rede Network Adaptation Layer (NAL) que
formata essa representação de uma forma adequada ao transporte em qualquer rede de comunicação
ou meio de armazenamento. A Figura 4.2 mostra a relação entre as camadas VCL e NAL.
Norma H.264/AVC
Codificador VCL
Camada de
codificação
de vídeo
Descodificador VCL
Codificador NAL
Camada de
adaptação de
rede
Descodificador NAL
Camada de Transporte
H.32x
RTP/IP
MPEG-2
Formato
MP4
outro
Figura 4.2 – Arquitectura genérica da norma H.264/AVC.
144
CAPÍTULO 4 ― NORMA H.264/MPEG-4 AVC
De acordo com a figura, o transporte e encapsulamento dos dados codificados pela norma
H.264/AVC nos diferentes sistemas de transporte, tais como H.32x, MPEG-2 Sistema e RTP/IP
estão fora do âmbito da norma e devem ser especificados pelos organismos internacionais
responsáveis (e.g. IETF para o RTP/IP). O nível mais alto de abstracção do VCL é o nível do slice
que é constituído por um conjunto de macroblocos pertencentes a uma imagem. A camada NAL
funciona como uma abstracção entre o VCL e a rede utilizada como transporte do fluxo binário
codificado. Tanto o codificador VCL como o NAL podem conhecer as propriedades e
características da rede de transporte, tais como a taxa de perda de pacotes esperada ou efectiva,
MTU (Maximum Transfer Unit) ou o jitter no atraso da transmissão. O codificador VCL pode explorar
estas características através do ajuste de alguns parâmetros ou quando utiliza as técnicas de
resiliência a erros (e.g. refrescamento Intra, ajuste da dimensão dos slices, etc).
4.2.1 Camada de adaptação de rede
Um conjunto bastante amplo de redes podem apresentar-se como candidatos válidos para
transportar o fluxo binário codificado segundo a norma H.264/AVC. As redes de transporte são
hoje bastante heterogéneas uma vez que as suas características diferem significativamente, em
termos de largura de banda, protocolos disponíveis, garantias de QoS (Quality of Service),
empacotamento, configuração interna, etc. A camada de adaptação de rede recebe um slice da
camada de codificação de vídeo e possui um conjunto de mecanismos e interfaces para efectuar o
mapeamento entre o slice codificado e a rede de transporte ou suporte de armazenamento. A norma
H.264/AVC não define a forma como esta partição é transportada ou armazenada mas apenas
mecanismos que permitem tirar partido das características da rede em questão, e.g. os sistemas
H.320 não possuem mecanismos de empacotamento, enquanto os sistemas baseados em IP são
unicamente baseados em pacotes. O principal conceito definido na camada de adaptação de rede são
as unidades NAL, apresentadas de seguida.
Unidades NAL
As unidades NAL são unidades elementares de transporte e são obrigatoriamente constituídas por
um cabeçalho (1 byte) e dados codificados. As unidades NAL possuem as seguintes propriedades:
― São independentemente descodificáveis. Uma unidade NAL não possui referências a outras.
― Podem ser directamente mapeadas em sistemas baseados em rede de pacotes (e.g. através de
pacotes RTP).
― O cabeçalho de uma unidade NAL indica o tipo de dados que possui (e.g. slice do tipo Intra),
a importância relativa da informação que transporta e uma flag de erro que serve para indicar
a ocorrência de erros de bit nos dados que transporta.
A camada de adaptação de rede também define um conjunto de funcionalidades acrescidas para as
unidades NAL (que podem ser suportadas ou não pela rede de transporte), nomeadamente: a sintaxe
e a semântica de informação suplementar adicional (e.g. informação temporal) e um esquema de
agregação e fragmentação de unidades NAL, necessário para segmentar unidades NAL com uma
dimensão elevada ou agrupar unidades NAL com uma dimensão reduzida.
145
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
No entanto, como nem todos os protocolos de transporte são baseados em pacotes (e.g. os sistemas
H.320), a norma H.264/AVC também define um formato de fluxo binário para transmitir uma
sequência ordenada de unidades NAL como um fluxo binário contínuo. Neste formato, os limites
de uma unidade NAL são identificados através de códigos únicos orientados ao byte, de forma a que
o descodificador possa extrair as unidades NAL de uma forma simples e rápida. Além disso, de
forma a evitar a emulação dos códigos de identificação da unidade NAL, um mecanismo de
preenchimento (stuffing) que insere bytes no fluxo binário codificado também foi definido.
Conjunto de parâmetros
Um dos principais problemas no transporte de vídeo em redes sujeitas a erros resulta da natureza
estruturada da codificação de vídeo. A informação nos cabeçalhos dos slices, imagens, GOPs ou
sequências é transmitida uma única vez no começo de cada slice, imagem, GOP ou sequência e é
bastante importante para a descodificação correcta do fluxo binário transmitido. Uma perda de um
pacote ou um erro de bit num destes cabeçalhos (e.g. no GOP) possui um efeito desastroso, uma
vez que todos os dados que dependem da informação codificada no cabeçalho onde ocorreu o erro
são inúteis ou incorrectamente interpretados. Para resolver este problema, a norma H.264/AVC
utiliza um mecanismo chamado conjunto de parâmetros (parameter set). Como a maior parte dos
parâmetros enviados ao nível da sequência/GOP/imagem se mantêm constantes durante a
transmissão, estes são enviados de uma forma assíncrona (e.g. no início da comunicação) e de uma
forma robusta (e.g. com um mecanismo de retransmissão). O codificador e o descodificador NAL
mantêm um ou mais conjuntos de parâmetros sempre sincronizados. Os parâmetros frequentemente
alterados (e.g. número da trama, tipo de slice) são enviados ao nível do slice em conjunto com uma
referência que indica qual dos conjuntos de parâmetros disponíveis no descodificador deve ser
utilizado para reconstruir um dado slice. De salientar que este mecanismo não possui nenhum
impacto no desempenho do codificador de vídeo ou na arquitectura do codificador e descodificador
de vídeo, ao contrário das técnicas de extensão de cabeçalho, presentes em algumas normas de
codificação anteriores (e.g. MPEG-4 Visual HEC: ver Secção 3.5.6) ou das técnicas de cancelamento
de erros.
Depois deste pequeno resumo sobre a camada de adaptação de rede, apresenta-se uma descrição
detalhada da camada de codificação de vídeo, mais importante no contexto desta tese.
4.2.2 Camada de codificação de vídeo
A arquitectura de codificação de vídeo da norma H.264/AVC corresponde a um esquema híbrido
baseado em blocos (ver Figura 4.3), tal como qualquer das normas anteriores de codificação de
vídeo ITU-T e MPEG. Desta forma, continua-se a utilizar predição entre imagens para reduzir a
redundância temporal e uma transformada baseada em blocos para compactar a energia do sinal
residual, permitindo assim explorar a redundância espacial. A Figura 4.3 apresenta a arquitectura do
codificador, salientando-se algumas das principais diferenças em relação às normas anteriores. Os
ganhos em termos de desempenho alcançados com esta norma não resultam de uma dada
ferramenta específica mas sim de novas formas de efectuar as principais operações de codificação no
contexto de uma arquitectura híbrida que combinadas permitem um ganho significativo.
146
CAPÍTULO 4 ― NORMA H.264/MPEG-4 AVC
Figura 4.3 – Arquitectura do codificador de vídeo H.264/AVC, salientando-se as principais novidades.
De seguida, apresentam-se os principais módulos da arquitectura de vídeo H.264/AVC, salientadose as alterações mais relevantes em relação às normas anteriores:
― Módulo de compensação de movimento: Este módulo é o principal responsável pelo
acréscimo de desempenho do codificador H.264/AVC [19]. Foram introduzidas várias
alterações, nomeadamente compensação de movimento estruturada em árvore (i.e. com
blocos hierárquicos de dimensão variável), múltiplas imagens de referência, novos filtros de
interpolação com ¼ de pixel de precisão e imagens B generalizadas. Estas ferramentas são
apresentas em detalhe na Secção 4.3.2.
― Filtro de redução do efeito de bloco: Um dos mais conhecidos artefactos da arquitectura
híbrida de codificação baseada em blocos é o efeito de bloco, com um impacto subjectivo
negativo assinalável. A norma H.264/AVC propõe uma solução para este problema,
introduzindo o filtro no loop de descodificação, antes da compensação de movimento,
permitindo uma melhoria significativa da qualidade subjectiva e uma redução de 5-10% [2]
do débito binário para a mesma qualidade objectiva (entre 26 dB e 34 dB). O filtro de bloco
é apresentado em detalhe na Secção 4.3.3.
― Transformada inteira: Tal como as anteriores normas, a norma H.264/AVC utiliza uma
transformada baseada na DCT para converter um bloco de amostras para o domínio da
frequência. No entanto, foram introduzidas várias alterações: a transformada é agora
definida com aritmética inteira, evitando-se os erros entre diferentes implementações da
transformada (mismatch) e possui uma complexidade reduzida pois pode ser calculada sem
utilizar multiplicações. Uma das principais inovações é o facto da transformada ser definida
para blocos de 4×4 amostras, ao contrário das normas anteriores (8×8 amostras), permitindo
uma redução significativa dos artefactos (do tipo ringing). A transformada e a quantificação
são apresentadas em detalhe na Secção 4.3.4.
147
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
― Codificação entrópica: Na norma H.264/AVC existem dois modos de codificação
entrópica: um modo baseado em códigos VLC e outro em codificação aritmética. Ambos os
códigos foram optimizados: o primeiro com a introdução de códigos VLC Exp-Golomb e
códigos VLC adaptativos CA-VLC; o segundo, o codificador aritmético CABAC (Context
based Adaptive Binary Arithmetic Coding), com um módulo de modelação de contextos que
permite a adaptação dinâmica à estatística dos símbolos e um módulo de binarização para
converter um valor não binário numa sequência de decisões binárias, referidas como bins. O
CABAC apresenta melhorias significativas em relação ao codificador baseado em códigos
VLC [28] (6.3 a 31% para sequências com resoluções SD e HDTV). A codificação entrópica
é apresentada em detalhe na Secção 4.3.5.
― Novos modos de predição Intra: Na norma MPEG-4 Visual, existem dois modos de
predição Intra para o coeficiente DC e para os coeficientes AC na primeira linha e coluna
dum bloco 8×8 (ver Secção 3.2.5). A norma H.264/AVC estende este conceito utilizando
predição para todos os valores das amostras contidos num bloco ou macrobloco Intra. Além
disso, o codificador pode escolher entre vários modos de predição de forma a obter um erro
de predição o mais baixo possível. A codificação Intra apresenta um desempenho
comparável à recente norma JPEG2000 baseada em ôndulas [11]. A predição Intra é
apresentada em detalhe na Secção 4.3.1.
Por fim, um factor bastante importante no desempenho de codificação: o controlo do codificador.
Apesar da escolha dos parâmetros de codificação não ser normativa, o codificador tem ao seu dispor
muitas opções e as decisões que toma influenciam fortemente o desempenho em termos de
eficiência. Por exemplo, existem 9 modos de predição Intra4×4 e 4 modos de predição Inter para
um macrobloco onde cada sub-macrobloco pode usar um de 4 modos de predição. A utilização de
múltiplas referências para a compensação de movimento permite mais um grau de liberdade na
escolha da imagem de referência, com consequências tanto em termos de memória como em termos
de tempo de processamento. Por vezes, torna-se difícil, senão impossível, testar todas as
combinações de parâmetros possíveis. Algoritmos que optimizem as escolhas do codificador,
minimizando a distorção e o tempo de processamento em relação ao débito binário (e.g. RD
optimization), possuem uma importância vital pois permitem explorar todas as potencialidades desta
norma e maximizar o seu desempenho.
4.2.3 Estrutura da sintaxe de vídeo
Nesta Secção apresenta-se a estrutura da sintaxe da codificação de vídeo especificada na norma
H.264/AVC. A sintaxe de vídeo está organizada em quatro níveis hierárquicos: a) imagem, b) slice c)
partição do slice e d) macrobloco. Esta descrição da estrutura da sintaxe de vídeo é fundamental para
a compreensão das ferramentas de codificação de vídeo, apresentadas a seguir.
Nível de imagem
A norma H.264/AVC suporta a codificação de vídeo, com sub-amostragem 4:2:0, no formato
progressivo ou entrelaçado ou mesmo em ambos os tipos, simultaneamente na mesma sequência.
Uma trama entrelaçada possui dois campos, um campo superior e um campo inferior (ver Figura
4.4).
148
CAPÍTULO 4 ― NORMA H.264/MPEG-4 AVC
Figura 4.4 – Codificação de uma trama entrelaçada em modo campo.
Os dois campos de uma trama entrelaçada, separados no tempo por um período de campo (metade
do período de trama), podem ser codificados separadamente ou em conjunto (modo campo ou
modo trama). O codificador pode escolher a forma como codifica as tramas entrelaçadas, se os dois
campos separadamente ou em conjunto, ao nível da sequência, da trama ou do macrobloco. Quando
uma determinada cena de uma sequência de vídeo contem detalhe significativo mas o movimento é
reduzido, devem codificar-se ambos os campos em conjunto (modo trama). Quando a cena de vídeo
contem muito movimento, devem codificar-se os campos separadamente (modo campo), de forma a
que o segundo campo possa ser predito a partir do primeiro. Como pode haver regiões de uma cena
de vídeo que são mais eficientemente codificadas em modo trama e outras em modo campo, o
codificador pode escolher o tipo de codificação (de trama ou de campo) utilizado ao nível do
macrobloco. Uma trama progressiva deve ser sempre codificada em modo trama.
Nível de slice
Uma trama pode ser dividida em um ou mais slices, correspondendo cada slice a uma dada área da
imagem. Um slice é constituído por um número inteiro de macroblocos ou pares de macroblocos e
pode ser descodificado independentemente dos restantes slices. Um macrobloco possui um tamanho
fixo e cobre uma área rectangular de 16×16 amostras da componente de luminância e 8×8 amostras
de cada componente da crominância. Os macroblocos que pertencem a um slice podem depender
uns dos outros em termos de codificação. Quando se codificam imagens entrelaçadas, cada slice tem
de conter um número inteiro de pares de macroblocos, tal como é ilustrado na Figura 4.5a).
Dependendo do perfil, os slices pertencentes a uma imagem podem estar organizados no fluxo
binário de uma forma arbitrária ou não, i.e. não têm de obedecer necessariamente à ordem de
varrimento da direita para a esquerda e de cima para baixo (raster-scan). Esta ferramenta é referida na
norma H.264/AVC como Arbitrary Slice Order (ASO). Os slices podem pertencer a uma estrutura
denominada por grupo de slices que agrupa um ou mais slices de uma determinada imagem. Um slice
contem sempre macroblocos ou pares de macroblocos que são contíguos e com varrimento rasterscan dentro de um grupo de slices. No entanto, os macroblocos que pertencem a um determinado
grupo de slices não obedecem necessariamente a esta regra. Na Figura 4.5b), apresenta-se um
exemplo em que os macroblocos que pertencem ao mesmo grupo de slices não são contíguos, uma
vez que os slices que pertencem ao grupo de slices #1 estão intercalados espacialmente com os slices
que pertencem ao grupo de slices #2.
149
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
a)
b)
Figura 4.5 – Divisão de uma imagem em: a) pares de macroblocos e b) slices e grupos de slices.
A ordem de transmissão dos macroblocos no fluxo binário depende do mapa de alocação de
macroblocos MacroBlock Allocation Map (MBAmp). O MBAmp constitui a forma do codificador
indicar ao descodificador qual a ordem de transmissão dos macroblocos e consiste num inteiro por
macrobloco que indica o grupo de slices a que este pertence. Este inteiro está entre 0 e 7, uma vez
que não são permitidos mais do que oito grupos de slices por trama. O mapa de macroblocos pode
obedecer a uma estrutura regular, rectangular ou não, ou a um padrão completamente aleatório.
Este mecanismo de estruturação de vídeo é referido como Flexible Macroblock Ordering (FMO) na
norma H.264/AVC e possui várias vantagens quando combinado com o ASO. Considere o exemplo
da Figura 4.6a) em que os macroblocos são agrupados em três grupos de slices rectangulares e cada
grupo de slices possui uma única slice. Assuma-se por simplicidade que cada um destes slices (ou grupo
de slices) possui o mesmo número de bits. Em redes IP, usando-se os protocolos UDP e RTP, os
pacotes que transportam os slices podem ser recebidos fora de ordem. Ao permitir-se que o
descodificador possa descodificar qualquer slice independentemente da ordem por que foi recebido,
permite-se que no caso de um dos slices se atrasar (devido ao jitter presente na rede de transmissão), o
descodificador possa começar a processar outros slices recebidos e assim reduzir o atraso global de
todo o sistema de distribuição. Sem este mecanismo, se o grupo de slices #1 sofresse um atraso, teria
de se atrasar o processamento dos grupos de slices #2 e #3 até ao máximo, ou caso se excedesse o
tempo permitido deveria considerar-se o grupo de slices perdido e cancelar o erro, mesmo que este
chegasse a tempo de ser processado.
Na Figura 4.6b) apresenta-se outro exemplo com dois grupos de slices em que os macroblocos
pertencem alternadamente a um grupo ou outro (formando um tabuleiro de xadrez). Se um dos slices
se perder devida à ocorrência de erros, os macroblocos em redor daqueles que foram perdidos estão
disponíveis para se efectuar cancelamento de erros. No entanto, o desempenho em termos de
eficiência é seriamente afectado, uma vez que não se pode explorar a redundância espacial entre
macroblocos vizinhos.
Na Figura 4.6c) apresenta-se ainda uma outra utilização para o mapa de macroblocos que faz uso
desta estrutura para melhorar a qualidade de uma região de particular interesse na imagem quando
ocorrem erros na transmissão, através da utilização de slices redundantes (no H.264/AVC os slices
podem ocupar áreas sobrepostas). A ideia consiste em transmitir informação redundante (igual à que
já foi transmitida) para determinadas regiões da imagem e assim, quando ocorrem erros durante a
transmissão, o descodificador consegue reconstruir uma parte da imagem sem quaisquer erros.
Neste exemplo, existem três grupos de slices: o grupo de slices #3 engloba toda a área da imagem,
150
CAPÍTULO 4 ― NORMA H.264/MPEG-4 AVC
enquanto os grupos de slices #1 e #2 são transmitidos ou descodificados, apenas quando ocorrem
erros de transmissão, de forma a melhorar a qualidade de uma determinada zona da imagem. Por
exemplo, se ocorrerem erros durante a transmissão do grupo de slices #3 nas áreas cobertas pelo
grupo de slices #1 ou pelo grupo de slices #2, o descodificador pode substituir as áreas da imagem
onde os erros ocorreram, descodificando os grupos de slices #1 ou #2 (assume-se que durante a
transmissão não ocorreram erros na transmissão dos grupos de slices #1 ou #2 no mesmo local).
Grupo Slice #1
Grupo Slice #2
Grupo Slice #1
Grupo Slice #2
Grupo Slice #3
a)
Grupo Slice #3
b)
c)
Figura 4.6 – Exemplos de slices e grupos de slices: a) slices dispersos b) tabuleiro de xadrez c) slices redundantes.
Para todos os exemplos aqui apresentados, é necessário o envio de um mapa de macroblocos para o
descodificador. Ora este mapa é eficientemente codificado para o caso de slices rectangulares (Figura
4.6) mas para outros tipos de mapas o desempenho pode ser penalizado, especialmente se este mapa
for frequentemente alterado entre tramas sucessivas.
Nível de partição de slice
Dependendo do perfil, os dados codificados para um único slice podem ser divididos em três
partições separadas. Esta ferramenta é referida na norma H.264/AVC como Data Partitioning (DP).
As três partições definidas são as seguintes:
― DPA (Data Partitioning A): Contem a informação de cabeçalho do slice e do macrobloco e
os vectores de movimento. Esta partição é perceptualmente a mais importante.
― DPB (Data Partitioning B): Contem a informação de textura codificada no modo Intra.
Esta partição elimina erros de predição.
― DPC (Data Partitioning C): Contem a informação de textura codificada no modo Inter.
Cada partição começa por uma palavra de código que indica o tipo de partição. Através deste campo
é possível atribuir maior prioridade ou uma maior protecção a certo tipo de informação em
detrimento de outra e, através deste mecanismo, melhorar a qualidade da imagem recebida. Numa
rede baseada em pacotes (e.g. H.324), estas partições do slice podem ser directamente mapeadas num
pacote e transmitidas, facilitando o cancelamento de erros. Por exemplo, se apenas a partição DPC
for perdida ainda se consegue descodificar a parte Intra do slice e utilizar os vectores de movimento
da partição DPA, para obter a textura dos macroblocos codificados no modo Inter (como
alternativa pode ser utilizado algum tipo de cancelamento de erros). Saliente-se que esta ferramenta
possui um impacto mínimo na complexidade do codificador, pois apenas é necessário estruturar a
informação codificada de uma forma diferente (i.e. apenas a sintaxe é alterada).
Nível de macrobloco
151
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
Além do grupo de slices atrás apresentado, uma estrutura intermédia entre o nível da imagem e o
nível de slice, a norma H.264/AVC introduziu também um novo nível de dados entre o nível do
macrobloco e do bloco, o sub-macrobloco. Nas normas anteriores, ao nível de macrobloco (16×16
amostras de luminância) efectuava-se a estimação e compensação de movimento e este continha
normalmente 4 blocos (8×8 amostras) de luminância e 2 blocos de crominância. Ao nível do bloco
era realizada a transformada DCT que transformava as amostras no domínio do tempo para o
domínio da transformada. No entanto, na norma H.264/AVC, a estimação e compensação de
movimento pode ser realizada ao nível do macrobloco ou ao nível de uma partição do macrobloco,
o sub-macrobloco, ou até ao nível do bloco. Deste modo, na norma H.264/AVC, um macrobloco
possui 16×16 amostras de luminância (e as 8×8 amostras de cada crominância correspondentes, isto
para formatos 4:2:0), tal como as normas anteriores. Um sub-macrobloco possui um quarto das
amostras de um macrobloco (8×8 amostras de luminância) alinhado com os contornos do
macrobloco e um bloco é a unidade mais pequena de processamento e possui a dimensão de 4×4
amostras. A Figura 4.7 exemplifica a divisão do macrobloco em sub-macroblocos e blocos.
Figura 4.7 – Divisão de um macrobloco em sub-macroblocos e blocos.
As amostras de um bloco, independentemente da sua dimensão, são convertidas para o domínio da
transformada, tal como nas normas anteriores. Outra novidade da norma H.264/AVC ao nível da
sintaxe de vídeo é a forma como os coeficientes da transformada são organizados no fluxo binário.
A Figura 4.8 apresenta a ordem de varrimento dos blocos de um macrobloco constituído por 16
blocos 4×4.
Figura 4.8 – Ordem de varrimento de um macrobloco.
152
CAPÍTULO 4 ― NORMA H.264/MPEG-4 AVC
Num macrobloco, todos os coeficientes de um determinado sub-macrobloco são enviados da
seguinte forma: se o modo de codificação for o modo Intra16×16 (i.e. sem predição temporal), os
coeficientes DC da transformada são enviados primeiro, sendo enviados de seguida os blocos luma
0-15 na ordem indicada na Figura 4.8, com o coeficiente DC a zero nos macroblocos Intra16×16.
Os blocos 16 e 17 contêm cada um 4 coeficientes DC de cada uma das componentes de
crominância e são enviados de seguida. Finalmente, os blocos de crominância são enviados com os
coeficientes DC a zero.
4.3
Ferramentas de codificação de vídeo
Nesta Secção apresentam-se com algum detalhe as principais ferramentas de codificação de vídeo
especificadas na norma H.264/AVC; esta apresentação é essencial para a compreensão do trabalho
realizado nos capítulos seguintes. A partir da arquitectura apresentada na Secção anterior,
organizaram-se as ferramentas de codificação em cinco tópicos principais:
1. Predição Intra
2. Predição Inter
3. Transformada e quantificação
4. Codificação entrópica
5. Slices SI/SP
A norma H.264/AVC considera cinco tipos de slices: Num slice do tipo I (Intra), os macroblocos são
codificados sem utilizar qualquer outra imagem da sequência de vídeo; a predição Intra é sempre
obtida a partir de macroblocos ou blocos que pertencem à mesma imagem. Por outro lado, os slices
do tipo Inter (P ou B) podem utilizar uma ou mais imagens de referência, anteriormente
descodificadas, para obter uma predição Inter para macroblocos do tipo P ou B. Os slices do tipo P
podem conter macroblocos do tipo I ou P e os slices do tipo B podem conter macroblocos do tipo I
ou B. Os dois restantes tipos de slices, SI e SP, foram definidos com vista a permitir a reconstrução
de uma imagem quando diferentes imagens de referência são utilizadas ou quando estas não se
encontram disponíveis.
Na norma H.264/AVC, são definidos sete tipos de imagens que indicam quais os tipos de slices que
podem ser utilizados para um determinado tipo de imagem. Os três primeiros tipos de imagens são
semelhantes às normas anteriores: a imagem do tipo I apenas contem slices I, a imagem do tipo P
contem slices I ou P e a imagem do tipo B contem slices I, P ou B. Os restantes cinco tipos permitem
que os slices SI ou SP sejam utilizadas em vários tipos de imagens, caracterizadas pelo tipo de slices
que contêm: a) SI; b) SI, SP; c) I e SI; d) I, SI, P, SP; e e) I, SI, P, SP e B.
Depois de se efectuar a predição Intra ou Inter, aplica-se a transformada 2D ao sinal residual, que o
converte num conjunto de coeficientes o mais descorrelacionados possível, de forma a que a energia
do sinal esteja contida num número mínimo de coeficientes. Estes coeficientes são quantificados e
codificados entropicamente para se obter o fluxo binário final.
153
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
4.3.1 Codificação e predição Intra
A codificação Intra refere-se ao caso em que apenas a redundância espacial é explorada na
codificação. Um macrobloco pode ser codificado de modo Intra em qualquer tipo de slice. Um slice
que apenas contenha macroblocos do tipo Intra é referida como um slice do tipo I ou slice Intra. Este
tipo de slice pode estar presente em qualquer tipo de imagem (I, P ou B). No entanto, uma imagem
do tipo I (Intra) só pode conter slices Intra.
Como as imagens ou slices Intra não utilizam nenhum tipo de predição temporal, necessitam de
muitos bits para as representar quando comparadas com outros tipos de imagem (para uma dada
qualidade). De forma a aumentar a eficiência da codificação Intra, a norma H.264/AVC explora a
correlação entre blocos ou macroblocos adjacentes de uma imagem, uma vez que estes têm muitas
vezes propriedades semelhantes (e.g. uma imagem em que o fundo é uniforme ou um gradiente).
Se um bloco ou macrobloco for codificado em modo Intra, o primeiro passo de codificação consiste
em construir um bloco ou macrobloco de predição a partir dos blocos ou macroblocos que foram
anteriormente codificados e reconstruídos. O bloco ou macrobloco de predição é subtraído ao bloco
ou macrobloco que se pretende codificar. Nesta predição podem apenas utilizar-se as amostras que
estejam contidas no mesmo slice de forma a garantir a independência entre slices. A predição em
modo Intra pode ser realizada a vários níveis:
― Predição única para todo o macrobloco (Intra16×16): quatro modos (vertical, horizontal, DC
e planar).
― Predições individuais para as 16 amostras dos blocos 4×4 (Intra4×4): nove modos (DC e 8
direccionais).
― Predição única para a crominância: quatro modos (vertical, horizontal, DC e planar).
A componente de luminância pode ser predita da mesma forma para todas as amostras pertencentes
a um macrobloco 16×16. Estes modos são referidos como modos Intra16×16 e são adequados a
zonas da imagem que variam suavemente. Ao nível do macrobloco, existem quatro modos de
predição que são apresentados na Figura 4.9. O modo 0 utiliza as amostras reconstruídas do topo do
macrobloco de forma a que as colunas do macrobloco de predição tenham o mesmo valor que a
amostra que se encontra no topo (Figura 4.9a). O modo 1 utiliza as amostras reconstruídas que se
encontram à esquerda do macrobloco de forma a que as linhas do macrobloco de predição tenham
o mesmo valor que a amostra que se encontra mais à esquerda em cada linha (Figura 4.9b). No
modo 2, todas as amostras do macrobloco de predição possuem um valor igual à média das
amostras reconstruídas do topo e à esquerda do macrobloco (Figura 4.9c). O modo 3 calcula uma
função linear que se adapta às amostras do topo e à esquerda do macrobloco para obter os valores
das amostras do macrobloco de predição (Figura 4.9d).
154
CAPÍTULO 4 ― NORMA H.264/MPEG-4 AVC
a)
b)
c)
d)
Figura 4.9 – Predição Intra em blocos de 16×16 amostras: a) modo 0 – vertical e b) modo 1 – horizontal c)
modo 2 – DC d) modo 3 – planar.
A norma H.264/AVC oferece também nove modos de predição ao nível do bloco (ver Figura 4.10),
que são referidos como modos Intra4×4. Os primeiros três modos são muito semelhantes aos
utilizados ao nível do macrobloco enquanto que os restantes correspondem a direcções consideradas
importantes. Nos modos 3 e 4, as amostras são interpoladas com um ângulo de 45º e nos modos 5,
6 e 7 com um ângulo de 26.6º.
Figura 4.10 – Modos de predição Intra para blocos 4×4.
O modo de predição escolhido pelo codificador corresponde normalmente ao modo que apresenta
um menor erro de predição e tem de ser transmitido ao descodificador. Como para cada bloco 4×4
existem 9 modos de predição, o número de bits necessário para o envio do modo é significativo.
Felizmente, os modos Intra para os blocos 4×4 estão bastante correlacionados. Por omissão, o
modo de predição de um bloco é sempre o modo que possui o menor valor (cada modo possui um
valor de acordo com a Figura 4.10) de entre os modos de predição utilizados pelos blocos vizinhos,
em cima e à esquerda. No caso de se pretender usar outro modo, é necessário indicar ao
descodificador que há uma mudança de modo e enviar o novo modo.
Importa salientar que os modos de predição só podem ser usados quando todas as amostras a partir
das quais se efectua a predição estão disponíveis no próprio slice. As amostras não estão disponíveis
quando pertencem a outro slice ou quando o macrobloco a codificar se encontra nos limites da
imagem. No entanto, uma excepção é aberta para o modo DC que utiliza apenas as amostras que
estão disponíveis para calcular o bloco ou macrobloco de predição.
155
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
A crominância em macroblocos Intra é codificada de uma forma muito semelhante aos blocos da
luminância de um macrobloco do tipo Intra16×16, i.e. utilizando um de quatro modos: vertical,
horizontal, DC ou planar. O mesmo modo de predição é comum a ambos os blocos de crominância
(U e V) mas é independente do modo de predição utilizado para a luminância. Contudo, se algum
bloco de luminância de um macrobloco for codificado no modo Intra, ambos os blocos da
crominância são codificados em modo Intra.
4.3.2 Codificação e predição Inter
Em qualquer sistema de codificação de vídeo, cada amostra ou pixel pode ser predita a partir de uma
ou mais amostras. O preditor Inter mais simples que se conhece é a imagem anteriormente
transmitida. No entanto, todas as normas de codificação de vídeo utilizam técnicas mais complexas,
de forma a reduzir a redundância temporal entre tramas sucessivas, permitindo uma codificação
mais eficiente das sequências de vídeo. A estimação e compensação de movimento é uma das
técnicas mais utilizadas. A estimação de movimento consiste em escolher o bloco numa imagem de
referência (não necessariamente a anterior e não necessariamente no passado) que apresente o
menor resíduo em relação ao bloco a codificar e a compensação de movimento consiste em subtrair
o bloco encontrado à imagem a codificar. Na norma H.264/AVC, quando a imagem de referência
utilizada para um determinado macrobloco, é uma imagem previamente codificada e temporalmente
anterior, o macrobloco é referido como um macrobloco do tipo P. Os slices do tipo P podem conter
macroblocos do tipo P ou I e as imagens do tipo P podem conter slices do tipo I ou P. Os slices ou
imagens do tipo P podem ser preditos a partir de slices ou imagens do tipo I, P ou B anteriores.
Quando são escolhidas duas imagens de referência para um macrobloco, uma antes e outra depois
da imagem a codificar, o macrobloco é referido como um macrobloco do tipo B. Os macroblocos
do tipo B apenas podem estar presentes em slices do tipo B e estes em imagens do tipo B. A
compensação de movimento definida na norma H.264/AVC inclui a maior parte das características
principais das normas anteriores, mas a sua eficiência é melhorada através de novas ferramentas. Nas
próximas quatro sub-secções descrevem-se com algum detalhe as quatro principais características da
compensação de movimento na norma H.264/AVC, nomeadamente: 1) compensação de
movimento estruturada em árvore; 2) compensação de movimento com precisão de ¼ pixel; 3)
utilização de múltiplas imagens de referência; e 4) utilização de slices do tipo B.
Compensação de movimento estruturada em árvore
A norma H.264/AVC permite que um macrobloco seja dividido em partições de dimensão fixa,
utilizadas para descrever o movimento. São definidos vários tipos de partições, nomeadamente
desde 16×16 a 4×4 amostras de luminância, com muitas opções entre estas duas variantes. A
componente de luminância de cada macrobloco (16×16 amostras) pode ser dividida de 4 formas, tal
como se ilustra na Figura 4.11a), Inter16×16, Inter16×8, Inter8×16 e Inter8×8, que correspondem a
4 modos de predição ao nível do macrobloco.
Se o modo Inter8×8 for escolhido, cada um dos sub-macroblocos (com 8×8 amostras) pode ser
dividido (ou não) de novo (ver Figura 4.11a), obtendo-se partições com dimensões de 8×8, 8×4, 4×8
ou 4×4, que correspondem a 4 modos de predição ao nível do sub-macrobloco. Este número
156
CAPÍTULO 4 ― NORMA H.264/MPEG-4 AVC
elevado de modos de predição para cada macrobloco e sub-macrobloco dá origem a um número
elevado de partições possíveis para um macrobloco, desde 1 a 16 partições. Este método é referido
na literatura como compensação de movimento estruturada em árvore; na norma H.264/AVC, o
primeiro nível da árvore é o macrobloco, o segundo o sub-macrobloco e o terceiro o bloco.
a)
b)
Figura 4.11 – Macroblocos e sub-macroblocos: a) partições possíveis; b) escolha da partição consoante o
conteúdo da imagem.
Para cada modo de codificação de um macrobloco e sub-macrobloco é necessário enviar um vector
de movimento. Cada vector de movimento deve ser codificado e transmitido em conjunto com a
escolha da partição. A escolha de uma partição com dimensão elevada, i.e. 16×16, 16×8 ou 8×16,
implica que apenas um pequeno número de bits é necessário para indicar o tipo de partição e os
vectores de movimento. No entanto, nalguns casos, pode ser mais eficiente escolher partições mais
pequenas, i.e. 4×4, 8×4 ou 4×8, uma vez que apresentam um erro de predição menor, mesmo sendo
necessário transmitir os vectores de movimento e a escolha do tipo de partição. Esta escolha não é
especificada pela norma; no entanto, o seu impacto no desempenho é assinalável o que permite que
codificadores de diferentes empresas ofereçam desempenhos bem diferentes. Geralmente, partições
de dimensão elevada são escolhidas para zonas homogéneas da imagem e partições de dimensão
reduzida podem ser benéficas para áreas com mais detalhe. A Figura 4.11b) mostra o resíduo de uma
imagem com as decisões tomadas pelo software de referência da norma H.264/AVC [22] em termos
de partições para a compensação de movimento. O software de referência escolhe a dimensão da
partição que minimiza o resíduo e os vectores de movimento codificados. As partições estão
sobrepostas a vermelho na imagem residual; as áreas com pouco movimento estão a cinzento e as
áreas com muito movimento estão a preto ou branco. De uma forma geral, nas áreas com
movimento uniforme (e.g. regiões a cinzento), a partição 16×16 é escolhida enquanto que nas áreas
com movimento mais detalhado as partições mais pequenas são mais eficientes.
Como se usam formatos 4:2:0, a resolução de cada componente da crominância de um macrobloco
(U e V) é metade da componente de luminância, tanto horizontal como verticalmente. Cada bloco
de crominância (8×8 amostras) é dividido da mesma forma que a componente de luminância, só que
a dimensão de cada partição corresponde a metade da resolução horizontal e vertical da luminância,
e.g. a um bloco de 4×8 amostras de luminância corresponde um bloco 2×4 amostras de crominância.
As componentes horizontais e verticais de cada vector de movimento são divididas por dois quando
são aplicadas aos blocos de crominância.
157
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
Compensação de movimento com precisão de ¼ pixel
A precisão da compensação de movimento na norma H.264/AVC é de ¼ da distância entre as
amostras da imagem de referência. Nos casos em que o vector de movimento aponta para uma
posição inteira na imagem de referência, a amostra da imagem compensada de movimento é igual à
amostra que se encontra no local indicado pelo vector de movimento na imagem de referência. No
entanto, se o vector de movimento apontar para uma posição a ½ ou a ¼ de pixel, as amostras da
luminância e da crominância não existem na imagem de referência, sendo necessário um processo de
interpolação para as obter. A compensação de movimento com precisão de ¼ de pixel pode
aumentar significativamente o desempenho da codificação em comparação com precisão de ½ pixel
(utilizada na norma MPEG-2 Vídeo), à custa de uma maior complexidade do codificador.
A primeira fase da interpolação consiste em obter as amostras a metade da distância entre amostras.
Na Figura 4.12, as amostras a azul representam as amostras em posições inteiras e as amostras a
verde (a,b,c,d,...,m) representam as amostras com ½ pixel de precisão, i.e. a metade da distância
entre duas amostras azuis. Para obter as amostras a ½ pixel de precisão, utiliza-se um filtro Finite
Impulse Response (FIR) com 6 passos. Os coeficientes do filtro são (1/32, -5/32, 5/8, 5/8, 5/32,1/32); por exemplo, a amostra c é calculada a partir das amostras E,F,G,H,I,J horizontais da
seguinte forma:
⎛ E − 5 F + 20G + 20 H − 5 I + J
c = round ⎜
32
⎝
⎞
⎟ (4.1)
⎠
De uma forma semelhante, h é calculado a partir das amostras B, D, H, N, S e U verticais. Depois
de todas as amostras com ½ pixel de precisão adjacentes a posições inteiras estarem calculadas, as
amostras restantes (e.g. g na imagem) são calculadas a partir da interpolação das amostras já
calculadas. Por exemplo, g é calculado a partir das amostras a,b,c,k,l e m. Note-se que o resultado é
o mesmo se g for calculado horizontalmente ou verticalmente. O filtro de interpolação de 6 passos é
relativamente complexo (e.g. comparando com a interpolação bilinear utilizada na norma MPEG-4
Visual para o mesmo efeito) mas apresenta um melhor desempenho.
Figura 4.12 – Interpolação das amostras com ¼ de pixel de precisão.
158
CAPÍTULO 4 ― NORMA H.264/MPEG-4 AVC
Depois de todas as amostras nas posições com ½ pixel de precisão estarem disponíveis, as posições
com ¼ de pixel de precisão são obtidas por interpolação linear. As posições a ¼ de pixel de precisão
são calculadas a partir das duas amostras adjacentes em posições inteiras ou a ½ pixel de precisão,
tanto horizontalmente como verticalmente (ver Figura 4.12).
Os vectores de movimento com ¼ de pixel de precisão para a componente de luminância
necessitam de vectores de movimento com 1/8 de pixel de precisão para ambas as componentes de
crominância (no formato 4:2:0). As amostras interpoladas a intervalos de 1/8 de pixel entre duas
amostras da crominância são obtidas através de uma interpolação linear. Cada amostra na posição a
é calculada como uma combinação linear das amostras nas posições A, B, C e D da Figura 4.13:
⎛ ( 8 − dx )( 8 − dy ) A + dx ( 8 − dy ) B + ( 8 − dx ) dyC + dxdyD ⎞
a = round ⎜
⎟ (4.2)
64
⎝
⎠
Os valores de dx, dy e 8-dx e 8-dy são definidos na Figura 4.13.
A
B
dy
dx
C
8-dx
a
8-dy
D
Figura 4.13 – Interpolação da componente de crominância com 1/8 de pixel de precisão.
A sintaxe da norma H.264/AVC permite o uso de vectores de movimento sem restrições, i.e. os
vectores de movimento podem apontar para fora da área da imagem. Neste caso, a imagem de
referência é estendida para além dos limites da imagem, repetindo as amostras que se encontram no
limite da imagem antes da interpolação. Para codificar um vector de movimento para cada partição,
pode ser necessário um número de bits significativo, especialmente se partições de dimensão
reduzida forem escolhidas. Contudo, os vectores de movimento de partições vizinhas são muitas
vezes altamente correlacionados entre si. Para explorar este facto, cada vector de movimento é
predito a partir dos vectores de movimento de partições vizinhas já codificadas e transmitidas. O
vector de movimento predito é obtido a partir dos vectores de movimento de partições que se
encontram à sua esquerda, em cima, cima-direita e cima-esquerda. Um conjunto de regras que
dependem da dimensão das partições vizinhas e do cálculo de simples operações aritméticas é
definido em [31].
Múltiplas referências
A norma H.264/AVC suporta compensação de movimento com múltiplas referências, i.e. mais do
que uma imagem anteriormente codificada pode ser utilizada simultaneamente como referência para
a compensação de movimento. A Figura 4.14 ilustra este conceito para os slices do tipo P, preditos a
partir de uma ou mais imagens no passado; no entanto, este conceito é também utilizado para os
159
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
slices do tipo B (descritos na Secção seguinte) e preditos a partir de uma ou mais imagens no passado
e no futuro.
Figura 4.14 – Compensação de movimento com múltiplas referências.
Tanto o codificador como o descodificador guardam as imagens de referência a utilizar numa
memória com múltiplas imagens. O descodificador possui as mesmas imagens na memória que o
codificador através de operações de controlo do conteúdo da memória que são transmitidas no
fluxo binário codificado. Se a dimensão da memória permitir guardar mais do que uma imagem, o
índice da imagem de referência é transmitido para cada partição 16×16, 8×16, 16×8 ou 8×8 de um
macrobloco. O índice vai indicar ao descodificador qual é a imagem de referência que deve utilizar
de todas as imagens de referência que estão disponíveis na memória.
Além disso, para uma dada partição de um macrobloco é possível utilizar uma predição pesada
obtida a partir de duas imagens de referência, r1 e r2, da memória (a vermelho na Figura 4.14). Esta
ferramenta é referida como predição pesada e só pode ser utilizada em alguns perfis (ver Secção 4.4).
A predição pesada consiste em efectuar a compensação de movimento para as duas imagens de
referência r1 e r2 e calcular uma soma pesada a partir de um conjunto de pesos w1 e w2 e das duas
imagens compensadas de movimento, para se obter a predição final. Os pesos w1 e w2 são utilizados
para as referências r1 e r2, respectivamente. Com esta ferramenta é possível codificar transições (e.g.
fade-to-black) ou diferenças de intensidade (devido a alterações da iluminação) presentes na maior
parte do conteúdo, de uma forma mais eficiente [29].
A Figura 4.15b) mostra as decisões tomadas pelo software de referência da norma H.264/AVC [22]
para uma determinada imagem da sequência de vídeo Table Tennis, em termos da imagem de
referência escolhida. As zonas a branco indicam que o índice transmitido é 0 (corresponde à imagem
anteriormente codificada, N-1) e as zonas a preto indicam que o índice transmitido é 3 (corresponde
à imagem N-4 da Figura 4.14) com valores intermédios que correspondem ao cinzento claro e
escuro. Neste exemplo, a memória tem capacidade para cinco imagens (do branco ao preto na
Figura 4.14) e a predição pesada não é utilizada.
a)
b)
Figura 4.15 – Compensação de movimento: a) imagem original; b) escolha da imagem de referência para cada
partição.
160
CAPÍTULO 4 ― NORMA H.264/MPEG-4 AVC
Quando nenhum erro de predição, vector de movimento ou índice de referência são codificados, o
macrobloco é codificado com o modo especial referido como SKIP. Para macroblocos codificados
com este modo, assume-se que o índice de referência é 0, i.e. a imagem de referência é a imagem
anteriormente descodificada e o vector de movimento é igual ao vector de movimento predito (em
algumas condições especiais, o vector de movimento é zero).
As imagens de referência que a memória do descodificador possui são controladas através de um
conjunto de instruções definidas na norma H.264/AVC. Por exemplo, o codificador pode indicar ao
descodificador para marcar todas as imagens descodificadas como não disponíveis o que implica que
todas as imagens que irão ser posteriormente codificadas não podem utilizar como referência essas
imagens ou imagens anteriores. Este tipo de imagem (I) dá origem a um Instantaneous Decoding Refresh
(IDR) e só pode conter slices do tipo I, evitando a propagação de erros. A memória contem duas
listas de imagens: as imagens de longa duração e as imagens de curta duração. Uma imagem de longa
duração possui sempre o mesmo índice, independentemente do número de imagens descodificadas,
até ser removida. Por outro lado, os índices das imagens de curta duração correspondem a imagens
diferentes à medida que as imagens são descodificadas (através de uma estratégia FIFO). A norma
define várias operações de controlo, e.g. marcação de imagens como “não utilizadas”, remoção de
uma imagem da lista de curta duração para a colocar na lista de longa duração, etc. Para mais
detalhes, ver [31]. Finalmente, a norma impõe um limite máximo de 15 (para qualquer perfil@nível)
para o número de tramas de referência disponíveis no descodificador.
Slices do tipo B
Em comparação com as normas de codificação anteriores, o conceito de slices do tipo B é
generalizado na norma H.264/AVC uma vez que agora uma imagem do tipo B pode utilizar como
referência imagens do tipo B para a compensação de movimento ou seja a escolha das imagens de
predição só depende da gestão de memória efectuada pelo codificador. Deste modo, os slices do tipo
B são codificados de forma a que para alguns blocos ou macroblocos a predição corresponde a uma
média pesada de dois valores distintos obtidos a partir de dois blocos ou macroblocos depois da
compensação de movimento. Esta predição pesada permite obter uma predição Inter mais eficiente,
i.e. com um menor erro de predição. As imagens do tipo B utilizam duas memórias de referência,
referidas como a primeira e a segunda memória de imagens de referência. As imagens de referência
que estão em cada uma destas memórias dependem de uma decisão que cabe ao codificador; uma
estratégia muito semelhante à adoptada para as conhecidas imagens B da norma MPEG-2 Vídeo
pode ser seguida. Na Figura 4.16, um exemplo de dependências entre imagens do tipo B e P é
apresentado. Para cada imagem pode existir mais do que uma referência, uma vez que o codificador
pode escolher quais são as referências a utilizar ao nível do macrobloco.
I
P
B
B
B
B
B
B
B
P
P
B
B
Figura 4.16 – Dependências das imagens do tipo B.
161
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
Em slices do tipo B, quatro tipos de predição Inter são disponibilizados:
― Lista 0 (L0): A predição é calculada a partir de uma imagem de referência presente na
primeira memória.
― Lista 1 (L1): A predição é calculada a partir de uma imagem de referência presente na
segunda memória.
― Bi-preditivas (Bi): A predição é calculada a partir da média pesada da imagem de referência
na primeira memória e da imagem de referência na segunda memória.
― Predição directa (Direct): A predição é calculada a partir dos elementos de sintaxe
previamente transmitidos e pode ser da lista 0, lista 1 ou bi-preditiva.
Os macroblocos do tipo B utilizam também uma divisão semelhante aos macroblocos do tipo P.
Além dos modos Inter16×16, Inter16×8, Inter8×16, Inter8×8, foi também definido um modo de
predição directa. Adicionalmente, para cada partição de 16×16, 16×8, 8×16 e 8×8, o tipo de predição
(L0, L1, Bi ou Direct) pode ser escolhido separadamente. Se nenhum erro de predição for
transmitido para um macrobloco codificado com o método de predição directa, este pode ser
codificado de uma forma muito eficiente através do modo skip. A codificação dos vectores de
movimento nos macroblocos do tipo B é muito semelhante à utilizada nos macroblocos do tipo P
com as modificações resultantes do facto de os blocos vizinhos poderem ser codificados utilizando
modos de predição diferentes. Finalmente, a predição pesada Inter Bi-preditiva, pode ser realizada
com diferentes pesos sendo bastante eficiente na codificação de transições suaves (cross-fades) entre
diferentes cenas de um vídeo (para mais detalhes ver [31]).
4.3.3 Filtro de bloco
Uma das principais características da arquitectura híbrida de codificação é o efeito de bloco ou seja o
facto da estrutura de blocos ser visível na imagem, nomeadamente para débitos de codificação mais
baixos. As amostras nas fronteiras dos blocos são normalmente reconstruídas com menos precisão
que as amostras interiores; este efeito do bloco é geralmente considerado como o artefacto mais
característico dos esquemas de codificação híbrida tal como usados nas normas de codificação
anteriores. A norma H.264/AVC especifica a utilização de um filtro de bloco adaptativo que opera
nas fronteiras dos blocos, tanto horizontalmente como verticalmente. Este filtro tem de estar
presente no codificador e no descodificador, uma vez que filtra os blocos depois destes serem
descodificados. Este filtro possui duas vantagens principais:
― As fronteiras dos blocos são suavizadas, sem tornar a imagem difusa, melhorando a
qualidade subjectiva da imagem.
― Os macroblocos filtrados são utilizados na compensação de movimento (filtro no loop),
resultando num resíduo menor depois da predição, ou seja, reduzindo o débito binário para
a mesma qualidade objectiva.
A filtragem é aplicada às fronteiras verticais e horizontais dos blocos 4×4 de um macrobloco. O
filtro é aplicado primeiro às fronteiras verticais (ordem a,b,c,d na Figura 4.17a) e de seguida às
fronteiras horizontais (ordem e,f,g,h na Figura 4.17a). Cada operação de filtragem calcula apenas três
162
CAPÍTULO 4 ― NORMA H.264/MPEG-4 AVC
amostras (a cinzento na Figura 4.17b), a partir de quatro amostras em cada lado da fronteira.
Dependendo dos valores de vários elementos da sintaxe, várias hipóteses são possíveis, desde a)
nenhuma amostra filtrada a b) p0,p1,p2,q0,q1,q2 filtrados o que permite controlar a quantidade de
filtragem aplicada para cada macrobloco.
e
f
g
h
a
b
c
d
a)
b)
Figura 4.17 – Filtro de bloco: a) ordem de filtragem; b) amostras adjacentes nas fronteiras horizontais e
verticais.
O filtro adaptativo definido na norma H.264/AVC pode ser ajustado ao nível do slice, das fronteiras
e das amostras. O filtro adaptativo é controlado por um parâmetro Bs ∈ {0,1,2,3,4} que representa a
força do filtro; para Bs = 0 nenhuma amostra é filtrada e para Bs = 4 o filtro reduz ao máximo o
efeito de bloco. O filtro é mais “forte” nos lugares onde ocorre uma distorção mais significativa
devido ao efeito de bloco. Ao nível do slice, a força do filtro pode ser ajustada consoante as
características da sequência de vídeo. Ao nível das fronteiras, a força do filtro depende do modo de
macrobloco escolhido, dos vectores de movimento, da imagem de referência utilizada, e se os blocos
na fronteira contêm coeficientes codificados ou não. O conjunto de regras completo para
determinar a força do filtro (i.e. o valor de Bs) encontra-se especificado em [31]. A filtragem é mais
acentuada para macroblocos que irão sofrer uma maior distorção, tais como as fronteiras de um
macrobloco Intra (Bs = 4), as fronteiras entre blocos de um macrobloco Intra (Bs = 3) e quando o
macrobloco é Inter mas os seus blocos contêm coeficientes diferentes de zero (Bs = 2).
Ao nível da amostra, existem limiares dependentes do factor de quantificação (Qp) utilizado que
podem desligar a filtragem para amostras individuais. O objectivo desta decisão é desligar o filtro
quando existe uma mudança significativa (gradiente) na fronteira do bloco. Mais especificamente, se
|p0-q0|, |p1-p0| e |q1-q0| (que estimam o gradiente no contorno) forem simultaneamente
menores que um limiar estabelecido, uma ou mais amostras são filtradas (ver [31] para mais
detalhes). Para Qp baixos, gradientes com valores médios ou altos correspondem a características da
imagem que devem ser preservadas; desde modo os limiares são mais baixos. Por outro lado,
quando Qp é alto, a distorção no bloco é mais significativa e os limiares são mais elevados.
Na Figura 4.17 apresenta-se uma imagem descodificada com e sem filtro. Tal como se pode
observar, na imagem da esquerda o efeito de bloco é muito mais significativo, pois o filtro de bloco
encontra-se desligado. Na imagem da direita, o filtro de bloco já é utilizado, melhorando a qualidade
subjectiva da imagem significativamente. Note-se que os contornos dos objectos são preservados
pelo filtro enquanto que as fronteiras dos blocos são suavizadas nas regiões mais suaves da imagem.
163
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
a)
b)
Figura 4.18 – Codificação de uma trama Foreman: a) sem filtro de bloco; b) com filtro de bloco [30].
4.3.4 Transformada e quantificação
Nesta Secção apresenta-se uma descrição da transformada e do processo de quantificação utilizados
na norma H.264/AVC. Uma das inovações da nova transformada consiste na utilização de blocos
de dimensão mais reduzida (4×4 ou 2×2 amostras) que os utilizados nas normas anteriores (8×8
amostras). Esta pequena dimensão é compatível com a mais fina compensação de movimento (4×4
amostras) e permite também uma redução significativa dos artefactos de codificação (nomeadamente
do tipo ringing). Além disso, permite uma implementação exacta para os descodificadores e
codificadores, eliminando o problema de erros entre diversas implementações da DCT, tipicamente
denominados erros de mismatch. A transformada DCT é uma boa aproximação à transformada
óptima de Karhunen-Loève para um amplo conjunto de sinais [18]. A norma H.264/AVC utiliza
também transformadas baseadas na DCT com as diferenças aqui resumidas:
― Usa uma transformada inteira, i.e. todas as operações podem ser efectuadas apenas com
somas, subtracções e deslocamento de bits (shifts), sem perda de precisão.
― A transformada inversa é completamente especificada na norma H.264/AVC e se esta
especificação for cumprida não existe nenhum erro entre diferentes implementações da
transformada.
― O processo de quantificação e normalização encontra-se integrado com a transformada,
sendo apenas necessário uma única operação de multiplicação por coeficiente. Todas as
operações necessárias para transformar, normalizar e quantificar um bloco de coeficientes
podem ser realizadas em aritmética de 16 bits, reduzindo a complexidade computacional.
Transformada inteira
A transformada é aplicada ao erro de predição resultante da predição Intra ou Inter, anteriormente
descritas. A norma H.264/AVC utiliza três transformadas dependendo do tipo de dados a codificar:
1. Uma transformada “nuclear” 4×4 que é aplicada a todos os blocos. Esta transformada é
baseada na DCT.
2. Uma transformada 4×4 para os coeficientes DC de luminância obtidos a partir da
transformada nuclear 4×4 (utilizada apenas para os macroblocos Intra16×16).
164
CAPÍTULO 4 ― NORMA H.264/MPEG-4 AVC
3. Uma transformada 2×2 para os coeficientes DC de crominância obtidos a partir da
transformada nuclear 4×4.
As últimas duas transformadas são baseadas na transformada de Hadamard [6]. Na Figura 4.19
apresenta-se um diagrama de blocos que ilustra a relação entre as três transformadas acima
apresentadas. Independentemente do modo de codificação escolhido, é sempre aplicada a
transformada (1) “nuclear”, Cf, de 4×4. Para o modo Intra16×16, é ainda aplicada a transformada (2)
aos coeficientes DC da luminância resultantes da transformada Cf (4×4). Independentemente do
modo de codificação escolhido, os coeficientes DC da crominância são sempre transformados com
uma transformada (3) (2×2). Todos os coeficientes são normalizados e quantificados num único
passo, de forma a evitar a utilização de divisões e operações de vírgula flutuante e a incorporar as
matrizes de normalização necessárias para reduzir a gama dinâmica dos coeficientes (apenas são
necessários 16 bits para processar e representar os coeficientes de qualquer transformada). Para
reconstruir as amostras, as operações inversas ilustradas na Figura 4.19 são efectuadas.
Amostras
originais
X
Y
Transformada
Cf (4x4)
Normalização e
quantificação
inversa
Normalização e
quantificação
Xd
Transformada
inversa Cf (4x4)
Amostras
reconstruídas
Yd
Transformada
DC
2x2 e/ou 4x4
Transformada
inversa DC
2x2 e/ou 4x4
Para a crominância
e/ou intra 16x16
Para a crominância
e/ou intra 16x16
Figura 4.19 – Transformada, quantificação, normalização e respectivas operações inversas.
A primeira transformada, Cf, é baseada na popular DCT. A transformada DCT transforma um
vector x num novo vector X de coeficientes da transformada através de uma transformação linear X
= H x, onde cada elemento da coluna k e da linha n da matriz H é definido por [6]:
H kn = H (k , n) = ck
2
kπ ⎞
⎛
cos ⎜ ( n + 1/ 2 )
⎟ (4.3)
N
N ⎠
⎝
com o índice de frequência k = 0,1, ... ,N-1, o índice de amostra n=0,1, ...., N-1, C0 = 2 e Ck = 1 para
k > 1. A matriz da DCT é ortogonal, i.e. x = H −1 X = H T X . A principal desvantagem da DCT é
que os elementos da matriz H são números irracionais, o que significa que num sistema digital o
cálculo da DCT requer aproximar estes números por números inteiros ou de vírgula flutuante. As
diferentes estratégias para se obter esta aproximação levam a diferentes resultados na codificação e
sobretudo na descodificação. A solução adoptada na norma H.264/AVC consiste em aproximar a
matriz H por uma matriz que contem apenas números inteiros e que preserva as propriedades da
DCT (esta aproximação não tem um efeito dramático atendendo a que os coeficientes são de
qualquer forma quantificados). Deste modo, definiu-se a matriz H como [27]:
165
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
⎡1 1 1 1 ⎤
⎢ 2 1 −1 −2 ⎥
⎥ (4.4)
H =⎢
⎢1 −1 −1 1 ⎥
⎢
⎥
⎣1 −2 2 −1⎦
Para se obter a transformada inversa, é necessário calcular a matriz inversa de H. Se a matriz H fosse
ortonormada (HTH=I) apenas era necessário calcular a transporta de H [6]; como não o é, é
necessário normalizar os coeficientes da transformada H de uma forma adequada e definir a matriz
~
inversa H inv como uma versão normalizada da matriz inversa de H [27] (o ~ representa a
normalização):
~
H inv
1
1 1/ 2 ⎤
⎡1
⎢1 1/ 2 −1 −1 ⎥
⎥ (4.5)
=⎢
⎢1 −1/ 2 −1
1 ⎥
⎢
⎥
1 −1/ 2 ⎦
⎣1 −1
~
e a relação entre H inv e H é a seguinte:
~
H inv diag {1/ 4, 1/ 5, 1/ 4, 1/ 5} H = I (4.6).
~
As multiplicações por ½ de H inv são obrigatoriamente implementadas com deslocamentos de 1 bit
à direita, de forma a que todos os descodificadores obtenham os mesmos resultados (se a matriz
inversa fosse calculada directamente a partir de H esta propriedade não era possível). Se o bloco é
codificado no modo Intra16×16, cada bloco 4×4 é primeiro transformado utilizando a transformada
4×4 anteriormente descrita (Cf) e cada coeficiente DC de cada bloco 4×4 é transformado de novo
com a transformada de Hadamard. Esta transformação é referida como uma transformada
hierárquica (uma vez que tem dois níveis) e é adequada a zonas da imagem em que as amostras
apresentem valores semelhantes dentro de um bloco 16×16 porque ainda existe correlação
significativa entre os vários coeficientes DC. A matriz da transformada de Hadamard directa é
definida como [27]:
~
H = H inv
⎡1 1 1 1 ⎤
⎢1 1 −1 −1⎥
⎥ (4.7)
=⎢
⎢1 −1 −1 1 ⎥
⎢
⎥
⎣1 −1 1 −1⎦
Os coeficientes DC da crominância também são transformados de uma forma idêntica. As
componentes de crominância de um macrobloco são constituídas por blocos de 8×8 amostras que,
transformados pela transformada 4×4 já descrita, dão origem a uma matriz de 2×2 coeficientes DC,
que irá ser transformada através de [27]:
~
⎡1 1 ⎤
H = H inv = ⎢
⎥ (4.8).
⎣1 −1⎦
166
CAPÍTULO 4 ― NORMA H.264/MPEG-4 AVC
Quantificação
As transformadas de bloco, já descritas, por si só não permitem nenhuma compressão do sinal de
vídeo, apenas representam a imagem num domínio mais adequado para a codificação. A
quantificação remove componentes da imagem consideradas irrelevantes, permitindo obter uma
redução muitas vezes substancial do débito binário. A operação de quantificação corresponde a
dividir cada coeficiente por um factor de quantificação e a operação de quantificação inversa
(reconstrução) corresponde a multiplicar cada coeficiente pelo mesmo factor. Todo este processo
introduz perdas irrecuperáveis nos coeficientes resultantes das transformadas. Para quantificar os
coeficientes, a norma H.264/AVC utiliza quantificação escalar [6] e o factor de quantificação é igual
para todos os coeficientes da transformada. Um de 52 valores possíveis para o factor de
quantificação (Qstep) é seleccionado para cada macrobloco, indexado através do passo de
quantificação (Qp), e de uma tabela que estabelece a relação entre cada Qp e Qstep. Os valores da
tabela foram obtidos de forma a haver um aumento de aproximadamente 12.5% do débito binário
para cada incremento de 1 do valor do passo de quantificação.
Para algumas aplicações, é desejável reduzir o factor de quantificação para valores muito baixos, de
forma a que o PSNR (e a qualidade) obtido seja bastante elevado, podendo mesmo corresponder a
níveis visualmente considerados sem perdas. No entanto, para outros tipos de aplicações, são
necessários factores de quantificação elevados de forma a que o débito binário seja o menor
possível. A norma H.264/AVC estende a gama dos factores de quantificações de 31 para 52, (nas
normas anteriores a gama é 31), permitindo obter PSNRs com 50 dB ou até mais elevados.
Normalmente, o factor de quantificação utilizado para a crominância é igual ao utilizado para a
luminância. No entanto, de forma a evitar artefactos visíveis para a crominância para valores de Qp
elevados, a norma limita o valor máximo de Qp para a crominância a 80% do valor máximo de Qp
para a luminância.
Ao nível da imagem, é especificado o valor inicial de Qp (menos 26) para cada macrobloco. O valor
inicial pode ser modificado ao nível do slice e/ou ao nível do macrobloco, através da transmissão de
um valor diferencial diferente de zero. Tanto ao nível do slice como ao nível do macrobloco, pode
mudar-se para qualquer outro factor de quantificação (e.g. de 0 para 51).
4.3.5 Codificação entrópica
O último passo do processo de codificação de vídeo é a codificação entrópica. O principal objectivo
deste passo consiste em explorar a redundância estatística dos símbolos ou elementos de sintaxe a
codificar. Para este efeito, a norma H.264/AVC utiliza três métodos, dois dos quais baseados em
códigos VLC:
1. Universal Variable Length Coding (UVLC)
2. Context Adaptative Variable Length Coding (CA-VLC)
3. Context Adaptative Binary Arithmetic Coding (CABAC), baseado em codificação aritmética.
Tanto a codificação baseada em códigos VLC como a codificação aritmética são já utilizadas por
normas anteriores (e.g. MPEG-4 e H.263+); no entanto, os métodos aqui utilizados apresentam
167
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
novidades significativas em relação aos seus predecessores. Os códigos VLC são baseados na
atribuição de palavras de código com dimensão reduzida a símbolos com uma probabilidade de
ocorrência elevada e palavras de código com dimensões superiores a símbolos com uma
probabilidade de ocorrência baixa. Ao contrário da codificação baseada em códigos VLC
(normalmente de Huffman), a codificação aritmética permite que um número não inteiro de bits seja
atribuído a cada símbolo, aproximando-se mais do limite teórico de máxima compressão
determinado pela entropia [31]. Na norma H.264/AVC, o método de codificação entrópica utilizado
depende do elemento de sintaxe a codificar; na Tabela 4.1 apresentam-se os principais elementos de
sintaxe, a respectiva descrição semântica e ainda os métodos de codificação entrópica utilizados.
Tabela 4.1 – Elementos de sintaxe e respectiva codificação entrópica.
Elementos de sintaxe
Elementos de sintaxe
de alto nível
Descrição
Codificação
Ao nível da sequência
FLC/UVLC
Ao nível da trama/campo
FLC/UVLC
Ao nível do slice
FLC/ULVC/CABAC
Tipo de macrobloco
Tipo de predição para cada macrobloco
ULVC/CABAC
Coded block pattern
Indica quais são os blocos que contêm coeficientes
ULVC/CABAC
Passo de quantificação
(Qp)
Codificados diferencialmente
ULVC/CABAC
Índice da trama de
referência
Identifica a(s) trama(s) de referência
ULVC/CABAC
Vectores de movimento
Codificados diferencialmente
UVLC/CABAC
Informação residual
Coeficientes para cada bloco 4×4 ou 2×2
CA-VLC/CABAC
A informação de sintaxe de alto nível é sempre codificada utilizando códigos binários com
comprimento fixo (Fixed Length Coding - FLC) ou comprimento variável (UVLC). A informação de
sintaxe de alto nível ao nível do slice pode ser codificada com códigos FLC, VLC ou com o
codificador aritmético CABAC. O tipo de macrobloco indica o tipo de predição (e.g. Intra, Inter)
utilizado em cada macrobloco e o parâmetro CBP indica se os vários blocos pertencentes a um
macrobloco contêm coeficientes diferentes de zero ou não. O passo de quantificação é codificado
diferencialmente em relação ao valor anterior de Qp e os vectores de movimento são codificados
diferencialmente em relação ao vector de movimento predito (ver Secção 4.3.2). O índice que indica
qual a trama de referência utilizada para a predição é enviado ao nível do macrobloco. Todos estes
parâmetros são codificados com o método UVLC ou CABAC, dependendo do modo de codificação
entrópica escolhido. Por fim, os coeficientes quantificados resultantes da transformada directa
podem ser codificados com os métodos de codificação entrópica CA-VLC ou CABAC.
Codificação entrópica ULVC (códigos de Exp-Golomb)
Os códigos de Exp-Golomb [17] (códigos de Golomb exponenciais) são códigos de comprimento
variável com uma construção regular. A Tabela 4.2a) ilustra a estrutura destes códigos. Cada código
é constituído por um sufixo e um prefixo que inclui o bit separador com o valor ‘1’. Os bits do
prefixo possuem sempre o valor ‘0’ e os bits do sufixo x0 x1 ... xn podem ser ‘0’ ou ‘1’ e são
168
CAPÍTULO 4 ― NORMA H.264/MPEG-4 AVC
utilizados no cálculo da palavra de código. O número de bits do sufixo é igual ao número de bits do
prefixo menos 1 para qualquer palavra de código.
Tabela 4.2 – Codificação entrópica Exp-Golomb: a) estrutura genérica do código; b) primeiras 9 palavras de
código.
a)
Elemento de sintaxe
0
b)
Palavra de código
Elemento de sintaxe
Palavra de código
0
1
1
0 1 0
2
0 1 1
3
0 0 1 0 0
4
0 0 1 0 1
5
0 0 1 1 0
1
1-2
0 1 x0
3-6
0 0 1 x 1 x0
7-14
0 0 0 1 x 2 x1 x0
15-30
0 0 0 0 1 x 3 x2 x1 x0
6
0 0 1 1 1
0 0 0 0 0 1 x4 x3 x2 x1 x0
7
0 0 0 1 0 0 0
8
0 0 0 1 0 0 1
…
…
31-62
....
....
Deste modo, o processo de descodificação para os elementos da sintaxe usando este tipo de código
é bastante simples. Basta ler todos os bits com o valor zero, a partir da posição actual, até encontrar
um bit a ‘1’. De seguida basta ler o mesmo número de bits mais 1, interpretar o número lido como
um inteiro com o bit mais significativo à esquerda e subtrair-lhe o valor 1 para obter o elemento de
sintaxe que a cadeia de bits representa (ver Tabela 4.2a). Os elementos de sintaxe negativos (e.g.
indicação do factor diferencial de quantificação ao nível do slice) são convertidos da forma
apresentada na Tabela 4.3.
Tabela 4.3 – Mapeamento entre elementos de sintaxe.
Elemento de sintaxe positivo Elemento de sintaxe negativo
0
0
1
1
2
–1
3
2
4
–2
5
3
6
–3
k+1
k
(–1)
Ceil( k÷2 )1
Aos elementos de sintaxe que possuem uma elevada probabilidade de ocorrência, foram atribuídas
palavras de código com uma dimensão pequena e aos elementos de sintaxe com uma menor
probabilidade de ocorrência foram atribuídos palavras de código com uma dimensão superior. Deste
modo, em vez de desenhar uma tabela VLC diferente para cada elemento de sintaxe, apenas é
necessário mapear cada elemento à palavra de código de acordo com as estatísticas dos dados, sendo
necessária apenas uma tabela VLC. A utilização de uma única tabela VLC é simples, mas possui uma
1
A operação Ceil(x) retorna o menor inteiro maior ou igual a x
169
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
desvantagem significativa: a tabela é calculada a partir de um modelo de probabilidade estático que
ignora a correlação entre os elementos de sintaxe gerados pelo codificador.
Codificação adaptativa baseada em códigos VLC (CA-VLC)
Para codificar entropicamente os coeficientes da transformada, um esquema mais eficiente
denominado CA-VLC é utilizado. Neste esquema, várias tabelas VLC são utilizadas e escolhidas
adaptativamente, dependendo dos elementos de sintaxe anteriormente codificados. Uma vez que as
tabelas VLC foram projectadas de forma a serem adequadas para estatísticas condicionadas (i.e.
onde a probabilidade de um símbolo depende dos elementos anteriores), o desempenho do módulo
de codificação entrópica é melhorado em relação ao esquema ULVC anteriormente descrito. Este
método é utilizado para codificar os coeficientes quantificados dos blocos de luminância e
crominância 4×4 e 2×2 e explora as seguintes características [3]:
― Depois da predição, transformada e quantificação, os blocos contêm um número
significativo de zeros. O CA-VLC utiliza codificação (comprimento, nível) ou (run, level) para
representar uma cadeia de zeros de uma forma compacta.
― Os coeficientes de alta frequência diferentes de zero são muitas vezes sequências de ± 1. O
CA-VLC indica o número de coeficientes de alta frequência com o valor 1 ou -1 de uma
forma compacta. Estes coeficientes são referidos como T1s (Trailing 1s).
― O número de coeficientes diferentes de zero em blocos vizinhos é muito correlacionado. O
número de coeficientes é codificado através de várias tabelas. A escolha da tabela depende
do número de coeficientes diferentes de zero nos blocos vizinhos.
― O nível ou amplitude dos coeficientes diferentes de zero tende a ser mais alto perto do
coeficiente DC e a decrescer à medida que se aproxima de frequências mais elevadas. O CAVLC tira partido desta propriedade através da escolha das tabelas VLC para a amplitude dos
coeficientes dependendo das amplitudes dos símbolos recentemente codificados.
A ordem de varrimento dos coeficientes em zig-zag ainda é utilizada mas o varrimento é feito por
ordem inversa, i.e. partindo dos coeficientes de alta frequência para o coeficiente DC. Outra
característica do CA-VLC é a separação entre o comprimento (run) e o nível ou amplitude (level) que
permite uma melhor adaptação e menor complexidade. O algoritmo de codificação CA-VLC
consiste em seis passos distintos (a Figura 4.20 apresenta um exemplo):
1. Varrer os coeficientes do bloco em zig-zag, das altas para as baixas frequências, de forma a
obter um vector de coeficientes; a Figura 4.20 exemplifica este processo.
2. Codificar o número total de coeficientes (Tcoeff) e o número de T1s. Para obter o
número de T1s é necessário varrer o vector de coeficientes do menor para o maior índice, (i.e.
das frequências mais altas para as mais baixas) e contar o número de coeficientes com o valor
± 1, até que seja encontrado um coeficiente diferente de zero e ± 1. O número total de
coeficientes Tcoeff está entre 0 e 16 (para um bloco de 4×4) e o número de T1s permitidos
entre 0 e 3. Se existirem mais do que 3 T1s, apenas os últimos três são codificados neste passo.
Os valores Tcoeff e T1s são codificados com um único símbolo e a tabela VLC escolhida
depende do número de coeficientes codificados nos blocos vizinhos (adaptação ao contexto).
170
CAPÍTULO 4 ― NORMA H.264/MPEG-4 AVC
Existem quatro tabelas, a primeira das quais é adequada a um número pequeno de
coeficientes; valores baixos de Tcoeff possuem códigos pequenos e valores altos de Tcoeff
códigos com um comprimento superior. A segunda tabela é adequada a um número médio de
coeficientes Tcoeff ; aos valores de Tcoeff entre 2 e 4 são atribuídos códigos pequenos. A terceira
tabela é adequada a valores altos de Tcoeff e a quarta consiste em códigos de comprimento fixo
para cada valor de Tcoeff. No exemplo da Figura 4.20, a palavra de código correspondente a
Tcoeff = 5 e T1 = 3 é ‘0000100’.
3. Codificar o sinal de cada T1 com um único bit (‘0’ para + e ‘1’ para -). Estes bits são
enviados pela mesma ordem que estão presentes no vector de coeficientes os sinais do T1s,
i.e. do menor índice para o maior. Para o exemplo da Figura 4.20, são necessários três bits
(‘011’) que correspondem ao sinal dos coeficientes (1, -1 e -1).
4. Codificar os níveis dos coeficientes diferentes de zero restantes. A escolha da tabela para
cada nível codificado depende dos símbolos anteriores (adaptação ao contexto). Existem 7
tabelas VLC que podem ser escolhidas, sendo a primeira adequada a níveis baixos e a última
adequada a níveis altos. O processo de escolha da tabela está definido através de limiares. Para
o exemplo da Figura 4.20, os níveis dos coeficientes 1 e 3 são codificados com as palavras de
código ‘1’ e ‘0010’.
5. Codificar o número total de zeros antes do último coeficiente (Tzeros). O número total
de zeros antes do último coeficiente é codificado através de uma tabela VLC. Como o número
total de coeficientes já é conhecido, pode também saber-se o número total de zeros que o
bloco possui o que evita codificar o comprimento (run) para o número de zeros presentes no
fim do vector. Uma de 15 tabelas VLC é escolhida, dependendo do número total de
coeficientes (Tcoeff). Para o exemplo da Figura 4.20, Tzeros = 3 o que corresponde à palavra de
código ‘111’.
6. Codificar cada comprimento (run) de zeros. Depois de terem sido codificados os níveis
dos coeficientes nos passos 2, 3 e 4, é necessário enviar o comprimento (run) para cada
coeficiente diferente de zero, i.e. o número de zeros antes de qualquer coeficiente diferente de
zero. Tal como nos passos anteriores, é necessário varrer o vector dos coeficientes, do menor
índice para o maior (i.e. das frequências mais altas para as mais baixas) e enviar o número de
zeros para cada coeficiente diferente de zero, com duas excepções:
a) Se não existirem mais zeros para serem codificados, não é necessário codificar mais
nenhum valor de comprimento;
b) Não é necessário codificar o comprimento para o último coeficiente (frequência mais
baixa).
171
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
0
0
1
0
Bloco 4x4
3
-1
0
0
-1
1
0
0
0
0
0
0
Varrimento zig-zag
Último Coeficiente
... 0 1 0 -1 -1 1 0 3 0
Tcoeff = 5
T1s = 3
0 0 0 0 1 0 0
Tzeros = 3
Sinal
0
1
Níveis (1 e 3)
1
1
0 0 1 0
1 1 1
Comprimento:
1, 0, 0 e 1
1 0
1
1
0 1
Figura 4.20 – Exemplo de codificação entrópica CA-VLC.
A escolha da tabela VLC depende do número de zeros que ainda falta codificar e do comprimento a
codificar, uma vez que apenas um conjunto de comprimentos é permitido, dependendo do valor de
Tzeros e dos comprimentos já codificados (e.g. se faltarem codificar 2 zeros, o comprimento só pode
tomar 3 valores: 0, 1 ou 2, e a palavra de código utilizada possui no máximo 2 bits). Para o exemplo
da Figura 4.20, são enviados 4 comprimentos, o primeiro para os coeficientes 1 e -1, o segundo para
os coeficientes -1 e -1, o terceiro para os coeficientes -1 e 1 e o quarto para os coeficientes 1 e 3. A
palavra de código que é necessária enviar para todos os coeficientes deste bloco é constituída pela
concatenação de todas as palavras de código resultantes de cada passo realizado, i.e.
‘000010001110010111101101’.
Apesar da complexidade acrescida do descodificador, esta técnica apresenta um desempenho
superior em relação à codificação entrópica Exp-Golomb, especialmente para débitos binários altos
(com ganhos até 18% para Qp = 4 [30]).
Codificação aritmética CABAC
O codificador entrópico da norma H.264/AVC pode ser ainda mais eficiente com a utilização do
codificador aritmético CABAC [28]. Por um lado, a utilização de codificação aritmética permite
atribuir um número não inteiro de bits para cada símbolo de um alfabeto, o que é adequado para
probabilidades de símbolo maiores que 0.5. Por outro lado, a utilização de códigos adaptativos
permite uma boa adaptação a estatísticas não estacionárias dos elementos de sintaxe a codificar. Por
exemplo, a estatística das amplitudes dos vectores de movimento variam no tempo e no espaço para
diferentes sequências e débitos binários. Logo, um modelo adaptativo permite ter em conta as
probabilidades dos vectores de movimento já codificados e consequentemente uma melhor
adaptação dos códigos aritméticos à estatística do sinal.
Na Figura 4.21 apresenta-se a arquitectura genérica do codificador entrópico CABAC constituído
pelos seguintes módulos:
1.
Binarização – O CABAC utiliza codificação binária aritmética o que significa que apenas
elementos binários são codificados. Deste modo, é necessário converter um símbolo não
binário (e.g. um vector de movimento) numa sequência binária antes deste ser codificado.
172
CAPÍTULO 4 ― NORMA H.264/MPEG-4 AVC
Esta representação binária consiste num conjunto de decisões binárias, denominadas bins que
correspondem a um bit da sequência. Este processo é especificado para cada símbolo a
codificar com um conjunto de tabelas e os códigos utilizados podem ser de comprimento
variável (códigos VLC) ou fixo (códigos FLC).
2.
Selecção de contextos – Um contexto é um modelo da probabilidade de ocorrência de um
ou mais bins da sequência binária. Este passo consiste na selecção de um contexto para cada
bin de acordo com um conjunto de observações passadas, i.e. depende da estatística dos
símbolos recentemente codificados. O contexto guarda a probabilidade de cada bin para
símbolos relacionados, e.g. para todos os coeficientes AC da crominância.
3.
Codificador aritmético adaptativo e binário – Finalmente, cada bin é codificado através
de um codificador aritmético adaptativo que utiliza as estimativas de probabilidade de um
determinado contexto, escolhido no passo anterior. Depois de codificar cada bin, as
probabilidades de um contexto vão ser actualizadas, usando todos os símbolos binários já
codificados. Deste modo, o contexto seleccionado adapta-se a estatísticas que variam ao
longo do tempo.
Figura 4.21 – Arquitectura do codificador entrópico CABAC.
Esta arquitectura é válida para a codificação entrópica de vários símbolos (correspondentes a vários
elementos de sintaxe), como o tipo de macrobloco, o CBP (Coded Block Pattern), as tramas de
referência, os modos de predição Intra ou Inter e os coeficientes quantificados. De seguida,
descreve-se a forma como os coeficientes quantificados são codificados, devido à sua importância e
ao esquema inovador utilizado; para os restantes elementos de sintaxe, uma descrição detalhada
pode ser encontrada em [31] e [16].
O símbolo CBP indica quais são os blocos dentro do macrobloco que possuem coeficientes
diferentes de zero. Se o símbolo CBP indicar que só existem coeficientes com o valor zero, mais
nenhuma informação é transmitida para esse bloco. Se o símbolo CBP indicar que existem
coeficientes diferentes de zero, um mapa de coeficientes (significant map) que especifica as posições
dos coeficientes significativos (i.e. diferentes de zero) é codificado seguido da informação de
amplitude e de sinal para cada coeficiente, em vez do popular esquema (comprimento, nível)
utilizado pelo método ULVC (e nas normas anteriores). Para se construir o mapa de coeficientes, é
necessário varrer todos os coeficientes em zig-zag (das baixas para as altas frequências) e transmitir
um símbolo de um bit, referido como SIG (que indica se um dado coeficiente é significativo ou
não). Se um coeficiente for diferente de zero, o valor de SIG é ‘1’; se for igual a zero, o valor de SIG
173
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
é ‘0’. Para cada coeficiente significativo, é também necessário enviar um símbolo LAST que indica se
este coeficiente é o último elemento significativo, i.e. se só existem zeros depois deste coeficiente. A
Figura 4.22 exemplifica este processo. O símbolo LAST é igual a ‘1’ para o último coeficiente
significativo transmitido e a ‘0’ no caso contrário. O par (SIG, LAST) da última posição varrida em
zig-zag de um bloco (posição 16) nunca é transmitido. Se a última posição tiver sido alcançada e o
símbolo LAST não tiver sido transmitido, é óbvio que o último coeficiente tem de ser significativo.
Coeficientes 14
SIG
1
LAST
0
0
0
Coeficientes 18 -2
SIG
1 1
LAST
0 0
-5 3 0
1 1 0
0 0
0
0
0
0
-1
1
0
0
0
1 0 0 0 0 0 0
1
1
0
0 0 -5
0 0 1
0
1
1
0
-1 0 0 0 0 1 0 0 1
1 0 0 0 0 1 0 0 (1)
0
0
(1)
Figura 4.22 – Dois exemplos de codificação do mapa de coeficientes (os símbolos a amarelo não são
transmitidos).
O mapa de coeficientes indica a posição de todos os coeficientes quantificados dum bloco. As
amplitudes ou níveis de cada coeficiente são transmitidas de seguida, através do símbolo ABS que
representa o valor absoluto de cada coeficiente e do símbolo SIGN que representa o sinal de cada
coeficiente. Os níveis são codificados utilizando uma ordem inversa à utilizada anteriormente, i.e.
das altas frequências para as baixas (tal como no método anterior).
Na norma H.264/AVC existem 12 tipos de macroblocos diferentes para a luminância, para cada
crominância, para cada tipo (Intra, Inter e Intra16×16) e para cada componente (DC e AC). No
entanto, para a maior parte das sequências e condições de codificação, as estatísticas são muito
semelhantes. De forma a reduzir a dimensionalidade do espaço de modelação dos contextos, os
tipos dos blocos são classificados em 5 categorias: três para a luminância (Luma-Intra16×16-DC,
Luma-Intra16×16-AC, Luma-4×4) e duas para a crominância (Chroma-DC e Chroma-AC). Para
cada uma destas categorias, um conjunto independente de contextos é utilizado. Por exemplo, para o
símbolo CBP quatro contextos são utilizados para cada uma das cinco categorias e a escolha
específica do modelo é baseada na forma como foram codificados os blocos vizinhos em cima e à
esquerda. Para a codificação do mapa de coeficientes, até 15 contextos podem ser utilizados para os
símbolos SIG e LAST. A escolha do contexto é determinada a partir da posição do coeficiente e da
escolha feita para o símbolo anterior. Para codificar o valor absoluto ABS, dois modelos são
utilizados, um para o primeiro bin (ou bit) e outro para os restantes bins. A escolha do primeiro
modelo depende do número de coeficientes sucessivos com o valor ‘1’ até ao máximo de três,
tirando partido da ocorrência de sequências de ± 1 para os coeficientes de alta frequência. Todos os
restantes bins do valor absoluto ABS são codificados utilizando o mesmo contexto. Este é
determinado pelo número de coeficientes com valor absoluto superior a 1 já transmitidos. Para o
sinal dos coeficientes, apenas um contexto é utilizado para cada categoria de tipo de blocos. São
utilizados 52 contextos para codificar a informação de amplitude; no início de cada slice, os contextos
174
CAPÍTULO 4 ― NORMA H.264/MPEG-4 AVC
são inicializados dependendo do valor inicial do passo de quantificação, uma vez que este possui um
efeito significativo na probabilidade de ocorrência de cada elemento de sintaxe.
O motor de codificação e a estimação de probabilidades encontra-se descrito com mais detalhe na
norma [31] e possui três propriedades:
― A estimação de probabilidades é realizada através de uma máquina de estados com 64
estados representativos das probabilidades e a transição entre estados é especificada através
de uma tabela.
― O intervalo R que representa o estado actual do codificador aritmético é quantificado com
uma pequena gama de valores pré-definidos e o cálculo da nova gama pode ser realizado
através de tabelas (i.e. sem a utilização de multiplicações).
― Um processo simplificado para a codificação e descodificação de símbolos com uma
distribuição de probabilidade uniforme.
A estimação de probabilidades e o motor de codificação são especificadas através de tabelas e
deslocamentos (shifts), libertando o processador do cálculo de multiplicações.
4.3.6 Slices SP e SI
Os slices Switching Intra (SI) e Switching Predicted (SP) são slices codificados de uma forma diferente dos
seus homólogos I e P de forma a permitir o acesso aleatório mais eficiente, transferência entre fluxos
binários codificados, resiliência a erros, resincronização e avanço/recuo rápido. Os slices SI e SP
podem pertencer a uma imagem que apenas contenha slices SI e SP, respectivamente (imagens SI e
SP) ou a imagens com slices I, P ou B. O método de codificação de imagens ou slices SP permite obter
imagens reconstruídas idênticas às suas homólogas P, mesmo quando diferentes imagens de
referência são utilizadas para a sua predição. Tal como os slices I, os slices SI não dependem das
imagens anteriormente codificadas (i.e. apenas fazem uso da predição espacial) e os slices SP utilizam
a compensação de movimento para explorar a redundância temporal de uma forma semelhante aos
slices P. De seguida, apresentam-se as várias aplicações para as quais as características dos slices SP e
SI podem ser exploradas.
Transferência entre fluxos binários codificados
Em algumas aplicações, um dos requisitos é que o descodificador possa escolher entre um de vários
fluxos binários disponíveis, codificados com diferentes débitos, resoluções espaciais e/ou temporais,
e que a transferência da descodificação de um fluxo binário para outro seja feita de uma forma
elegante, i.e. sem atrasos significativos. Este requisito é muito comum em aplicações de distribuição
de vídeo na Internet, onde uma sequência é codificada com múltiplos débitos binários e o
descodificador pode escolher dinamicamente um deles, de acordo com as características da ligação,
variações da largura de banda disponível, erros de transmissão, etc. Com as normas de codificação
de vídeo actuais, o descodificador só pode interromper a descodificação de um fluxo binário e
começar a descodificar outro em determinados locais, i.e. em imagens que não utilizem nenhuma
predição temporal ou seja em imagens do tipo I. No entanto, este tipo de imagens necessita de um
maior número de bits para serem codificadas com a mesma qualidade em relação às imagens P. As
imagens SP permitem a transferência entre fluxos binários em qualquer altura, pois o método de
175
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
codificação das imagens do tipo SP permite obter imagens idênticas, mesmo quando as imagens de
referência utilizadas como predição são diferentes. A Figura 4.23a) apresenta um exemplo do uso de
imagens SI e SP para este tipo de aplicação. Neste caso existem dois fluxos binários codificados que
correspondem à mesma sequência mas que usam débitos binários e/ou resoluções
espaciais/temporais diferentes. Ambos os fluxos binários incluem imagens SP (com o nome SP1 e
SP2) nos locais onde se pretende mudar de um fluxo binário para outro. A imagem S1,2 da Figura
4.23a) apenas é enviada no momento do “salto” para outro fluxo binário no sentido indicado e é
referida como a representação secundária das imagens SP. Esta imagem serve como “ponte” entre
dois fluxos binários codificados com parâmetros diferentes, sem uma perda muito significativa de
eficiência [14] em relação às imagens do tipo P.
Transferência entre dois fluxos binários
P
P
SP2
P
P
Acesso aleatório
P
P
S1,2
P
P
SI2
P
P1
SP1
P
P
N-2
N-1
N
N+1
N+2
a)
SP2
P
P
SP1
P
P
N-2
N-1
N
N+1
N+2
b)
c)
Figura 4.23 – Cenários de utilização para as imagens do tipo SI e SP.
No exemplo da Figura 4.23a), apenas é possível efectuar o “salto” num único sentido: do fluxo
binário de baixo para o fluxo binário do topo; no entanto, também é possível efectuar o “salto” no
sentido contrário, através da transmissão de outra representação secundária da imagem SP
codificada de uma forma diferente, a imagem S2,1.
A imagem SP1 (do tipo SP) é codificada subtraindo a imagem anterior descodificada (P1) depois da
compensação de movimento da imagem SP1, de uma forma semelhante às imagens do tipo P. No
entanto, para imagens do tipo SP, a subtracção é efectuada no domínio da frequência (i.e. depois da
transformada). A imagem SP2 é codificada da mesma forma. O processo de codificação da imagem
S1,2 é apresentado na Figura 4.24. Nesta arquitectura, a imagem SP2 (que representa o fluxo de
destino) é transformada e quantificada, e a partir da imagem P1 (que representa o fluxo de origem)
obtém-se uma predição através do módulo de compensação de movimento. A respectiva estimação
de movimento é realizada para cada macrobloco da imagem SP2, tendo como referência a imagem
P1. Esta predição é transformada, quantificada e subtraída à imagem SP2 transformada e
quantificada, obtendo-se deste modo um resíduo que explora as semelhanças entre imagens que
pertencem a sequências codificadas de forma diferente. Este método é apresentado com mais
detalhe em [14].
Figura 4.24 – Codificação da imagem SP (simplificado).
176
CAPÍTULO 4 ― NORMA H.264/MPEG-4 AVC
Acesso aleatório
No cenário anterior, assume-se que os fluxos binários pertencem à mesma sequência. No entanto, a
transferência entre fluxos binários pode ser utilizada de uma forma mais genérica, e.g. para escolher
entre fluxos binários que representam a mesma cena a partir de câmaras com diferentes perspectivas,
inserção de spots comerciais, alternar entre programas diferentes, etc. Como neste caso as sequências
são diferentes entre si, não é eficiente explorar a redundância temporal entre imagens que pertencem
a sequências diferentes. Neste caso, a utilização de predição espacial é mais eficiente, o que levou à
introdução das imagens do tipo SI. Um exemplo é apresentado na Figura 4.23b), onde a imagem SI2
utilizada não depende de nenhuma imagem anterior (ao contrário do cenário anterior). Esta imagem
permite a reconstrução sem erros da imagem SP (S2), garantindo que as imagens seguintes são
descodificadas correctamente. Saliente-se que a introdução de uma imagem SI permite a criação de
pontos de acesso aleatório numa sequência de vídeo. A codificação das imagens SI é feita de uma
forma semelhante às imagens SP, com a predição a ser obtida através do módulo de predição
Intra4×4 descrito anteriormente (em vez de ser obtida através do módulo de compensação de
movimento).
Resiliência a erros
Múltiplas representações de uma única imagem SP permitem aumentar a resiliência a erros de um
fluxo binário. Considere-se o caso em que um fluxo binário é distribuído por um servidor de vídeo a
um determinado cliente e ocorre uma perda de uma imagem (ver Figura 4.23c). O cliente pode
indicar ao servidor de vídeo a imagem perdida e o servidor pode enviar em resposta uma
representação secundária da trama SP (S12). Esta representação pode utilizar uma ou mais trama(s)
de referência já recebidas pelo cliente. No entanto, outra alternativa é enviar uma trama SI (SI2) que,
como não depende de nenhuma outra trama, permite a reconstrução da imagem SP sem erros e
consequentemente de todas as imagens posteriores. De salientar que este processo pode ser
realizado ao nível do slice (raramente ocorrem erros que levem à perda total de uma imagem),
evitando o envio completo de uma imagem.
4.4
Perfis e níveis
De forma a gerir o elevado número de ferramentas de codificação incluídas na norma H.264/AVC e
a máxima complexidade que o descodificador para um dado domínio de aplicação pode suportar, o
conceito de Perfis e Níveis é utilizado de uma forma semelhante ao que foi já definido para a norma
MPEG-4. A combinação de um perfil e um nível (perfil@level) resulta num ponto de conformidade,
para o qual podem ser testados os fluxos binários e os descodificadores que reclamam obedecer à
norma H.264/AVC.
Deste modo, no H.264/AVC um perfil define um conjunto de ferramentas de codificação ou
algoritmos que podem ser utilizados para gerar um fluxo binário normativo. Cada perfil é definido
com vista a facilitar a interoperabilidade entre aplicações que possuem requisitos funcionais
semelhantes. Um nível coloca restrições em alguns parâmetros do fluxo binário, limitando a
complexidade que os descodificadores necessitam de possuir para ser conformes com um
determinado perfil e nível, e.g. memória e capacidade de cálculo. Todos os descodificadores que são
177
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
conformes com um determinado ponto de conformidade (combinação perfil@nível) têm de possuir
todas as ferramentas definidas no perfil e ser capazes de operar dentro dos parâmetros definidos
para o nível correspondente. De salientar que os codificadores não são obrigados a fazer uso de
todas as ferramentas de codificação definidas no perfil, nem de utilizar os limites máximos de um
determinado nível mas os descodificadores têm de estar sempre preparados para os casos extremos
no contexto de um dado ponto de conformidade. Tal como é ilustrado na Figura 4.25, a solução
adoptada para a norma H.264/AVC em termos de perfis considera um conjunto de ferramentas
partilhadas por todos os perfis (a vermelho) e define três perfis [31].
Main
Baseline
Baseline
Extended
Figura 4.25 – Estrutura dos perfis na norma H.264/AVC.
Os perfis definidos na norma H.264/AVC são os seguintes:
― Baseline : Este perfil foi definido com vista a aplicações que possuem requisitos de atraso e
complexidade reduzidos, e.g. videotelefonia e videoconferência. Neste perfil estão incluídas
ferramentas de resiliência a erros, de forma a que se possa optimizar o transporte de vídeo
em canais com uma taxa de erros elevada (e.g. UMTS, GPRS, POTS, etc).
― Main : Este perfil permite um desempenho em termos de eficiência mais elevado que o
perfil Baseline à custa da introdução de ferramentas com uma complexidade superior e atraso
mais elevado (e.g. imagens do tipo B). É especialmente indicado para serviços que
pretendam obter a melhor qualidade possível para um dado débito binário, sem requisitos
críticos em termos de complexidade e atraso, e.g. serviços de difusão e armazenamento de
vídeo. O canal de distribuição deve possuir uma taxa de erros baixa, devido ao tipo de
ferramentas utilizadas (e.g. codificação aritmética) e à exclusão de todos os mecanismos de
resiliência a erros.
― eXtended : Este perfil possui um conjunto de ferramentas indicadas para a distribuição de
vídeo em ambientes sujeitos a erros. Possui uma complexidade média e um atraso elevado
pois inclui todas as ferramentas do perfil Baseline e as imagens B que lhe permitem obter um
maior desempenho. Fazem parte deste perfil todas as ferramentas de resiliência a erros
presentes na norma H.264/AVC e as imagens/slices SI e SP que permitem funcionalidades
úteis em ambientes deste tipo (e.g. alternar entre fluxos binários, acesso aleatório, etc.)
O conjunto de ferramentas suportados em cada um destes perfis está sumarizado na Tabela 4.4.
Tabela 4.4 – Definição de perfis na norma H.264/AVC.
Perfis
Ferramentas de codificação
Formatos de imagem
Imagens progressivas
178
Baseline
Main
eXtended
X
X
X
CAPÍTULO 4 ― NORMA H.264/MPEG-4 AVC
Imagens entrelaçadas
IeP
Tipos de imagem/slice
B
SI e SP
CM estruturada em árvore
Compensação de
CM com múltiplas imagens
movimento (CM)
Precisão de 1/4-pel na CM
Predição pesada
Baseada em códigos VLC
Codificação entrópica
Aritmética – CABAC
Filtragem
Filtro de bloco
Ordem arbitrária de slices
Ferramentas de resiliência de Ordem flexível de macrobloco
erros
Slices redundantes
Separação de dados
Nível 2.1 +
Nível 2.1 +
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
Na norma H.264/AVC, o mesmo conjunto de definições para os níveis é utilizado para todos os
perfis. Foram definidos 11 níveis, através da especificação de limites superiores para a dimensão da
imagem (em macroblocos), a taxa de processamento que o descodificador deve suportar (em
macroblocos por segundo), a dimensão máxima para a memória que guarda as imagens de
referência, o débito binário e a dimensão da memória de imagem codificada.
4.5
Comparação com as normas anteriores
Para se ficar a conhecer o desempenho da norma H.264/AVC, apresenta-se de seguida um dos
vários estudos de desempenho realizados e disponíveis na literatura [30]. Neste estudo compara-se a
norma H.264/AVC com normas anteriores de sucesso, nomeadamente a norma MPEG-2 Vídeo,
H.263++ e o MPEG-4 Visual ASP para um conjunto conhecido de sequências no formato QCIF
(10 e 15 Hz) e CIF (15 e 30 Hz). As sequências utilizadas são representativas de diferentes tipos de
movimento e de detalhe espacial. As sequências utilizadas em formato QCIF são: Foreman, News,
Container Ship e Tempete; em formato CIF usaram-se as sequências: Bus, Flower Garden, Mobile and
Calendar e Tempete. Uma descrição das sequências de teste Foreman e Tempete, para as quais se
apresentam resultados mais detalhados, encontra-se no Anexo B (por razões de espaço não se
descrevem todas as sequências no Anexo B).
De forma a garantir uma comparação justa entre as várias normas, utiliza-se sempre o mesmo
controlo do codificador em todos os codificadores utilizados neste teste. Para isso foi escolhida a
optimização RD com métodos Lagrangeanos [23], pois permite alcançar um desempenho superior
através de decisões “óptimas” do ponto de vista da relação débito binário/qualidade (a optimização
RD encontra-se já integrada no software de referência da norma H.264/AVC).
O codificador MPEG-2 Vídeo utilizado produz fluxos binários que obedecem às regras
estabelecidas para o ponto de conformidade MP@ML e o codificador MPEG-4 utiliza as
ferramentas de compensação de movimento com precisão de ¼ de pixel e compensação de
movimento global do perfil ASP. Para o MPEG-4 ASP, também é utilizado o filtro recomendado de
redução de efeito de bloco e de artefactos do tipo ringing [15], como uma operação de pósprocessamento. O codificador H.263++ [32] utiliza todas as ferramentas definidas para o perfil HLP
179
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
(High Latency Profile); este perfil permite a maior eficiência de codificação da norma H.263++ sendo
adequado a aplicações que suportam um elevado atraso (para mais detalhes ver [12]).
Para o H.264/AVC, utilizou-se o codificador JM2.0 [22], com todas as ferramentas do perfil Main
activadas. Para o codificador H.263 e para o codificador H.264/AVC são utilizadas cinco imagens
de referência, para quase todas as sequências. A única excepção foi a sequência News para a qual se
utilizam mais imagens de referência de forma a explorar melhor a redundância temporal desta
sequência (fundo estático com um monitor no qual um vídeo é mostrado e dois apresentadores a ler
as notícias). Para todos os codificadores, apenas a primeira imagem de cada sequência é codificada
no modo Intra e duas imagens do tipo B são inseridas entre cada imagem do tipo P (i.e. a estrutura
do GOP é IPBBPBBP...). Para o H.264/AVC, as imagens do tipo B não são utilizadas como
referência para outras imagens (apesar de isso ser permitido pela norma). Finalmente, a estimação de
movimento em todos os codificadores é efectuada com um método exaustivo de procura para uma
gama total de 32 pixels e o passo de quantificação mantém-se constante para toda a sequência de
vídeo. Os débitos binários desejados foram obtidos através do ajuste individual do passo de
quantificação para cada sequência, i.e. não foi utilizado nenhum tipo de controlo de débito para
fazer variar o passo de quantificação ao longo do tempo de acordo com os bits gastos. A Figura 4.26
apresenta as curvas RD para os 4 codificadores para a sequência de teste Tempete, com resolução
espacial CIF e resolução temporal de 30 Hz.
Figura 4.26 – Curvas RD da sequência Tempete, codificada segundo: a) norma H.264/AVC, b) H.263 HLP, c)
MPEG-4 ASP e d) MPEG-2 Vídeo [30].
Tal como é ilustrado, a sequência Tempete apresenta uma qualidade superior quando é codificada
segundo a norma H.264/AVC para toda a gama de débitos binários em teste, com ganhos
significativos para débitos binários médios (entre 256 kbit/s e 512 kbit/s) e altos ( > 512 kbit/s). O
ganho de qualidade depende do débito binário utilizado para codificar a sequência e aumenta à
medida que o débito binário também aumenta (até ao máximo de 3 dB para 1.3 Mbit/s). Na Figura
4.27 apresenta-se a poupança em termos débito binário para um dado nível de qualidade, da norma
H.264/AVC, MPEG-4 ASP e H.263 HLP em relação à norma MPEG-2 Vídeo, para um conjunto
amplo de qualidades (aproximadamente entre 25 dB e 37 dB). Tal como era esperado, a norma
H.264/AVC apresenta uma poupança em termos de débito (em relação à norma MPEG-2) sempre
superior a 50 % para as sequências Foreman e Tempete, com uma poupança mínima de 55% e máxima
de 75%. As poupanças em débito ou ganhos em eficiência do H.264/AVC são sempre superiores
em relação às restantes normas em teste, nomeadamente entre 15 % e 35% em relação ao segundo
classificado (MPEG-4 ASP).
180
CAPÍTULO 4 ― NORMA H.264/MPEG-4 AVC
Figura 4.27 – Ganho em débito binário em relação ao MPEG-2 Vídeo (em %) para um dado nível de
qualidade (sequências Foreman e Tempete) [30].
A diminuição média do débito binário entre todos os codificadores em teste, para todas as
sequências de teste e para o intervalo de níveis de qualidade atrás indicado é apresentado na Tabela
4.5. Tal como se pode ver, a norma H.264/AVC apresenta um ganho de débito positivo em relação
a todas as restantes normas. Os principais responsáveis por este desempenho superior são as
ferramentas de estimação de movimento e a codificação aritmética CABAC.
Tabela 4.5 – Diminuição média do débito binário entre os codificadores na vertical em relação aos da
horizontal para todas as sequências de teste [30].
Codificador
MPEG-4 (ASP)
H.263 (HLP)
MPEG-2 (MP@ML)
H.264/AVC (Main)
38.62 %
48.80 %
64.46 %
MPEG-4 (ASP)
-
16.65 %
42.95 %
H.263++ (HLP)
-
-
30.61 %
Por fim, saliente-se que os resultados obtidos com a norma H.264/AVC foram obtidos com um
modelo de teste (JM2.0) de Abril de 2002. Até à data da escrita desta tese, várias alterações foram
efectuadas, e.g. no codificador entrópico adicionou-se o CA-VLC e fizeram-se várias alterações no
CABAC, no filtro de redução de efeito de bloco e nos slices do tipo B. Para efectuar uma avaliação
final do desempenho da norma H.264/AVC, o MPEG formou um grupo de trabalho (Ad-hoc group
on AVC verification tests) com o objectivo de avaliar o desempenho da norma H.264/AVC em relação
à parte 2 da norma MPEG-4 (Visual) e ao MPEG-2 Vídeo para vários cenários. As condições de
teste abrangem um número significativo de sequências, resoluções espaciais (de QCIF a HD),
resoluções temporais (de 5 a 60 Hz) e débitos binários (de 32 kbit/s a 20 Mbit/s), diferentes tipos de
medidas de qualidade (subjectivas e objectivas), várias condições de visualização (ecrãs de plasma,
LCDs), diferentes perfis (Baseline, Main e eXtended) e configurações de codificação. Os resultados
desta avaliação exaustiva ainda não se encontram disponíveis (a data prevista para a sua divulgação é
Dezembro de 2003), mas resultados preliminares [10] para sequências com resolução 720×576
progressivas indicam ganhos entre 1.5 e 3 dB para 6 Mbit/s, entre 1 e 2.5 dB para 10 Mbit/s e entre
0.7 e 2.1 dB para 20 Mbit/s, sempre em relação à norma MPEG-2 Vídeo.
181
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
Por outro lado, em [30] também se apresentam alguns resultados para serviços de conversação em
tempo-real. Neste estudo apresenta-se uma comparação entre o perfil Baseline da norma
H.264/AVC, o MPEG-4 SP (Simple Profile), o H.263 perfil CHC (Conversational High Compression [12])
e o H.263 Baseline. A norma H.264/AVC apresenta uma diminuição média do débito binário para
um dado nível de qualidade de 32% em relação ao H.263 CHC (segundo classificado), 34 % em
relação ao MPEG-4 SP e 45% em relação ao H.263 Baseline para um conjunto significativo de
sequências e débitos binários.
4.6
Conclusões
A norma H.264/AVC representa um passo importante na evolução das normas de codificação de
vídeo. Esta norma apresenta um desempenho mais do que duas vezes superior, i.e. redução do
débito binário maior que 50% para o mesmo nível de qualidade, em comparação com a popular
norma MPEG-2 Vídeo para um conjunto significativo de débitos binários e qualidades. Com este
incremento de eficiência, novas aplicações e serviços podem ser desenvolvidos, como por exemplo
novas utilizações para os sistemas de televisão digital DVB, DVD, vídeo sobre xDSL e UMTS. No
entanto, estudos preliminares de complexidade em relação à norma MPEG-2 Vídeo indicam uma
complexidade 2 a 3 vezes superior para o descodificador e 4 a 5 vezes superior para o codificador
[20]. O desenvolvimento tecnológico de novas memórias e processadores irá ditar o ritmo de
adopção desta norma, mas esta é relativamente menos complexa que a norma MPEG-2 Vídeo à data
da sua finalização. Outro facto bastante importante é que a norma H.264/AVC é uma norma
pública e aberta o que permite a cada fabricante construir codificadores e descodificadores num
mercado competitivo, para diferentes aplicações, domínios ou públicos alvo. Este facto permite que
esta norma seja adoptada para comunicações de vídeo pelas mais diversas organizações, e.g. 3GPP,
DVB, ISMA (Internet Streaming Media Alliance), etc.
Apesar do sucesso desta norma depender de muitos factores, e.g. as necessidades do mercado e a
implementação eficiente em software e hardware, várias empresas apresentaram já protótipos de
codificadores H.264/AVC. Em Setembro de 2002, a empresa VideoLocus [26] apresentou um
codificador optimizado para débitos binários de 1 Mbit/s, a funcionar em tempo real, com qualidade
DVD [25]. Este codificador utiliza um Pentium 4 a 2.4 GHz com uma placa de aceleração
encarregue da estimação de movimento, filtragem, predição Intra e decisão do modo de codificação.
Em Outubro de 2002, a empresa UBVideo [24] demonstrou um codificador de baixa complexidade
desenhado para aplicações em tempo-real de videotelefonia e videoconferência [13]. O codificador e
descodificador foram desenvolvidos em software e necessitam de um Pentium 3 a 800 MHz para
funcionar em tempo real. Outras empresas encontram-se a desenvolver produtos para diversos
segmentos de mercado, e.g. soluções para processadores de sinal digital (DSP) ou para
processadores do tipo Advance Risc Machine (ARM) utilizados em alguns terminais móveis.
Além da especificação técnica, o grupo JVT encontra-se a desenvolver software de referência que irá
fazer parte da norma assim como os testes de conformidade. O software de referência, apesar de não
se encontrar optimizado tanto em termos de eficiência de codificação como desempenho
computacional, é uma referência indispensável para atingir três objectivos fundamentais: verificação,
clarificação e promoção da norma. O software de referência permite que durante a fase de
182
CAPÍTULO 4 ― NORMA H.264/MPEG-4 AVC
desenvolvimento da norma se verifique se os principais elementos da especificação técnica estão
correctos, se as várias ferramentas presentes na norma são consistentes e quando combinadas
servem o objectivo desejado. Além disso, é uma ferramenta importante para clarificar alguma
ambiguidade presente na especificação técnica, apesar dos esforços para tornar o texto o mais claro e
objectivo possível. Quanto à promoção, o software de referência torna mais fácil o desenvolvimento
de produtos em software ou hardware conformes com a norma, por exemplo servindo como base para
implementar um novo produto (um claro exemplo é o DivX, que começou por optimizar o software
de referência do MPEG-4 SP) ou servindo como referência para testar a interoperabilidade no
contexto de diversas aplicações. O grupo JVT obriga que, para cada ferramenta que se adicione à
especificação, um método de codificação correspondente seja integrado no software de referência, de
forma a demonstrar a utilidade e os benefícios que este método possui. Saliente-se que os métodos
de codificação não são especificados no texto da norma, uma vez que a especificação do seu
comportamento não é essencial para garantir interoperabilidade; diferentes implementações do
codificador podem ser válidas desde que gerem fluxos binários que obedeçam às regras estabelecidas
para um determinado ponto de conformidade. No H.264/AVC, devido ao grande número de
ferramentas de codificação de vídeo, as diferenças entre diferentes implementações do codificador
podem ter um impacto bastante significativo na qualidade alcançada para um determinado débito
binário e espera-se que no futuro apareçam codificadores mais optimizados que permitam explorar
melhor todas as potencialidades da norma H.264/AVC.
A sintaxe e as ferramentas de vídeo da norma H.264/AVC servirão como modelo para a introdução
de novas ferramentas de codificação de vídeo, apresentadas nos capítulos seguintes, nomeadamente
com vista a alcançar escalabilidade fina de codificação.
183
Capítulo 5
5 Escalabilidade fina de vídeo AVC-FGS
A norma H.264/AVC apresentada em detalhe no capítulo anterior apresenta um desempenho em
termos de compressão superior em relação a qualquer outra norma de codificação de vídeo
anteriormente existente. Esta norma desenvolvida pelo grupo JVT faz também parte da norma
MPEG-4 (parte 10), oferecendo assim à norma MPEG-4 uma ferramenta mais potente para
codificação de textura, nomeadamente em relação aos vários perfis de codificação de vídeo que esta
norma já disponibiliza com base na tecnologia especificada na parte 2 (Visual). Para alcançar uma
capacidade acrescida de compressão, a norma H.264/AVC utiliza soluções de codificação de vídeo
mais complexas que as existentes nas normas anteriores, necessitando de uma maior capacidade de
processamento e memória. No entanto, a introdução de processadores mais rápidos e de memórias
com maior capacidade a custos cada vez mais reduzidos parece garantir um futuro promissor para a
norma H.264/AVC, sem que a sua complexidade venha a condicionar demasiado a sua adopção,
pelo menos para algumas aplicações. Note-se que a introdução de uma nova norma não significa que
as normas anteriores vão ser substituídas, nomeadamente os codificadores/descodificadores
conformes com a parte 2 da norma MPEG-4 (com particular relevância para os perfis Simple (SP) e
Advanced Simple (ASP)). Primeiro, porque ainda não existem produtos conformes com a norma
H.264/AVC; segundo, porque os perfis SP e ASP da norma MPEG-4 Visual já foram adoptados
por outras normas ou especificações (e.g. pelo ISMA ou 3GPP); terceiro, porque para alguns
ambientes um acréscimo de complexidade é difícil de aceitar, e.g. em terminais móveis onde o custo
do terminal e a duração da bateria é um factor bastante importante; finalmente, o facto de os perfis
SP e ASP da norma MPEG-4 Visual terem já resolvidas as questões ligadas ao licenciamento da
tecnologia pode ser também uma vantagem extremamente importante. Um dos exemplos mais
paradigmáticos é a norma de codificação de áudio AAC (Advanced Audio Coding), incluída na norma
MPEG-2 e MPEG-4 Áudio, que apesar de um desempenho superior (à custa de uma maior
complexidade) ainda não atingiu os níveis de popularidade do famoso mp3 (MPEG-1/2 Áudio layer
III).
A escalabilidade com elevada granularidade oferecida pela norma MPEG-4 (Visual) FGS é adequada
à distribuição de vídeo para vários tipos de redes com diferentes características, pois suporta
variações abruptas do débito binário do canal e a ocorrência de erros de uma forma robusta. A
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
estrutura de codificação de vídeo mantêm-se simples, flexível e com uma complexidade reduzida. A
norma H.264/AVC pode beneficiar com a introdução de uma estrutura de codificação escalável
semelhante e, uma vez que está inserida na norma MPEG-4, é desejável a sua integração com outras
das ferramentas de codificação de vídeo já existentes nesta norma. No entanto, apesar destas
vantagens, a escalabilidade com elevada granularidade ainda não foi incluída na norma H.264/AVC,
devido ao planeamento apertado do grupo JVT durante a primeira fase do seu trabalho (um ano
para todo o desenvolvimento, entre Dezembro de 2001 e Dezembro de 2002). Contudo, esta
funcionalidade é considerada como um dos tópicos de trabalho mais importantes para uma fase de
desenvolvimento posterior da norma H.264/AVC; o desenvolvimento de um codificador escalável
baseado na norma H.264/AVC tem suscitado um enorme interesse por parte da indústria [7][12],
que assim vê uma forma de melhorar o desempenho do MPEG-4 FGS em termos de eficiência de
codificação.
Um dos principais problemas da codificação escalável de vídeo com elevada granularidade (FGS)
incluída na norma MPEG-4 Visual (parte 2) é a sua quebra de desempenho em comparação com a
codificação não escalável (perfil ASP), tal como foi demonstrado no estudo efectuado na Secção 3.6.
O desempenho da camada base da norma MPEG-4 FGS influencia significativamente o
desempenho do sistema FGS completo. Deste modo, a utilização de um codificador não escalável
H.264/AVC na camada base do FGS deverá permitir um desempenho superior em comparação
com o uso do perfil ASP da norma MPEG-4 Visual. No entanto, a implementação directa da
camada superior do MPEG-4 FGS, sem qualquer modificação, sobre a norma H.264/AVC,
acrescentando-lhe uma camada adicional, possui grandes desvantagens uma vez que a norma
H.264/AVC utiliza ferramentas de codificação de vídeo diferentes do perfil MPEG-4 ASP, sendo
assim necessária uma duplicação de ferramentas com as mesmas funcionalidades. Por exemplo, a
utilização do MPEG-4 FGS sem modificação no topo do H.264/AVC, obrigaria à utilização da
transformada DCT na camada superior (o que não aconteceria na camada base) o que aumentaria a
complexidade do codificador e descodificador desnecessariamente. Além disso, é desejável uma
reutilização das ferramentas da camada base na camada superior, facilitando a implementação e
tirando partido das boas características (e.g. baixa complexidade da transformada [9]) das novas
ferramentas de codificação de vídeo presentes na norma H.264/AVC.
O principal objectivo deste capítulo é o desenvolvimento de um novo codificador escalável, referido
como AVC-FGS, integrando uma camada base baseada no H.264/AVC com uma camada superior
baseada na codificação em planos de bit utilizada na norma MPEG-4 FGS. O AVC-FGS utiliza na
camada superior as mesmas ferramentas básicas de codificação do H.264/AVC já utilizadas na
camada base, nomeadamente a transformada inteira e a técnica de codificação entrópica UVLC com
códigos exp-Golomb, tal como são definidas na norma H.264/AVC. A sintaxe do fluxo binário da
camada superior MPEG-4 FGS é modificada de forma a suportar estas modificações. O AVC-FGS
é pois um esquema de codificação escalável verdadeiramente baseado em H.264/AVC usando a
técnica de codificação em planos de bit para alcançar a escalabilidade fina. Resumindo, este capítulo
tem como principais objectivos:
― Desenvolvimento de um codificador escalável adoptando uma estrutura de escalabilidade
semelhante à utilizada no MPEG-4 FGS, mas usando como ferramentas de codificação as
186
CAPÍTULO 5 ― ESCALABILIDADE FINA DE VÍDEO AVC-FGS
ferramentas do codificador não escalável H.264/AVC, quer na camada base, quer na camada
superior, mantendo as principais funcionalidades (e.g. simplicidade, adaptação ao débito
binário do canal, robustez a erros, etc.) do MPEG-4 FGS intactas.
― Proposta de métodos alternativos para a codificação escalável de vídeo na camada superior
que tirem partido das novas ferramentas de codificação presentes na norma H.264/AVC.
― Estudo do desempenho do codificador desenvolvido, designado como AVC-FGS.
Este capítulo encontra-se organizado da seguinte forma: primeiro apresenta-se a arquitectura do
sistema escalável desenvolvido, a codificação em planos de bit, um estudo estatístico da distribuição
dos elementos de sintaxe a codificar para cada plano de bit e algumas considerações sobre a
codificação entrópica na camada superior. Finalmente, apresenta-se uma descrição aprofundada da
sintaxe e da semântica do fluxo binário do novo codificador AVC-FGS e faz-se a avaliação do
desempenho do codificador em relação ao codificador escalável MPEG-4 FGS e ao codificador não
escalável H.264/AVC, perfil Baseline.
5.1
Arquitectura AVC-FGS
Como é ilustrado na Figura 5.1, a arquitectura do codificador AVC-FGS necessita de dois andares
de codificação, um para a camada base e outro para a camada superior. A camada base utiliza um
codificador de vídeo H.264/AVC, tendo-se adoptado o perfil Baseline por possuir um boa relação
qualidade/complexidade. Tal como na norma MPEG-4 FGS, depois do processo de codificação
estar completo, o fluxo binário gerado pelo codificador AVC-FGS da camada superior pode ser
cortado em qualquer ponto, sendo o descodificador capaz de descodificar qualquer fluxo binário
cortado. No codificador AVC-FGS, a imagem residual a codificar pela camada superior é calculada
no domínio do tempo, i.e. corresponde à diferença entre a imagem original e a imagem
descodificada para o mesmo instante de tempo (antes da compensação de movimento) pela camada
base. No entanto, o cálculo da imagem residual também se poderia efectuar no domínio da
frequência, de uma forma semelhante ao que é permitido pelo MPEG-4 FGS.
Codificador FGS da camada superior
Coeficientes
DC lum
T
Coeficientes DC
croma e AC
Entrada
de Vídeo
T
Encontrar o
máximo
VLC DC Lum
Encontrar o
máximo
VLC AC e
DC chr
Q
VLC
IQ
Estimação de
movimento
IT
Compensação
de movimento
Filtro
Memória
Codificador H.264/AVC
187
Vectores de
movimento
M
U
X
Fluxo binário da
camada superior
Fluxo binário
da camada base
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
Figura 5.1 – Arquitectura do codificador escalável AVC-FGS.
Tal como se pode verificar na Figura 5.1, a arquitectura do codificador apresenta algumas novidades
em relação ao MPEG-4 FGS, sendo as mais importantes as seguintes:
― Transformada: O codificador da camada superior utiliza a mesma transformada que o
codificador da camada base utiliza para os macroblocos Intra16×16 (ver Secção 4.3.4). Esta
transformada foi escolhida porque entre as imagens residuais a codificar na camada superior
não existe predição temporal (i.e. não é efectuada compensação de movimento tal como no
MPEG-4 FGS), tal como as imagens do tipo Intra da camada base (que usam macroblocos
do tipo Intra16×16). Esta transformada é hierárquica uma vez que utiliza a transformada de
4×4 baseada na DCT aplicada às amostras da imagem residual e a transformada de
Hadamard aos coeficientes DC resultantes (ver Secção 4.3.4 para mais detalhes).
― Codificação separada dos coeficientes DC da luminância: Após a transformada, a
imagem residual é convertida para o domínio da frequência e obtêm-se três tipos de blocos:
ƒ
Blocos 4×4 de coeficientes DC da luminância (DCLum).
ƒ
Blocos 2×2 de coeficientes DC das crominâncias (DCChr).
ƒ
Blocos 4×4 de coeficientes AC das crominâncias (ACChr) e luminância (ACLum).
Na camada superior, todos os blocos com coeficientes DCLum que pertencem a um plano
de bit são agrupados e transmitidos em conjunto ao descodificador. Desta forma, enviam-se
primeiro todos os coeficientes DC perceptualmente mais importantes; os restantes
coeficientes são enviados para cada macrobloco, segundo a ordem: ACLum (16 blocos),
DCChr (2 blocos) e ACChr (8 blocos). Esta organização do fluxo binário, é diferente da
utilizada no MPEG-4 FGS (mas semelhante à definida no H.264/AVC) que envia os
coeficientes, independentemente da sua importância perceptual ao descodificador, segundo a
ordem Y, U e V.
― Dois módulos de codificação entrópica independentes: A codificação entrópica é
realizada através de códigos UVLC, de forma semelhante à usada na camada base do
H.264/AVC (perfil Baseline). Esta solução foi adoptada devido à sua reduzida complexidade.
De forma a explorar a diferente distribuição estatística dos coeficientes DC em relação aos
restantes coeficientes, utilizam-se dois módulos de codificação entrópica ULVC com tabelas
diferentes. Finalmente, os coeficientes DC são multiplexados com os restantes coeficientes,
no mesmo fluxo binário, através de um multiplexer.
No MPEG-4 FGS, o módulo “Encontrar o máximo” tem como objectivo encontrar o número
máximo de planos de bit necessários para representar uma trama para as componentes Y, U e V. No
AVC-FGS, este módulo tem uma função diferente ou seja encontrar o número máximo de planos
de bit necessários para representar os coeficientes DC e AC (para a luminância e crominâncias),
maximum_level_y_dc,
maximum_level_chr_dc,
separadamente.
Os
quatro
valores
maximum_level_y_ac, maximum_level_chr_ac são codificados no cabeçalho de cada trama AVCFGS e indicam ao descodificador o número máximo de planos de bit para os vários tipos de
188
CAPÍTULO 5 ― ESCALABILIDADE FINA DE VÍDEO AVC-FGS
coeficientes da transformada. No exemplo da Figura 5.2, codificar o primeiro plano de bit apenas
envolve a codificação dos coeficientes DC da luminância, enquanto codificar o segundo plano de bit
envolve já a codificação dos coeficientes DC da luminância e crominância e os coeficientes AC da
crominância, e assim sucessivamente.
Figura 5.2 – Exemplo de codificação AVC-FGS com um número de planos de bit diferente para
cada tipo de coeficientes.
A arquitectura do descodificador AVC-FGS (ver Figura 5.3) é semelhante à do descodificador
MPEG-4 FGS, pois descodifica-se a camada base e a camada superior separadamente e no fim
adiciona-se a imagem da camada base com a imagem residual obtida a partir da camada superior.
Descodificador FGS da camada superior
D
E
M
U
X
Fluxo binário da
camada superior
Fluxo binário da
camada base
VLD
VLD DC Lum
Saída de vídeo
camada base +
camada superior
IT
VLD AC e
DC chr
IQ
IT
Vectores de
movimento
Filtro
Compensação
de movimento
Memória
Descodificador H.264/AVC
Figura 5.3 – Arquitectura do descodificador escalável AVC-FGS.
No descodificador AVC-FGS, as mesmas operações (ou mais precisamente as operações inversas
correspondentes) efectuadas no codificador são agora efectuadas por ordem inversa, começando-se
por separar os coeficientes DCLum dos coeficientes DCChr e AC através de um demultiplexer.
Todos os coeficientes são descodificados entropicamente (VLD), sendo os coeficientes obtidos
convertidos para o domínio do tempo através da transformada inversa. Como a transformada
inversa definida pela norma H.264/AVC integra a normalização com a quantificação, utilizam-se os
factores de normalização/quantificação definidos para o passo de quantificação máximo (51).
Melhoria selectiva dos coeficientes DC
Uma das novidades da arquitectura AVC-FGS, em relação ao MPEG-4 FGS consiste na codificação
separada dos coeficientes DC da luminância em relação aos restantes coeficientes. É sabido que
alguns coeficientes da transformada, tais como os coeficientes DC e os coeficientes AC de mais
baixa frequência, possuem, tipicamente, um impacto visual mais significativo que outros
coeficientes. No entanto, o método de codificação em planos de bit não distingue as diferentes
189
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
componentes de frequência associadas aos vários coeficientes da transformada. Deste modo, o
MPEG-4 FGS definiu um mecanismo de selecção de frequências, para o qual os coeficientes
perceptualmente mais importantes (normalmente de baixa frequência) são elevados para um plano
de bit mais elevado. Quando o fluxo binário é cortado, os coeficientes da DCT com maior
importância são representados com um número de bits maior, i.e. com uma maior exactidão (ver
Secção 3.5.5 para mais detalhes).
No AVC-FGS, o objectivo é o mesmo; no entanto, é realizado de uma forma diferente: primeiro,
porque a transformada é realizada em blocos de dimensão mais pequena (4×4), o que por si só já
permite uma maior redução de artefactos; segundo, porque no MPEG-4 FGS, para se efectuar esta
operação, utilizam-se tabelas VLC diferentes o que representa um acréscimo de complexidade e de
memória desnecessário no AVC-FGS, uma vez que a transformada utilizada (e a própria
arquitectura) já faz uma separação entre coeficientes DC e AC.
Deste modo, no AVC-FGS, definiu-se um mecanismo semelhante à selecção de frequências do
MPEG-4 FGS, referido como melhoria selectiva dos coeficientes DC que é realizada colocando um
conjunto pré-definido (pelo codificador) de planos de bit dos coeficientes DCLum antes dos
restantes no fluxo binário. Quando o fluxo binário for cortado, apenas os coeficientes DC da
luminância irão possuir um maior número de bits a representá-los e consequentemente uma maior
exactidão, uma vez que os bits mais significativos que os representam são colocados primeiro no
fluxo binário. Como se codificam separadamente os coeficientes DC dos restantes, para realizar esta
funcionalidade apenas é necessário organizar o fluxo binário de uma forma diferente, transmitindo
os planos de bit mais significativos dos coeficientes DC antes de se começarem a transmitir os
restantes. O número de planos de bit DCLum colocados antes dos restantes é indicado ao
descodificador no começo da trama da camada superior (no cabeçalho) através do elemento de
sintaxe fgs_vop_dc_enhancement, permitindo ao descodificador realizar a operação inversa. O
multiplexer é o principal responsável pela realização desta operação, pois apenas é necessário
implementar uma re-organização dos dados codificados sendo o processamento adicional muito
reduzido. A Figura 5.4 apresenta um exemplo de um fluxo binário com e sem deslocamento dos
planos de bit dos coeficientes DCLum, onde os planos de bit MSB-1 e MSB-2 (o MSB já se
encontrava antes dos restantes) dos coeficientes DC da luminância são colocados antes dos restantes
coeficientes DCChr, ACLum e ACChr.
Figura 5.4 – Exemplo de re-organização do fluxo binário para os planos de bit DC da luminância.
190
CAPÍTULO 5 ― ESCALABILIDADE FINA DE VÍDEO AVC-FGS
Além disso, esta organização do fluxo binário permite que os planos de bit que correspondem aos
coeficientes DCLum possam ter um nível de protecção mais elevado, e.g. através de técnicas de
codificação de canal, uma vez que possuem um maior impacto na qualidade da imagem.
5.2
Codificação AVC-FGS em planos de bit
De uma forma semelhante à norma MPEG-4 FGS, cada bloco 4×4 ou 2×2 com coeficientes da
transformada é varrido em zig-zag para um vector. Cada plano de bit de um bloco de coeficientes é
definido como um vector com 16 ou 4 bits de comprimento, onde os seus elementos (bits com o
valor ‘0’ ou ‘1’) são extraídos a partir dos valores absolutos em binário dos coeficientes. Para cada
plano de bit de cada bloco, símbolos (run, EOP) são calculados e entropicamente codificados (ver
Secção 3.5.2 para uma descrição mais detalhada).
Para os planos de bit MSB e MSB-1, um elemento de sintaxe ao nível do macrobloco é utilizado
para indicar se existem elementos diferentes de 0 num determinado plano de bit de um macrobloco
de coeficientes, de forma semelhante à norma MPEG-4 FGS. Este elemento, designado por
fgs_cbp (fgs coded block pattern), permite a codificação eficiente de macroblocos que contenham um ou
mais sub-macroblocos 8×8 com todos os elementos a 0; este caso é referido como ALL_ZERO. A
ideia consiste em agrupar os sub-macroblocos de cada macrobloco e codificar os casos ALL_ZERO
em conjunto. De salientar que um sub-macrobloco contém 4 blocos (4×4) e tem sempre a dimensão
de 8×8 na camada superior, tal como na camada base H.264/AVC.
O fgs_cbp é codificado entropicamente e indica quais dos sub-macroblocos 8×8 - luminância (AC) e
crominâncias (AC e DC) - de um plano de bit de um macrobloco possuem elementos diferentes de
0; como cada sub-macrobloco contém 4 blocos de 4×4 (aos quais é aplicada a transformada directa),
o fgs_cbp indica se um ou mais blocos que pertencem ao mesmo sub-macrobloco contêm elementos
diferentes de 0.
Os 4 bits menos significativos do fgs_cbp contêm informação sobre qual dos 4 sub-macroblocos
8×8 de luminância de um macrobloco contêm elementos diferentes de 0 (fgs_cbp_y). Um valor ‘0’
na posição n do fgs_cbp (representação binária) significa que o sub-macrobloco 8×8 correspondente
não tem elementos diferentes de 0 enquanto o valor ‘1’ significa que o sub-macrobloco 8×8 possui
um ou mais elementos com o valor 1. Para as crominâncias, apenas dois bits nc são necessários para
indicar se os sub-macroblocos 8×8 da crominância contêm coeficientes (para um determinado plano
de bit), de acordo com as seguintes regras:
―
nc
―
nc
―
nc
= 0: Nenhuns coeficientes de crominância.
= 1: Existe um ou mais coeficientes DC diferentes de 0 e todos os restantes coeficientes
AC são iguais 0. Não é enviada nenhuma informação para os coeficientes AC da
crominância.
= 2: Existe um ou mais coeficientes DC diferentes de 0 e pelo menos um coeficiente AC
é diferente de 0. Neste caso é necessário enviar 10 EOPs (2 para os coeficientes DC e 2×4=8
para os 8 blocos 4×4) para a crominância de um macrobloco.
191
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
O valor final do fgs_cbp para um macrobloco é: fgs_cbp = fgs_cbp_y + (nc << 4) em que <<
representa a operação deslocamento à direita. Na Figura 5.5 apresenta-se a representação do fgs_cbp
e a forma como este é construído a partir dos sub-macroblocos da luminância e crominância.
Saliente-se que o fgs_cbp apenas é enviado para os dois planos de bit mais significativos (MSB e
MSB-1), uma vez que a ocorrência de sub-macroblocos ALL_ZERO é mais elevada nesses planos
de bit (na próxima Secção apresenta-se um estudo mais detalhado).
Figura 5.5 – Construção do valor final do fgs_cbp.
Para os restantes planos de bit, é enviado um elemento de sintaxe de 1 bit ao nível do submacrobloco 8×8, referido como fgs_msb_not_reached. Este elemento de sintaxe indica (para os
planos de bit MSB-n com n > 1) qual é o plano de bit mais significativo para cada sub-macrobloco.
Se este valor for 1, indica que o sub-macrobloco contém todos os elementos a zero; se for 0, indica
que existe um ou mais elementos com o valor 1, i.e. foi alcançado o plano de bit mais significativo.
Depois do elemento de sintaxe fgs_msb_not_reached possuir o valor 1, não é enviado mais
nenhuma vez para o descodificador, mesmo que todos os elementos (de um sub-macrobloco) sejam
iguais a zero; nesse caso, é necessário codificar entropicamente 4 pares (run=0, EOP=1), um para
cada bloco.
5.3
Estudo estatístico para a camada superior
Os módulos VLC e VLD definidos na arquitectura efectuam a codificação e descodificação
entrópica dos símbolos (run, EOP) e fgs_cbp, descritos na Secção anterior. O módulo VLC substitui
cada símbolo por uma palavra de código com um comprimento variável de bits. As palavras de
código são atribuídas em função da distribuição estatística dos símbolos a codificar. Aos símbolos
que ocorrem mais frequentemente são atribuídas palavras de código com menos bits (dimensão
reduzida) e aos símbolos que ocorrem menos frequentemente são atribuídas palavras de código com
um número maior de bits.
Para que a atribuição das palavras de código a cada símbolo no codificador AVC-FGS seja
adequada, foi efectuado um estudo estatístico exaustivo para todos os símbolos a codificar na
camada superior (pois é apenas esta que é nova neste trabalho): fgs_cbp e os pares (run, EOP) obtidos
a partir dos coeficientes DC e AC da luminância e crominâncias. As condições de treino utilizadas
para este estudo são resumidas na Tabela 5.1. Em primeiro lugar, um número bastante significativo
de sequências (10), representativas de vários tipos de conteúdo, foi escolhido (por razões de espaço,
192
CAPÍTULO 5 ― ESCALABILIDADE FINA DE VÍDEO AVC-FGS
as sequências de teste são descritas no Apêndice B). Para se efectuar o estudo estatístico, optou-se
por utilizar um passo de quantificação constante para o codificador da camada base, i.e. sem
controlo de débito. Passos de quantificação baixos, dão origem a débitos superiores (> 1 Mbit/s)
para o fluxo binário da camada base, sendo o resíduo a codificar pela camada superior representado
por um menor número de planos de bit (ou menor energia). Por outro lado, passos de quantificação
elevados dão origem a débitos binários mais baixos (< 128 kbit/s) para o fluxo binário da camada
base, sendo o resíduo a codificar pela camada superior representado com um número maior de
planos de bit (ou maior energia). Os passos de quantificação escolhidos representam uma ampla
gama de débitos binários para o codificador da camada base. O número de tramas de referência que,
para uma dada imagem, o codificador da camada base pode escolher para efectuar a compensação
de movimento foi limitado a 5, um compromisso entre a memória ocupada e o desempenho da
camada base do AVC-FGS.
Tabela 5.1 – Condições de treino para determinar a estatísticas dos símbolos AVC-FGS na camada superior.
Sequências
Akiyo, Big_show, F1, Fair, Hall, Lts, Mobile, Novel, Letters, Stefan
Resolução espacial
QCIF, CIF
Passo de quantificação
16, 22, 28, 32, 35, 37, 39
Configuração
IPPPPP...
Número de tramas de
referência
5
As restantes ferramentas de codificação da camada base obedecem ao perfil H.264/AVC Baseline
(ver Secção 4.4) e a estrutura de codificação utilizada é do tipo IPP(P), i.e. a primeira trama é
codificada com o modo Intra (I) e todas as tramas seguintes com o modo Inter (P). A resolução
temporal utilizada é a mesma que a frequência de trama da sequência original; a resolução temporal
não possui uma influência significativa na distribuição estatística dos símbolos uma vez que não é
utilizada predição entre tramas na camada superior. Os factores que influenciam mais
significativamente a distribuição estatística dos símbolos são a sequência de treino utilizada e o passo
de quantificação.
5.3.1 Coded Block Pattern (fgs_cbp)
O fgs_cbp é enviado ao nível do macrobloco, apenas para os planos de bit MSB e MSB-1, para
indicar se os sub-macroblocos 8×8 contêm elementos diferentes de zero ou não; a única excepção é
o caso dos blocos (4×4) que contêm coeficientes DC de luminância que são codificados
separadamente dos restantes. O elemento de sintaxe fgs_cbp é codificado de uma forma diferente
para os planos de bit MSB e MSB-1. Um caso especial é também contemplado para o plano de bit
MSB-1, quando um sub-macrobloco 8×8 do plano de bit anterior (MSB) contém todos os bits com
o valor zero (Exceptcode =1). Este caso especial também existe na norma MPEG4-FGS, permitindo
aumentar a eficiência de codificação para o elemento de sintaxe fgs_cbp, uma vez que a distribuição
estatística é diferente para o plano de bit MSB-1 com um ou mais elementos diferentes de zero ou
com todos os elementos (de um sub-macrobloco 8×8) iguais a zero no plano de bit anterior (MSB).
193
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
No AVC-FGS, cada plano de bit é constituído por elementos com o valor 0 ou 1 e classificado de
acordo com as componentes de luminância e crominância que contém. O elemento de sintaxe
fgs_cbp é codificado de forma diferente para cada plano de bit, de acordo com o tipo de informação
que contém, e.g. se o plano de bit apenas possuir uma componente de crominância, o fgs_cbp não
envia nenhuma informação de luminância. Cada plano de bit pode ser classificado em três tipos:
1. Luminância (YYYY): O plano de bit apenas contém informação de luminância e o fgs_cbp
é representado com 4 bits (é igual ao fgs_cbp_y) que indicam quais são os sub-macroblocos
de luminância que contêm elementos diferentes de zero.
2. Crominância (UV): O plano de bit apenas contém informação de crominância e o fgs_cbp
é representado com 2 bits (é igual ao nc) que indicam quais são os sub-macroblocos da
crominância que contêm elementos diferentes de zero.
3. Luminância + Crominância (YYYYUV): O plano de bit contém luminância e
crominância e o fgs_cbp é representado com 6 bits (fgs_cbp) que indicam quais os submacroblocos de luminância e crominâncias que contêm elementos diferentes de zero.
O codificador envia a classificação sobre o tipo de plano de bit ao descodificador através de um
conjunto de campos (maximum_level_chr_dc, maximum_level_y_ac, maximum_level_chr_ac) ao
nível da trama, ao contrário do fgs_cbp que é enviado ao nível do macrobloco.
Apresenta-se de seguida um estudo estatístico do fgs_cbp, realizado no contexto desta tese, para os
3 tipos de planos de bit: YYYY, UV e YYYYUV e para os três níveis de plano de bit: MSB, MSB-1
e MSB-1 com Exceptcode =1, o que totaliza 9 combinações. Como é muito rara (< 1%) a ocorrência
de um plano de bit UV ou seja de um plano de bit apenas com informação de crominância,
representa-se na Figura 5.6 apenas a distribuição estatística para os planos de bit YYYY e YYYYUV,
para os dois planos de bit mais significativos (MSB e MSB-1).
No eixo horizontal da Figura 5.6, apresentam-se os valores que o fgs_cbp pode assumir (em decimal)
e no eixo vertical a probabilidade de ocorrência desse valor (a soma de todas as probabilidades é 1).
Para o plano de bit YYYY, a representação binária do fgs_cbp pode assumir 16 valores, desde ‘0000’
a ‘1111’; para o plano de bit YYYYUV, a representação binária do fgs_cbp pode assumir 47 valores,
desde ‘000000’ a ‘101111’.
CBP YYYY (MSB)
CBP YYYYUV (MSB)
1.2
0.9
0.8
1
0.7
0.6
0.8
0.5
0.6
0.4
0.4
0.3
0.2
0.2
0.1
0
0
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
0
194
2
4
6
8
10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46
CAPÍTULO 5 ― ESCALABILIDADE FINA DE VÍDEO AVC-FGS
CBP YYYY (MSB-1 & Except code = 1)
CBP YYYYUV (MSB-1 & Exceptcode = 1)
0.7
0.35
0.6
0.3
0.5
0.25
0.4
0.2
0.3
0.15
0.2
0.1
0.1
0.05
0
0
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
0
CBP YYYY (MSB-1 & Exceptcode = 0)
0.9
0.45
0.8
0.4
0.7
0.35
0.6
0.3
0.5
0.25
0.4
0.2
0.3
0.15
0.2
0.1
0.1
0.05
2
4
6
8
10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46
CBP YYYYUV (MSB-1 & Exceptcode = 0)
0
0
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
0
2
4
6
8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46
Figura 5.6 – Distribuição estatística do fgs_cbp (fgs coded block pattern).
Tal como se pode verificar na Figura 5.6, para qualquer dos planos de bit estudados, o valor mais
frequente em qualquer situação é o valor 0. O valor 0 corresponde à situação em que todos os submacroblocos de um macrobloco são ALL_ZERO, i.e. todos os elementos de cada sub-macrobloco
de um macrobloco são zero. Para o plano de bit MSB, a probabilidade de ocorrência do valor 0 é
elevada: 95% para YYYY e 85% para YYYYUV; este facto era esperado uma vez que corresponde a
ter poucos coeficientes com uma magnitude elevada. Para o plano de bit MSB-1 com ExceptCode=1,
a probabilidade de ocorrência do valor 0 é menor: 63% para YYYY e 31% para YYYYUV. Para os
planos de bit do tipo YYYYUV, também existe uma probabilidade elevada (20%) para o valor 47,
que corresponde a uma representação binária de 101111, i.e. todos os sub-macroblocos de um
macrobloco contêm elementos diferentes de zero: com o valor de nc = 2 (10) e fgs_cbp_y = 16
(1111). Para o plano de bit MSB-1, com um ou mais elementos diferentes de zero no plano de bit
anterior (MSB), a probabilidade de ocorrência do valor 0 é 81% para YYYY e 41% para YYYYUV.
Para estes casos, a utilização do elemento de sintaxe fgs_cbp ao nível do macrobloco é sempre
vantajosa, uma vez que o valor com a maior probabilidade possui um código de 1 bit (ver Secção
5.4). Se o fgs_cbp fosse enviado ao nível do sub-macrobloco, seria necessário enviar 6 bits para um
plano de bit YYYYUV e 4 para um plano de bit YYYY para assinalar o caso mais provável (todos
os sub-macroblocos com o valor ALL_ZERO), para cada macrobloco.
Segundo o estudo efectuado, para os planos de bit MSB-2 e restantes, é rara (< 1%) a ocorrência de
um plano de bit apenas com informação de luminância (YYYY) e a ocorrência de um número
significativo de sub-macroblocos com todos os elementos a zero já não é predominante (< 20%)
para os planos de bit YYYYUV. Como a principal vantagem na utilização do fgs_cbp consiste em
codificar os casos ALL_ZERO em conjunto, para estes planos de bit não é vantajosa a utilização do
fgs_cbp. Deste modo, para os planos de bit MSB-n com n > 1 é enviado ao descodificador o
195
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
elemento de sintaxe fgs_msb_not_reached que indica se o plano de bit mais significativo foi
alcançado para um determinado sub-macrobloco 8×8 (ver Secção 5.2).
5.3.2 Coeficientes DC
A distribuição estatística dos coeficientes DC na camada superior é apresentada na Figura 5.7 para
os planos de bit MSB, MSB-1 e MSB-n com n>1, isto para os coeficientes DC da luminância e
crominâncias. No eixo vertical apresenta-se a probabilidade de ocorrência de um determinado par
(run, EOP). Para os blocos DC 4×4 da luminância, o run pode assumir os valores de 0 a 15 para
EOP=0
e EOP=1. De uma forma semelhante, para os blocos DC 2×2 da crominância, o run pode
assumir os valores de 0 a 3 para EOP=0 e EOP=1. Deste modo, no eixo horizontal da Figura 5.7a), b)
e c), os valores de 0 a 15 representam o run quando EOP=0 e os valores de 16 a 31 o run quando
EOP=1. Na Figura 5.7d) os valores de 0 a 3 representam o run quando EOP=0 e os valores de 4 a 7 o
run quando EOP=1. A Figura 5.7d) apresenta a distribuição estatística dos coeficientes DC da
crominância, de uma forma condensada para os planos de bit MSB, MSB-1 e MSB-n com n > 1.
Para os coeficientes DC da luminância, a Figura 5.7a) apresenta a distribuição estatística para o plano
de bit MSB, a b) para o MSB-1 e a c) para o MSB-n com n>1.
DC Lum (MSB)
DC Lum (MSB-1)
1
0.3
0.9
0.25
0.8
0.7
0.2
0.6
0.5
0.15
0.4
0.1
0.3
0.2
0.05
0.1
0
0
0
1
2
3
4
5
6
7
8
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
0
1
2
3
4 5
6
7
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
a)
b)
DC Lum (MSB-n com n > 1)
DC Chr
0.35
0.45
0.4
0.3
0.35
0.25
0.3
0.25
MSB
0.2
0.2
MSB-1
MSB-n (n>1)
0.15
0.15
0.1
0.1
0.05
0.05
0
0
1
2
3 4
5
6
7 8
0
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
0
c)
1
2
3
4
5
6
7
d)
Figura 5.7 – Distribuição estatística dos coeficientes DC: Plano de bit da luminância a) MSB, b) MSB-1 e c)
MSB-n com n > 1; d) planos de bit da crominância.
Tal como mostra a Figura 5.7a), para os planos de bit MSB e MSB-1, o par (run, EOP) mais frequente
é o par (15, 0) que corresponde a um bloco 4×4 com todos os elementos a zero, com probabilidade
de ocorrência de 93% e 27%, respectivamente. Para o plano de bit MSB, o número de blocos com
todos os elementos a zero é predominante, uma vez que o fgs_cbp não se aplica para os coeficientes
DC da luminância e o número de coeficientes com uma grande magnitude é pequeno. Para o plano
196
CAPÍTULO 5 ― ESCALABILIDADE FINA DE VÍDEO AVC-FGS
de bit MSB-n com n > 1, o par (run, EOP) mais frequente é o (0,0) que corresponde a um bloco com
um elemento a 1 na posição (0,0).
A distribuição estatística para os elementos de um bloco apresenta a habitual característica de, para
um dado valor de EOP, a probabilidade de ocorrência decrescer à medida que o valor de run cresce.
Esta característica é esperada uma vez que os coeficientes DC da luminância (obtidos a partir da
transformada inteira) são submetidos à transformada de Hadamaard que descorrelaciona os
coeficientes de um bloco e concentra a energia nos coeficientes de frequência mais baixa. Os
coeficientes DC da crominância apresentam uma distribuição estatística semelhante, com excepção
do par (3,0) (i.e. todos os elementos de um bloco 2×2 a zero) que possui uma probabilidade de
ocorrência superior ao par (2,0) para qualquer plano de bit.
5.3.3 Coeficientes AC
A distribuição estatística dos coeficientes AC para o plano de bit MSB, MSB-1 e MSB-n com n > 1 é
apresentada na Figura 5.8. Tal como para os coeficientes DC, o eixo horizontal indica os pares (run,
EOP) e o eixo vertical a respectiva probabilidade de ocorrência. Para o plano de bit MSB, o par (run,
EOP) mais frequente é o par (15,0) que corresponde a um bloco 4×4 com todos os elementos iguais a
zero. De salientar que esta probabilidade não reflecte a probabilidade de ocorrência de todos os
blocos com os elementos iguais a zero, uma vez que muitos são codificados através do elemento de
sintaxe fgs_cbp. Para este valor de probabilidade apenas contribuem os sub-macroblocos 8×8 que
possuem um ou mais elementos diferentes de zero e onde um ou mais blocos têm todos os
elementos a zero. Para os planos de bit MSB-1 e MSB-n com n > 1, a probabilidade de ocorrência
do valor 15, decresce significativamente de 32% (MSB) para 5.7% (MSB-1) e 0.9% (MSB-n com n >
1, pois à medida que o plano de bit é menos significativo há uma menor probabilidade de ocorrência
de blocos com todos os elementos a zero.
AC (MSB)
AC (MSB-1)
0.25
0.35
0.3
0.2
0.25
0.15
0.2
0.15
0.1
0.1
0.05
0.05
0
0
0
1
2 3
4
5 6
7
8
0
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
1
2
3 4
5
6
7 8
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
a)
b)
AC (MSB-n com n > 1)
0.35
0.3
0.25
0.2
0.15
0.1
0.05
0
0
1
2
3 4
5
6
7 8
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
197
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
c)
Figura 5.8 – Distribuição estatística dos coeficientes AC: Plano de bit a) MSB, b) MSB-1, e c) MSB-n com
n>1.
Para os restantes planos de bit, valores pequenos de run com EOP=0 ocorrem mais frequentemente,
o que corresponde a blocos com um conjunto significativo de elementos a 1 e relativamente perto
uns dos outros. Tal como os coeficientes DC, para um dado valor de EOP, a probabilidade de
ocorrência decresce à medida que o valor de run cresce. No entanto, por inspecção visual, pode-se
verificar que a distribuição estatística dos coeficientes AC é diferente dos coeficientes DC de
luminância, especialmente para o plano de bit MSB e MSB-1.
5.4
Codificação entrópica AVC-FGS
A norma H.264/AVC define três métodos de codificação entrópica: UVLC, CA-VLC e CABAC
(ver Secção 4.3.5); o ULVC e CA-VLC são utilizados no perfil Baseline e o CABAC e o ULVC no
perfil Main. Os métodos CA-VLC e CABAC possuem uma maior eficiência de codificação em
relação ao ULVC à custa de um acréscimo de complexidade. O método UVLC utiliza um único
conjunto de palavras de código para todos os elementos da sintaxe e com este método apenas é
necessário especificar a correspondência entre os elementos de sintaxe a codificar e as palavras de
código, de acordo com a distribuição estatística dos dados. Esta técnica elimina a necessidade de
utilizar diferentes tabelas VLC para cada um dos elementos de sintaxe (como na norma MPEG-4
FGS) e possui uma baixa complexidade. A utilização de várias tabelas VLC na camada superior
introduziria alguma complexidade adicional no sistema. Como uma das principais áreas de aplicação
da codificação escalável de vídeo (nomeadamente FGS) é a transmissão de vídeo em redes móveis,
para terminais com uma capacidade de processamento baixa, memória escassa e bateria limitada, o
UVLC permite diminuir a complexidade global do sistema AVC-FGS. Estas vantagens levaram à
escolha do método de codificação entrópica UVLC para o sistema AVC-FGS, apesar do decréscimo
de desempenho que implica em comparação com os métodos CA-VLC e CABAC. O método
ULVC é bastante simples, uma vez que define as palavras de código de comprimento variável a
utilizar através de uma estrutura regular. Para construir a tabela de codificação entrópica basta
ordenar as probabilidades de ocorrência de cada símbolo (obtidas a partir do estudo estatístico já
apresentado) e mapear cada símbolo na palavra de código exp-Golomb correspondente (ver Tabela
4.2: Secção 4.3.5), de forma a que aos símbolos com maior probabilidade de ocorrência sejam
atribuídas palavras de código com uma dimensão menor e vice-versa. Na Tabela 5.1Figura 5.1
apresenta-se uma parte da tabela de codificação UVLC utilizada na camada superior do AVC-FGS,
para os pares (run, EOP) dos blocos (4×4) DC de luminância (DCLum). Os símbolos com valores
entre 0 e 15 representam, para os coeficientes DCLum, o run quando EOP=0 e os valores de 16 a 31
o run quando EOP=1. A cada símbolo corresponde uma palavra de código (em que 0x representa o
formato hexadecimal) de acordo com o tipo de dados que representa; nesta tabela DCLum MSB,
DCLum MSB-1 ou DCLum MSB-n com n > 1. A tabela UVLC completa possui mais 12 colunas: 6
para os coeficientes da transformada (3 para os coeficientes DC croma e 3 para os coeficientes AC)
e 6 para o elemento de sintaxe fgs_cbp (3 para o plano de bit YYYY e 3 para o plano de bit
YYYYUV). Para o plano de bit UV, o fgs_cbp é codificado utilizando códigos de comprimento fixo
(FLC), uma vez que a probabilidade de ocorrência do plano de bit UV é baixa (<1%). Um ponto
198
CAPÍTULO 5 ― ESCALABILIDADE FINA DE VÍDEO AVC-FGS
importante a salientar é que o plano de bit MSB, no contexto da utilização da tabela UVLC, é
definido ao nível do bloco (4×4 ou 2×2). Note-se que os vários blocos não têm necessariamente o
mesmo número de planos de bit; o plano MSB de cada bloco individual é o primeiro plano de bit
que contém pelo menos um elemento a 1 (i.e. não é um bloco ALL_ZERO), indicado através do
elemento de sintaxe fgs_cbp ou fgs_msb_not_reached.
Tabela 5.2 – Parte da tabela UVLC para os coeficientes DC de luminância: MSB, MSB-1 e MSB-n (n>1).
Símbolos
Palavras de código
DCLum MSB
DCLum MSB-1
DCLum MSB-n
0
0x07
0x02
0x01
1
0x0E
0x04
0x02
2
0x011
0x05
0x03
3
0x015
0x08
0x05
4
0x016
0x0C
0x07
5
0x017
0x0E
0x0C
6
0x018
0x012
0x0F
7
0x019
0x014
0x011
8
0x01A
0x016
0x014
…
...
...
...
No MPEG-4 FGS são definidas quatro tabelas diferentes para os coeficientes da DCT, uma para
cada plano de bit: MSB, MSB-1, MSB-2 e MSB-n com n igual ao número máximo de planos de bit.
Quando se utiliza selecção de frequências (ver Secção 3.5.5), a distribuição estatística dos planos de
bit é diferente, o que obriga à utilização de mais oito tabelas. Deste modo, o MPEG-4 FGS define
12 tabelas com uma dimensão variável, totalizando 588 códigos.
Como o número de elementos de um bloco na norma MPEG-4 FGS é 64, o número máximo de
pares (run, EOP) possível é 128. Para evitar códigos de Huffman muito compridos, a norma MPEG-4
FGS define um código de ESCAPE para codificar os símbolos com run elevado. Por outro lado, no
AVC-FGS o número máximo de coeficientes de um bloco é 16, o que significa que o número
máximo de pares (run, EOP) necessários é 32, não sendo necessária a utilização de códigos ESCAPE.
Para o AVC-FGS, o número total de elementos da tabela UVLC é 200: 3×32 (DCLum) + 3×32
(AC) + 3×8 (DCChr), o que resulta num número inferior de códigos em relação ao MPEG-4 FGS,
permitindo assim reduzir os requisitos de memória do codificador e descodificador.
Através de um estudo estatístico da eficiência teórica dos códigos UVLC (que não é aqui
apresentado por razões de espaço), o autor desta tese verificou que, no AVC-FGS, a distribuição
estatística dos pares (run, EOP) para os planos de bit MSB-n com n > 1 é bastante semelhante à
distribuição estatística individual dos planos de bit MSB-2, MSB-3, ... , MSB-m com m igual ao
número máximo de planos de bit. De salientar que, na norma MPEG-4 FGS, os planos de bit MSB,
MSB-1, MSB-2 e MSB-n com n > 2 são codificados separadamente através da utilização de
diferentes tabelas, enquanto no AVC-FGS apenas se codificam os planos de bit MSB, MSB-1 e
MSB-n com n > 1 separadamente, o que permite reduzir o número de entradas na tabela. Outra
diferença entre a norma MPEG-4 FGS e o AVC-FGS é a codificação separada dos planos de bit dos
coeficientes DC. Comparando as distribuições estatísticas dos coeficientes AC e dos coeficientes
199
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
DC, nota-se por inspecção que as distribuições não são semelhantes; em consequência, a
correspondência entre os códigos UVLC e os pares (run, EOP) depende do tipo de bloco a codificar:
DCLum, DCChr ou AC. Esta separação do tipo de coeficientes a codificar permite uma maior
adaptação à estatística do sinal a codificar e, consequentemente, um melhor desempenho.
5.5
Sintaxe e semântica do fluxo binário AVC-FGS
Nesta Secção apresenta-se a sintaxe e a semântica do fluxo binário utilizada no sistema AVC-FGS
proposto neste capítulo da tese. Esta sintaxe é semelhante à sintaxe do MPEG-4 FGS em todos os
aspectos onde pode ser mantida a mesma solução para alcançar a mesma funcionalidade,
nomeadamente os códigos de sincronismo que assinalam o começo de uma trama e plano de bit, o
tipo de trama (I, P ou B), o número máximo de planos de bit para qualquer coeficiente, etc.
Contudo, o resto da sintaxe é essencialmente diferente uma vez que tiveram de ser introduzidas
alterações de forma a suportar as novas ferramentas de codificação aqui propostas para a camada
superior ou seja as ferramentas especificadas pela norma H.264/AVC. A sintaxe da camada superior
do AVC-FGS foi estruturada em três níveis:
― Nível de trama (FGSVideoObjectPlane): A este nível é transmitido um conjunto de
parâmetros necessários para descodificar os planos de bit da luminância e crominâncias.
Estes parâmetros são utilizados para assinalar o começo de uma trama, a ordem das tramas,
o número de planos de bit necessários para representar os coeficientes DC e AC (luminância
e crominâncias), etc.
― Nível de plano de bit (FGSDCLumBitplane e FGSDCChrACBitplane): A este nível são
transmitidos todos os bits correspondentes aos coeficientes AC e DC que pertencem a um
determinado plano de bit. Para um determinado plano de bit, os coeficientes DC da
luminância (FGSDCLumBitplane) são codificados separadamente dos coeficientes DC da
crominância e coeficientes AC (FGSDCChrACBitplane). Para o plano de bit
FGSDCLumBitplane, são transmitidos os pares (run, EOP) codificados entropicamente e para o
plano de bit FGSDCChrACBitplane é transmitido o elemento de sintaxe fgs_cbp, recorrendose ao nível seguinte (FGSBlock) para transmitir os bits dos restantes coeficientes.
― Nível de bloco (FGSBlock): Neste nível enviam-se os pares (run, EOP) dos coeficientes DC
da crominância e todos os coeficientes AC. Também é transmitido o elemento de sintaxe
fgs_msb_not_reached (1 bit) para indicar se o plano de bit mais significativo de um bloco já
foi alcançado.
Importa salientar que, por razões de tempo, a sintaxe aqui proposta não suporta algumas
características do MPEG-4 FGS como a melhoria selectiva de algumas regiões da imagem, a
escalabilidade temporal e a codificação de material de vídeo no formato entrelaçado. No entanto, no
caso de se pretender introduzir estas funcionalidades, as modificações necessárias são pequenas. Os
elementos de sintaxe fgs_vop_coding_type, fgs_vop_mc_bit_plane e fgs_vop_weight_bit_plane não
são utilizados no codificador AVC-FGS, possuindo sempre o valor 0; estes campos foram incluídos
na sintaxe apenas com a finalidade de suportar a introdução da compensação de movimento no
fluxo binário da camada superior que será feita no Capítulo 6. De seguida, apresenta-se a sintaxe da
camada superior do sistema AVC-FGS, na forma de quatro tabelas. Para cada elemento de sintaxe a
200
CAPÍTULO 5 ― ESCALABILIDADE FINA DE VÍDEO AVC-FGS
transmitir (mais carregados), indica-se o número de bits necessário para o representar; os restantes
elementos correspondem a funções ou variáveis. Para cada elemento da sintaxe, apresenta-se
também a sua semântica. A semântica de cada elemento de sintaxe é descrita, do ponto de vista do
descodificador, i.e. da forma como o fluxo binário deve ser lido e interpretado, uma vez que é
sempre o descodificador (e não o codificador) que deve ser normalizado para garantir
interoperabilidade.
Sintaxe FGSVideoObjectPlane
Tabela 5.3 – Sintaxe do elemento FGSVideoObjectPlane.
FGSVideoObjectPlane() {
Nº de bits
fgs_vop_start_code
32
fgs_vop_coding_type
2
vop_time_increment
8
fgs_vop_max_level_y_dc
5
fgs_vop_max_level_y_ac
5
fgs_vop_max_level_uv_dc
5
fgs_vop_max_level_uv_ac
5
marker_bit
1
fgs_vop_number_of_vop_bp_coded
5
fgs_vop_mc_bit_plane
5
fgs_vop_weight_bit_plane
5
fgs_vop_dc_enhancement
3
next_start_code()
if (nextbits_bytealigned () == fgs_bp_start_code) {
while(nextbits_bytealigned() != ‘000 0000 0000 0000 0000 0000’ ||
nextbits_bytealigned () == fgs_bp_start_code) {
fgs_bp_start_code
32
FGSDCLumBitplane()
FGSDCChrACBitplane()
}
next_start_code()
}
}
Semântica do FGSVideoObjectPlane
- Assinala o começo de um VOP AVC-FGS. Consiste num código fixo de 32
bits com o valor ’000001B9’ em hexadecimal.
fgs_vop_start_code
- Identifica o tipo de trama utilizada na camada superior, nomeadamente se
é do tipo Intra (I), Preditivo (P) ou Bi-preditivo (B). No AVC-FGS este elemento possui sempre o
valor ‘0’ que corresponde ao tipo Intra.
fgs_vop_coding_type
201
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
- Indica a ordem das tramas AVC-FGS. Este valor é incrementado de 1 à
medida que se processam as tramas AVC-FGS. Quando o valor do modulo_time_base chega a 255,
é colocado a zero na trama seguinte.
modulo_time_base
- Especifica o número de planos de bit necessário para representar os
coeficientes DC da luminância de uma determinada trama.
fgs_vop_max_level_y_dc
- Especifica o número de planos de bit necessário para representar os
coeficientes AC da luminância de uma determinada trama.
fgs_vop_max_level_y_ac
- Especifica o número de planos de bit necessário para representar os
coeficientes DC da crominância de uma determinada trama.
fgs_vop_max_level_uv_dc
- Especifica o número de planos de bit necessário para representar os
coeficientes AC da crominância de uma determinada trama.
fgs_vop_max_level_uv_ac
fgs_vop_number_of_vop_bp_coded
- Especifica o número máximo de planos de bit para
qualquer coeficiente.
fgs_vop_mc_bit_plane
- Reservado para uso futuro (ver Capítulo 6).
fgs_vop_weight_bit_plane
- Reservado para uso futuro (ver Capítulo 6).
- Especifica o número de planos de bit DC da luminância que são
colocados antes dos restantes no fluxo binário.
fgs_vop_dc_enhancement
– Permite remover qualquer bit a zero e um conjunto de 0 a 7 bits a ‘1’ utilizados
para stuffing e localiza o próximo código (start_code) alinhado ao byte.
next_start_code()
- Retorna uma cadeia de 32 bits que começa na próxima posição alinhada ao
byte. A posição actual do ponteiro de descodificação não é alterada por esta função.
nextbits_bytealigned()
- Consiste numa cadeia de 32 bits e assinala o começo de um plano de bit.
Consiste num código fixo de 27 bits com o valor ‘0000 0000 0000 0000 0000 0001 010’ em binário e
os últimos 5 bits representam um valor na gama de ‘00000’ a ‘11111’ em binário.
fgs_bp_start_code
Sintaxe de FGSDCLumBitplane, FGSACBitplane e FGSBlock
Tabela 5.4 – Sintaxe do elemento FGSDCLumBitplane.
FGSDCLumBitplane() {
Nº de bits
if(start_decode_dc_lum == 1)
for ( i=0; i<mb_in_bitplane; i++ ) {
While(eop == 0){
fgs_run_eop_code
1-11
if(coeff_msb_not_reached == 1)
fgs_sign_bit
1
}
}
}
202
CAPÍTULO 5 ― ESCALABILIDADE FINA DE VÍDEO AVC-FGS
Tabela 5.5 – Sintaxe do elemento FGSDCChrACBitplane.
FGSDCChrACBitplane1 () {
Nº de bits
for ( i=0; i<mb_in_bitplane; i++ ) {
if(fgs_vop_bp_id < 2)
fgs_cbp
1-11
for ( i=0; i<4; i++ ){
if(start_decode_ac_lum ==1)
fgs_block(i)
}
for ( i=0; i<2; i++ ){
if(start_decode_dc_chr ==1)
fgs_block(i+4)
}
for ( i=0; i<2; i++ ){
if(start_decode_ac_chr ==1)
fgs_block(i+6)
}
Tabela 5.6 – Sintaxe do elemento FGSBlock.
FGSBlock() {
N.º de bits
If(fgs_vop_bp_id > 1 && previous_fgs_msb_not_reached==1){
fgs_msb_not_reached
1
If(fgs_msb_not_reached == 0){
While(eop == 0){
fgs_run_eop_code
1-11
if(coeff_msb_not_reached == 1)
fgs_sign_bit
1
}
}
}
Semântica de FGSDCLumBitplane, FGSACBitplane e FGSBlock
mb_in_bitplane
eop
- Especifica o número de macroblocos que um plano de bit possui.
- Indica se um bit com o valor ‘1’ é o ultimo bit a ‘1’ de um bloco.
fgs_run_eop_code
- Código VLC para um par (RUN, EOP).
A ordem de varrimento dos coeficientes DC da crominância e todos os coeficientes AC é igual à ordem definida na
norma H.264/AVC (ver Figura 4.8), i.e. primeiro seguem os coeficientes AC da luminância, depois os coeficientes DC
da crominância e, finalmente, os coeficientes AC da crominância.
1
203
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
- Consiste num valor interno (flag) que indica com o valor ‘1’ que o MSB de
um coeficiente associado com o fgs_run_eop_code foi alcançado. O valor ‘0’ indica que o
fgs_run_eop_code associado corresponde a um bit num nível inferior (MSB-n com n > 0) do
coeficiente.
coeff_msb_not_reached
- Indica o valor do sinal de um coeficiente da transformada DCT inteira ou de
Hadamard. O valor ‘0’ indica um valor positivo e o valor ‘1’ um valor negativo.
fgs_sign_bit
– Corresponde aos últimos 5 bits do código fgs_bp_start_code. O fgs_vop_bp_id
identifica um plano de bit de uma forma única. O valor do fgs_vop_bp_id é ‘0’ para o plano de bit
mais significativo e é incrementado de 1 para cada plano de bit num nível inferior.
fgs_vop_bp_id
- Código de comprimento variável com um comprimento entre 1 a 11 bits. Especifica o
coded bit pattern do fgs_msb_not_reached de um macrobloco (ver Secção 5.3.1).
fgs_cbp
start_decode_dc_lum
- Consiste num valor interno que indica se a descodificação de um
com bits de coeficientes DC da luminância deve ser realizada ou não.
FGSBlock
start_decode_ac_lum
- Consiste num valor interno que indica se a descodificação de um
com bits de coeficientes AC da luminância deve ser realizada ou não.
FGSBlock
start_decode_dc_chr
- Consiste num valor interno que indica se a descodificação de um
com bits de coeficientes DC da crominância deve ser realizada ou não.
FGSBlock
- Consiste num valor interno que indica se a descodificação de um
com bits de coeficientes AC da crominância deve ser realizada ou não.
FGSBlock
start_decode_ac_chr
Os valores start_decode_dc_lum, start_decode_ac_lum, start_decode_dc_chr e start_decode_ac_chr
indicam se um determinado plano de bit contém pelo menos um bit com o valor ‘1’ e são calculados
da seguinte forma:
start_decode_dc_lum = 0;
start_decode_ac_lum = 0;
start_decode_dc_chr = 0;
start_decode_ac_chr = 0;
if(maximum_level_y_ac >= maximum_level - fgs_vop_bp_id) start_decode_ac_lum = 1;
if(maximum_level_y_dc >= maximum_level - fgs_vop_bp_id) start_decode_dc_lum = 1;
if(maximum_level_chr_dc >= maximum_level - fgs_vop_bp_id) start_decode_dc_chr = 1;
if(maximum_level_chr_ac >= maximum_level - fgs_vop_bp_id) start_decode_ac_chr = 1;
e maximum_level = MAX(maximum_level_y_ac, maximum_level_y_dc, maximum_level_chr_dc,
maximum_level_chr_ac)
- Este elemento de sintaxe é ‘1’ se o plano de bit mais significativo de um
FGSBlock não tiver sido alcançado, i.e. indica um FGSBlock com todos os elementos que o
constituem a zero; caso contrário, é ‘0’.
fgs_msb_not_reached
204
CAPÍTULO 5 ― ESCALABILIDADE FINA DE VÍDEO AVC-FGS
- Consiste no
plano de bit anterior para o mesmo bloco 4×4.
previous_fgs_msb_not_reached
5.6
fgs_msb_not_reached
descodificado no
FGSBlock
do
Estudo do desempenho do AVC-FGS
Para efectuar o estudo do desempenho do algoritmo AVC-FGS proposto neste capítulo foram
desenvolvidos pelo autor dois codificadores (e os respectivos descodificadores); ambos utilizam um
codificador H.264/AVC na camada base. O primeiro codificador desenvolvido usa na camada
superior uma solução conforme com a norma MPEG-4 FGS e o segundo usa a solução AVC-FGS,
proposta neste capítulo. Um codificador MPEG-4 FGS será também utilizado no decorrer dos
testes.
O codificador H.264/AVC utilizado neste estudo é o modelo de referência (Joint Model - JM) versão
5.0 [10] com controlo de débito [8] desenvolvido pelo grupo JVT e o perfil escolhido foi o perfil
Baseline devido à sua boa relação qualidade/complexidade. Para permitir uma avaliação progressiva
do desempenho do algoritmo aqui proposto, foram adoptadas três configurações de teste,
apresentadas na Tabela 5.7.
Tabela 5.7 – Configurações de teste.
Configurações de teste
Codificador 1
Codificador 2
Camada base Camada superior Camada base
Camada superior
Teste 1
MPEG-4 ASP
MPEG-4 FGS
H.264/AVC
MPEG-4 FGS
Teste 2
H.264/AVC
MPEG-4 FGS
H.264/AVC
AVC-FGS
Teste 3
H.264/AVC
AVC-FGS
Codificador não escalável H.264/AVC
Com a configuração de teste 1, pretende-se avaliar a melhoria de desempenho quando se utiliza o
codificador não escalável H.264/AVC na camada base em substituição de um codificador MPEG-4
ASP. Com a configuração de teste 2, pretende-se avaliar o desempenho da solução escalável AVCFGS em relação ao MPEG-4 FGS, usando sempre na camada base a norma H.264/AVC. Com a
configuração de teste 3, pretende-se avaliar a quebra de desempenho do sistema AVC-FGS em
relação ao codificador não escalável H.264/AVC (para débitos semelhantes). Finalmente, também é
efectuado um estudo de desempenho da técnica de melhoria selectiva dos coeficientes DC, aqui
proposta, com o objectivo de avaliar o desempenho do AVC-FGS com e sem melhoria selectiva dos
coeficientes DC.
Para a configuração de teste 1, o codificador 1 utilizado, ou seja o MPEG-4 FGS consiste no software
de referência incluído na Parte 5 da norma MPEG-4 [2] e as condições de teste utilizadas são iguais
às que foram definidas na Secção 3.6.1. As condições de teste para as restantes configurações de
teste e para o codificador/descodificador 2 da configuração de teste 1 são apresentadas na Tabela
5.8.
Tabela 5.8 – Condições de teste.
Cenário 1
Cenário 2
Cenário 3
205
Cenário 4
Cenário 5
Cenário 6
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
Resolução espacial
QCIF
QCIF
QCIF
CIF
CIF
CIF
Frequência de
trama (Hz)
5
10
10
10
30
30
Débito binário da
camada base Rb
(kbit/s)
16
32
64
128
256
512
Débito binário
máximo
Rmax(kbit/s)
64
128
256
512
1024
2048
Resultados PSNR
a:
16, 24, 32,
48, 64
128, 192,
256, 384,
512
256, 384,
512, 768,
1024
512, 768,
1024, 1536,
2048
Período das
tramas I
N=28
N=56
N=56
N=60
N=120
N=120
Número de tramas
de referência
5
5
5
5
5
5
Amplitude
vectores
movimento
16
16
16
32
32
32
Optimização RD
Sim
Sim
Sim
Sim
Sim
Sim
Controlo de débito
TM5
TM5
TM5
TM5
TM5
TM5
32, 48, 64, 64, 96, 128,
96, 128
192, 256
O número de cenários, resoluções espacial e temporal, débitos binários da camada base e débitos
binários máximos são iguais aos adoptados na Secção 3.6.1. Estes parâmetros, semelhantes aos
adoptados nas condições de teste definidas pelo grupo MPEG durante o desenvolvimento do FGS,
permitem abranger uma gama variada de débitos binários, frequências temporais e resoluções
espaciais. Os restantes parâmetros correspondem às novas ferramentas de codificação da norma
H.264/AVC, tendo-se adoptado para a camada base:
― O número máximo de tramas de referência que pode ser utilizado é 5.
― A amplitude máxima dos vectores de movimento é 16 para as sequências QCIF e 32 para as
sequências CIF.
― Como o perfil Baseline não permite a utilização de tramas do tipo B, ao contrário do perfil
MPEG-4 ASP, o período das tramas Intra (I) para o codificador da camada base
H.264/AVC é o dobro do que foi definido para o codificador MPEG-4 ASP. Tenta-se desta
forma que o desempenho do H.264/AVC não seja muito penalizado pela não utilização de
imagens do tipo B.
― A optimização RD (Rate/Distortion) é utilizada para permitir ao codificador escolher um
conjunto de parâmetros (e.g. selecção de modo) que minimize o débito binário para um
dado nível de qualidade.
― O controlo de débito utilizado é baseado no modelo TM5, com algumas modificações de
forma a suportar a optimização RD e a permitir um desempenho ligeiramente superior ao
TM5 original [8].
206
CAPÍTULO 5 ― ESCALABILIDADE FINA DE VÍDEO AVC-FGS
Para qualquer configuração de teste, utilizam-se as medidas de Bjontegaard (ver Secção 3.6.2) para
avaliar o desempenho dos codificadores em teste; obtêm-se assim duas medidas: dPSNR e dRate
que exprimem a diferença média de PSNR (em dB) para o intervalo de débitos binários definido nas
condições de teste e a diferença média do débito binário para um dado intervalo de PSNR (em %).
Finalmente, para este estudo do desempenho, e com vista a limitar a quantidade de resultados,
foram escolhidas cinco das dez sequências de teste utilizadas na Secção 3.6.1. O critério que presidiu
à escolha destas sequências foi a diferença de desempenho entre o codificador escalável MPEG-4
FGS e o codificador não escalável MPEG-4 ASP estudado nessa Secção. Assim, enquanto as
sequências Boat e Rugby representam os casos extremos, maior quebra de desempenho (entre 2 e 5
dB) e menor quebra de desempenho (entre -0.02 e 1.6 dB), respectivamente, as sequências Canoa,
Stefan e Table Tennis são representativas de vários tipos importantes de conteúdo e apresentam uma
quebra de desempenho intermédia.
5.6.1 Resultados para a configuração de teste 1
A configuração de teste 1 utiliza sempre o MPEG-4 FGS na camada superior e usa o MPEG-4 ASP
ou o H.264/AVC (perfil Baseline) na camada base. O principal objectivo deste estudo consiste em
determinar qual é o ganho de eficiência quando se utiliza o H.264/AVC na camada base em vez do
MPEG-4 ASP, tal como acontece actualmente no MPEG-4 FGS. Saliente-se que, com este estudo,
não se pretende comparar a norma H.264/AVC com o MPEG-4 ASP e que o ganho de eficiência
do sistema FGS completo (camada base + camada superior) não é necessariamente igual à melhoria
de desempenho do H.264/AVC em relação ao MPEG-4 ASP. Primeiro, porque não se utilizam
perfis “equivalentes”, e.g. o perfil ASP da norma MPEG-4 FGS permite a utilização de tramas do
tipo B que possuem a maior eficiência de codificação enquanto o perfil Baseline do H.264/AVC não
permite a utilização de tramas do tipo B. Segundo, porque o H.264/AVC alcança um desempenho
superior através da utilização da optimização RD. Terceiro, porque a melhoria de desempenho da
camada base não é reflectida da mesma forma na camada superior.
Os resultados para esta configuração de teste são apresentados na Tabela 5.9, apenas para a
componente da luminância. Para qualquer cenário e sequência de teste, o desempenho do
codificador 2 (H.264/AVC na camada base) é superior. Tal como esperado, a camada base possui
um impacto significativo no desempenho global do sistema FGS, com um ganho mais significativo
para sequências com uma correlação temporal entre tramas elevada, e.g. para a sequência Boat e Table
Tennis. Em relação ao débito binário, os ganhos de desempenho são mais significativos para débitos
binários médios e altos (i.e. para os cenários de 3 a 6) para as sequências Canoa, Rugby e Stefan e para
os débitos binários baixos e médios para as sequências Boat (cenários 1 a 3) e Table (cenários 1 a 4).
Os ganhos são mais acentuados para as sequências e débitos binários onde a camada base apresenta
uma melhoria de desempenho mais significativa, devido às novas ferramentas de compensação de
movimento que exploram a correlação temporal de uma forma mais eficiente.
Tabela 5.9 – Desempenho relativo do MPEG-4 FGS com H.264/AVC e MPEG-4 ASP na camada base.
Boat
dPSNR
dRate
Canoa
DPSNR
dRate
Rugby
dPSNR
207
DRate
Stefan
dPSNR
dRate
Table Tennis
dPSNR
dRate
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
Cenário 1
4.767
99.98
0.681
15.41
0.301
6.75
0.016
1.69
2.445
47.43
Cenário 2
4.017
99.95
0.931
24.75
0.933
21.95
0.691
25.16
2.660
62.54
Cenário 3
6.465
99.83
3.086
54.63
3.027
52.24
3.011
61.07
3.914
77.75
Cenário 4
2.025
71.56
1.829
42.70
1.795
37.73
2.446
56.92
3.083
69.37
Cenário 5
3.850
99.99
1.113
42.24
1.605
44.54
2.494
71.40
2.341
77.81
Cenário 6
2.258
75.05
2.212
45.64
2.523
47.60
2.311
51.64
2.047
61.21
Média
3.897
91.06
2.649
50.135
2.775
49.92
2.566
60.26
2.748
66.02
Para débitos binários baixos (cenário 1), os ganhos de desempenho são mais reduzidos para a
sequência Stefan (0.016 dB para o PSNR e 1.69 % para o débito) e para a sequência Rugby (0.301 dB
para o PSNR e 6.75 % para o débito). O ganho é reduzido para estes cenários/sequências porque o
codificador MPEG-4 ASP da camada base não permite atingir o débito binário desejado (gasta mais
bits), devido a uma menor eficiência de codificação e ao tipo de controlo de débito utilizado (TM5),
desenvolvido para o modelo de teste do MPEG-2 e adequado a débitos binários superiores. Por
exemplo, para a sequência Stefan - cenário 1, o valor de débito binário que o codificador MPEG-4
ASP consegue alcançar é de 34.3 kbit/s (deveria ser 16 kbit/s) enquanto o codificador H.264/AVC
usa 15.99 kbit/s (menos de metade). Uma vez que a qualidade da camada base é bastante inferior
para o codificador 2 (H.264/AVC na camada base), o desempenho do sistema FGS completo é
influenciado negativamente. Na Tabela 5.9, estes casos são assinalados a azul e não são utilizados no
cálculo da média para todos os cenários. Em conclusão, a utilização do codificador H.264/AVC na
camada base em relação ao codificador MPEG-4 ASP constitui uma mais valia, pois permite uma
eficiência de codificação superior, para todos os cenários definidos, com um valor médio mínimo de
2.57 dB e máximo de 3.9 dB.
5.6.2 Resultados para a configuração de teste 2
Para a configuração de teste 2, comparam-se dois codificadores desenvolvidos no contexto desta
tese, onde a camada base é sempre codificada com a norma H.264/AVC enquanto a camada
superior usa o MPEG-4 FGS ou o AVC-FGS. Como se pode ver na Tabela 5.10, a solução AVCFGS apresenta um desempenho um pouco inferior em relação à combinação AVC+MPEG-4 FGS
(componente de luminância), para todos os cenários e sequências de teste. A quebra de desempenho
do AVC-FGS é ligeiramente maior para as sequências de teste com uma menor correlação entre
tramas. Por exemplo, para a lenta sequência Boat, o desempenho do AVC-FGS sofre uma quebra de
desempenho de apenas 0.04 a 0.12 dB; no outro extremo, para a rápida sequência Rugby, a quebra de
desempenho é já de 0.2 a 0.39 dB. Tal facto, deve-se à qualidade da camada base, que nas sequências
Boat e Table Tennis é mais elevada que as restantes; isto vai reduzir a energia do resíduo (menos
planos de bit) a codificar na camada superior, o que é normalmente codificado de uma forma mais
eficiente quando se usa a técnica de codificação entrópica ULVC.
Tabela 5.10 – Desempenho do MPEG-4 FGS em relação ao AVC-FGS sempre com o H.264/AVC na
camada base.
Boat
Canoa
Rugby
208
Stefan
Table Tennis
CAPÍTULO 5 ― ESCALABILIDADE FINA DE VÍDEO AVC-FGS
Boat
Canoa
Rugby
Stefan
Table Tennis
dPSNR
dRate
dPSNR
dRate
dPSNR
dRate
dPSNR
DRate
dPSNR
dRate
Cenário 1
0.099
6.26
0.259
5.58
0.313
6.70
0.327
9.96
0.322
8.49
Cenário 2
0.051
4.89
0.353
9.96
0.247
6.36
0.275
10.29
0.152
6.25
Cenário 3
0.119
7.04
0.324
8.71
0.395
8.40
0.392
10.20
0.162
5.53
Cenário 4
0.123
8.96
0.320
9.61
0.377
9.39
0.319
10.77
0.180
8.52
Cenário 5
0.038
4.22
0.132
5.03
0.202
6.66
0.148
7.45
0.077
5.68
Cenário 6
0.075
5.76
0.348
10.51
0.399
11.00
0.276
9.50
0.148
8.47
Média
0.084
6.19
0.289
8.23
0.322
8.08
0.289
9.69
0.174
7.16
Tal como se pode comprovar na Figura 5.9, as quebras de desempenho do AVC-FGS são
sistematicamente mais acentuadas para os débitos binários mais elevados adoptados para cada
cenário. Nesta Figura apresentam-se os gráficos RD (a azul o AVC-FGS e a vermelho o MPEG-4
FGS) para a sequência Canoa - cenário 1 (dPSNR = 0.26 dB) e para a sequência Rugby - cenário 5
(dPSNR = 0.2 dB).
PSNR (dB)
Canoa (Cenário 1)
PSNR (dB)
Rugby (Cenário 5)
36.8
28
36.6
27
36.4
26
36.2
25
36
AVC-FGS
MPEG-4 FGS
24
23
35.6
bits/s
22
16000
26000
36000
46000
56000
AVC-FGS
MPEG-4 FGS
35.8
35.4
240000
66000
bits/s
340000
440000
540000
640000
740000
840000
940000
1040000
Figura 5.9 – Alguns resultados da configuração de teste 2 para a luminância.
Tal como se pode ver, o desempenho é bastante semelhante para os débitos binários mais baixos do
intervalo [Rb, Rmax] e, à medida que o débito binário aumenta, a quebra de desempenho do AVCFGS é superior. Esta quebra de qualidade é devida aos códigos de exp-Golomb que apresentam
tipicamente uma eficiência inferior em relação aos códigos de Huffman utilizados no MPEG-4 FGS
[11]. Para os débitos binários mais altos do intervalo de codificação, o número de símbolos a
codificar aumenta e os códigos de exp-Golomb são responsáveis pelo desempenho inferior, uma vez
que não modelam a distribuição estatística dos símbolos de uma forma adequada quando o número
de símbolos a codificar é elevado. O desempenho dos códigos exp-Golomb pode ser melhorado uma
vez que as palavras de código não foram desenhadas de acordo com as probabilidades de cada
símbolo, mas apenas atribuídas de acordo com uma regra de construção fixa. Esta quebra de
desempenho foi também observada pelo próprio grupo VCEG [3][5]; de facto, estudos estatísticos
efectuados concluíram que os códigos exp-Golomb utilizados podem ser melhorados de forma a
aproximarem-se mais do limite máximo de eficiência estabelecido pela entropia, especialmente para
passos de quantificação baixos (Qp < 13). Deste modo, no perfil Baseline da norma H.264/AVC os
coeficientes da transformada são codificados com a ferramenta CA-VLC (ver Secção 4.3.5), pois esta
permite uma eficiência superior em relação ao UVLC (com códigos de exp-Golomb) à custa de uma
209
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
maior complexidade [1]. De salientar que, na camada base, apenas os coeficientes da transformada
são codificados com a ferramenta CA-VLC; para os restantes elementos (e.g. os vectores de
movimento) é utilizada a ferramenta UVLC. Em conclusão, a utilização dos códigos de exp-Golomb
permitem diminuir a complexidade na camada superior do AVC-FGS (usando a ferramenta de
codificação entrópica ULVC já disponível na camada base), à custa de uma pequena quebra de
desempenho, com um valor médio mínimo de 0.08 dB e máximo de 0.32 dB; esta quebra é mais
acentuada para os débitos binários mais altos do intervalo de codificação.
5.6.3 Resultados para a configuração de teste 3
Na configuração de teste 3, compara-se o sistema AVC-FGS proposto com o codificador não
escalável H.264/AVC. Com esta configuração de teste, pretende-se conhecer a quebra de eficiência
do sistema AVC-FGS em relação à codificação não escalável H.264/AVC de uma forma semelhante
à avaliação de desempenho do MPEG-4 FGS em relação ao MPEG-4 ASP (ver Secção 3.6). Dito de
outra forma, pretende-se conhecer o ‘preço’ da escalabilidade em termos de eficiência. Os resultados
para a componente da luminância são apresentados na Tabela 5.11.
Tabela 5.11 – Desempenho do codificador não escalável H.264/AVC em relação ao AVC-FGS.
Boat
Canoa
Rugby
Stefan
Table Tennis
dPSNR
dRate
dPSNR
dRate
dPSNR
dRate
dPSNR
dRate
dPSNR
dRate
Cenário 1
4.084
49.64
0.465
9.55
0.655
10.34
1.675
29.79
2.663
33.20
Cenário 2
4.178
50.14
1.437
28.71
1.045
20.10
2.387
41.20
3.099
43.58
Cenário 3
4.099
49.63
1.881
29.99
1.354
22.21
2.525
38.35
3.189
41.68
Cenário 4
3.734
49.71
1.514
30.73
1.284
24.27
2.388
39.75
1.284
24.27
Cenário 5
3.395
50.69
1.525
35.22
1.596
31.97
2.703
45.51
2.870
46.46
Cenário 6
2.756
50.13
1.892
32.95
1.913
32.04
2.190
39.94
2.914
46.78
Média
3.708
49.99
1.452
27.86
1.308
23.49
2.311
39.09
2.670
39.33
Este estudo permite estabelecer qual é o limite teórico do desempenho para o sistema AVC-FGS.
Para todos os cenários, a codificação não escalável possui um desempenho médio superior; além
disso, as sequências com uma elevada correlação entre tramas (e.g. Boat) apresentam a maior quebra
de desempenho e as sequências com um grau de movimento significativo (e.g. Rugby e Canoa)
apresentam a menor quebra de desempenho. Estes resultados são esperados uma vez que o AVCFGS, tal como o MPEG-4 FGS, não possui um módulo de compensação de movimento na camada
superior o que limita a sua capacidade de explorar a redundância temporal. Comparativamente ao
estudo MPEG-4 FGS versus MPEG-4 ASP, a quebra de desempenho é superior para um número
significativo de cenários/sequências, uma vez que o H.264/AVC possui novas ferramentas de
compensação de movimento, que exploram a redundância temporal de uma forma mais eficiente
que no perfil MPEG-4 ASP. Em conclusão, o sistema AVC-FGS proposto mantêm um
desempenho inferior em relação à codificação não escalável H.264/AVC, tal como o MPEG-4 FGS
em relação ao MPEG-4 ASP, com um valor médio mínimo de 1.31 dB e máximo de 3.71 dB, para
as várias sequências nas condições de teste atrás definidas.
210
CAPÍTULO 5 ― ESCALABILIDADE FINA DE VÍDEO AVC-FGS
5.6.4 Avaliação da melhoria selectiva dos coeficientes DC
Nesta Secção, compara-se o sistema AVC-FGS proposto, com e sem melhoria selectiva dos
coeficientes DC. No AVC-FGS, este método permite uma melhoria da componente DC e
consequentemente uma reconstrução do vídeo no descodificador mais suave e uma menor
ocorrência de artefactos do tipo cintilação (flickering), frequentes num sistema de escalabilidade
híbrida, pois a qualidade da imagem da camada base pode variar significativamente (especialmente
para débitos binários baixos). Apesar de não ter sido efectuado um estudo do aumento da qualidade
subjectiva associada a esta técnica, é de esperar uma melhoria da qualidade visual, tal como foi
demonstrado para a técnica de selecção de frequências do MPEG-4 FGS (semelhante à melhoria
selectiva dos coeficientes DC) em [4] e [6].
No entanto, já no MPEG-4 FGS quando se utilizava a medida de desempenho PSNR, para avaliar a
qualidade do vídeo descodificado, os resultados indicavam um desempenho em termos de qualidade
objectiva inferior quando se usa a técnica de selecção de frequências, uma vez que os coeficientes
AC possuem uma menor precisão em comparação com os coeficientes DC para um dado débito
binário. Como se sabe, a medida PSNR não reflecte necessariamente a qualidade visual (e.g. quando
ocorrem alguns tipos de artefactos), nomeadamente porque as componentes de frequência
visualmente mais importantes contribuem tanto para o PSNR como as componentes de frequências
visualmente menos importantes o que não é subjectivamente verdade. Para a selecção de frequências
adoptada pela norma MPEG-4 FGS, a quebra de desempenho, em relação ao MPEG-4 FGS sem
selecção de frequências pode atingir 2 dB para a componente da luminância [6].
Na Figura 5.10 apresentam-se alguns gráficos de PSNR que permitem avaliar a qualidade objectiva
(PSNR) do vídeo quando se utiliza a técnica de melhoria selectiva dos coeficientes DC no AVCFGS; contemplam-se três configurações:
― A curva RD azul representa o AVC-FGS sem a melhoria selectiva dos coeficientes DC
activada.
― A curva RD vermelho corresponde ao caso onde fgs_vop_dc_enhancement = 1 o que
significa que os coeficientes DCLum são deslocados de 1 plano de bit; a ordem de
transmissão é: DCLum MSB, DCLum MSB-1 e de seguida os restantes coeficientes.
― A curva RD verde corresponde ao caso onde fgs_vop_dc_enhancement = 2 (ver Figura 5.4)
o que indica que os coeficientes DCLum sofrem um deslocamento de 2 planos de bit; a
ordem de transmissão é: DCLum MSB, DCLum MSB-1, DCLum MSB-2 e de seguida os
restantes coeficientes.
211
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
Canoa (Cenario 2)
PSNR(dB)
Rugby (Cenario 3)
PSNR(dB)
34
28.5
28
33
27.5
32
27
26.5
31
26
30
25.5
29
25
28
24.5
24
30000
bits/s
50000
70000
90000
110000
130000
PSNR(dB)
Stefan (Cenario 4)
PSNR(dB)
30
27
60000
bits/s
110000
160000
210000
260000
Table (Cenario 5)
35
34.8
29.5
34.6
29
34.4
28.5
34.2
28
34
27.5
33.8
27
33.6
26.5
26
120000
33.4
bits/s
170000
220000 270000
320000
370000
420000 470000
520000
33.2
240000
bits/s
340000 440000 540000 640000 740000 840000 940000 1040000
Figura 5.10 – Desempenho da melhoria selectiva dos coeficientes DC: a azul o AVC-FGS sem melhoria
selectiva, a vermelho com fgs_vop_dc_enhancement = 1 e a verde com fgs_vop_dc_enhancement = 2.
Tal como era esperado, uma das consequências na atribuição de uma maior importância aos
coeficientes DC é a quebra de PSNR, especialmente para os débitos binários mais altos do intervalo
de codificação. Os valores do PSNR sofrem uma quebra de PSNR entre 0.02 a 0.35 dB para
fgs_vop_dc_enhancement = 1 e entre 0.34 a 0.87 dB para fgs_vop_dc_enhancement = 2. Este facto
pode ser explicado através de um exemplo: considerem-se dois coeficientes Cdc = 28 = (11100)binário e
C1 = 9 = (01001)binário; quando se codificam os dois coeficientes Cdc e C1 sem melhoria selectiva, os
bits transmitidos são os seguintes (sem codificação entrópica): 10,11,10,00,01. Se o fluxo binário for
truncado e apenas dois planos de bit descodificados, o valor reconstruído de Cdc = (11000)binário = 24
e o valor reconstruído de C1 = (01000) binário = 8; o erro quadrático, utilizado no cálculo do PSNR é
(28-24)2 + (9-8)2 = 17. Por outro lado, se se utilizar a melhoria selectiva do coeficiente DC, com
fgs_vop_dc_enhancement = 2, os bits transmitidos são os seguintes: 1,1,10,01,00,00,00. Se apenas
forem descodificados três planos de bit (de forma a manter o número de bits descodificados de 4) o
valor reconstruído de Cdc = (11100)binário = 28 e o valor reconstruído de C1 = (00000) binário = 0. É
claro que o valor do coeficiente DC possui uma maior exactidão que C1; no entanto, o valor do erro
quadrático (28-28)2 + (9-0)2 = 81 é mais elevado, causando um valor de PSNR inferior. Desta forma,
à medida que o débito binário aumenta as frequências mais elevadas possuem valores menos exactos
quando comparadas com o AVC-FGS sem melhoria selectiva dos coeficientes DC, levando a
valores de PSNR inferiores. Tal como se tinha mencionado para o MPEG-4 FGS, uma avaliação
subjectiva pode indicar o contrário, ou seja, que a qualidade visual da sequência descodificada é
superior.
Finalmente, salientam-se as propriedades da técnica aqui proposta em relação à melhoria selectiva do
MPEG-4 FGS. Com a melhoria selectiva dos coeficientes DC incorporada no AVC-FGS, não é
212
CAPÍTULO 5 ― ESCALABILIDADE FINA DE VÍDEO AVC-FGS
necessário qualquer processamento adicional (apenas uma reorganização do fluxo binário), uma vez
que os coeficientes DC são codificados separadamente dos restantes. Ao contrário, no MPEG-4
FGS é necessário elevar os coeficientes de baixa frequência para um plano de bit superior, efectuar o
varrimento em zig-zag para todos os coeficientes que pertençam a um dado plano de bit e,
finalmente, codificar entropicamente os símbolos (RUN, EOP) resultantes. A norma MPEG-4 FGS
define mais oito tabelas para efectuar a codificação entrópica, pois a estatística dos símbolos é
alterada quando se elevam os coeficientes de baixa frequência para um determinado plano de bit.
Como desvantagem, o método aqui proposto apenas suporta a melhoria selectiva dos coeficientes
DC ao contrário do MPEG-4 FGS que permite a melhoria selectiva de qualquer número de
coeficientes de baixa frequência. Um estudo subjectivo mais detalhado seria necessário para
determinar se é suficiente fazer apenas a melhoria selectiva dos coeficientes DC ou se mais
coeficientes de baixa frequência devem poder ser considerados.
5.7
Conclusões
Neste Capítulo apresentou-se um nova solução para a codificação escalável de vídeo, incorporando
algumas das ferramentas especificadas na norma H.264/AVC. O sistema escalável AVC-FGS
proposto mantém as mesmas características que o sistema escalável MPEG-4 FGS ou seja adaptação
fina ao débito binário disponível, robustez a erros, etc. Na camada superior da solução AVC-FGS
são utilizadas as transformadas DCT inteira e de Hadamard em blocos de dimensão 4×4 e 2×2.
Estas transformadas possuem uma baixa complexidade e eliminam o erro entre diferentes
implementações da transformada (mismatch error). O codificador entrópico da camada superior utiliza
o esquema UVLC com códigos exp-Golomb de comprimento variável e construção regular. Este
esquema possui uma baixa complexidade e permite a utilização de uma única tabela VLC,
responsável pela atribuição de cada elemento de sintaxe à palavra de código correspondente. De
forma a obter esta tabela, realizou-se um estudo estatístico da distribuição dos símbolos (run, EOP) e
do fgs_cbp para os vários planos de bit. Com base neste estudo, desenhou-se uma única tabela VLC
com uma dimensão inferior ao conjunto de tabelas VLC da norma MPEG-4 FGS. Para projectar
um sistema equivalente ao MPEG-4 FGS, também a solução AVC-FGS proposta neste capítulo não
usa compensação de movimento na camada superior o que tem limitações evidentes em termos da
eficiência de compressão.
Com vista a avaliar o desempenho do sistema proposto, várias configurações de teste foram
estudadas com vista a responder às seguintes questões:
― Qual é o ganho de desempenho resultante da introdução da codificação não escalável
H.264/AVC na camada base substituindo a solução MPEG-4 ASP ?
― Qual é o desempenho relativo do AVC-FGS em relação ao MPEG-4 FGS quando se usa o
H.264/AVC na camada base ?
― Qual é a quebra de desempenho do AVC-FGS em relação à codificação não escalável
H.264/AVC para débitos semelhantes ?
Em relação à primeira questão, a introdução do H.264/AVC na camada base permitiu uma melhoria
significativa da qualidade (PSNR) em todos os cenários e débitos, com um valor médio mínimo de
213
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
2.57 dB e máximo de 3.9 dB. Em relação à segunda questão, a introdução do AVC-FGS possui um
desempenho ligeiramente inferior em relação ao MPEG-4 FGS, devido ao tipo de codificação
entrópica adoptado (quebras de desempenho médias entre 0.08 e 0.32 dB). Deve contudo salientarse a mais baixa complexidade do AVC-FGS em relação ao MPEG-4 FGS, tanto em termos da
transformada utilizada como do esquema de codificação entrópica. Esta redução de complexidade
irá facilitar a introdução de ferramentas de compensação de movimento na camada superior (ver
Capítulo 6) sem sacrificar demasiado a complexidade global do sistema. A resposta à terceira questão
mostrou qual a diferença de desempenho entre a solução escalável AVC-FGS e a solução não
escalável H.264/AVC, com uma quebra de desempenho média entre 1.3 e 3.7 dB. O próximo
capítulo concentra-se na diminuição desta diferença de desempenho através da integração das
ferramentas de compensação de movimento H.264/AVC na camada superior da solução AVC-FGS
aqui proposta.
214
Capítulo 6
6 Escalabilidade fina de vídeo AVC-MCFGS
Nos sistemas de escalabilidade fina até agora estudados, MPEG-4 FGS e AVC-FGS, o codificador
da camada base explora a redundância temporal entre tramas através de algoritmos de compensação
de movimento (predição Inter), usa em simultâneo algoritmos que tiram partido da redundância
espacial (predição Intra) e explora ainda a distribuição estatística dos símbolos (codificação
entrópica). Normalmente, o codificador da camada base gera um fluxo binário com um débito
constante e com uma qualidade relativamente baixa. O fluxo binário da camada base pode ser
transmitido num canal robusto de forma a minimizar a ocorrência de erros ou com uma maior
prioridade através de uma rede com essa capacidade. No entanto, uma das características mais
importantes dos esquemas escaláveis de codificação de vídeo MPEG-4 FGS e AVC-FGS (a partir de
agora ambos referidos como esquemas FGS) é a forma como se obtém a camada superior. A
camada superior codifica a diferença entre a imagem descodificada da camada base e a imagem
original ― predição no domínio do espaço ― ou a diferença entre os coeficientes inversamente
quantificados da camada base e os coeficientes correspondentes à imagem original ― predição no
domínio da frequência. Nos sistemas FGS estudados, a imagem residual é representada através de
planos de bit de forma a permitir uma adaptação fina às características da rede, sendo estes
entrópicamente codificados.
Quando a arquitectura do codificador escalável de vídeo não possui realimentação na camada
superior, i.e. as imagens da camada superior são sempre obtidas a partir da camada base, a
arquitectura do codificador é referida como open-loop e as imagens da camada superior são
normalmente referidas como imagens do tipo I (Intra). Um esquema de codificação escalável do tipo
open-loop oferece uma excelente capacidade de recuperação quando ocorrem erros na camada
superior, pois normalmente assume-se que, de alguma forma, a camada base é descodificada intacta.
Como a predição é obtida a partir apenas da camada base, os erros não se propagam ao longo do
tempo, minimizando os efeitos negativos que a ocorrência de erros possui. Por outro lado, na
camada base, um único erro de bit pode causar estragos significativos, especialmente se nenhuma
acção (e.g. através de técnicas de cancelamento de erros) for tomada para limitar a extensão da
propagação do erro. A compensação de movimento permite que, na camada base, o erro se
propague tanto espacialmente como temporalmente.
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
A arquitectura escalável open-loop utilizada nos codificadores FGS possui várias vantagens, e.g. baixa
complexidade, resiliência a erros, degradação suave da qualidade quando a largura de banda diminui,
normalmente à custa de uma eficiência de codificação mais baixa. Na verdade, o MPEG-4 FGS
apresenta uma quebra de desempenho em termos de eficiência em comparação com a codificação
não escalável (perfil ASP), tal como foi demonstrado no estudo efectuado na Secção 3.6. A diferença
de desempenho do MPEG-4 FGS em relação ao MPEG-4 ASP chega a atingir uma quebra de 5 dB
para o parâmetro dPSNR, para sequências com uma elevada correlação entre tramas (e.g. Boat). De
igual modo, o codificador AVC-FGS apresentado no Capítulo anterior apresenta um desempenho
inferior em comparação com o codificador não escalável H.264/AVC, com quebras de desempenho
ainda maiores para muitos cenários e sequências (ver Secção 5.6.3). A principal razão para esta
significativa quebra de desempenho é essencialmente motivada pela arquitectura open-loop adoptada,
o que implica que o módulo de compensação de movimento esteja ausente do codificador
correspondente à camada superior. Deste modo, o codificador da camada superior não explora a
redundância temporal entre as imagens residuais a codificar e a imagem de referência/predição
utilizada pelo módulo de compensação de movimento da camada base é sempre obtida a partir da(s)
imagem(s) anteriormente descodificadas com baixa qualidade (i.e. a qualidade da camada base). Num
codificador não escalável, a predição é sempre obtida a partir da(s) imagem(ens) descodificadas com
a maior qualidade possível ou seja das imagens descodificadas com todo o débito nelas investido.
Para que a escalabilidade fina de vídeo se apresente como uma alternativa mais viável em relação a
outros sistemas de distribuição de vídeo (e.g. simulcast, transcoding), é necessário melhorar o
desempenho em termos de eficiência dos sistemas de codificação escalável de vídeo, nomeadamente
dos sistemas até agora estudados: MPEG-4 FGS e AVC-FGS em relação à codificação não escalável
MPEG-4 ASP e H.264/AVC, respectivamente. O principal desafio consiste em encontrar uma
estrutura de escalabilidade que apresente um melhor desempenho e preserve ao máximo as
vantagens dos sistemas de codificação escalável open-loop. A ideia chave para isso consiste em tomar
para predição da camada base ou da camada superior uma referência com uma qualidade superior
(em comparação com o open-loop), i.e. fazer uso da informação da camada superior para se obter uma
referência de predição com mais qualidade. No entanto, este tipo de estrutura acarreta um grave
problema: o efeito de deslize (drift).
O efeito de deslize é definido, neste contexto, como uma diminuição da qualidade do vídeo
descodificado devido à recepção parcial da informação correspondente à imagem de referência (da
camada superior) e pode surgir devido à ocorrência de erros na transmissão ou porque o fluxo
binário correspondente à camada superior foi truncado e o descodificador fornece uma imagem com
uma qualidade inferior em relação aquela que foi utilizada pelo codificador como referência para a
compensação de movimento (MC mismatch). Como se utiliza toda a informação da camada superior
para se efectuar a predição no codificador, quando esta informação não se encontrar (parcialmente
ou completamente) disponível no descodificador, os erros devido à diferença de qualidade entre as
imagens de referência do codificador e descodificador vão ser propagados ao longo do tempo. Os
sistemas open-loop não possuem este problema uma vez que a predição é obtida apenas a partir da
camada base, em princípio sempre disponível. Deste modo, é necessário encontrar uma
estrutura/arquitectura de codificação que minimize o impacto negativo do efeito de deslize mas que
216
CAPÍTULO 6 ― ESCALABILIDADE FINA DE VÍDEO AVC-MCFGS
inclua alguma informação da camada superior de forma a melhorar o desempenho global do sistema
de codificação escalável.
Para melhorar o desempenho do MPEG-4 FGS, várias técnicas têm sido propostas ao grupo
MPEG, nomeadamente o FGS+ [6], PFGS (Progressive Fine Grain Scalability) [11] e RFGS (Robust Fine
Grain Scalability) [3]. No FGS+, o codificador da camada base utiliza uma referência de alta qualidade
para efectuar a compensação de movimento; esta é obtida a partir da camada superior. Esta
abordagem permite obter uma eficiência de codificação superior ao FGS e já semelhante à
codificação não escalável para os débitos binários mais altos usados. No entanto, o efeito de deslize,
nas camadas base e superior, é significativo quando parte da camada superior é cortada ou
corrompida. No PFGS, o problema do deslize e do desempenho é tratado em conjunto; o PFGS
troca eficiência de codificação por um certo nível de robustez a erros de transmissão e de redução
do deslize. Para se alcançar um desempenho superior, o codificador PFGS da camada superior
utiliza uma referência obtida a partir da camada superior e apenas utilizada na camada superior; por
seu lado, o codificador da camada base não sofre qualquer alteração em relação à solução FGS ao
contrário do que acontece com a técnica FGS+. A técnica PFGS, define ao nível de cada
macrobloco da camada superior, três modos de codificação [8]:
1. Modo I: O macrobloco é predito e reconstruído a partir da referência da camada base, tal
como é realizado no FGS para a imagem completa. Este modo pode “parar” a propagação
de erros na camada superior à custa de uma menor eficiência de codificação.
2. Modo II: O macrobloco é predito e reconstruído a partir de uma referência da camada
superior. Utiliza-se este modo para se alcançar uma eficiência de codificação superior,
especialmente quando é utilizado em todos os macroblocos de uma imagem. Neste modo
ocorre o efeito de deslize se a referência da camada superior não se encontrar totalmente
disponível devido a erros de transmissão ou a diminuições da largura de banda.
3. Modo III: O macrobloco é predito a partir da referência da camada superior mas é
reconstruído a partir da referência da camada base. Com este modo pretende-se reduzir o
efeito de deslize, sem penalizar significativamente a eficiência de codificação.
Em [5], um esquema de codificação semelhante ao PFGS é utilizado, mantendo os primeiros dois
modos de codificação ao nível do macrobloco iguais. No entanto, um novo modo foi desenvolvido
em que o macrobloco é predito a partir da média da referência da camada base e da camada
superior, combinando assim os modos I e II. Este modo permite minimizar o efeito de deslize sem
sacrificar o desempenho de uma forma significativa.
No RFGS desenvolveu-se um novo mecanismo para reduzir o efeito de deslize: a predição pesada.
Neste esquema, a imagem de referência de ambas as camadas é obtida a partir da camada superior e
multiplicada por um peso que atenua a propagação de erros, tanto na camada base como na camada
superior. O RFGS necessita de um modelo da largura de banda do canal (conjunto de débitos
binários e respectiva probabilidade de ocorrência) de forma a estimar os pesos a utilizar em cada
trama a codificar. O RFGS permite alcançar um compromisso entre a eficiência de codificação e a
robustez a erros, a partir do conhecimento a priori do comportamento do canal e de uma maior
complexidade do codificador. Neste Capítulo, e no seguimento das propostas de melhoria da
217
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
solução FGS já descritas acima, apresentam-se algumas novas arquitecturas escaláveis de codificação
que abordam o problema do deslize no âmbito do codificador AVC-FGS desenvolvido no contexto
desta tese e apresentado no Capítulo anterior. O objectivo principal é aumentar a eficiência da
codificação sem sofrer demasiado o impacto do deslize.
Um ponto também importante é que, no AVC-FGS tal como no MPEG-4 FGS, a partir do
momento que o fluxo binário da camada base é gerado, existe pouco espaço para optimização do
desempenho do codificador da camada superior uma vez que este é muito simples não incluindo um
módulo de compensação de movimento nem de quantificação (duas áreas onde ocorrem
normalmente os principais avanços na optimização dos codificadores). É também bastante
importante desenhar uma solução de codificação escalável que permita que os vários fabricantes
possam competir desenvolvendo diferentes implementações de forma a, com o tempo, melhorar a
eficiência de codificação. O sucesso de uma nova arquitectura de codificação escalável de vídeo
depende muito desta flexibilidade. Deste modo, a arquitectura aqui proposta suporta algumas
ferramentas que permitem reduzir ou eliminar o efeito de deslize, oferecendo simultaneamente uma
eficiência de codificação superior ao AVC-FGS. No futuro, novas técnicas de redução do efeito de
deslize poderão ser incluídas nesta arquitectura, de forma a alcançar ainda melhores resultados em
relação àqueles aqui apresentados, promovendo assim a competitividade entre diferentes fabricantes.
Resumindo, este Capítulo tem dois objectivos principais:
1. Exploração da compensação de movimento na camada superior: Melhorar o
desempenho do codificador escalável AVC-FGS com a utilização de ferramentas de
compensação de movimento na camada superior. Para alcançar este objectivo, desenvolveuse um novo codificador escalável, referido como AVC-MCFGS, que explora a redundância
temporal na camada superior através de um módulo de compensação de movimento. O
codificador da camada base não sofre qualquer alteração e corresponde ao codificador não
escalável H.264/AVC já utilizado no AVC-FGS. O módulo de compensação de movimento
da camada superior é igual ao utilizado na camada base, o que permite a sua reutilização na
camada superior. Além disso, consegue-se assim tirar partido das características das novas
ferramentas de compensação de movimento do H.264/AVC, responsáveis pelo maior ganho
de desempenho da norma H.264/AVC em relação ao MPEG-4 ASP [7].
2. Redução do efeito de deslize: Reduzir o efeito de deslize e o impacto dos erros de
transmissão na camada superior através de técnicas de gestão de deslize (drift). Para isso,
várias técnicas serão propostas, nomeadamente o CBP (Cyclic BitPlane coding), o ABP
(Adaptative BitPlane coding), o CWBP (Cyclic Weighted BitPlane coding) e o AWBP (Adaptative
Weighted BitPlane coding). Estas técnicas foram definidas de forma a permitir um compromisso
entre a eficiência de codificação e o impacto dos erros e do efeito de deslize na camada
superior.
De salientar que, para implementar as alterações aqui propostas, não é necessário modificar a sintaxe
e semântica do fluxo binário da camada superior definidas na Secção 5.5, alterando-se contudo a
forma como é feita a descodificação. Este Capítulo encontra-se organizado da seguinte forma:
primeiro apresentam-se algumas considerações sobre as várias estruturas de escalabilidade possíveis,
a arquitectura do codificador e descodificador AVC-MCFGS aqui proposto e uma descrição
218
CAPÍTULO 6 ― ESCALABILIDADE FINA DE VÍDEO AVC-MCFGS
detalhada dos módulos de compensação de movimento presentes no codificador da camada
superior. De seguida, apresentam-se as várias técnicas de gestão de deslize e, finalmente, o
desempenho do AVC-MCFGS em relação ao AVC-FGS.
6.1
Estrutura de escalabilidade
No MPEG-4 FGS e AVC-FGS (referidos de seguida simplesmente como FGS), a camada superior é
sempre obtida apenas a partir da camada base. Desta forma garante-se que as referências utilizadas
no codificador e no descodificador são sempre iguais, mesmo que a camada superior não seja
transmitida/recebida. Esta estrutura de escalabilidade possui algumas vantagens, tais como evitar a
propagação de erros na camada superior, a ausência do efeito de deslize, baixa complexidade, etc.
No entanto, ao utilizar-se para predição a referência de mais baixa qualidade (obtida a partir da
camada base), a eficiência do FGS é seriamente comprometida. Deste modo, coloca-se uma questão
importante:
Existe alguma estrutura de escalabilidade que apresente um desempenho superior mantendo intactas as vantagens em
termos de escalabilidade da arquitectura FGS ?
Para tentar responder a esta questão, vão analisar-se de seguida três tipos de estruturas de
escalabilidade possíveis: Inter-layer, Intra-layer e Intra/Inter-layer. Por questões de simplicidade,
apresentam-se apenas estruturas de escalabilidade com imagens do tipo P (usando uma única
imagem de referência); no entanto, as considerações a fazer valem também para imagens do tipo B
ou para imagens do tipo P com mais de uma imagem de referência (no passado).
Estrutura Inter-layer
Nesta solução, introduz-se um conjunto de planos de bit da camada superior no módulo de
compensação de movimento da camada base (ver Figura 6.1a), i.e. a referência de predição utilizada
pelo codificador da camada base possui uma qualidade acrescida (em relação às referências obtidas a
partir da camada base) à custa de informação obtida a partir da camada superior (daí o nome interlayer). Esta solução é fácil de implementar e possui uma baixa complexidade, pois apenas é
necessário somar à imagem de referência da camada base, a imagem residual obtida a partir dos
planos de bit mais significativos da camada superior. No entanto, se os planos de bit utilizados para
obter a imagem de referência do codificador da camada base não tiverem sido recebidos ou tiverem
sido corrompidos durante a transmissão, esta solução vai introduzir um efeito de deslize significativo
na camada base (que habitualmente é descodificada intacta) e consequentemente na camada
superior. Além disso, esta solução estabelece uma dependência (até agora não existente) entre o
codificador da camada base e o codificador da camada superior, i.e. uma trama da camada base só
pode agora ser codificada se a camada superior estiver disponível. Este acoplamento não é desejável
em aplicações de transcodificação (transcoding) para as quais é desejável, por exemplo, poder obter
uma representação não escalável a partir de um fluxo binário escalável, sem ser necessário tornar a
codificar a camada base.
A estrutura inter-layer permite alcançar um desempenho superior ao FGS apenas quando os planos de
bit utilizados como referência são todos recebidos; caso contrário (i.e. para os débitos binários mais
baixos do intervalo de codificação), o desempenho é inferior em relação ao FGS e no caso limite
219
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
(quando a camada superior não se encontra disponível) pode atingir quebras de desempenho até 2.0
dB, nomeadamente nas condições apresentadas em [12]. Na Figura 6.1, apresenta-se o
funcionamento da estrutura de escalabilidade Inter-layer quando não ocorrem erros na transmissão e
o impacto de um erro na camada superior nas tramas seguintes das camadas base e superior. A
camada base é codificada com um débito binário Rbl e a camada superior é codificada com elevada
granularidade usando um débito binário máximo Rmax; o número de planos de bit mais significativos
utilizados para predição é Nref. Tal como é ilustrado, o impacto de erros na transmissão dos Nref
planos de bit da camada superior é significativo, pois a ocorrência de um erro (e.g. perda de um
pacote) nesses planos de bit propaga-se para as próximas tramas da camada base e da camada
superior.
a)
b)
Figura 6.1 – Estrutura de escalabilidade Inter-layer: a) sem erros; b) com erros na camada superior.
De forma a evitar o efeito de deslize e o impacto dos erros de transmissão, é habitual melhorar a
referência da camada base com informação da camada superior, apenas em tramas que não sejam
utilizadas como referência no futuro, e.g. tramas B, reduzindo o efeito de deslize e o impacto dos
erros de transmissão, ainda que à custa de um desempenho de compressão inferior.
Estrutura Intra-layer
Nesta solução, explora-se a redundância temporal na camada superior através da introdução de um
módulo de compensação de movimento nesta camada (ver Figura 6.2a). Deste modo, existem duas
tramas de referência: uma para a camada base obtida a partir de tramas que pertencem à camada
base (LQR - Low Quality Reference) e outra para a camada superior obtida a partir dos planos de bit
mais significativos da camada superior e da imagem descodificada (domínio do tempo) da camada
base (HQR - High Quality Reference) – daí o nome intra-layer. A referência da camada superior possui
maior qualidade que a referência da camada base. Esta solução implica uma complexidade superior,
uma vez que são necessários dois módulos de compensação de movimento e uma capacidade de
memória acrescida, uma vez que é necessária outra memória para guardar a imagem HQR. No
entanto, esta solução tem várias vantagens: i) elimina o efeito de deslize na camada base; ii) permite
uma flexibilidade superior na optimização do codificador; iii) permite oferecer novas
funcionalidades, tais como escalabilidade espacial [10].
Quanto ao desempenho, como existem duas referências separadas, a camada base é descodificada
intacta e possui a mesma qualidade que o FGS e a codificação não escalável para um determinado
débito binário. Por outro lado, se alguns planos de bit utilizados para obter a referência HQR não
forem recebidos (e.g. por limitações do débito binário disponível no canal), a HQR do
descodificador da camada superior não é igual à HQR do codificador (MC mismatch) e irá ocorrer
220
CAPÍTULO 6 ― ESCALABILIDADE FINA DE VÍDEO AVC-MCFGS
efeito de deslize ainda que apenas na camada superior. A Figura 6.2b) ilustra esta situação: neste
exemplo, alguns dos Nref planos de bit de algumas tramas não são transmitidos (a linha vermelha
corresponde ao débito binário disponível no canal de transmissão) o que irá introduzir deslize no
vídeo descodificado a partir da camada superior. Assim, o desempenho da estrutura Intra-layer apenas
é inferior ao FGS, quando os Nref planos de bit utilizados como predição, não forem recebidos; i.e.
apenas para os débitos binários mais baixos do intervalo de codificação [Rbl, Rmax]. No entanto, esta
desvantagem pode ser ultrapassada através de técnicas de estimação/redução do efeito de deslize
que evitem a propagação de erros na camada superior, e.g. codificando alguns macroblocos da
camada superior como no FGS (i.e. preditos apenas a partir da camada base); estes macroblocos
atenuariam o efeito de deslize à custa de um inferior desempenho. De salientar que, na estrutura
Inter-layer anterior, esta flexibilidade não é possível sem influenciar negativamente o desempenho da
camada base, pois a compensação de movimento apenas é realizada no codificador da camada base.
Camada superior
Camada superior
RMAX
Nref
P
P
P
P
RMAX
Nref
RBL
I
Camada superior
RMAX
Nref
RBL
I
Camada Base
a)
P
P
Camada base
b)
P
P
RBL
I
P
P
P
P
Camada base
c)
Figura 6.2 – Estrutura de escalabilidade Intra-layer: a) sem erros b) adaptação à largura de banda disponível e c)
com erros na camada superior.
Na Figura 6.2c), apresenta-se o impacto dos erros de transmissão na estrutura Intra-layer. Tal como é
ilustrado, se um erro ocorrer nos Nref planos de bit mais significativos, este irá ser propagado para as
tramas seguintes da camada superior, deixando a camada base intacta. Se uma trama da camada
superior for codificada em modo Intra (predita apenas a partir da camada base), esta trama irá parar
a propagação dos erros de transmisssão (e do efeito de deslize); note-se que para parar a propagação
dos erros na estrutura Inter-layer é necessário introduzir uma trama Intra na camada base e na camada
superior.
Até aqui, apresentaram-se várias vantagens desta estrutura (Intra-layer) em relação à estrutura
anteriormente apresentada (Inter-layer), e.g. descodificação intacta da camada base, superior
flexibilidade, etc. No entanto, a estrutura Intra-layer possui um desempenho inferior [12] em relação à
estrutura Inter-layer, uma vez que existe alguma redundância entre a referência da camada base (LQR)
e da camada superior (HQR). Além disso, como as referências da camada base e da camada superior
têm qualidades diferentes, existe alguma flutuação no sinal residual a codificar na camada superior
(aumento da gama dinâmica), que apenas pode ser removida quando se utiliza uma referência de alta
qualidade na camada base [12].
Estrutura Intra/Inter-layer
Outro tipo de estrutura possível resulta da combinação da estrutura Intra-layer com a estrutura Interlayer (daí o nome intra/inter-layer). Esta estrutura possui, tal como a anterior, dois módulos de
compensação de movimento: um na camada base e outro na camada superior. A imagem de
referência da camada base é obtida a partir dos N’ref planos de bit mais significativos da camada
221
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
superior e da imagem descodificada da camada base (domínio do tempo) enquanto que a imagem de
referência da camada superior é obtida a partir dos Nref planos de bit mais significativos e da imagem
descodificada da camada base. A Figura 6.3 ilustra esta estrutura.
Figura 6.3 – Estrutura de escalabilidade Intra/Inter-layer:
Normalmente, quando se utiliza uma estrutura deste tipo, tem-se N’ref < Nref , de forma a que o
efeito de deslize na camada base seja pouco significativo quando a camada superior não estiver
presente. Este tipo de estrutura é normalmente utilizado em conjunto com técnicas de redução do
efeito de deslize, e.g. predição parcial (leaky prediction) [1]. Com uma gestão cuidadosa do efeito de
deslize, é possível alcançar um desempenho superior em relação à estrutura Intra-layer para uma
ampla gama de débitos binários. No entanto, quando é apenas recebida a camada base, esta estrutura
apresenta perdas até 2.5 dB [4], uma vez que a informação da camada superior (necessária na
camada base) não se encontra disponível.
Depois de estudadas as várias estruturas de escalabilidade possíveis, com vista a melhorar o
desempenho do sistema AVC-FGS apresentado no Capítulo anterior, decidiu-se optar pela estrutura
de escalabilidade Intra-layer para o codificador a propor neste Capítulo (AVC-MCFGS). Esta decisão
baseou-se em três motivos principais:
1. O efeito de deslize está apenas confinado à camada superior.
2. Mesmo que ocorram erros na camada superior, estes nunca se propagam para a camada base
que é sempre descodificada intacta (supondo que é transmitida numa canal robusto).
3. Permite uma flexibilidade superior em relação à estrutura Inter-layer, i.e. podem ser
desenvolvidas técnicas de gestão de deslize sem modificar a arquitectura do codificador da
camada base.
Note-se que é fácil adaptar a estrutura Intra-layer adoptada para uma estrutura híbrida Intra/Inter-layer,
melhorando assim o desempenho do algoritmo AVC-MCFGS à custa do acoplamento da camada
base com a camada superior.
6.2
Arquitectura AVC-MCFGS
Na Figura 6.4, apresenta-se a arquitectura do codificador AVC-MCFGS constituída por dois andares
de codificação: um para a camada base e outro para a camada superior, tal como a norma MPEG-4
FGS e o sistema AVC-FGS. A arquitectura AVC-MCFGS foi desenvolvida a partir da arquitectura
AVC-FGS, apresentado no Capítulo anterior. Deste modo, no AVC-MCFGS, o codificador da
222
CAPÍTULO 6 ― ESCALABILIDADE FINA DE VÍDEO AVC-MCFGS
camada base obedece à norma H.264/AVC e o codificador da camada superior mantém os módulos
de codificação entrópica (VLC) e da transformada (T) iguais aos definidos para o AVC-FGS. No
entanto, em comparação com o AVC-FGS, foram adicionados um conjunto reduzido de módulos
que incluem a compensação de movimento, a transformada inversa (IT) e uma memória adicional
(os módulos a azul são os novos módulos do AVC-MCFGS em comparação com o AVC-FGS).
Esta arquitectura obedece à estrutura Intra-layer definida na Secção anterior e é normalmente referida
na literatura como arquitectura two-loop, pois possui duas memórias e dois módulos de compensação
de movimento.
Codificador H.264/AVC
Entrada
de Vídeo
T
Q
Fluxo binário
da camada base
VLC
IQ
Estimação de
movimento
IT
Vectores de
movimento
LQR
Compensação
de movimento
Memória 0
Filtro
Decisão
Intra/Inter
S
Planos
de bit
T
VLC
N
Fluxo binário da
camada superior
ref
IT
Decisão
Intra/Inter
HQPI
S
Compensação
de movimento
HQR
Memória 1
Codificador MCFGS da camada superior
Figura 6.4 – Arquitectura do codificador AVC-MCFGS.
O módulo de compensação de movimento da camada superior desenvolvido pelo autor é
semelhante ao módulo de compensação de movimento da camada base ou seja do H.264/AVC
(perfil Baseline). Logo, a compensação de movimento na camada superior suporta as seguintes
ferramentas:
1. Compensação de movimento estruturada em árvore;
2. Compensação de movimento a ¼ de pixel;
3. Múltiplas imagens de referência.
Uma diferença importante entre o codificador da camada base e o codificador da camada superior é
a ausência do filtro de bloco adaptativo e do módulo de quantificação (Q) na camada superior. Tal
como no AVC-FGS (ou MPEG-4 FGS), no AVC-MCFGS, a quantificação é realizada ou no
servidor de vídeo (através do corte do fluxo binário) ou quando se especifica o número de planos de
223
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
bit a codificar pela camada superior (o que corresponde a uma gama de débito binário [Rbl, Rmax]). A
ausência do filtro de bloco H.264/AVC justifica-se pela impossibilidade de o adaptar ao codificador
da camada superior, uma vez que os parâmetros que determinam a força e o número de amostras a
filtrar dependem da qualidade da imagem descodificada (e.g. através do passo de quantificação), o
que para o AVC-MCFGS não se pode determinar na altura da codificação (já que a qualidade da
imagem descodificada depende da quantidade de informação da camada superior transmitida pelo
servidor e essa não se sabe na altura da codificação).
A memória 0 no codificador da camada base é utilizada para guardar a(s) imagem(s) de referência da
camada base e a memória 1 no codificador da camada superior é utilizada para guardar a(s)
imagem(s) de referência da camada superior. Como o codificador da camada base obedece ao perfil
Baseline, não são permitidas imagens do tipo B e todas as imagens de referência são obtidas a partir
de imagens anteriormente descodificadas e que se encontram no passado. Cada memória é utilizada
para guardar uma ou mais imagens de referência:
1. Memória 0 (LQR): Esta(s) referência(s) é(são) obtida(s) a partir da(s) trama(s)
anteriormente descodificada(s) da camada base e representa(m) a(s) referência(s) com a
menor qualidade obtida no AVC-MCFGS ou seja a referência correspondente à camada base
(ausência da camada superior).
2. Memória 1 (HQR): Esta(s) referência(s) é(são) obtida(s) a partir da(s) trama(s)
anteriormente descodificada(s) da camada base e de alguns (Nref) planos de bit da camada
superior. Esta(s) referência(s) possui(possuem) uma qualidade superior em relação à
referência LQR e é(são) utilizada(s) para efectuar a predição na camada superior.
A memória 1 encontra-se sincronizada com a memória 0, i.e. as imagens de referência na memória 0
e na memória 1 correspondem ao mesmo instante temporal, e.g. se a memória 0 contiver as tramas
{N-1, N-2, N-4}, a memória 1 irá conter as mesmas tramas, mas com uma qualidade superior. Os
vectores de movimento utilizados pelo módulo de compensação de movimento da camada base são
reutilizados pelo módulo de compensação de movimento da camada superior, o que evita a
transmissão de novos vectores de movimento na camada superior. Esta característica é desejável,
uma vez que é difícil representar os vectores de movimento de uma forma escalável e a ocorrência
de erros de transmissão (frequentes na camada superior) neste tipo de informação possui efeitos
desastrosos (MC mismatch). Assim é preferível que os vectores de movimento sejam transmitidos na
camada base pois normalmente a camada base é descodificada intacta (e.g. através de técnicas de
codificação de canal, mecanismos de prioridade, etc). Além disso, os vectores de movimento são
estimados entre a imagem descodificada da camada base (com uma determinada qualidade) e a
imagem original a codificar; no codificador da camada superior não se pode determinar qual é a
qualidade da imagem na altura da codificação, pois esta é determinada pelo servidor, mediante as
características do canal de transmissão. Uma consequência desta escolha é que quando o codificador
da camada base decide codificar um macrobloco ou uma imagem no modo Intra (para a qual não é
enviado nenhum vector de movimento), o codificador da camada superior é obrigado a fazer a
mesma escolha, o que retira alguma flexibilidade ao sistema. De salientar, que o contrário não é
necessariamente verdade, pois o codificador da camada superior pode codificar alguns macroblocos
224
CAPÍTULO 6 ― ESCALABILIDADE FINA DE VÍDEO AVC-MCFGS
ou uma imagem no modo Intra, mesmo que estes tenham sido codificados no modo Inter na
camada base.
Predição Intra no AVC-MCFGS
O codificador AVC-MCFGS pode efectuar a predição da camada superior a partir da camada base
(referência LQR), accionando convenientemente o interruptor S (a verde na Figura 6.4); este modo é
referido como Intra. Neste caso, a arquitectura do codificador AVC-MCFGS, torna-se equivalente à
arquitectura AVC-FGS. Assim, calcula-se na camada superior a diferença entre a imagem original e a
imagem descodificada da camada base para o mesmo instante de tempo; neste caso, a compensação
de movimento na camada superior não é efectuada. Como uma imagem do tipo Intra é utilizada
como referência se a próxima imagem for do tipo P (Inter), é necessário actualizar a referência HQR
com a soma da imagem descodificada da camada base com o conjunto (Nref) de planos de bit da
camada superior.
Predição Inter no AVC-MCFGS
No modo Inter, a referência HQR é utilizada pelo módulo de compensação de movimento da
camada superior para se obter a predição HQPI (High Quality Predicted Image). De seguida, obtém-se a
imagem residual a codificar a partir da predição HQPI e da imagem residual da camada base (a azul),
através de duas subtracções. Esta arquitectura obedece à estrutura Intra-layer da Figura 6.2, pois a
imagem do tipo P a codificar na camada superior é obtida a partir de duas predições (que
correspondem às duas subtracções): uma para a camada base (a azul) e outra para a camada superior
obtida a partir de imagem(ns) anteriormente codificadas da camada superior (HQPI).
Como uma imagem do tipo P pode ser utilizada como referência, somam-se Nref planos de bit da
camada superior à imagem residual da camada base e à predição HQPI obtida através da
compensação de movimento, i.e. obtêm-se a referência HQR que irá ser utilizada quando se codifica
a próxima imagem P da camada superior.
Descodificador AVC-MCFGS
Na Figura 6.4, apresenta-se a arquitectura do descodificador AVC-MCFGS que inclui duas
memórias para predição. Se apenas se utilizar o modo Intra, o descodificador AVC-MCFGS é
equivalente ao descodificador AVC-FGS. Deste modo, se o codificador AVC-MCFGS codificar
todas as imagens no modo Intra, o fluxo binário gerado pode ser descodificado por um
descodificador AVC-FGS (compatibilidade inversa). O descodificador AVC-MCFGS em
comparação com o AVC-FGS necessita de mais um módulo de transformada inversa, uma memória
e um módulo de compensação de movimento (a azul na Figura 6.4).
No AVC-MCFGS, a memória 0 guarda a referência LQR utilizada na camada base e na camada
superior e a memória 1 guarda a referência HQR, utilizada na camada superior. Tal como no
codificador, o interruptor S controla qual é a referência utilizada na camada superior: no modo Intra
é utilizada a referência LQR e no modo Inter é utilizada a referência HQR e o sinal residual da
camada base (depois da transformada inversa). A referência HQR é obtida a partir da camada base e
de Nref planos de bit da camada superior; o valor Nref é transmitido no cabeçalho de cada trama
através do elemento de sintaxe fgs_vop_mc_bit_plane_used. Para o modo Inter (a azul), a imagem
descodificada é obtida somando o sinal residual correspondente a todos os planos de bit recebidos,
225
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
com o sinal residual da camada base e a predição HQPI obtida a partir do módulo de compensação
de movimento da camada superior.
Descodificador H.264/AVC
Fluxo binário da
camada base
VLD
IQ
IT
Saída de vídeo
camada base
Filtro
Vectores de
movimento
Compensação
de movimento
LQR
Memória 0
Decisão
Intra/Inter
S
Nref
Fluxo binário da
camada base
VLD
Planos
de bit
HQPI
IT
Compensação
de movimento
Decisão
Intra/Inter
S
Memória 1
IT
Vectores de
movimento
HQR
Saída de vídeo
camada base +
camada superior
Descodificador MCFGS da camada superior
Figura 6.5 – Arquitectura do descodificador AVC-MCFGS.
Por questões de simplicidade, omitiu-se da arquitectura do descodificador e do codificador, os
módulos de (des)multiplexagem dos coeficientes DC de luminância com os restantes coeficientes e o
módulo de saturação (ver Secção 5.1). O módulo de multiplexagem está presente a seguir à
codificação entrópica VLC e o módulo de desmultiplexagem antes da descodificação entrópica
VLD. O módulo de saturação também é necessário e encontra-se antes da memória 0 e 1 dos
codificadores das camadas base e superior, respectivamente.
6.3
Compensação de movimento AVC-MCFGS
A principal novidade da arquitectura AVC-MCFGS proposta é a introdução de um módulo de
compensação de movimento na camada superior. Este tipo de ferramenta permite explorar a
redundância temporal a um nível de qualidade superior, através da referência HQR, construída a
partir da camada base e de um conjunto (Nref) de planos de bit mais significativos da camada
superior. No entanto, este tipo de compensação de movimento pode causar uma degradação da
qualidade da imagem descodificada se a referência HQR usada no descodificador não for igual à
referência HQR usada no codificador. Sempre que uma parte dos Nref planos de bit não for
recebida, por exemplo devido a flutuações na largura de banda ou a perda de pacotes, as referências
de codificação e descodificação são diferentes e logo ocorre o efeito de deslize. Este efeito
caracteriza-se por uma degradação da qualidade da imagem descodificada através da propagação de
erros na camada superior. O efeito de deslize é travado quando o descodificador recebe uma
imagem do tipo Intra, predita apenas a partir da camada base, em princípio completamente
disponível. Saliente-se que, nos sistemas FGS open-loop, o efeito de deslize não ocorre uma vez que
226
CAPÍTULO 6 ― ESCALABILIDADE FINA DE VÍDEO AVC-MCFGS
todas as imagens são do tipo Intra. A Figura 6.6 exemplifica o efeito de deslize presente na solução
AVC-MCFGS, colocando lado a lado duas imagens descodificadas com um débito binário de 288
kbit/s, uma delas codificada com o AVC-FGS e outra com o AVC-MCFGS com Nref = 3. Para esta
sequência e parâmetros de codificação (resolução espacial CIF e resolução temporal 15 Hz),
descodificar o fluxo binário AVC-MCFGS a 288 kbit/s implica que alguns planos de bit utilizados
como referência no codificador da camada superior não estão disponíveis no descodificador,
ocorrendo assim o efeito de deslize. Subjectivamente, o efeito de deslize traduz-se por um
arrastamento de certas zonas da imagem e é mais visível nos contornos dos objectos da cena.
b)
a)
Figura 6.6 – Efeito de deslize na trama 117 da sequência Table, descodificada a 288 kbit/s: a) AVC-FGS e b)
AVC-MCFGS com Nref = 3.
A compensação de movimento na camada superior utiliza a referência HQR, obtida a partir da
camada base e de alguns planos de bit (Nref) da camada superior. Com Nref > 0, a referência HQR
possui uma qualidade superior à referência LQR utilizada na camada base. O parâmetro Nref
estabelece o número de planos de bit mais significativos utilizados na referência HQR e pode ser
escolhido ao nível da imagem; como é evidente, Nref não pode exceder o número máximo de planos
de bit usado para codificar uma determinada imagem. À medida que o valor de Nref aumenta,
explora-se de uma forma mais eficiente a redundância temporal do sinal residual a codificar na
camada superior, aumentando assim o desempenho da codificação. Por outro lado, o efeito de
deslize também aumenta se os planos de bit utilizados como referência não estiverem disponíveis no
descodificador. Através do parâmetro Nref, consegue-se trocar desempenho em termos de eficiência
com robustez a erros e ao efeito de deslize. Na Figura 6.7 apresenta-se a variação do PSNR em
função do débito binário para a sequência Boat codificada com o AVC-FGS e o AVC-MCFGS com
Nref = 2, 3 e 4. A camada base e a camada superior são codificadas com uma estrutura do tipo
IPPP(P) de forma a acentuar o efeito de deslize na camada superior; o débito da camada base é de
128 kbit/s e o intervalo de codificação da camada superior é [128 kbit/s, 1024 kbit/s].
227
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
Sequência Boat
PSNR(dB)
39
37
35
33
AVC -FGS
AVC -MC FGS (Nref=2)
AVC -MC FGS (Nref=3)
AVC -MC FGS (Nref=4)
31
29
bits/s
27
0
200000
400000
600000
800000
1000000
1200000
Figura 6.7 – Comparação do AVC-FGS com o AVC-MCFGS com Nref = {2,3,4} para a sequência Boat.
Tal como se pode verificar nos gráficos PSNR da Figura 6.7, o AVC-MCFGS apenas apresenta um
desempenho superior ao AVC-FGS para Nref = {2,3} e para os débitos binários mais altos do
intervalo de codificação, apresentando um desempenho inferior para os débitos binários mais
baixos. Esta característica corresponde ao que era esperado: para os débitos binários mais baixos, os
planos de bit utilizados como referência na camada superior não são recebidos pelo descodificador,
registando-se então uma quebra de desempenho em comparação com o AVC-FGS devido ao efeito
de deslize. A quebra de desempenho nos débitos binários baixos é superior à medida que o
parâmetro Nref aumenta, uma vez que a referência HQR utilizada pelo descodificador e a referência
HQR utilizada pelo codificador possuem uma diferença de qualidade cada vez maior; logo, a
propagação dos erros de reconstrução (causados pelo efeito de deslize) é mais significativa. Para os
débitos binários mais altos do intervalo de codificação, o desempenho do AVC-MCFGS (Nref =
{2,3}) é superior ao AVC-FGS uma vez que todos os planos de bit utilizados como referência na
camada superior são já recebidos. Para Nref = 2, apenas a partir de 520 kbit/s o desempenho do
AVC-MCFGS é igual ao do AVC-FGS (ponto crítico) e à medida que o débito binário aumenta o
desempenho do AVC-MCFGS também aumenta, chegando a atingir um ganho de 1.5 dB para 1
Mbit/s. Para Nref = 3, o ponto crítico desloca-se para 960 kbit/s e, para Nref = 4, o ponto crítico é
superior a 1 Mbit/s; como consequência, o desempenho do AVC-MCFGS é sempre inferior ao
AVC-FGS, uma vez que o intervalo de codificação estudado é de 128 kbit/s a 1 Mbit/s.
Desta forma, conclui-se que a introdução do módulo de compensação de movimento na camada
superior do AVC-MCFGS apenas constitui uma mais valia em relação ao AVC-FGS, para uma gama
restrita de débitos binários. O número de planos de bit utilizados como referência na camada
superior constitui o principal parâmetro que influencia o desempenho do AVC-MCFGS. Em
comparação com o AVC-FGS, o desempenho do AVC-MCFGS, para qualquer valor de Nref, sofre
uma quebra considerável para a gama mais baixa de débitos binários. Novas técnicas que minimizem
o efeito de deslize são necessárias para que o AVC-MCFGS possa constituir uma alternativa válida
ao AVC-FGS para a maior gama possível de débitos binários.
Uma das formas já mencionadas para melhorar o desempenho do AVC-MCFGS nos débitos
binários mais baixos do intervalo de codificação é a utilização de imagens do tipo Intra na camada
superior (i.e. apenas preditas a partir da camada base) de uma forma periódica. O número de
228
CAPÍTULO 6 ― ESCALABILIDADE FINA DE VÍDEO AVC-MCFGS
imagens do tipo I codificadas na camada superior (parâmetro definido pelo codificador) influencia
significativamente o desempenho do sistema AVC-MCFGS proposto. Esta abordagem é semelhante
à inserção de imagens do tipo I, na codificação não escalável de vídeo, com vista a evitar a
propagação de erros de transmissão.
Na Figura 6.8 apresentam-se alguns gráficos de PSNR para a sequência Carphone usando uma
estrutura de codificação IPP...PPI na camada superior onde Ni especifica o número de imagens do
tipo P entre imagens do tipo I. Também é apresentado o gráfico PSNR para a estrutura de
codificação IPP(P), onde apenas a primeira imagem é codificada com o modo Intra; referido como
AVC-MCFGS (com Ni = ∞). Este gráfico corresponde à situação onde o efeito de deslize é
máximo, uma vez que não são inseridas imagens do tipo Intra para parar a propagação dos erros de
reconstrução causados pelo efeito de deslize.
Quando Ni = 4, o efeito de deslize não é muito significativo uma vez que os erros não se propagam
durante muito tempo; o ganho de desempenho máximo do AVC-MCFGS (com Ni =4) em relação
ao AVC-FGS é de 0.63 dB para 1 Mbit/s. À medida que Ni aumenta, o efeito de deslize também
aumenta, uma vez que a distância entre imagens do tipo I é maior e logo os erros propagam-se por
um número maior de imagens do tipo P. Por outro lado, o desempenho para os débitos binários
mais altos do intervalo de codificação mantém-se bastante semelhante em relação ao AVC-MCFGS
com Ni = ∞.
Sequência Carphone
PSNR(dB)
39
37
35
FGS
AVC -MC FGS
AVC -MC FGS
AVC -MC FGS
AVC -MC FGS
33
(Ni=4)
(Ni=12)
(Ni=24)
(Ni = oo)
31
bits/s
29
0
200000
400000
600000
800000
1000000
1200000
Figura 6.8 – Comparação do AVC-FGS com o AVC-MCFGS para Ni = {4,12,24, ∞}.
Outra forma de melhorar o desempenho do AVC-MCFGS, consiste na utilização de múltiplas
referências no módulo de compensação de movimento da camada superior. Assim, é possível
reutilizar não só os vectores de movimento obtidos na camada base que referenciam a imagem
anteriormente descodificada (N-1), como os vectores de movimento que referenciam outras imagens
no passado. A escolha da imagem de referência é realizada ao nível do sub-macrobloco (8×8 pixels)
pelo módulo de estimação de movimento da camada base; esta mesma decisão é reutilizada na
camada superior. O índice indica qual é a imagem de referência para um dado macrobloco e é
transmitido apenas na camada base. Tal como na camada base, a utilização de múltiplas referências
na camada superior permite explorar a correlação temporal entre imagens sucessivas de uma forma
229
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
mais eficiente e alcançar um desempenho superior. Além disso, quando ocorrem erros de
transmissão numa área da imagem utilizada como referência, o descodificador pode utilizar outra
referência isenta de erros, diferente da transmitida pelo codificador, minimizando o impacto dos
erros na qualidade da imagem (ainda que a predição seja menos boa). A principal desvantagem da
utilização desta técnica é o aumento da memória necessária no codificador e no descodificador para
guardar as múltiplas imagens de referência; o processamento adicional é mínimo na camada superior
uma vez que a estimação de movimento para múltiplas imagens é realizada na camada base.
Resumindo, o codificador da camada superior do AVC-MCFGS tem de efectuar um conjunto de
escolhas que influenciam significativamente o seu desempenho e a sua robustez a erros,
nomeadamente:
1. O número de planos de bit de referência Nref a usar na referência da camada superior;
2. A periodicidade das imagens do tipo I a usar na camada superior para reduzir o efeito de
deslize;
3. O número de imagens de referências que podem ser utilizadas simultaneamente pela
compensação de movimento.
Saliente-se que esta flexibilidade na camada superior está ausente do codificador AVC-FGS e vai
possuir uma influência significativa no desempenho e robustez a erros do AVC-MCFGS.
Finalmente, diga-se que as escolhas acima referidas não têm qualquer impacto na sintaxe e semântica
do fluxo binário sendo totalmente não-normativas, o que permite o desenvolvimento de métodos
eficientes para efectuar estas decisões, sem que haja qualquer impacto no funcionamento do
descodificador. As técnicas de predição parcial apresentadas na Secção seguinte baseiam-se na
escolha dos parâmetros Nref e da periodicidade Intra de forma a reduzir o efeito de deslize, sem
sacrificar o desempenho para os débitos binários mais altos do intervalo de codificação.
6.4
Técnicas para redução do efeito de deslize
Na Secção anterior, apresentou-se em detalhe o módulo de compensação de movimento no
contexto da camada superior AVC-MCFGS. A introdução de um módulo de compensação de
movimento na camada superior permite alcançar um desempenho superior, apenas para um
intervalo restrito de débitos binários, especialmente se não forem utilizadas imagens do tipo Intra. O
problema do deslize apenas se coloca quando o descodificador não recebe todos os planos de bit
utilizados pelo codificador da camada superior (MC mismatch) ou quando ocorre um erro na
transmissão (e.g. perda de pacotes) no fluxo binário da camada superior. Com a introdução de
imagens do tipo Intra, consegue-se melhorar o desempenho para os débitos binários mais baixos do
intervalo de codificação, uma vez que os erros (devido ao efeito de deslize ou a erros de
transmissão) não se propagam quando ocorre um refrescamento do tipo Intra. No entanto, esta
robustez é normalmente “paga” em termos de eficiência de codificação, i.e. ocorre uma quebra de
desempenho para os débitos binários mais altos do intervalo de codificação. No exemplo da Figura
6.8, o AVC-MCFGS possui apenas uma quebra de desempenho de 0.1 dB (para Ni = 4) em
comparação com o AVC-MCFGS (com Ni = ∞) para os débitos mais elevados (i.e. 1 Mbit/s), mas
230
CAPÍTULO 6 ― ESCALABILIDADE FINA DE VÍDEO AVC-MCFGS
existem cenários em que as quebras são maiores, especialmente se o valor máximo do débito
correspondente ao intervalo de codificação for superior, e.g. 2 Mbit/s.
Deste modo, é necessário desenvolver técnicas de redução do efeito de deslize que melhorem o
desempenho médio da codificação escalável AVC-MCFGS, nomeadamente em relação à codificação
AVC-FGS. O principal objectivo desta Secção é definir e estudar técnicas que permitam reduzir o
efeito de deslize, i.e. alcançar o máximo desempenho para os débitos binários mais altos do intervalo
de codificação, sem que haja uma degradação significativa da qualidade da imagem nos débitos
binários mais baixos do intervalo de codificação. A utilização de um grande número de imagens do
tipo Intra na camada superior não permite alcançar este objectivo, uma vez que as imagens do tipo
Intra penalizam sempre o desempenho do AVC-MCFGS para os débitos binários mais altos do
intervalo de codificação.
Todas as técnicas apresentadas nesta Secção permitem gerir o deslize num codificador escalável de
elevada granularidade com compensação de movimento na camada superior. As técnicas aqui
propostas foram desenvolvidos pelo autor e baseiam-se nos esquemas mais populares de
refrescamento Inter utilizados na codificação não escalável, tal como as técnicas apresentadas no
início deste Capítulo [1][3][8][11] que servem como ponto de partida para o trabalho aqui
apresentado.
O refrescamento Inter é semelhante ao refrescamento Intra pois ambos têm como principal
objectivo recuperar o máximo da qualidade da imagem na ocorrência de erros de transmissão e do
efeito de deslize. No entanto, o refrescamento Inter é efectuado utilizando como referências
imagens já descodificadas no passado de forma a que o desempenho em termos de eficiência não
seja tão sacrificado como no refrescamento Intra (que não faz uso de informação passada). De
forma a melhorar o desempenho global do codificador AVC-MCFGS, apresentam-se aqui quatro
técnicas de refrescamento do tipo Inter; estas técnicas são classificadas pelo autor em duas
categorias:
― Predição parcial: A predição parcial consiste em escolher o número de planos de bit
utilizados como referência da camada superior de forma a reduzir o efeito de deslize. Dito de
outra forma, estas técnicas determinam a qualidade da referência HQR, para cada imagem,
de forma a minimizar a quebra de qualidade que se verifica, quando os planos de bit
utilizados como referência não estão disponíveis no descodificador. O principal objectivo
das técnicas de predição parcial é efectuar a escolha do parâmetro Nref (que determina a
qualidade da referência HQR) de forma a manter o desempenho do AVC-MCFGS o mais
elevado possível para todo o intervalo de codificação [Rbl, Rmax]. Estas técnicas permitem
também estudar qual o impacto da variação do parâmetro Nref (ao longo do tempo) no
desempenho do AVC-MCFGS, normalmente mantido constante nas técnicas já disponíveis
na literatura.
― Predição pesada: A predição pesada consiste em utilizar uma referência para a camada
superior determinada a partir de uma combinação pesada de referências extraídas da camada
superior e da camada base. As técnicas deste tipo permitem reduzir o efeito de deslize, uma
vez que a camada base se encontra sempre disponível. Este tipo de técnicas foram propostas
em [1][3], constituindo uma direcção muito promissora para reduzir o efeito de deslize; a
231
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
técnica mais simples consiste em calcular a média (peso ½) da referência da camada base e
da camada superior. Deste modo, o principal objectivo das técnicas de predição pesada é
definir algoritmos que escolham qual é a importância da camada base e da camada superior
na imagem utilizada como referência na camada superior, de forma a alcançar o máximo de
desempenho para toda a gama de débitos binários correspondente ao intervalo de
codificação.
Para qualquer das técnicas de seguida apresentadas, a escolha do número de planos de bit utilizados
como referência ou dos pesos utilizados para determinar a referência a usar é o factor mais
determinante para o desempenho global (i.e. para todo o intervalo de codificação) do AVC-MCFGS.
É neste aspecto que as técnicas aqui apresentadas são mais inovadoras pois apresentam novas
formas de escolher os parâmetros que têm um maior impacto no desempenho: n.º de planos de bit
de referência (na predição parcial) ou pesos (na predição pesada). A escolha destes parâmetros é
sempre realizada ao nível da imagem; esta solução permite manter a sintaxe e semântica do AVCMCFGS igual à do AVC-FGS, pois não é necessário modificar o cabeçalho do macrobloco. O
elemento de sintaxe fgs_vop_mc_bit_plane (ao nível do FGSVOP) é usado para indicar o número de
planos de bit de referência implicados na predição parcial, enquanto o elemento de sintaxe
fgs_vop_weight_bit_plane (ao nível do FGSVOP) indica ao descodificador quais são os valores dos
pesos utilizados na predição pesada.
6.4.1 Predição parcial
O número de planos de bit utilizados como referência na camada superior do codificador AVCMCFGS tem um papel importante no desempenho global do sistema. Com a predição parcial, o
objectivo é escolher de uma forma “óptima” qual o número de planos de bit Nref que devem ser
utilizados como referência. Se a capacidade do canal fosse conhecida a priori e se se mantivesse
constante, o codificador apenas deveria utilizar como predição, Nref planos de bit de forma a que
estes fossem sempre transmitidos ao descodificador. Para isso, o codificador apenas teria de medir
qual o débito binário necessário para transmitir cada plano de bit e escolher o valor de Nref que
garantisse que o débito binário necessário para representar os primeiros Nref planos de bit fosse
inferior à capacidade do canal. No entanto, este pressuposto não é válido na escalabilidade fina de
vídeo uma vez não se conhece a priori a capacidade do canal mas apenas o intervalo de codificação
[Rbl, Rmax]. Além disso, é desejável que o vídeo codificado se adapte às variações do débito binário
disponível no canal e à ocorrência de erros de transmissão.
Com vista a escolher o número de planos de bit Nref a usar na imagem de referência da camada
superior de uma forma independente das características do canal de transmissão, apresentam-se de
seguida duas técnicas de predição parcial: a predição parcial cíclica (CBP de cyclic bitplane coding) e a
predição parcial adaptativa (ABP de adaptive bitplane coding). Na predição parcial cíclica, a referência
HQR possui uma qualidade variável (ao longo do tempo), parametrizando a evolução do parâmetro
Nref ao longo do tempo. A predição parcial adaptativa escolhe o número de planos de bit Nref a
utilizar como referência (i.e. escolhe a qualidade da imagem de referência) a partir do número total
de bits necessário para codificar cada plano de bit.
232
CAPÍTULO 6 ― ESCALABILIDADE FINA DE VÍDEO AVC-MCFGS
6.4.1.1 Predição parcial cíclica CBP (Cyclic Bitplane Coding)
A predição parcial cíclica baseia-se na redução do efeito de deslize à custa do uso combinado de
referências de baixa qualidade e simultaneamente de referências de alta qualidade o mais
frequentemente possível, de forma a manter uma eficiência de codificação alta sem aumentar
demasiado o deslize. Uma forma de reduzir o efeito de deslize é utilizar como referência apenas o
plano de bit mais significativo (Nref = 1), que acrescenta pouca informação à camada base. O plano
de bit MSB contém grande parte dos macroblocos com todos os elementos a zero, sendo codificado
eficientemente através do elemento de sintaxe fgs_cbp (ver Secção 5.3.1). Deste modo, o plano de
bit MSB é representado por um número pequeno de bits e transmitido na íntegra ao descodificador
mesmo quando a largura de banda disponível no canal é baixa; isto permite reduzir o efeito de
deslize de uma forma eficaz. Infelizmente, o primeiro plano de bit (MSB) contribui pouco para
melhorar o desempenho do AVC-MCFGS em relação ao AVC-FGS, pois contém os bits mais
significativos de um conjunto reduzido de coeficientes com uma magnitude elevada. Muitas vezes,
os coeficientes de magnitude elevada correspondem a erros causados pelo módulo de compensação
de movimento e a correlação deste plano de bit entre imagens adjacentes é baixa, o que justifica o
baixo desempenho.
A Figura 6.9 ilustra a estrutura de codificação CBP adoptada: a ideia básica é aumentar a qualidade
da referência HQR, que ao início possui um valor praticamente semelhante à da camada base (Nref =
1), até atingir um valor máximo (com Nref = Nrefmax); de seguida, a qualidade da referência da camada
superior decresce até atingir o mesmo valor inicial (Nref = 1). Este processo repete-se de uma forma
cíclica até que todas as imagens da sequência sejam codificadas e normalmente apenas utiliza como
referência uma parte de toda a informação disponível na camada superior (i.e. predição parcial).
Quando ocorrerem variações na largura de banda do canal e/ou erros de transmissão, a estrutura de
codificação permite reduzir de uma forma eficiente o efeito de deslize introduzido, permitindo
recuperar de uma forma gradual e suave a qualidade da imagem ao fim de pouco tempo.
Figura 6.9 – Estrutura de escalabilidade com predição parcial cíclica.
Por exemplo, suponha-se que ocorreu um erro durante a transmissão da imagem 3, nos planos de
bit utilizados como referência pela imagem 4. Este erro irá ser propagado para a imagem 4, 5, 6, e 7;
no entanto, à medida que se avança no tempo, a contribuição do erro na próxima imagem, irá ser
cada vez menor (uma vez que se utilizam menos planos de bit e logo menos informação passada),
reduzindo o efeito negativo dos erros na qualidade da imagem descodificada.
233
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
O mesmo raciocínio pode ser realizado quando ocorrem variações na largura de banda do canal; e.g.
se durante a transmissão da imagem 3 o servidor não enviar a camada superior, no descodificador a
predição é obtida apenas a partir da camada base e a qualidade da referência HQR do descodificador
é diferente da referência HQR utilizada pelo codificador. No entanto, este erro de mismatch irá ter
uma contribuição futura cada vez menor, uma vez que o número de planos de bit utilizados como
referência Nref diminui nas imagens seguintes. Esta estrutura é óptima (do ponto de vista da
eficiência de codificação) quando a variação na largura de banda coincide com o débito binário
necessário para representar os Nref planos de bit escolhidos para codificar cada imagem (mais o
débito binário da camada base).
Tendo como ponto de partida a estrutura já apresentada, definiu-se aqui um algoritmo para escolher
o número de planos de bit utilizados como referência Nref, para uma dada imagem i, a partir do
parâmetro Nrefmax, definido no início da codificação e mantido constante. O algoritmo que define Nref
ao longo do tempo utiliza um parâmetro, designado dir, para indicar se a qualidade da referência
HQR está a aumentar (dir = 1) ou a diminuir (dir = -1). De seguida, apresenta-se o algoritmo de
predição parcial cíclica, desenvolvido pelo autor:
― Se a imagem anterior for do tipo Intra, para a imagem actual tem-se ⇒ Nref [i] = 1 e dir = 1.
― Caso contrário, tem-se para cada i:
ƒ
Nref[i] = Nref[i-1] + dir.
ƒ
Se Nref[i] > Nrefmax ⇒ Nref[i] = Nrefmax e dir = -1.
ƒ
Se Nref[i] = 1 ⇒ dir = 1.
O valor de Nrefmax e o algoritmo apresentado definem implicitamente a periodicidade, P, desta
estrutura ou seja a periodicidade com que o ciclo de variação de Nref é percorrido (ver Figura 6.10),
uma vez que se estabelece a relação P = 2 × Nrefmax - 1; por exemplo, quando Nrefmax = 4, o período
entre referências com Nref = 1 é 7; para Nrefmax = 3, o período é 5 e assim sucessivamente.Deste
modo, o único parâmetro que é necessário definir à partida é o número máximo de planos de bit
utilizados como referência Nrefmax. A Figura 6.10 ilustra a evolução do parâmetro ao longo de 16
imagens para Nrefmax = {2,3,4}.
Nref
4.5
Evolução de Nref ao longo do tempo
Nrefmax = 2
Nrefmax = 3
Nrefmax = 4
4
3.5
3
2.5
2
1.5
1
0.5
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Nº
Imagem
Figura 6.10 – Evolução do parâmetro Nref ao longo do tempo (16 imagens) para Nrefmax = {2,3,4}.
234
CAPÍTULO 6 ― ESCALABILIDADE FINA DE VÍDEO AVC-MCFGS
De salientar que são sempre codificadas duas imagens sucessivas com Nref = Nrefmax e Nref = 1 de
forma a manter uma simetria na estrutura de codificação e manter simultaneamente uma eficiência
de codificação e redução do efeito de deslize elevada.
De acordo com este algoritmo, o número de planos de bit de referência varia entre 1 e Nrefmax;
quando Nref é igual a 1, o efeito de deslize é quase completamente eliminado. À medida que Nref
aumenta, a qualidade da referência HQR também aumenta o que causa um aumento do efeito de
deslize quando alguns dos planos de bit de referência não são recebidos pelo descodificador. De
forma a limitar a quantidade máxima de deslize introduzida, limita-se o número máximo de planos
bit a Nrefmax. Normalmente, os planos de bit mais altos (ou menos significativos) não melhoram
muito a qualidade das referências em termos de desempenho para os débito binários mais altos do
intervalo de codificação. Os principais motivos são: a) o débito binário dos planos de bit menos
significativos é muito alto para a maior parte das aplicações; b) o ganho de desempenho só ocorre a
partir de um débito binário elevado, uma vez que grande parte dos planos de bit de referência não
são recebidos pelo descodificador; c) os bits menos significativos podem corresponder a pequenos
erros de magnitude causados pela introdução de ruído e possuem uma correlação baixa. Assim, o
valor de Nrefmax deve corresponder a um número de planos de bit intermédio onde se consegue
alcançar uma melhoria de desempenho significativa. O valor de Nrefmax mantêm-se constante e pode
assumir 3 valores possíveis: {2, 3, 4}; para Nrefmax = 1 não ocorre nenhuma melhoria significativa no
desempenho em relação ao AVC-FGS e para Nrefmax > 4 o efeito de deslize é muito significativo,
pelas razões atrás indicadas. Para o valor mais baixo que o parâmetro Nrefmax pode assumir (i.e. Nrefmax
= 2) são utilizadas mais frequentemente referências de baixa qualidade o que permite reduzir
significativamente o efeito de deslize. À medida que o valor de Nrefmax aumenta, um maior número de
referências de alta qualidade são utilizadas, o que permite aumentar o desempenho para os débitos
binários mais altos do intervalo de codificação à custa de um aumento do efeito de deslize, i.e.
ocorre uma quebra de desempenho para os débitos binários mais baixos do intervalo de codificação.
Por fim, saliente-se que a sintaxe do AVC-MCFGS suporta qualquer estrutura de predição parcial,
e.g. a utilização de uma referência de baixa qualidade (e.g. com Nref = 1) e logo na imagem seguinte
uma referência de alta qualidade (e.g. com Nref = 4), permitindo o uso de outras estruturas cíclicas de
predição parcial, sem ser necessário modificar o formato do fluxo binário codificado.
6.4.1.2 Predição parcial adaptativa ABP (Adaptive Bitplane Coding)
A técnica de predição parcial adaptativa baseia-se no conhecimento do débito binário necessário
para representar cada plano de bit para efectuar a escolha do número de planos de bit Nref a utilizar
como referência para cada imagem na camada superior e assim determinar a qualidade da imagem de
referência HQR. Esta ideia surgiu em virtude de o número e o tamanho (em n.º de bits) dos vários
planos de bit num fluxo binário codificado variarem ao longo do tempo de uma forma significativa.
Na Figura 6.11, apresenta-se a distribuição do número de bits/imagem necessários para representar
os 4 planos de bit mais significativos para um período de tempo de 10 s (100 imagens a 10 Hz). Os
parâmetros utilizados pelo codificador AVC-MCFGS são os seguintes:
― Sequência Table, resolução espacial CIF e resolução temporal de 10 Hz.
― Número de planos de bit utilizados como referência é constante e igual a 3 (Nref = 3).
235
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
― Inserção periódica de imagens do tipo Intra na camada superior (1 em cada 12).
Tal como era esperado, à medida que o número do plano de bit aumenta (do mais significativo para
o menos significativo), o número de bits necessário para representar o plano de bit também
aumenta. O plano de bit MSB é representado com um número baixo de bits por imagem, em média
946 bits/imagem, o que equivale neste caso a um débito binário médio de 14.2 kbit/s (a 10 Hz).
Para o plano de bit MSB-1, o débito binário médio é de 113 kbit/s; para o plano de bit MSB-2 é de
580 kbit/s e para o plano de bit MSB-3 é de 1.56 Mbit/s. Como são usados 3 planos de bit de
referência (Nref = 3), o efeito de deslize só é reduzido significativamente quando a largura de banda
disponível no canal é superior em média a 707 kbit/s (14.2 + 113 + 580) ou seja só a partir deste
ponto é que se pode esperar uma melhoria significativa no desempenho do AVC-MCFGS.
Distribuição do número de bits/imagem ao longo do temp
bits
180000
160000
140000
120000
MSB
100000
MSB-1
MSB-2
80000
MSB-3
60000
40000
20000
0
0
15
30
45
60
75
90
Nº imagem
Figura 6.11 – Variação do número de bits gastos por plano de bit para a sequência Table (CIF a 10 Hz) com
Nref constante e igual a 3 e período entre imagens Intra de 12.
Outra medida importante que se pode tirar desta experiência realizada pelo autor, é a gama de
variação do número de bits/imagem ao longo do tempo. À medida que o número do plano de bit
aumenta (do mais significativo para o menos significativo) a variação é cada vez maior; assim, o
desvio padrão para o plano de bit MSB é de 396 bits/imagem, 6416 bits/imagem para o MSB-1,
23155 bits/imagem para o MSB-2 e 43966 bits/imagem para o MSB-3. Apesar de aqui apenas se
apresentarem valores para um dado caso, este comportamento é semelhante para outras sequências e
configurações do codificador AVC-MCFGS.
Se se assumir, por agora, que a largura de banda disponível no canal é constante, o servidor de vídeo
irá cortar o fluxo binário da camada superior sempre na mesma posição (para uma dada imagem).
Para algumas imagens, como os planos de bit utilizados como referência possuem um tamanho
elevado, os planos de bit de referência não vão ser totalmente transmitidos e o efeito de deslize será
introduzido uma vez que as referências HQR do codificador e descodificador possuem uma
qualidade diferente. Por outro lado, quando a dimensão dos planos de bit é pequena, o servidor de
vídeo vai conseguir transmitir todos os planos de bit utilizados como referência e (se for possível)
ainda mais alguns planos de bit menos significativos. Neste caso, não é introduzido nenhum efeito
de deslize, mas o desempenho poderia ser melhorado se o número de planos de bit utilizados como
referência fosse superior. Tendo em atenção que a distribuição do número de bits/imagem varia de
uma forma bastante significativa (tal como foi demonstrado acima para o estudo efectuado), a
utilização de um número de planos de bit de referência (Nref) constante não é uma solução adequada
236
CAPÍTULO 6 ― ESCALABILIDADE FINA DE VÍDEO AVC-MCFGS
para determinar a qualidade adequada da imagem de referência, apesar de alguns métodos
disponíveis na literatura utilizarem o parâmetro Nref com um valor fixo para uma dada
sequência/parâmetros de codificação [3][6]. A principal razão desta inadequação é a introdução de
um efeito de deslize que penaliza o desempenho a débitos baixos sempre que uma imagem
necessitar de muitos bits para representar os planos de bit utilizados como referência (qualidade
elevada) e penaliza o desempenho para os débitos binários altos quando os planos de bit utilizados
como referência possuem um tamanho pequeno (qualidade baixa).
A técnica de predição parcial adaptativa tenta evitar estas limitações, baseando a escolha do número
de planos de bit de referência para uma dada imagem, na distribuição do débito binário para cada
plano de bit, na imagem anterior (referência HQR).
Como se conhece na altura da codificação, o intervalo relevante de débito binário [Rbl, Rmax], escolhese o débito binário para o qual se deseja obter o máximo de desempenho, RT ∈ [Rbl, Rmax],
determinando-se o parâmetro Nref em função de RT de acordo com o seguinte algoritmo (ver Figura
6.12), desenvolvido pelo autor:
― Determina-se a distribuição do número de bits para cada plano de bit da imagem de
referência (vector S).
― Determina-se um vector X com o débito binário acumulado para cada plano de bit a partir
do vector S (ou seja ainda para a imagem de referência).
― Determina-se o número do plano de bit N para o qual RT < X[i+1] e RT > X[i].
― Determinam-se as distâncias (dist1 e dist2) entre o valor RT e os débitos binários adjacentes:
dist1 = │RT - X[N-1] │e dist2 = │RT - X[N]│, em que ││ representa operador módulo.
― Se dist1 < dist2, o valor de Nref = N-1; caso contrário, Nref = N.
Figura 6.12 – Exemplo da aplicação do algoritmo para o cálculo de Nref de acordo com RT; neste exemplo, o
valor de Nref seleccionado é 3.
A escolha do número de planos de bit utilizados como referência é efectuada para todas as imagens
Inter e tem como principal vantagem manter a qualidade da imagem de referência (HQR) mais
constante, bem como reduzir o efeito de deslize à custa de uma escolha adequada do débito binário
para o qual se pretende obter o máximo de desempenho (em comparação com o AVC-FGS). O
único parâmetro que é necessário conhecer, na altura da codificação, é o valor de RT.
Para conhecer o impacto do valor de RT no desempenho global do AVC-MCFGS, efectuou-se um
conjunto de experiências com a técnica de redução do efeito de deslize ABP. Os parâmetros
utilizados pelo codificador AVC-MCFGS são os seguintes:
― Sequência Table, resolução espacial CIF e resolução temporal de 10 Hz.
237
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
― Não há inserção periódica de imagens do tipo Intra.
― O intervalo de codificação [Rbl, Rmax] = [128 kbit/s, 1 Mbit/s].
Na Figura 6.13, apresenta-se o desempenho do AVC-MCFGS para os três valores de RT: {256
kbit/s, 512 kbit/s, 1 Mbit/s}. Para RT = 256 kbit/s, o efeito de deslize é reduzido, obtendo-se um
desempenho inferior em relação ao AVC-FGS de 0.3 dB para 160 kbit/s. No entanto, o
desempenho é penalizado para os débitos binários superiores, com um ganho de desempenho em
relação ao AVC-FGS, para 1 Mbit/s, de apenas 0.03 dB. Para RT = 1 Mbit/s, o comportamento
inverte-se, observando-se um efeito de deslize mais significativo durante um intervalo de débitos
binários maior (até 432 kbit/s); por outro lado, o desempenho melhora significativamente para os
débitos binários mais altos, com um ganho de 1.15 dB a 1 Mbit/s.
PSNR(dB)
36
Sequência Table
35
34
33
32
31
AVC -FGS
ABP (Rt = 512kbit/s)
ABP (Rt = 1Mbit/s)
ABP (Rt = 256 kbit/s)
30
29
28
100000
bits/s
200000
300000
400000
500000
600000
700000
800000
900000
Figura 6.13 – Comparação do AVC-FGS com o AVC-MCFGS (com ABP) para a sequência Table (CIF a 10
Hz) com RT = 256 kbit/s, 512 kbit/s e 1 Mbit/s.
Quando RT = 512 kbit/s, ou seja RT está aproximadamente no meio do intervalo de codificação, o
AVC-MCFGS com redução de efeito de deslize apresenta um desempenho global mais positivo,
uma vez que para os débitos binários baixos o efeito de deslize ocorre durante um intervalo pequeno
de débitos binários (até 256 kbit/s) e apresenta um desempenho para os débitos binários
intermédios (em redor de 512 kbit/s) e altos, superior ao AVC-FGS. Apesar de apenas se mostrar o
desempenho da técnica ABP para estes valores de RT e nestas condições de teste, os resultados
foram confirmados pelo autor para um número mais amplo de sequências e parâmetros de
codificação. O parâmetro RT deve estar sempre contido nos limites do intervalo de codificação e
permite estabelecer qual o débito binário onde se deseja alcançar o máximo desempenho. Para se
reduzir ao máximo o efeito de deslize o parâmetro RT deve ser baixo, para se alcançar o máximo
desempenho o parâmetro RT deve ser alto e para manter um equilíbrio entre a redução do efeito de
deslize e o máximo desempenho o parâmetro RT deve possuir um valor intermédio.
6.4.2 Predição pesada
As técnicas de predição pesada aqui propostas inspiram-se na predição leaky (leaky prediction),
disponível na literatura [2]. A predição leaky é uma técnica utilizada na codificação não escalável para
minimizar a propagação de erros de transmissão nos esquemas de codificação de vídeo com
predição Inter. Quando se utiliza a predição leaky, em vez do codificador transmitir os vectores de
238
CAPÍTULO 6 ― ESCALABILIDADE FINA DE VÍDEO AVC-MCFGS
movimento e o sinal residual, o codificador transmite os vectores de movimento e o sinal residual
obtido depois de multiplicar a imagem de predição já compensada de movimento por um factor α,
i.e. o sinal residual dif é dado por:
dif i = imagemi − α ⋅ imagemi −1 [ compensada de movimento] (6.1)
Como o parâmetro α pode apenas assumir valores no intervalo [0, 1], o impacto dos erros de
transmissão nas imagens descodificadas irá decrescer ao longo do tempo de uma forma exponencial
[2], em vez de se propagar indefinidamente. Para se garantir um equilíbrio entre o desempenho de
codificação e a robustez a erros (incluindo o efeito de deslize), o valor de α deve ser escolhido
cuidadosamente. Para valores de α próximos de zero, os erros são atenuados em pouco tempo
(decaimento rápido); no entanto, como a imagem predita possui um peso menor, o desempenho é
inferior por aumentar o erro de predição. Para o caso limite, α = 0, todas as imagens são codificadas
no modo Intra. Para valores de α próximos de 1, o desempenho de codificação é superior; no
entanto, os erros só são atenuados ao fim de um maior período de tempo (decaimento lento). Para o
caso limite, α = 1, todas as imagens são codificadas no modo Inter puro. A principal vantagem desta
técnica consiste na atenuação suave dos efeitos dos erros de transmissão ao longo do tempo,
enquanto que com métodos de refrescamento do tipo Intra os erros são propagados até que seja
codificada uma imagem do tipo Intra, o que causa um aumento repentino da qualidade do vídeo, um
efeito muitas vezes desagradável para o utilizador.
No AVC-MCFGS, utiliza-se o mesmo princípio da predição leaky de forma a minimizar o efeito de
deslize e dos erros de transmissão na camada superior. A principal característica da técnica aqui
proposta é a forma como se calcula o sinal residual da camada superior. Quando se utiliza o modo
Inter, o codificador AVC-MCFGS sem redução de deslize obtém o sinal residual a partir da imagem
predita na camada superior (HQPI) e o sinal residual da camada base, depois da transformada
inversa (ver Secção 6.2). Com o esquema de predição pesada aqui proposto, a imagem predita HQPI
é calculada a partir da referência HQR compensada de movimento (referida como HQR[CM]) e da
referência da camada base LQR. A Figura 6.14 ilustra uma parte da arquitectura do codificador
AVC-MCFGS com um novo módulo de compensação de deslize (a azul).
Entrada
de Vídeo
S
Planos
de bit
T
VLC
Fluxo binário da
camada superior
Nref
IT
Decisão
Intra/Inter
HQPI
S
HQR[CM]
LQR
Compensação
de deslize
Compensação
de movimento
HQR
Memória 1
Codificador MCFGS da camada superior
Figura 6.14 – Arquitectura do codificador da camada superior do AVC-MCFGS com predição pesada.
239
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
O módulo de compensação de deslize recebe estas duas imagens e calcula uma predição pesada, de
acordo com:
HQPI = α ⋅ HQR [CM ] + (α − 1) ⋅ LQR (6.2)
A escolha do parâmetro α é determinante no desempenho global do sistema; valores muito altos de
α (≈1) apresentam um desempenho superior nos débitos binários altos, sacrificando a qualidade da
imagem nos débitos binários baixos (para um determinado intervalo de codificação), enquanto que
para valores baixos de α (≈0) acontece o inverso. O valor de α pode assumir qualquer valor entre 0
e 1 e deve ser codificado e transmitido ao descodificador. De forma a reduzir o número de valores
possíveis que o codificador pode escolher para o parâmetro α, definiram-se os seguintes valores:
― α = 0: Modo Intra.
― α = 1: Modo Inter.
― α = 0.25: Modo Inter25.
― α = 0.50: Modo Inter50.
― α = 0.75: Modo Inter75.
Foram efectuadas experiências com vista a estudar a vantagem de usar mais valores de α (e.g. 0.125,
0.375, 0.625, 0.825); no entanto, as diferenças no desempenho da codificação AVC-MCFGS não são
significativas. O valor de α é enviado no cabeçalho de cada imagem, através de 5 bits reservados
para este efeito, usando o elemento de sintaxe fgs_vop_weight_used. Quando se utiliza a predição
pesada, o número de planos de bit utilizados como referência mantém-se constante e não é usado
qualquer técnica de predição parcial (ver Secção anterior). O principal motivo para esta separação
clara aqui feita é avaliar o desempenho separadamente para cada técnica de redução do efeito de
deslize. No entanto, estas técnicas podem, em princípio, ser combinadas de forma eficiente.
A escolha do parâmetro α é determinante no desempenho global do sistema de codificação escalável
AVC-MCFGS; se a capacidade do canal ou a taxa de erros (e.g. taxa de perda de pacotes) fosse
conhecida, seria possível calcular um valor de α adequado para cada imagem. Por exemplo, se o
descodificador recebesse todos os planos de bit utilizados como referência, o valor α utilizado pelo
codificador deveria ser 1; se o descodificador recebesse apenas um número reduzido de planos de
bit de referência, o valor α deveria ser aproximadamente zero. No entanto, este tipo de informação
para realimentação (network feedback) não é normalmente conhecido na altura da codificação,
impossibilitando a utilização de técnicas deste tipo em sistemas de distribuição de vídeo précodificado. Além disso, é desejável que a codificação seja independente das características da rede
(e.g. largura de banda, taxa de erros, etc.) de forma a que o conteúdo escalável possa ser distribuído
pelo maior número de canais possíveis (e com diferentes características). De acordo com este último
requisito, apresentam-se duas técnicas de predição pesada: a predição pesada cíclica (CWBP de cyclic
weight bitplane coding) e a predição pesada adaptativa (AWBP de adaptive weight bitplane coding); a única
diferença entre elas consiste na forma de calcular o parâmetro α uma vez que ambas pretendem
alcançar um equilíbrio entre a (maximização da ) eficiência de codificação e o (decréscimo do) efeito
240
CAPÍTULO 6 ― ESCALABILIDADE FINA DE VÍDEO AVC-MCFGS
de deslize introduzido. Enquanto a primeira técnica utiliza um peso que varia ao longo do tempo
(i.e. de imagem para imagem) de uma forma cíclica, a predição pesada adaptativa estima a quantidade
do efeito de deslize introduzida em cada imagem e escolhe um peso que minimiza o efeito de deslize
sem sacrificar o desempenho nos débitos binários mais altos.
6.4.2.1 Predição pesada cíclica CWBP (Cyclic Weight Bitplane Coding)
A escolha do parâmetro α na predição pesada cíclica faz-se de uma forma semelhante à predição
parcial cíclica. O parâmetro α assume valores que variam ao longo do tempo (i.e. de imagem para
imagem) de uma forma cíclica, de forma a alcançar um equilíbrio entre a eficiência de codificação e a
quantidade de deslize introduzido.
Deste modo, de forma a reduzir o efeito de deslize utilizam-se simultaneamente modos de predição
em que o valor de α é baixo, i.e. a importância da referência HQR é menor e a da referência LQR é
maior, e modos de predição em que o valor de α é alto, i.e. a importância da referência HQR é
maior e a da referência LQR é menor. Os valores de α baixos (e.g. 0.25) permitem reduzir o efeito
de deslize e os valores de α altos permitem alcançar um desempenho mais elevado
(comparativamente ao AVC-FGS) nos débitos binários mais altos do intervalo de codificação. Para
determinar a evolução do parâmetro α, é necessário definir qual a sua função de variação f(α) ao
longo do tempo e o respectivo período; várias funções podem ser escolhidas, tendo-se aqui optado
por uma aproximação à função coseno, devido à sua característica cíclica. Tendo em conta os
valores que o codificador pode escolher para o parâmetro α (definidos no início desta Secção),
definiu-se a função f(α) da seguinte forma:
― Um primeiro troço em que o parâmetro α aumenta linearmente de 0.25 a 1 com o objectivo
de aumentar o desempenho nos limites superiores do intervalo, mas reduzindo
simultaneamente o efeito de deslize. Aqui os erros de deslize introduzidos são atenuados e o
desempenho é melhorado através de uma contribuição cada vez maior da referência LQR.
― Um segundo troço com imagens codificadas no modo Inter (α = 1), com o objectivo de
aumentar ainda mais o desempenho nos limites superiores do intervalo, à custa de um
aumento significativo do efeito de deslize. Aqui são introduzidos erros de deslize se o
descodificador não receber todos os planos de bit de referência, uma vez que a contribuição
da referência LQR é nula.
― Um terceiro troço em que o parâmetro α diminui linearmente de 1 a 0.25, de forma a
minimizar o impacto dos erros presentes no descodificador, se este não recebeu todos os
planos de bit utilizados como referência, nas imagens anteriores. Este troço permite reduzir
o efeito de deslize através de uma contribuição cada vez maior da referência LQR.
Uma característica a salientar da função f(α) aqui apresentada, é a não utilização de imagens do tipo
Intra (α = 0), de forma a não sacrificar o desempenho para os débitos binários mais altos do
intervalo de codificação. O número de imagens codificadas em cada período da função f(α), tanto
no total como em cada troço, depende do seu período (P) e da resolução temporal do vídeo. A
função f(α) com um P = 0.5s é ilustrada na Figura 6.15; os vários pontos do gráfico correspondem
241
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
ao modo de codificação a utilizar em termos do valor do parâmetro α quando a resolução temporal
é de 15 Hz. Neste caso, são codificadas 8 imagens por período com α = {0.25, 0.5, 0.75, 1, 1, 0.75,
0.5, 0.25} para ao fim de 1s já terem ocorrido dois períodos da função f(α). No entanto, se a
resolução temporal do vídeo a codificar for 30 Hz e se se mantiver o período P em 0.5 s, são
utilizadas 15 imagens por período.
Função f(alpha)
alpha
1.2
1
0.8
0.6
0.4
0.2
tempo
0
0
0.125
0.25
0.375
0.5
0.625
0.75
0.875
1 (s)
Figura 6.15 – Gráfico da função f(α) durante um 1s para P = 0.5 s e resolução temporal de 15 Hz.
O período da função f(α) tem um significado importante pois espera-se que ao fim de um período o
efeito de deslize seja reduzido significativamente, uma vez que foram utilizadas imagens com um
valor de α pequeno. Como durante um período da função f(α) também se utilizam imagens com α
elevado (e.g. as imagens do tipo Inter) espera-se que o desempenho para os débitos binários
superiores do intervalo de codificação não sejam demasiado sacrificados em comparação com o
AVC-MCFGS sem técnicas de redução do efeito de deslize.
De forma a estudar o impacto do período P, apresenta-se na Figura 6.16 o desempenho do AVCMCFGS quando se utiliza a técnica de predição parcial cíclica (CWBP) para reduzir o efeito de
deslize com P = {0.5 s, 0.7 s, 1 s, 3 s}.
Sequência Table
PSNR(dB)
39
38
37
36
AVC -FGS
C WBP (0.7s)
C WBP(0.5s)
C WBP(1s)
C WBP(3s)
35
34
33
bits/s
32
0
200000
400000
600000
800000
1000000
1200000
Figura 6.16 – Comparação do AVC-FGS com o AVC-MCFGS (com CWBP) para a sequência Table (CIF a
10 Hz, Nref = 3) com P = 0.5 s, 0.7 s e 1 s.
242
CAPÍTULO 6 ― ESCALABILIDADE FINA DE VÍDEO AVC-MCFGS
Para qualquer valor de P, o efeito de deslize (nos débitos binários mais baixos) é completamente
eliminado, mantendo-se um desempenho elevado nos débitos binários mais altos. As curvas RD
(débito binário/qualidade) para os valores de P testados apresentam um comportamento muito
semelhante (são praticamente coincidentes) uma vez que para este exemplo, a capacidade do canal se
mantem constante, i.e. o fluxo binário escalável é descodificado sempre no mesmo ponto. No
entanto, quando a capacidade no canal variar ao longo do tempo, o período irá possuir um papel
mais importante, esperando-se que quanto menor for o período mais rápida irá ser a recuperação na
qualidade da imagem. Por exemplo, se forem conhecidas a priori algumas características do canal de
transmissão, o período (ou até mesmo a própria função) pode ser optimizado de acordo com um
modelo de variação da largura de banda.
6.4.2.2 Predição pesada adaptativa AWBP (Adaptive Weight Bitplane Coding)
A predição pesada adaptativa utiliza um mecanismo adaptativo para decidir a contribuição da
imagem de referência HQR e da camada base LQR na imagem de referência da camada superior. A
escolha do parâmetro α (que determina a contribuição de cada referência) é realizada de forma
adaptativa, i.e. de acordo com uma estimativa do efeito de deslize presente no descodificador
quando alguns planos de bit não são recebidos. Esta estimativa permite ao codificador escolher um
parâmetro α que limite o efeito de deslize introduzido no descodificador, sem sacrificar demasiado o
desempenho nos débitos binários mais altos do intervalo de codificação. A técnica AWBP é
constituída por duas partes distintas:
― Modelação do efeito de deslize no codificador: Esta parte é responsável pela estimação
do efeito de deslize introduzido pelo codificador.
― Mecanismo de decisão: Feita a estimação do deslize introduzido pelo codificador, é
determinado o parâmetro α que deve ser utilizado para a predição de forma a maximizar o
desempenho.
Estas duas partes correspondem a dois módulos desenvolvidos pelo autor, e estão correlacionados
entre si, pois a decisão efectuada pelo mecanismo de decisão, para uma dada imagem, influencia a
estimação do efeito de deslize na imagem seguinte. Para isso, a arquitectura do codificador da
camada superior foi modificada, introduzindo um loop de descodificação adicional, com uma
memória separada das restantes, para guardar a imagem de referência necessária para estimar o efeito
de deslize. De seguida, apresenta-se cada um destes módulos e a forma como estão correlacionados.
Modelação do efeito de deslize no codificador
A modelação do efeito de deslize na codificação tem como principal objectivo determinar a
quantidade máxima de deslize que o sistema AVC-MCFGS introduz quando escolhe um número de
planos de bit de referência que vai corresponder aquando da transmissão a um débito binário
superior à capacidade do canal. Para este efeito, a modelação do efeito de deslize assenta num
princípio fundamental: assumir o pior cenário. No AVC-MCFGS, o pior cenário corresponde a uma
situação onde o codificador utiliza um número de planos de bit de referência Nref (que determinam a
qualidade da imagem de referência HQR) que, devido a variações na largura de banda ou a erros de
transmissão, não são transmitidos ou são corrompidos quase na totalidade. Deste modo, o
243
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
codificador necessita de conhecer a qualidade da imagem de referência HQR disponível no
descodificador, de forma a conhecer os efeitos negativos (ou positivos) que a sua decisão em utilizar
um determinado parâmetro α pode ter.
Na Figura 6.17, apresenta-se um gráfico com as curvas RD típicas de cada sistema de codificação até
agora estudado: o AVC-FGS, o AVC-MCFGS sem redução do efeito de deslize e a codificação não
escalável H.264/AVC. Este gráfico não corresponde a uma situação real de teste ou seja é apenas
ilustrativo, no gráfico, o intervalo de codificação é [Rbl, Rmax] e o ponto crítico ou seja o débito
binário a partir do qual o desempenho do AVC-MCFGS é superior ao do AVC-FGS é R1.
De forma a obter uma boa estimativa da quantidade de deslize que é introduzida para um dado
número de planos de bit de referência, é necessário calcular o integral das curvas AVC-FGS e AVCMCFGS entre Rbl e R1. A diferença entre os dois integrais calculados permite medir a penalização da
qualidade do AVC-MCFGS para os débitos binários onde apresenta um desempenho inferior ao
AVC-FGS, i.e. uma medida do efeito de deslize introduzido. O objectivo de qualquer técnica de
redução do efeito de deslize é reduzir este valor a zero.
Este tipo de cálculo é difícil de efectuar durante a codificação de uma imagem porque seria
necessário obter no codificador um conjunto de imagens descodificadas para diferentes débitos
binários entre Rbl e R1 (e.g. variando o número de planos de bit de referência entre 1 e Nref) o que
exige um número elevado de loops de descodificação no codificador; para além disso, seria também
necessário codificar as correspondentes imagens no modo Intra (como no AVC-FGS), de forma a
obter as imagens descodificadas que permitem o cálculo do integral para o AVC-FGS.
Figura 6.17 – O AVC-MCFGS em comparação com o AVC-FGS e a codificação não escalável.
Para obter uma boa estimativa do efeito em questão sem realizar os cálculos acima referidos,
propõe-se aqui uma abordagem mais simples: o efeito de deslize é estimado apenas para a pior
situação, correspondente ao ponto R2 do gráfico da Figura 6.17, i.e. a estimação do efeito de deslize
é realizada através da diferença de qualidade entre a imagem descodificada no codificador AVCMCFGS e a imagem descodificada com o AVC-FGS, sempre para o débito binário R2. De forma a
reduzir ainda mais a complexidade deste método, pode evitar-se a codificação e descodificação de
uma imagem no modo Intra (i.e. no AVC-FGS) estimando o efeito de deslize através da qualidade
(mínima) da imagem descodificada no codificador AVC-MCFGS.
Como não se conhece o valor de R2, foi efectuado um conjunto de experiências de forma a
determinar a pior qualidade que se pode alcançar com o AVC-MCFGS sem qualquer técnica de
244
CAPÍTULO 6 ― ESCALABILIDADE FINA DE VÍDEO AVC-MCFGS
redução do efeito de deslize. O autor concluiu que, em geral e de forma aproximada, quando uma
dada imagem é codificada com Nref planos de bit de referência e apenas metade são transmitidos ao
descodificador, ocorre a maior perda de qualidade. É para medir a qualidade da imagem nesta
condições que se introduz um loop de descodificação adicional no codificador. No entanto, o ponto
R2 poderia ser estimado de outra forma, desde que se garantisse que a imagem descodificada
apresentava erros significativos devido ao efeito de deslize ou a erros de transmissão. Outro tipo de
raciocínio poderia ser efectuado se a taxa de erros no canal fosse conhecida (e o tipo de erros), já
que a pior situação corresponderia a uma imagem com erros introduzidos propositadamente (na
camada superior) pelo codificador. Resumindo, o efeito de deslize é estimado através da introdução
de um loop de descodificação adicional no codificador, de forma a que este conheça a qualidade mais
baixa que pode ser obtida no descodificador (ponto R2); esta imagem é referida como WQR (Worst
Quality Reference).
Mecanismo de decisão
A partir da referência WQR, o mecanismo de decisão permite escolher qual dos parâmetros α prédefinidos {0, 0.25, 0.5, 0.75 e 1} deve ser utilizado na codificação de uma dada imagem, de forma a
reduzir o efeito de deslize ao máximo (já que se conhece o pior caso), sem que haja uma degradação
significativa da eficiência de codificação para os débitos binários mais altos do intervalo de
codificação. Deste modo, o codificador escolhe o parâmetro α, através do cálculo do erro médio
absoluto (operador E) para todas as amostras de uma dada imagem, tendo em conta que apenas são
possíveis cinco predições correspondentes aos 5 valores de α pré-definidos:
― Modo Inter (α = 1): diff[0] = E(imgOrig, WQR)
― Modo Inter75 (α = 0.75): diff[1] = E(imgOrig, 0.25*LQR+0.75*WQR)
― Modo Inter50 (α = 0.50): diff[2] = E(imgOrig, 0.5*LQR+0.5*WQR)
― Modo Inter25 (α = 0.25): diff[3] = E(imgOrig, 0.75*LQR+0.25*WQR)
― Modo Intra (α = 0): diff[4] = E(imgOrig, LQR)
onde imgOrig é a imagem original a codificar e o vector diff representa o erro absoluto para cada
um dos modos de codificação (cada um correspondente a um valor de α). Teoricamente, o erro é
menor quando se utiliza o modo Intra e é mais elevado quando se utiliza o modo Inter, uma vez que
a imagem WQR representa a pior qualidade que se pode obter com o AVC-MCFGS. Os modos
intermédios correspondem à utilização da predição pesada para todos os valores de α possíveis; à
medida que a referência LQR possui uma importância maior, o erro será cada vez menor. Deste
modo, se se desejar eliminar o efeito de deslize por completo, o modo escolhido deveria ser o que
possui o menor erro de predição. No entanto, esta abordagem resulta na escolha do modo Intra para
a maior parte das imagens, impedindo um ganho de desempenho nos débitos binários mais altos do
intervalo; para evitar isso, é necessário um mecanismo que permita alcançar um equilíbrio entre a
redução do efeito de deslize e a diminuição da eficiência de codificação.
Para alcançar este efeito, definiu-se um parâmetro ld (Limiar de Deslize) que representa o máximo
valor de deslize permitido pelo AVC-MCFGS com a técnica AWBP, num dado instante. O modo
245
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
escolhido corresponde ao valor de α que apresenta o maior erro de predição mas sem exceder o
valor do parâmetro ld especificado. De forma a que o parâmetro ld seja independente do valor de
deslize máximo (modo Inter) e mínimo (modo Intra), utiliza-se o seguinte algoritmo, desenvolvido
pelo autor:
― Se o erro absoluto de predição do modo Inter for menor que o erro de predição do modo
Intra (i.e. diff[0] é menor ou igual a diff[4]), a imagem é codificada no modo Inter.
― Caso contrário:
ƒ
Calcula-se o deslize máximo (dt), como a diferença entre o erro de predição Inter e
Intra: dt = diff[0] - diff[4].
ƒ
Para o valor do parâmetro ld especificado, calcula-se o limiar (lt), que exprime o
valor máximo permitido para o erro absoluto de predição, da seguinte forma: lt =
dt×ld + diff[0].
ƒ
Escolhe-se o modo de predição que possui o maior erro absoluto de predição de
entre aqueles que possuem um erro menor que o valor de limiar lt calculado no
passo anterior.
A primeira opção corresponde ao caso onde a predição Inter apresenta um menor erro que a
predição Intra; isto só ocorre quando o efeito de deslize é totalmente eliminado, i.e. a qualidade da
referência WQR é superior à qualidade da referência LQR. O valor de limiar ld é ajustável entre 0 e
1 e permite ao codificador controlar a quantidade de deslize introduzido; quando ld é
aproximadamente igual a 1, o codificador escolhe frequentemente o modo Inter com vista a obter
uma eficiência de codificação superior nos débitos binários altos; quando ld é aproximadamente
igual a 0, o codificador escolhe o modo Intra frequentemente de forma a reduzir o efeito de deslize
para os débitos binários baixos.
Actualização da referência WQR e impacto do limiar de deslize (ld)
Devido à necessidade de determinar a imagem de referência WQR, o módulo de compensação de
deslize, introduzido no início da Secção 6.4.2, calcula duas predições:
― Imagem predita HQPI: corresponde à predição com a contribuição pesada da referência
da camada base e da referência da camada superior HQR, de acordo com o peso escolhido
pelo mecanismo de decisão.
― Imagem predita WQPI: corresponde à pior predição, calculada a partir da referência da
camada base LQR e da referência da camada superior com a pior qualidade WQR. Ambas as
referências são pesadas de acordo com o peso escolhido pelo mecanismo de decisão, i.e. a
imagem predita WQPI é calculada da seguinte forma:
WQPI = α ⋅ WQR [CM ] + (α − 1) ⋅ LQR (6.3)
A forma como se calcula o WQPI é idêntica ao cálculo da predição HQPI (ver Equação 6.2). O
WQPI apenas é utilizado para a estimação do efeito de deslize para a próxima imagem a codificar.
Dito de outra forma, para uma dada imagem i, quando se vai efectuar a estimação do efeito de
246
CAPÍTULO 6 ― ESCALABILIDADE FINA DE VÍDEO AVC-MCFGS
deslize, a referência WQR que vai ser utilizada reflecte a decisão efectuada (escolha do parâmetro α)
anteriormente na imagem i -1. Esta característica permite que se possa conhecer no codificador de
uma forma exacta, qual é o impacto no descodificador quando este escolhe um determinado
parâmetro α.
De forma a determinar o impacto do parâmetro ld no desempenho do AVC-MCFGS, apresentamse na Figura 6.18, as curvas PSNR do AVC-FGS e do AVC-MCFGS quando se utiliza a técnica de
predição parcial cíclica (CWBP) para reduzir o efeito de deslize usando ld = {0.9, 0.75, 0.5, 0.25}.
Sequência Table
PSNR(dB)
39
38
37
36
35
AVC -FGS
AWBP (ld = 0.25)
AWBP (ld = 0.5)
AWBP (ld = 0.75)
AWBP (ld=0.9)
34
33
32
bits/s
31
0
200000
400000
600000
800000
1000000
1200000
Figura 6.18 – Comparação do AVC-FGS com o AVC-MCFGS (com AWBP) para a sequência Table
(CIF a 10 Hz, Nref = 3) com ld = 0.25, 0.75, 0.5 e 0.9.
Tal como para a técnica anterior (CWBP), o efeito de deslize é completamente eliminado nos
débitos binários baixos, para os valores de ld = {0.75, 0.5, 0.25}. Tal como era esperado, à medida
que o valor de ld aumenta, o desempenho nos débitos binários mais altos também aumenta. A única
excepção ocorre para ld = 0.9 porque o efeito de deslize ainda é significativo e limita o ganho de
desempenho nos débitos binários mais altos do intervalo de codificação. Nesta experiência, para
valores superiores a ld=0.75, o desempenho nos débitos binários mais altos não aumenta e ocorre
uma degradação cada vez maior da qualidade da imagem nos débitos binários baixos (devido ao
efeito de deslize), tal como mostra a curva RD para ld = 0.9. Para ld = 0.9, muitas imagens da
camada superior são codificadas no modo Inter, o que faz com que o efeito de deslize seja mais
significativo. A escolha do parâmetro ld corresponde sempre a um compromisso entre a redução do
efeito de deslize e o desempenho máximo para os débitos binários superiores do intervalo de
codificação. O autor realizou várias experiências para um número mais amplo de sequências e
parâmetros de codificação, e os valores de ld que apresentavam um desempenho global maior (i.e.
para todo o intervalo de codificação), estão normalmente contidos entre 0.7 e 0.8.
6.5
Avaliação do desempenho do AVC-MCFGS
Para efectuar o estudo do desempenho do sistema AVC-MCFGS proposto na Secção 6.2 e dos
métodos de redução de deslize propostos na Secção 6.4 foi desenvolvido um codificador (e
respectivo descodificador) com as seguintes características:
247
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
1. Modelo de referência H.264/AVC JM5.0 para a camada base com um controlo de débito
semelhante ao TM5 e perfil Baseline (tal como na Secção 5.6).
2. Sintaxe da camada superior igual à já definida para o AVC-FGS.
3. Compensação de movimento na camada superior segundo a arquitectura apresentada na
Secção 6.2.
4. Técnicas para redução de deslize tal como propostas na Secção 6.4.
Para os métodos de predição pesada e para o método CBP de predição parcial, apenas uma imagem
do tipo Intra é codificada no início da sequência, enquanto que para o método ABP se insere uma
imagem do tipo Intra periodicamente de 8 em 8 imagens codificadas. A utilização de imagens Intra
só acontece para o método ABP devido à penalização de desempenho que este tipo de imagens
introduz nos débitos binários mais altos do intervalo de codificação para os restantes métodos. No
caso do método ABP, é necessária a introdução de imagens do tipo Intra, devido à sua fraca
capacidade de reduzir o efeito de deslize, uma vez que a escolha do parâmetro Nref para cada
imagem, é ditada apenas pelo débito RT, i.e. o débito para o qual se pretende obter o máximo de
desempenho (em comparação com o AVC-FGS). Com a introdução de imagens do tipo Intra,
podem utilizar-se valores mais altos de RT, atingindo um desempenho mais elevado para os débitos
binários superiores do intervalo e simultaneamente uma redução do efeito de deslize. Como o
principal objectivo deste Capítulo é propor e avaliar técnicas que permitam melhorar o desempenho
do codificador escalável AVC-FGS, utiliza-se sempre o codificador AVC-MCFGS com uma das
técnicas de redução de deslize activada; todos os resultados são obtidos utilizando como referência o
codificador AVC-FGS, já apresentado no Capítulo anterior.
6.5.1 Condições de teste
As condições de teste foram escolhidas de forma a abranger uma gama variada de sequências,
débitos binários, frequências de trama e resoluções espaciais. As sequências de teste utilizadas são
Boat, Canoa, Rugby, Stefan e Table, ou seja as mesmas que já foram utilizadas na Secção 5.6. As
condições de teste (ver Tabela 6.1) são iguais às condições de teste adoptadas pelo próprio MPEG
para a avaliação das propostas de melhoria de codificação escalável de vídeo com elevada
granularidade (norma MPEG-4 FGS) [9]. Ao escolher as mesmas condições de teste que o grupo
MPEG, torna-se possível a comparação do desempenho das técnicas aqui propostas com as novas
ferramentas de codificação escalável de vídeo com elevada granularidade propostas ao grupo
MPEG. As principais diferenças entre as condições de teste aqui apresentadas e aquelas usadas nos
Capítulos anteriores consistem na diminuição do número de cenários de 6 para 3 e no aumento do
valor máximo do débito binário (Rmax) do intervalo de codificação. Com estas novas condições de
teste, a melhoria de desempenho do AVC-MCFGS (em relação ao AVC-FGS) para os débitos
binários mais altos do intervalo de codificação possui uma maior importância, uma vez que o
desempenho do AVC-FGS é pior para os débitos binários altos do intervalo de codificação devido à
ausência do módulo de compensação de movimento. Com o AVC-MCFGS, pode aumentar-se a
gama de débitos binários que se pode extrair de um fluxo binário codificado, sem que o
desempenho seja muito penalizado nos débitos binários mais altos (tal como acontece com o AVCFGS). Para cada cenário, utiliza-se uma resolução espacial e temporal adequada à gama de débitos
248
CAPÍTULO 6 ― ESCALABILIDADE FINA DE VÍDEO AVC-MCFGS
binários que se pretende usar. Para cada par cenário/sequência, obtêm-se resultados PSNR para os
débitos binários Ri (débitos de descodificação), tanto para o AVC-FGS como para o AVC-MCFGS.
Tabela 6.1 – Condições de teste.
Cenário 1
Cenário 2
Cenário 3
Resolução espacial
QCIF
CIF
CIF
Resolução
temporal (Hz)
10
15
30
Camada base
H.264/AVC - Perfil Baseline (JM 5.0)
Débito binário da
camada base - Rbl
(kbit/s)
32
128
256
Débito binário
máximo - Rmax
(kbit/s)
256
1024
2048
32, 64, 128, 256
128, 256, 512, 768, 1024
256, 512, 1024, 1536,
2048
Débitos binários Ri
(kbit/s)
Período das
tramas I
Métodos CBP, CWBP, AWBP: apenas 1 imagem Intra no início.
Método ABP: 1 imagem do tipo Intra de 8 em 8 imagens.
Amplitude
vectores
movimento
16
16
16
32
32
32
Controlo de débito
TM5
TM5
TM5
TM5
TM5
TM5
Como o AVC-MCFGS apresenta um desempenho inferior ao AVC-FGS para os débitos binários
baixos do intervalo de codificação, é necessária a utilização de uma técnica de redução de deslize de
forma a melhorar o desempenho global do sistema. Deste modo, foram adoptadas quatro
configurações de teste, correspondentes a cada uma das técnicas de redução de deslize propostas na
Secção 6.4; para qualquer destas técnicas é necessário especificar os parâmetros que controlam a
quantidade de deslize introduzido, tendo sido definidos os seguintes valores:
― CBP (Cyclic BitPlane coding): Nrefmax = 2 (Cenário 1); Nrefmax = 3 (Cenário 2 e 3).
― ABP (Adaptative BitPlane coding): RT = (Rbl + Rmax)/2.
― CWBP (Cyclic Weighted BitPlane coding): P = 0.5 s.
― AWBP (Adaptative Weighted BitPlane coding): ld = 0.75.
― Para as técnicas CWBP e AWBP, o número de planos de bit Nref é mantido constante e igual
a 3, para qualquer cenário de teste.
Estes valores foram obtidos após um conjunto de experiências efectuadas para cada técnica de
redução do efeito de deslize; no fim de cada um das secções com os resultados correspondentes a
cada técnica, apresenta-se uma pequeno estudo (e.g. através de um gráfico PSNR) da influência de
cada um destes parâmetros no desempenho global do AVC-MCFGS.
249
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
Para qualquer configuração de teste, utiliza-se a medida de Bjontegaard dPNSR (ver Secção 3.6.2),
para avaliar o desempenho das técnicas de redução de deslize. A medida dPNSR, já usada em
Capítulos anteriores, exprime aqui a diferença média de qualidade entre as duas curvas PSNR do
AVC-MCFGS e do AVC-FGS para os débitos binários Ri definidos para cada cenário. A medida
dRate não é aqui avaliada porque os resultados não são tão relevantes como os referentes ao
dPSNR. Em compensação apresentam-se duas novas medidas:
― dMin: Diferença de qualidade mínima entre o codificador AVC-MCFGS e o AVC-FGS
medida para os débitos binários Ri definidos para cada cenário.
― dMax: Diferença de qualidade máxima entre o codificador AVC-MCFGS e o AVC-FGS
medida para os débitos binárioss Ri definidos para cada cenário.
A medida dMax corresponde normalmente ao maior débito binário Ri (ver Tabela 6.1) do intervalo
de codificação e a medida dMin corresponde a um débito binário baixo, normalmente ao segundo
débito binário Ri (ver Tabela 6.1) mais baixo definido para cada cenário. O valor mais baixo do
débito binário Ri corresponde à ausência da camada superior, onde o AVC-MCFGS tem um
desempenho igual à codificação não escalável H.264/AVC. Com as medidas dPSNR, dMin e dMax,
é possível, avaliar:
― a eficiência de cada técnica de redução de deslize para toda a gama de débitos binários
definidos para cada cenário através do dPSNR;
― a capacidade de cada técnica para reduzir o efeito de deslize (débitos binários Ri baixos)
através do dMin,
― a melhoria de desempenho que cada técnica proporciona nos débitos binários mais altos do
intervalo de codificação (débitos binários Ri altos) através do dMax.
6.5.2 Resultados e avaliação
Nesta Secção, compara-se o codificador AVC-MCFGS com o codificador AVC-FGS desenvolvido
no Capítulo anterior, o que é equivalente a comparar a codificação Intra do AVC-MCFGS com a
codificação Intra+Inter do AVC-MCFGS, uma vez que codificação Intra do AVC-MCFGS é igual à
codificação do AVC-FGS (ver Secção 6.2). Este estudo recorre às medidas de desempenho e às
condições de teste já apresentadas na Secção anterior. Para cada técnica, avaliam-se os resultados
obtidos de forma a averiguar qual das técnicas permite alcançar o melhor desempenho, tanto em
termos de redução do efeito de deslize como de melhoria do desempenho para os débitos binários
ais elevados do intervalo de codificação.
Técnica de predição parcial CBP
A Tabela 6.2 apresenta os resultados obtidos para o AVC-MCFGS em comparação com o AVCFGS (apenas para a componente de luminância) quando a técnica de redução de deslize CBP é
utilizada na camada superior. Os valores positivos indicam que o AVC-MCFGS (com o CBP) possui
um desempenho superior e os valores negativos indicam o contrário. Em relação ao desempenho,
podem-se distinguir claramente duas classes de sequências: as sequências extremamente rápidas Canoa e Rugby - que possuem uma correlação baixa entre imagens e as sequências Boat, Stefan e Table
250
CAPÍTULO 6 ― ESCALABILIDADE FINA DE VÍDEO AVC-MCFGS
com uma correlação entre tramas mais significativa. Para a primeira classe de sequências, o
desempenho do AVC-MCFGS é sempre inferior ao do AVC-FGS (medidas dPSNR, dMin e dMax),
pois a compensação de movimento não constitui uma mais valia para qualquer cenário, uma vez que
a correlação entre imagens é muito baixa, devido aos rápidos e bruscos movimentos de câmara e dos
objectos da cena.
De salientar que, para estas sequências, o desempenho do AVC-FGS em relação à codificação não
escalável H.264/AVC, apresenta a menor quebra de desempenho (ver Secção 5.6.3), sendo assim
mais difícil apresentar melhorias de desempenho com o AVC-MCFGS. Esta característica leva a
concluir que para estas sequências a utilização do modo Intra é mais vantajosa do que a utilização do
modo Inter, mesmo com a técnica de redução do efeito de deslize CBP. Este comportamento é
semelhante para todas as técnicas de redução do efeito de deslize aqui avaliadas.
Para as sequências Boat, Stefan e Table (i.e. para a segunda classe de sequências), o ganho médio de
desempenho (dPNSR) do AVC-MCFGS (com o CBP) é sempre positivo, apesar de não ser muito
significativo. O efeito de deslize ocorre para o cenário 3 da sequência Stefan (dMin = -0.01 dB) e Boat
(dMin = -0.11 dB) e para os cenários 2 e 3 da sequência Table (dMin = -0.17 e -0.15 dB,
respectivamente). Esta perda de desempenho não é muito significativa, pois é sempre menor que 0.2
dB, o que permite concluir que o efeito de deslize foi reduzido com sucesso. Por outro lado, a
melhoria de desempenho para o débito binário mais alto do intervalo de codificação (dMax) é mais
significativa para as sequências Boat e Stefan, com um ganho máximo de 0.71 dB para o cenário 3 da
sequência Stefan; aqui a compensação de movimento introduzida na camada superior permite
explorar a redundância temporal de uma forma mais eficiente que o AVC-FGS (que apenas explora
a redundância temporal na camada base).
Tabela 6.2 – Desempenho relativo do AVC-MCFGS com a técnica CBP em relação ao AVC-FGS.
Boat
Canoa
Rugby
Stefan
Table
dPSNR dMin dMax dPSNR dMin dMax dPSNR dMin dMax dPSNR dMin dMax dPSNR dMin dMax
Cenário 1
0.23
0.01
0.54
-0.16
-0.17 -0.14
-0.19
-0.21 -0.15
0.27
0.06
0.31
0.18
0.04
0.23
Cenário 2
0.14
0.07
0.43
-0.35
-0.53 -0.19
-0.34
-0.44 -0.25
0.28
0.04
0.69
0.06
-0.17 0.34
Cenário 3
0.06
-0.11 0.41
-0.28
-0.43 -0.14
-0.26
-0.39 -0.16
0.28
-0.01 0.71
0.02
-0.15 0.26
Concluindo, a técnica de redução do efeito de deslize CBP permite melhorar ligeiramente o ganho
médio do desempenho do AVC-MCFGS (em comparação com o AVC-FGS), mas apenas para as
sequências onde existe uma correlação elevada entre imagens. Para estas sequências, o efeito de
deslize é reduzido significativamente, no entanto não ocorrem ganhos de desempenho muito
significativos, nomeadamente para os débitos mais elevados.
Técnica de predição parcial ABP
A Tabela 6.3 apresenta os resultados (apenas para a componente de luminância) para o AVCMCFGS com a técnica de redução de deslize ABP. De forma a reduzir o efeito de deslize, esta
técnica insere imagens do tipo Intra de uma forma periódica de 8 em 8 imagens. Este valor foi
obtido experimentalmente, i.e. avaliou-se o desempenho para os débitos binários mais baixos do
251
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
intervalo de codificação, para um conjunto significativo de sequências e para vários valores de
periodicidade Intra. De uma forma geral, a técnica de redução de efeito de deslize ABP apresenta
resultados inferiores em relação à técnica CBP para as sequências Canoa, Rugby e Boat, isto para
qualquer medida: dPSNR, dMin e dMax. A técnica CBP escolhe o número de planos de bit
utilizados como referência (Nref) de acordo com o débito binário definido pelo parâmetro RT. Como
as características das sequências a codificar não são tidas em conta na escolha de RT, são utilizados
valores demasiadamente altos de Nref para as características das sequências Canoa e Rugby (baixa
correlação baixa entre imagens). A utilização de valores altos de Nref, para esta classe de sequências,
reflecte-se nos baixos valores das medidas dMin, dMax e dPSNR; sempre inferiores aos que foram
obtidos com técnica anterior CBP, para qualquer cenário de teste.
Para a sequência Boat, o efeito de deslize é reduzido (dMin de -0.04 dB para qualquer cenário)
através das imagens do tipo Intra; no entanto, para os débitos binários mais altos do intervalo de
codificação o ganho de desempenho é penalizado (dMax de 0.22 dB). As sequências Stefan e Table
apresentam valores de dMax e dMin semelhantes aos apresentados para a técnica CBP, para a maior
parte dos cenários; no entanto, obtêm-se resultados de dPSNR superiores, especialmente para a
sequência Stefan. Esta melhoria dos valores de dPSNR é devida à capacidade da técnica ABP em
optimizar o desempenho global do sistema de uma forma mais eficiente, especialmente quando o
parâmetro RT é igual à média dos limites do intervalo de codificação Rbl e Rmax.
Tabela 6.3 – Desempenho relativo do AVC-MCFGS com a técnica ABP em relação ao AVC-FGS.
Boat
Canoa
Rugby
Stefan
Table
dPSNR dMin dMax dPSNR dMin dMax dPSNR dMin dMax dPSNR dMin dMax dPSNR dMin dMax
Cenário 1
0.06
-0.04 0.17
-0.50
-0.98 -0.18
-0.47
-0.67 -0.37
0.48
-0.10 0.62
0.39
-0.17
0.6
Cenário 2
0.20
0.11
0.22
-0.40
-0.54 -0.35
-0.46
-0.61 -0.42
0.60
0.08
0.69
0.10
-0.14 0.33
Cenário 3
0.03
-0.02 0.22
-0.45
-0.76 -0.20
-0.34
-0.60 -0.24
0.55
-0.07 0.62
0.12
-0.07 0.43
Concluindo, a técnica ABP em comparação com a anterior (CBP) apresenta uma melhoria de
desempenho médio apenas para a sequências onde a codificação Intra não limita o seu ganho de
desempenho (Stefan e Table). Para as sequências onde existe uma correlação baixa entre tramas (i.e.
Canoa e Rugby), o efeito de deslize é mais acentuado em comparação com o CBP, ocorrendo uma
quebra de desempenho até 0.98 dB (medida dMin).
Técnica de predição pesada CWBP
A Tabela 6.4 apresenta os resultados (apenas para a componente de luminância) para o AVCMCFGS com a técnica de redução de deslize CWBP. Os resultados apresentam uma melhoria
significativa de desempenho em comparação com as técnicas de predição parcial, especialmente para
as sequências Boat, Stefan e Table, tanto em termos médios (dPSNR) como para os valores máximos e
mínimos de PSNR. O maior ganho registado de PSNR é de 1.54 dB (dMax) para a sequência Stefan
com o cenário 3 e a maior quebra de desempenho (-0.42 dB) corresponde à sequência Canoa para o
cenário 1. Tal como as técnicas anteriores, as sequências Canoa e Rugby apresentam os piores
resultados; no entanto, é de salientar que, pela primeira vez, existe uma melhoria obtendo-se
resultados positivos de dPSNR para o cenário 3 (ambas as sequências) e dMax superior a zero para a
252
CAPÍTULO 6 ― ESCALABILIDADE FINA DE VÍDEO AVC-MCFGS
sequência Canoa (todos os cenários) e Rugby (cenário 3). Quanto às sequências Boat, Canoa e Table, a
melhoria de desempenho é significativa com valores de dPSNR no intervalo [0.24; 0.68], valores de
dMin entre [-0.12; 0.13] e valores de dMax entre [0.84; 1.54].
Tabela 6.4 – Desempenho relativo do AVC-MCFGS com a técnica CWBP em relação ao AVC-FGS.
Boat
Canoa
Rugby
Stefan
Table
dPSNR dMin dMax dPSNR dMin dMax dPSNR dMin dMax dPSNR dMin dMax dPSNR dMin dMax
Cenário 1
0.43
-0.12 1.12
-0.08
-0.42 0.06
-0.29
-0.41 -0.08
0.56
0.01
1.32
0.39
-0.05 0.91
Cenário 2
0.40
-0.03 1.14
-0.12
-0.46 0.07
-0.17
-0.35 -0.01
0.68
0.13
1.47
0.24
-0.12 0.84
Cenário 3
0.29
-0.08 0.85
0.07
-0.24 0.17
0.01
-0.28 0.20
0.67
0.11
1.54
0.35
-0.07 0.87
Concluindo, a técnica de redução de deslize CWBP permite simultaneamente alcançar uma melhoria
média de desempenho e reduzir o efeito de deslize de uma forma significativa. De salientar a
simplicidade do mecanismo de decisão utilizado nesta técnica, sendo apenas necessário parametrizar
uma função cíclica de acordo com os modos de predição pesada definidos (que correspondem a
vários valores de α).
Técnica de predição pesada AWBP
A Tabela 6.5 apresenta os resultados (apenas para a componente de luminância) para o AVCMCFGS com a técnica de redução de deslize AWBP. Os resultados obtidos são melhores do que os
resultados obtidos com a técnica anterior CWBP pois os valores de dMax são sempre superiores
para qualquer cenário e sequência e os valores de dPSNR são superiores para a maior parte das
sequências e cenários; as únicas excepções são as sequências Boat, Rugby e Stefan para o cenário 1. Os
valores de dMin alcançados com a técnica AWBP são bastante semelhantes aos valores
correspondentes obtidos com a técnica CWBP, pois a variação do dMin entre técnicas (CWBP e
AWBP), para todas as sequências e cenários, está contida no intervalo [-0.08; 0.06]. O maior ganho
de desempenho de PSNR alcançado com a técnica AWBP é de 1.95 dB (dMax), correspondente à
sequência Stefan para o cenário 2. Comparando os resultados obtidos entre sequências, os melhores
valores, em termos médios (dPSNR) e máximos (dMax), foram obtidos para a sequência Stefan e os
resultados menos bons com a sequência Rugby, o que era esperado devido à baixa correlação entre
tramas da sequência Rugby e à alta correlação (comparativamente) entre as tramas da sequência
Stefan. A melhoria de desempenho proporcionada por esta técnica em comparação com o CWBP é
essencialmente devida ao esquema mais sofisticado de escolha dos pesos utilizados na predição, uma
vez que é efectuada uma estimação do efeito de deslize no codificador e determinado o parâmetro
α, de acordo com as estimativas feitas.
Tabela 6.5 – Desempenho relativo do AVC-MCFGS com a técnica AWBP em relação ao AVC-FGS.
Boat
Canoa
Rugby
Stefan
Table
dPSNR dMin dMax dPSNR dMin dMax dPSNR dMin dMax dPSNR dMin dMax dPSNR dMin dMax
Cenário 1
0.30
-0.16 1.53
-0.04
-0.39 0.10
-0.30
-0.46 -0.06
0.53
-0.07 1.59
0.46
-0.09 1.26
Cenário 2
0.57
0.02
-0.09
-0.50 0.18
-0.14
-0.37 0.03
0.85
0.15
0.40
-0.06 1.34
1.28
253
1.95
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
Cenário 3
0.31
-0.02 1.03
0.16
-0.21 0.25
0.11
-0.22 0.31
0.89
0.21
1.86
0.53
-0.04 1.21
Concluindo, esta técnica permite alcançar um desempenho superior em relação ao AVC-FGS para
os débitos binários mais altos do intervalo de codificação (reflectido nos valores superiores do dMax
e dPSNR), sem sacrificar o desempenho para os débitos binários mais baixos do intervalo de
codificação, i.e. onde tipicamente ocorre o efeito de deslize. O efeito de deslize é reduzido
significativamente com esta técnica para as sequências onde a correlação entre tramas é elevada (e.g.
Stefan, Table e Boat) e apresenta um comportamento semelhante quando se compara com a técnica
anterior (ABP).
Comparando todas as técnicas de redução do efeito de deslize apresentadas neste Capítulo, a técnica
AWBP apresenta os resultados mais promissores devido à sua efectiva capacidade de redução do
efeito de deslize e aos valores mais altos de desempenho máximo. Consegue-se assim aproximar o
desempenho do codificador escalável AVC-MCFGS da codificação não escalável H.264/AVC. Por
exemplo, a quebra de eficiência do codificador AVC-FGS em relação ao H.264/AVC para a
sequência Stefan é de 2.3 dB (valor médio para todos os cenários - Secção 5.6.3) e o ganho do
codificador escalável AVC-MCFGS em relação ao AVC-FGS é de 0.76 dB (valor médio para todos
os cenários). Saliente-se que, para os débitos binários mais altos do intervalo de codificação, este
ganho é superior o que significa que, para certas condições, o gap de qualidade entre o AVC-MCFGS
e o H.264/AVC foi significativamente diminuído.
6.6
Conclusões
Neste Capítulo apresentou-se um codificador escalável de vídeo, referido como AVC-MCFGS, que
tem como principal objectivo melhorar o desempenho do codificador AVC-FGS apresentado no
Capítulo anterior. Para alcançar este objectivo, o codificador aqui proposto utiliza na camada
superior uma referência de alta qualidade (HQR), obtida a partir da camada base e da camada
superior. A utilização de uma referência de alta qualidade permite uma predição temporal mais
precisa; no entanto, quando ocorrem flutuações na largura de banda ou erros na camada superior
(assume-se que a camada base é descodificada intacta), ocorre uma degradação na qualidade da
imagem de referência disponível no descodificador. Quando as imagens de referência do codificador
e descodificador não são iguais, ocorre o efeito de deslize que corresponde à introdução de erros de
predição que se propagam temporalmente e que pode levar a quebras de desempenho significativas
na ausência de medidas apropriadas para limitar o impacto deste tipo de erros. A redução (ou
eliminação completa) do efeito de deslize não pode ser realizada de uma forma eficiente no
descodificador, uma vez que este não conhece a informação disponível no codificador. A dificuldade
consiste em encontrar uma forma de recuperar a qualidade da imagem quando parte do fluxo
binário da camada superior não se encontra disponível no descodificador. As técnicas de redução do
efeito de deslize propostas pelo autor baseiam-se nos princípios da predição parcial e da predição
pesada (leaky prediction) e têm como principal objectivo alcançar um equilíbrio entre a eficiência de
codificação, a robustez a erros e a capacidade de adaptação à largura de banda disponível. Assim,
foram propostas duas classes de técnicas: a predição parcial e a predição pesada; estas técnicas
254
CAPÍTULO 6 ― ESCALABILIDADE FINA DE VÍDEO AVC-MCFGS
reduzem a contribuição da referência de alta qualidade (HQR) quando se efectua a compensação de
movimento da camada superior.
O número de planos de bit utilizados como referência, Nref, possui um papel importante na predição
da camada superior; quanto maior for o valor de Nref, mais informação da camada superior é
utilizada como referência. À medida que o valor de Nref aumenta, a redundância temporal é
explorada de uma forma mais eficiente e o desempenho também aumenta se todos os planos de bit
utilizados como referência forem recebidos pelo descodificador. No entanto, o aumento de Nref
também causa erros de deslize maiores, nomeadamente para os débitos binários mais baixos do
intervalo de codificação. Por outro lado, valores baixos de Nref podem reduzir o efeito de deslize,
mas implicam que as referências da camada superior (HQR) e da camada base (LQR) são
semelhantes aproximando-se perigosamente da codificação Intra, responsável pela degradação de
desempenho (em relação à codificação não escalável) nos codificadores MPEG-4 FGS e AVC-FGS.
As técnicas de predição parcial aqui apresentados tentam superar este dilema fazendo uso
simultaneamente de referências de baixa qualidade (Nref baixo) e de referências de alta qualidade (Nref
alto), de acordo com dois algoritmos projectados pelo autor. A predição parcial cíclica (CBP) utiliza
uma estrutura cíclica regular que faz uso de referências de alta e baixa qualidade e a predição parcial
adaptativa (ABP) utiliza um esquema de decisão para o valor do Nref, de acordo com o parâmetro
RT, i.e. o débito binário para o qual se deseja alcançar o melhor desempenho.
A segunda classe de técnicas baseia-se num esquema de predição pesada que faz uso de um peso α
(entre 0 e 1), utilizado para atenuar o efeito de deslize no descodificador quando recebe a camada
superior truncada. Quanto mais baixo for o valor do peso α, menor é a diferença entre as imagens
de referência do codificador e do descodificador e logo menor é o efeito de deslize. No entanto,
valores baixos de α levam a uma quebra de desempenho para os débitos binários mais altos do
intervalo de codificação, uma vez que apenas uma pequena quantidade de informação da camada
superior é utilizada como referência. Por outro lado, valores de α altos permitem alcançar um
desempenho superior para os débitos binários mais altos do intervalo de codificação, verificando-se
uma quebra de desempenho para os débitos binários mais baixos devido ao deslize. Este
comportamento é esperado, uma vez que a contribuição da camada superior na referência HQR é
significativa e os erros de deslize são pouco atenuados. De uma forma semelhante às técnicas de
predição parcial, o autor desenvolveu duas técnicas de redução do efeito de deslize: a predição
pesada cíclica (CWBP) e a predição pesada adaptativa (AWBP). O CWBP estabelece uma função de
variação para o parâmetro α de forma a atribuir à referência HQR uma importância maior (valores
de α altos) e menor (valores de α baixos) simultaneamente. O AWBP estima (no codificador) o
efeito de deslize presente no descodificador e escolhe um parâmetro α que reduza o efeito de
deslize, sem que haja uma degradação significativa do desempenho nos débitos binários mais altos
do intervalo de codificação.
Para qualquer das técnicas de redução de deslize aqui apresentadas, foi efectuado um estudo de
desempenho comparando o AVC-MCFGS com o AVC-FGS. Com este estudo, pretendeu-se
concluir qual das técnicas de redução do efeito de deslize, apresenta o melhor desempenho, para
todo o intervalo de codificação. Deste estudo, três conclusões importantes podem ser retiradas:
255
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
― As técnicas de redução do efeito de deslize, incluídas no codificador AVC-MCFGS, apenas
constituem uma mais valia significativa, para as sequência onde existe uma correlação
elevada entre tramas, i.e. apenas para a classe de sequências onde o desempenho do MPEG4 FGS e do AVC-FGS se afastava mais da codificação não escalável, MPEG-4 ASP e
H.264/AVC, respectivamente. A codificação Intra, ou seja sem compensação de movimento
na camada superior, para a sequências onde a correlação entre tramas é baixa ainda constitui
a melhor solução.
― Para as sequências onde o codificador AVC-MCFGS constitui uma mais valia, qualquer das
técnicas apresentadas permite reduzir significativamente o efeito de deslize, pois o
desempenho nos débitos binários mais baixos do intervalo não é penalizado de uma forma
significativa devido ao deslize. O valor de dMin exprime a capacidade de cada técnica em
reduzir o efeito de deslize e os valores obtidos são próximos de zero (maiores que -0.2 dB) o
que significa que os valores de PSNR obtidos são próximos daqueles obtidos com o AVCFGS (codificação Intra).
― O desempenho das técnicas de predição pesada é sempre superior ao desempenho das
técnicas de predição parcial, especialmente para as medidas de qualidade dPSNR e dMax. Ao
se efectuar a combinação pesada da referência da camada base LQR com a referência HQR,
as técnicas de predição pesada conseguem alcançar melhor desempenho desde que o
parâmetro α seja escolhido de uma forma adequada. Os resultados de dMax alcançados pela
técnica de predição pesada adaptativa (CWBP) são bastante promissores com uma melhoria
do desempenho até 2 dB.
A quebra típica de eficiência dos esquemas de codificação escalável em relação aos esquemas não
escaláveis é grande, tal como foi demonstrado nas Secções 3.6.3 (MPEG-4 FGS vs. MPEG-4 ASP) e
5.6.3 (AVC-FGS vs. H.264/AVC). No entanto, pode-se concluir que os esquemas aqui apresentados
representam um avanço e constituem um esforço em diminuir o custo da escalabilidade em termos
da eficiência de codificação para esquemas de codificação baseados na DCT, i.e. a quebra de
eficiência é cada vez menor.
256
Capítulo 7
7 Conclusões e trabalho futuro
A introdução da escalabilidade nos sistemas de codificação de vídeo é uma funcionalidade há muito
desejada; no entanto, os esquemas de codificação escalável actualmente disponíveis nas normas
(MPEG-2, MPEG-4 e H.263) não têm tido muito sucesso no mercado. Tal facto é devido a um
conjunto de factores, nomeadamente a sua complexidade e diminuição da eficiência de codificação,
que combinados levam a uma baixa adopção das normas escaláveis de codificação de vídeo em
sistemas comerciais. No entanto, a escalabilidade de vídeo é uma funcionalidade que permite
introduzir um nível mais elevado de flexibilidade na codificação e descodificação de vídeo. A norma
mais recente de codificação escalável de vídeo, MPEG-4 FGS, proporciona uma codificação
escalável de vídeo com elevada granularidade e é adequada à distribuição de vídeo em canais ou
terminais que apresentem um comportamento variável ou desconhecido em termos de algumas das
suas características, nomeadamente a largura de banda. Por outro lado, a norma MPEG-4 FGS, tal
como as normas anteriores, apresenta um quebra de desempenho significativa, quando comparada
com a codificação não escalável de vídeo, especialmente se se tiver em conta os últimos avanços
nesta área, i.e. a norma H.264/AVC. Desta forma, o trabalho desenvolvido no contexto desta tese
tinha como um dos objectivos principais o de desenvolver um novo codificador escalável de vídeo
com elevada granularidade e que ultrapassasse o desempenho limitado das soluções de escalabilidade
propostas no âmbito das actuais normas de codificação de vídeo.
Tendo como ponto de partida este objectivo, o autor começou por apresentar as principais
abordagens, técnicas e soluções já existentes nesta área, quer na literatura em geral, quer
especificadas nas normas de codificação de vídeo. Os Capítulos 2 e 3 apresentam uma revisão
bibliográfica dos vários esquemas de codificação escalável de vídeo disponíveis na literatura, com um
especial ênfase nas normas de codificação de vídeo e de imagens fixas. A norma MPEG-4, devido
ao número significativo de ferramentas de codificação escalável de vídeo e de imagens fixas que
especifica, é apresentada com um maior detalhe, em especial o modo de codificação escalável de
vídeo com elevada granularidade, MPEG-4 FGS, devido ao âmbito e objectivos desta tese. A norma
H.264/AVC também é apresentada em detalhe no Capítulo 4, uma vez que representa um passo
importante na evolução das normas de codificação de vídeo não escaláveis. As ferramentas de
codificação e a sintaxe da norma H.264/AVC servirão como modelo nos capítulos seguintes para o
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
desenvolvimento de novos codificadores escaláveis de vídeo, quer através da sua utilização na
camada base, quer através da reutilização de algumas das ferramentas de codificação de vídeo na
camada superior. Neste contexto, as principais contribuições desta tese são:
― Estudo do desempenho da norma MPEG-4 FGS: Nesta tese apresenta-se um estudo da
eficiência da norma MPEG-4 FGS, realizado pelo autor, para um conjunto vasto de
sequências e de condições de teste. Os resultados das experiências aqui realizadas (ver
Capítulo 3) demonstraram que a norma FGS possui um desempenho inferior à codificação
não escalável, especialmente para sequências com uma correlação temporal alta. Este estudo
de desempenho serve como uma referência importante, sempre que se pretende reduzir o
custo da escalabilidade em relação à codificação não escalável em termos de eficiência.
― Desenvolvimento e avaliação do codificador escalável AVC-FGS: O codificador AVCFGS proposto nesta tese representa um nova solução para a codificação escalável de vídeo
com elevada granularidade. Tal como a norma MPEG-4 FGS, a arquitectura do codificador
AVC-FGS é constituída por uma camada base e por uma camada superior. Na camada base,
é utilizado um codificador não escalável H.264/AVC, uma solução mais eficiente que o
codificador MPEG-4 ASP utilizado na norma MPEG-4 FGS. Os ganhos de desempenho
alcançados com a norma H.264/AVC resultam de novas ferramentas de codificação de
vídeo, sendo de salientar as seguintes: compensação de movimento, codificação entrópica,
filtro de redução de efeito de bloco, transformada inteira e novos modos de codificação
Intra. Estas novas ferramentas de codificação de vídeo, em particular as novas transformadas
e os novos esquemas de codificação entrópica, levaram ao desenvolvimento de raiz de um
novo codificador para a camada superior do AVC-FGS. Consegue-se assim reutilizar ao
máximo essas novas ferramentas, mantendo uma complexidade de implementação baixa e
tirando partido das características das novas ferramentas de codificação de vídeo já definidas
na camada base, e.g. baixa complexidade da transformada e do esquema de codificação
entrópica. O estudo de desempenho realizado para o codificador AVC-FGS permitiu
concluir (ver Capítulo 5): a) o AVC-FGS apresenta um desempenho superior ao MPEG-4
FGS, devido à introdução da codificação não escalável H.264/AVC na camada base e b)
apresenta uma quebra de desempenho significativa em relação à codificação não escalável
H.264/AVC.
― Desenvolvimento do codificador escalável AVC-MCFGS: O codificador escalável de
vídeo AVC-MCFGS tem como principal objectivo melhorar o desempenho do codificador
AVC-FGS uma vez que este apresenta ainda uma quebra de desempenho significativa em
relação ao H.264/AVC. Para alcançar este objectivo, o codificador aqui proposto utiliza na
camada superior uma referência de alta qualidade (HQR), obtida não só a partir da camada
base (como no FGS e no AVC-FGS) mas também da camada superior. A arquitectura AVCMCFGS foi desenvolvida a partir da arquitectura AVC-FGS: enquanto o codificador da
camada base não sofre qualquer alteração e corresponde ao codificador não escalável
H.264/AVC já utilizado no AVC-FGS, ao codificador da camada superior foi acrescentado
um módulo de compensação de movimento, de transformada inversa e uma memória
adicional para guardar a imagem de referência HQR. Deste modo, estão disponíveis no
258
CAPÍTULO 7 ― CONCLUSÕES E TRABALHO FUTURO
codificador AVC-MCFGS duas referências: a) a referência LQR da camada base, obtida a
partir das tramas anteriormente descodificadas da camada base e com menor qualidade e b) a
referência HQR obtida a partir das tramas anteriormente descodificadas da camada base e de
alguns (Nref) planos de bit da camada superior. Esta referência possui uma qualidade superior
em relação à referência LQR usada no FGS e no AVC-FGS e é responsável pelo ganho de
desempenho do AVC-MCFGS em relação ao AVC-FGS.
― Implementação e avaliação de técnicas de redução do efeito de deslize: A utilização
de uma referência de alta qualidade, tal como se faz na solução AVC-MCFGS, permite uma
predição temporal mais precisa; no entanto, quando ocorrem flutuações na largura de banda
ou erros na camada superior, ocorre uma degradação na qualidade da imagem de referência
disponível no descodificador. Se a imagem de referência utilizada pelo codificador não se
encontra (parcialmente ou completamente) disponível no descodificador, são introduzidos
erros de predição que podem levar a quebras de desempenho significativas. Este problema é
referido como efeito de deslize e caracteriza-se por uma diminuição do desempenho (em
comparação com o AVC-FGS) nos débitos binários mais baixos do intervalo de codificação.
Para diminuir o impacto deste efeito, foram desenvolvidas pelo autor, técnicas de redução
do efeito de deslize que se baseiam nos princípios de predição parcial e predição pesada.
Qualquer destas técnicas tem como principal objectivo alcançar um equilíbrio entre a
eficiência de codificação, a robustez a erros e a capacidade de adaptação à largura de banda
disponível. Todas as técnicas de redução de deslize propostas nesta Tese foram avaliadas,
nomeadamente em comparação com o AVC-MCFGS (sem técnicas de deslize) e o AVCFGS. Desta forma, verificou-se que as técnicas desenvolvidas constituem uma mais valia
significativa, especialmente para sequências de vídeo onde a correlação entre tramas é alta.
De entre as técnicas de redução do efeito de deslize testadas, as técnicas de predição parcial
apresentam um desempenho superior, com resultados bastantes promissores e melhorias de
desempenho até 2 dB em comparação com o AVC-FGS (ver Capítulo 6).
As contribuições aqui apresentados responderam de forma clara ao objectivo principal desta tese:
melhorar a eficiência dos esquemas híbridos de codificação escalável de vídeo com elevada
granularidade. Através de uma gestão cuidadosa do efeito de deslize, o codificador AVC-MCFGS
consegue reduzir significativamente a quebra de qualidade que se verificava relativamente à
codificação não escalável, nomeadamente entre o MPEG-4 FGS e a MPEG-4 ASP.
7.1
Trabalho Futuro
Apesar dos esforços realizados no âmbito desta tese para melhorar a eficiência de codificação do
MPEG-4 FGS, constituírem um avanço significativo, não esgotam o trabalho que pode ser
efectuado nesta área. Algumas possibilidades em termos da continuação do trabalho apresentado
nesta Tese são aqui apresentadas:
― Combinação das técnicas de predição parcial e pesada: No Capítulo 6, foram
apresentados dois tipos de técnicas com o objectivo de reduzir o efeito de deslize e melhorar
o desempenho nos débitos binários mais altos do intervalo de codificação: predição parcial e
predição pesada. No entanto, estas técnicas foram desenvolvidas e avaliadas separadamente
259
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
no âmbito do codificador AVC-MCFGS. Um sistema que combine ambas as técnicas poderá
aumentar a sua eficácia no alcance dos objectivos definidos, nomeadamente ao decidir em
simultâneo: a) o número de planos de bit Nref utilizados como referência e b) as
contribuições da imagem de referência HQR e da camada base LQR na imagem de
referência da camada superior (parâmetro α). Este tipo de solução deverá permitir alcançar
uma melhoria no desempenho global, especialmente se a escolha de ambos os parâmetros
for realizada de acordo com uma estimativa do efeito de deslize no descodificador, e.g. de
forma semelhante à técnica AWBP.
― Predição pesada ou parcial ao nível do macrobloco: As técnicas de predição pesada e
parcial implementadas no codificador AVC-MCFS baseiam-se na escolha do número de
planos de bit de referência Nref e do parâmetro α. A escolha destes parâmetros é sempre
realizada ao nível da imagem, permitindo uma maior simplicidade e também manter a sintaxe
e semântica do AVC-MCFGS igual à do AVC-FGS. No entanto, como o efeito de deslize é
mais acentuado em determinadas zonas da imagem do que noutras, faz sentido que a escolha
dos parâmetros α e Nref (separadamente ou em conjunto) seja efectuada ao nível do
macrobloco. Este tipo de solução deverá permitir uma melhoria do desempenho global do
AVC-MCFGS através da optimização da escolha dos parâmetros com uma maior frequência
espacial, em vez de tentar encontrar os parâmetros que melhorem globalmente o
desempenho para toda a imagem. Ao nível da sintaxe será necessário incluir uma camada
adicional com o modo de codificação de cada macrobloco; devido à importância desta
informação, esta deveria ser enviada antes da informação correspondente aos planos de bit
para cada coeficiente da DCT.
― Melhoria da eficiência da codificação entrópica na camada superior: O sistema de
codificação entrópica (ULVC) desenvolvido no âmbito do codificador AVC-FGS apresenta
uma quebra de eficiência em relação aos relação aos códigos de Huffman utilizados no
MPEG-4 FGS (ver Secção 5.6.2). O uso de um esquema de codificação entrópica mais
eficiente na camada superior deverá permitir uma melhoria de desempenho significativa para
um conjunto amplo de condições de teste. Assim, é desejável a integração dos esquemas de
codificação entrópica CA-VLC e CABAC já definidos na norma H.264/AVC, na camada
superior do AVC-MCFS. Estes esquemas, apesar da sua complexidade, apresentam uma
eficiência superior, essencialmente porque exploram informação sobre o contexto, i.e. a
codificação de um elemento de sintaxe depende dos elementos de sintaxe anteriormente
codificados. A técnica CABAC, apenas definida no perfil Main do H.264/AVC, permite
alcançar um melhor desempenho devido ao motor de codificação aritmética utilizado. De
forma a integrar qualquer destes esquemas de codificação entrópica na camada superior, será
necessário conhecer as estatísticas condicionadas de cada elemento de sintaxe (i.e. de acordo
com o contexto) e ter em consideração que os elementos a codificar são bits (com valores 0
e 1) que pertencem a um dado plano de bit.
― Optimização RD (Rate/Distortion): A optimização RD é uma técnica não normativa, já
implementada na camada base do H.264/AVC e responsável por ganhos de desempenho
significativos. No contexto das técnicas de redução do efeito de deslize implementadas no
260
CAPÍTULO 7 ― CONCLUSÕES E TRABALHO FUTURO
AVC-MCFGS, todas as decisões (nomeadamente a escolha dos parâmetros Nref e α) são
efectuadas de acordo com um critério heurístico, i.e. a distorção não é calculada de uma
forma precisa, para cada uma das hipóteses possíveis. As técnicas de optimização RD
permitem alcançar um melhor desempenho, através de uma maior controlo sobre as
escolhas do codificador, especialmente quando se necessita de seleccionar entre diferentes
possibilidades (de parâmetros de codificação). Esta melhoria é mais significativa quando os
parâmetros de codificação têm um impacto significativo no desempenho, para uma ampla
gama de distorção/débito binário, tal como acontece na camada superior do AVC-MCFGS.
O desafio aqui consiste na aplicação destas técnicas num codificador escalável de elevada
granularidade, para o qual não existe um débito binário fixo, mas sim um intervalo de
codificação para o qual se deseja alcançar o melhor desempenho para qualquer débito.
Através de um modelo para os débito binário e distorção de cada macrobloco (necessário
para a optimização RD), é possível optimizar o desempenho do AVC-MCFGS, eliminando
por completo o efeito de deslize e maximizando o desempenho para os débitos binários
superiores do intervalo de codificação. A optimização RD pode até ser realizada de uma
forma conjunta na camada base e na camada superior, maximizando globalmente a qualidade
da imagem na camada base e da camada superior de forma a minimizar a distorção para uma
dada gama de débitos binarios.
― Inclusão de tramas do tipo B na camada superior: A norma MPEG-4 FGS definiu dois
tipos de tramas na camada superior: além das tramas FGS que proporcionam escalabilidade
na qualidade, foi incluído outro tipo de tramas residuais na camada superior, designadas por
tramas FGS temporais (FGST). As tramas FGST são preditas a partir das tramas da camada
base que estão temporalmente antes e depois da trama FGST (de uma forma semelhante às
tramas do tipo B), o que proporciona a desejada escalabilidade temporal. Do mesmo modo,
podem ser introduzidas no codificador AVC-MCFGS tramas que são preditas a partir de
uma ou mais referências da camada superior que estão temporalmente antes e depois da
trama do tipo B. No caso de se desejar manter a filosofia do H.264/AVC na camada
superior, estas tramas podem ser utilizadas como referência por outro tipo de tramas (do
tipo P ou B). Nesse caso, não será possível garantir a escalabilidade temporal sem a
introdução do efeito de deslize, uma vez que o descodificador necessita de receber os planos
de bit de referência da trama do tipo B por completo. Ao incluir as tramas do tipo B na
camada superior, espera-se uma melhoria de desempenho do AVC-MCFGS, tal como
acontece na camada base H.264/AVC, uma vez que a energia do sinal residual pode ser
ainda mais reduzida, devido à utilização de imagens de referência que se encontram
temporalmente no futuro.
― Estrutura Intra/Inter-Layer: O codificador AVC-MCFGS aqui desenvolvido obedece à
estrutura de codificação Intra-Layer (ver Secção 6.1) com duas tramas de referência: uma
para a camada base obtida a partir de tramas que pertencem à camada base e outra para a
camada superior obtida a partir de tramas que pertencem à camada superior (com uma maior
qualidade); esta solução não explora a redundância entre as referências da camada base e da
camada superior. Uma forma de eliminar esta redundância é utilizar informação da camada
superior na camada base, obtendo-se assim uma estrutura do tipo Intra/Inter-Layer. Como
261
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
deste modo a qualidade da referência da camada base seria mais elevada, conseguir-se-ia
obter uma melhor predição na camada base e reduzir a redundância entre referências,
melhorando o desempenho global do codificador AVC-MCFGS quando todos os planos de
bit de referência são recebidos pelo descodificador. No entanto, uma arquitectura deste tipo
implica a introdução de deslize na camada base quando a informação da camada superior
utilizada como referência for corrompida ou não for totalmente recebida pelo
descodificador. De forma a reduzir o efeito de deslize em ambas as camadas e manter um
desempenho alto, devem ser utilizados esquemas de redução do efeito de deslize
simultaneamente na camada base e na camada superior. Paralelamente, pode evitar-se a
propagação dos erros na camada base, utilizando informação da camada superior apenas em
tramas que não sejam utilizadas como referência.
A lista de possíveis actividades futuras acima apresentada concentra-se nos esforços em melhorar a
eficiência da codificação escalável de elevada granularidade, de forma a que o seu desempenho em
termos de eficiência seja o mais próximo possível da codificação não escalável. No entanto, hoje em
dia, novas funcionalidades são desejadas, tendo em conta as novas exigências de várias aplicações
como: a) produção e distribuição de conteúdo para vários canais (e.g. DVDs, computadores
pessoais, STB, terminais móveis); b) aplicações de armazenamento de vídeo; c) protecção por
camadas de conteúdo audiovisual; d) distribuição de conteúdo em redes WLAN e em redes móveis;
e) distribuição de conteúdo em redes heterogéneas ou seja constituídas por vários troços com
diferentes características (e.g. com QoS ou best-effort); f) adaptação do conteúdo em pontos
intermédios da rede. Neste contexto, listam-se de seguida algumas funcionalidades desejadas pelas
aplicações já mencionadas e que actualmente não são suportadas por nenhuma norma de codificação
de vídeo:
― Codificação escalável universal: O objectivo principal de qualquer sistema de codificação
escalável de vídeo é obter uma única representação codificada do conteúdo que possa servir
o maior número de terminais e de redes. Neste contexto, deve poder ser extraído desse fluxo
escalável universal o maior número possível de representações do vídeo em relação às suas
características, i.e. é necessário suportar um número elevado de níveis de resolução temporal,
espacial e de qualidade. A codificação escalável universal obriga ao suporte flexível de
combinações de cada um destes tipos de escalabilidade. Um sistema deste tipo permitiria
também ir ao encontro das preferências de cada utilizador, e.g. alguns utilizadores preferem
resolução temporal elevada, enquanto outros preferem uma melhoria na resolução espacial
ou menos artefactos de codificação, i.e. uma maior qualidade.
― Escalabilidade de complexidade: Devido ao número cada vez maior de terminais, com
diferentes capacidades de processamento e memória, é desejável que o sistema de
codificação escalável de vídeo permita implementações de baixa complexidade tanto do
codificador como do descodificador. Por exemplo, para certos tipos de terminais, tais como
terminais móveis, é necessário que o sistema de codificação e descodificação de vídeo não
seja exigente demais em termos de processamento ou memória, tendo em conta os recursos
escassos que este tipo de terminais possui.
262
CAPÍTULO 7 ― CONCLUSÕES E TRABALHO FUTURO
― Escalabilidade de conteúdo: A escalabilidade de conteúdo é uma funcionalidade desejada
por cada vez mais aplicações, e.g. anúncios interactivos, ensino à distância, entre outras. A
escalabilidade de conteúdo permite ao utilizador visualizar um ou mais objectos de vídeo
com uma resolução temporal, espacial ou de qualidade diferentes, de acordo com a
importância que o utilizador lhe atribui. Por outro lado, os terminais com uma capacidade de
processamento baixa ou acesso a um canal de comunicação com baixo débito (e.g. terminal
GPRS) podem facilmente reduzir a qualidade de alguns objectos do vídeo menos
importantes sem influenciar a qualidade de outros objectos com maior relevância no
contexto da aplicação em questão.
― Elevada eficiência de codificação e elevada robustez a erros de transmissão: Estes
dois tipos de requisitos são normalmente conflituosos, pois à medida que se alcança um
melhor eficiência de codificação, maior é tipicamente o impacto dos erros de transmissão na
qualidade do vídeo descodificado. No entanto, a escalabilidade de elevada granularidade,
devido à sua estrutura em camadas, permite uma degradação suave da qualidade da imagem
em diferentes condições de transmissão, i.e. para diferentes tipos de erros e taxas de erros.
Desta forma é importante, o desenvolvimento de sistemas de codificação escalável que
mantenham uma elevado desempenho, mantendo uma elevada robustez a erros de
transmissão. A introdução de algum conhecimento a priori das características dos canais de
transmissão, a combinação com técnicas de codificação de canal ou a atribuição de
prioridades que protejam certas partes do fluxo binário em detrimento de outras podem
ajudar a alcançar este objectivo.
Em conclusão, a escalabilidade de vídeo é um tópico de investigação bastante actual com muitos
aspectos problemáticos que ainda necessitam de ser investigados e resolvidos. Actualmente, existe
uma iniciativa do grupo MPEG de forma a desenvolver uma norma de codificação escalável com
desempenho superior ao da norma MPEG-4 FGS e acrescentar também algumas novas
funcionalidades exigidas pelo mercado. Desde a adopção da norma MPEG-4 FGS surgiram não só
um conjunto significativo de contribuições para melhorar a eficiência desta norma mas também
outras técnicas com desempenho promissor, e ainda o interesse redobrado por parte da indústria em
sistemas deste tipo. Reconhecendo este esforço, o grupo MPEG emitiu em Março de 2003, uma
chamada de tecnologia [3] (call for evidence) como vista a avaliar os avanços que foram atingidos na
área de codificação escalável de vídeo depois da especificação da norma MPEG-4 FGS. Nesta
chamada de tecnologia, também foi dado ênfase a novas funcionalidades, ainda não suportadas pelas
anteriores normas, e.g. combinação dos tipos de escalabilidade espacial, temporal e de qualidade,
escalabilidade de complexidade e de conteúdo, desempenho em redes com características dinâmicas,
atraso, múltiplas adaptações do conteúdo, etc. Das várias contribuições recebidas identificaram-se
duas classes distintas [2]:
― Técnicas de codificação híbrida: Este grupo de propostas (3 ao todo) baseava-se no
popular modelo de codificação híbrida com duas camadas. Todas as propostas neste grupo,
utilizaram na camada base um codificador não escalável H.264/AVC e exploram a
redundância temporal na camada superior com um módulo adicional de compensação de
movimento e uma memória para guardar uma referência de alta qualidade. Os codificadores
263
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
submetidos apresentavam uma arquitectura semelhante ao codificador AVC-MCFGS
proposto no âmbito desta tese, incluindo algumas técnicas de redução do efeito de deslize
mas também outras técnicas visando novas funcionalidades, e.g. escalabilidade espacial.
― Técnicas de codificação de vídeo em sub-bandas 3D: Este grupo de propostas (6 ao
todo) baseava-se numa abordagem alternativa aos sistemas de codificação híbrida utilizados
hoje em dia: a codificação de vídeo em sub-bandas 3D. De forma a reduzir a redundância
temporal, todas as propostas utilizavam uma técnica de compensação de movimento e
filtragem no eixo temporal, aplicando-se de seguida uma decomposição espacial com
ôndulas, às imagens filtradas temporalmente. Este tipo de técnicas permite oferecer múltiplas
resoluções espaciais e temporais e uma gama fina de débitos binários. Todos os
codificadores submetidos apresentavam uma estrutura semelhante, utilizando a técnica
MCTF (Motion Compensated Temporal Filtering), codificação de textura embebida e codificação
aritmética.
Todas as técnicas submetidas ao grupo MPEG foram avaliadas em relação ao seu desempenho,
através de testes subjectivos informais. As comparações foram efectuadas lado a lado em relação a
duas referências: a codificação não escalável de vídeo H.264/AVC e a codificação escalável de vídeo
MPEG-4 FGS. Qualquer das propostas apresentou um desempenho superior ao MPEG-4 FGS e
algumas das técnicas apresentaram um desempenho bastante competitivo em relação ao
H.264/AVC. Na sequência da demonstração de evidência de que existem soluções escaláveis mais
competitivas do que o MPEG-4 FGS, o MPEG decidiu iniciar o desenvolvimento de uma nova
norma, tendo emitido uma chamada preliminar de tecnologias para codificação escalável de vídeo [4]
que apresentem desempenho superior ao da norma MPEG-4 FGS e se aproximem do desempenho
da norma não escalável H.264/AVC. Em dezembro de 2003, será emitido formalmente a chamada
final para propostas de codificação escalável de vídeo, que respeitem os requisitos delineados em [1],
de forma a realizar-se uma avaliação subjectiva de todas as técnicas propostas.
Concluindo, existe um conjunto significativo de técnicas de codificação escalável que apresentam
um desempenho próximo da codificação não escalável do H.264/AVC, prometendo assim eliminar
o custo da escalabilidade em termos de eficiência de modo a garantir no futuro a adopção
generalizada da escalabilidade nos sistemas de codificação de vídeo mais populares.
264
Anexo A
A Distribuição de vídeo em tempo-real
A distribuição de vídeo em tempo-real (independentemente de a codificação ser em tempo-real ou
offline) implica algumas exigências em termos de qualidade de serviço (QoS), nomeadamente largura
de banda, atraso e taxa de erros. Uma das primeiras exigências que normalmente se impõe é o débito
binário mínimo (e.g. 28 kbit/s) de forma a alcançar uma qualidade de visualização suficiente para a
aplicação em causa. A distribuição de vídeo em tempo-real possui também exigências em termos do
atraso máximo aceitável, uma vez que a apresentação do vídeo deve ser contínua. Se existirem
atrasos significativos na entrega do vídeo, o processo de reprodução irá sofrer pausas, o que elimina
a sensação de continuidade. Por último, as aplicações de vídeo impõem limites superiores na taxa de
erros de transmissão, uma vez que a sua ocorrência pode deteriorar significativamente a qualidade da
apresentação. As características do canal de transmissão são determinantes na definição dos
problemas associados à transmissão de vídeo em tempo-real. Normalmente, num sistema de
distribuição de vídeo em tempo-real distinguem-se dois modos de operação:
― Codificação e distribuição em tempo-real: Neste modo, o conteúdo deve ser codificado e
distribuído em tempo-real. A codificação de vídeo em tempo-real é necessária para emissões
em directo de eventos televisivos (live streaming) e para aplicações como videotelefonia e
videoconferência. A complexidade de um sistema deste tipo é crucial, uma vez que este tem de
capturar, digitalizar, codificar, multiplexar e adaptar o fluxo binário à rede de comunicação
usada, respeitando requisitos de atraso muito exigentes. Em sistemas deste tipo, utilizam-se
técnicas de controlo de débito para adaptação à largura de banda disponível combinados com
mecanismos ao nível da rede para estimar e monitorizar as características do canal (e.g. taxa de
erros, débito binário disponível, etc.). Uma vez que a complexidade é determinante, muitos
dos sistemas deste tipo são totalmente implementados em hardware ou de uma forma híbrida
hardware/software. Normalmente, apenas se efectua a codificação e distribuição em tempo-real
quando é estritamente necessário; para aplicações que disponibilizam vastas quantidades de
conteúdo audiovisual esta solução é inaceitável devido à complexidade associada.
― Codificação offline e distribuição em tempo-real: Neste modo, o conteúdo de vídeo é
codificado e armazenado para ser distribuído mais tarde, e.g. quando existe um pedido por
parte do utilizador. Não existe uma ligação directa entre o codificador e o servidor encarregue
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
da distribuição de vídeo, uma vez que o vídeo codificado é armazenado primeiro e só depois é
distribuído, o que pode permitir alguma interacção por parte do utilizador (e.g. recuar,
avançar, parar, etc.). A complexidade do codificador de vídeo não é um factor determinante
uma vez que a codificação não necessita de ser efectuada em tempo-real. No entanto, novos
problemas surgem, especialmente se o codificador desconhecer as características da rede de
distribuição (e.g. largura de banda) ou algumas características dos terminais dos clientes. Por
exemplo, considere-se o caso em que um utilizador pretende enviar um vídeo adquirido com a
sua câmara digital para um conjunto de telemóveis de terceira geração. Para que a transmissão
seja bem sucedida é necessário algum processamento intermédio para que o conteúdo seja
adaptado à rede e ao terminal em causa. É neste contexto que a escalabilidade de vídeo possui
um valor acrescido, pois facilita a adaptação do conteúdo às diferentes necessidades que
surjam depois da codificação.
Um dos factores mais importantes na distribuição de vídeo é a definição de uma arquitectura (e dos
seus componentes) capaz de lidar de uma forma elegante com os vários tipos de redes e terminais,
utilizados na distribuição de vídeo em tempo-real. Uma arquitectura para a distribuição de vídeo no
modo offline é apresentada na Figura A.1. O vídeo e o áudio são adquiridos digitalmente e
codificados por codificadores de vídeo e áudio, respectivamente, multiplexados e de seguida
armazenados no servidor para mais tarde serem distribuídos. Esta arquitectura e a descrição dos
blocos que a constituem está orientada para uma pré-codificação (modo offline) da informação
audiovisual, pois é nesse âmbito que a escalabilidade de vídeo tem um papel importante na
adaptação às características da rede e do terminal.
Figura A.1 – Arquitectura de distribuição de vídeo.
Quando ocorre um pedido do cliente, o servidor deve ir buscar os dados audiovisuais codificados à
unidade de armazenamento sendo estes adaptados pelo módulo de controlo de qualidade de serviço
(QoS). A principal função deste módulo é a adaptação dos fluxos binários de vídeo e áudio às
características da rede e aos requisitos de QoS. Depois desta adaptação, os protocolos de
distribuição de vídeo fornecem um conjunto de serviços (e.g. empacotamento) de forma a transmitir
o fluxo binário através da rede de distribuição, com a máxima robustez. Durante o transporte, a
informação codificada pode sofrer vários tipos de erros (e.g. erros de bit, perdas de pacotes, etc.). O
266
ANEXO A ― DISTRIBUIÇÃO DE VÍDEO EM TEMPO-REAL
cliente deve receber a informação empacotada, passá-la pelos protocolos de distribuição, pelo
controlo de QoS, desmultiplexá-la e descodificá-la para apresentação no terminal do utilizador. Esta
arquitectura pode suportar todos os tipos de informação multimédia e não só o vídeo e o áudio mais
convencionais, nomeadamente conteúdos sintéticos e objectos de vídeo com forma arbitrária, tal
como acontece na norma MPEG-4 Visual. Da arquitectura apresentada, pode observar-se que
existem seis componentes importantes na distribuição de vídeo, descritas de seguida.
A.1 Codificação de vídeo
O vídeo adquirido necessita de ser comprimido de forma a reduzir a largura de banda necessária
para a sua transmissão. Os esquemas de compressão podem ser classificados em duas categorias:
codificação não escalável de vídeo e codificação escalável. Os sistemas de codificação escalável de
vídeo permitem que o conteúdo seja facilmente adaptável a variações na largura de banda e a um
conjunto amplo de ligações com débitos binários diferentes. Para cada um dos componentes da
arquitectura a seguir apresentados, analisa-se o papel da escalabilidade de vídeo, as funcionalidades
que suporta, bem como as “mais valias” que oferece em relação à codificação não escalável.
A.2 Servidor
O servidor pode ter de distribuir, dezenas, centenas ou milhares de fluxos de vídeo simultaneamente
e tem um papel determinante na distribuição de informação audiovisual. De forma a poder fornecer
serviços de qualidade é necessário que os servidores possuam uma capacidade de processamento
elevada para respeitar os exigentes requisitos de tempo e minimizar o aparecimento de artefactos
(e.g. pausas no vídeo e interrupções no áudio) no terminal do utilizador. Em algumas aplicações, os
servidores também têm de oferecer operações de controlo básicas, como pausa/resumo, avançar e
recuar de forma a permitir ao cliente navegar no vídeo transmitido. Normalmente, um servidor de
vídeo possui três componentes importantes:
― Sistema de armazenamento: O sistema de armazenamento de informação audiovisual tem
de suportar um acesso rápido à informação para minimizar o tempo de espera do cliente.
Além disso, tem de possuir uma grande capacidade e uma alta tolerância quando ocorrem
falhas. Diversas técnicas de optimização e robustez são usadas, tais como o acesso paralelo aos
dados, armazenamento hierárquico e duplicação de dados em discos separados.
― Sistema operativo: O sistema operativo consiste numa camada intermédia entre o hardware e
as aplicações de software. O sistema operativo para os servidores de informação audiovisual
necessita de satisfazer requisitos de tempo-real para as aplicações de distribuição de vídeo.
Técnicas de gestão de processos, recursos e ficheiros são essenciais para cumprir estes
requisitos, especialmente quando o número de clientes a fazer pedidos de informação
audiovisual é elevado.
― Comunicação: O sistema de comunicação de um servidor engloba a aplicação responsável
pela distribuição de vídeo e a implementação dos protocolos de transporte (e.g.
empacotamento, sincronização, etc.). Este componente é responsável pela comunicação entre
267
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
cada cliente e o servidor pois recebe os pedidos efectuados pelo cliente e, de acordo com os
pedidos, distribui o conteúdo de uma forma sincronizada e contínua.
O papel das técnicas de codificação escalável de vídeo no servidor está intimamente relacionado
com os requisitos destes três componentes, salientando-se os aspectos da complexidade e da
capacidade de armazenamento. Normalmente, um fluxo de vídeo escalável pode ser facilmente
processado e distribuído, especialmente quando o número de sessões é elevado, e.g. através da
divisão do fluxo binário em várias camadas de forma a permitir uma fácil adaptação às características
da ligação (ou do terminal) de cada cliente. Em relação ao armazenamento, a escalabilidade também
pode ter um papel importante. Por exemplo, certas camadas podem ser armazenadas em sistemas
com um tempo de acesso inferior em relação a outras camadas menos acedidas (ou importantes).
Outro exemplo, consiste na utilização de escalabilidade para gerir o espaço de armazenamento
disponível, descartando certas camadas e mantendo outras de forma a acomodar novos fluxos
binários codificados.
A.3 Cliente
O cliente, como destino final na arquitectura de distribuição de vídeo, possui um papel importante
num sistema de distribuição de vídeo e as suas características têm um impacto determinante na
concepção de todos os componentes da arquitectura atrás apresentada. Os principais aspectos que
devem ser tidos em consideração são:
― Rede de acesso: A rede de acesso de cada terminal à rede de distribuição influencia de uma
forma determinante a distribuição do conteúdo audiovisual. As redes de acesso podem ser
divididas em dois tipos: redes móveis e redes fixas. As características mais importantes de cada
rede são a largura de banda, a qualidade de serviço (QoS), o atraso e o modelo de transmissão
(unicast vs multicast). Nas redes baseadas em pacotes (e.g. IP), outras características como a taxa
de perda de pacotes, MTU (Maximum Transfer Unit) ou o jitter no atraso da transmissão são
também importantes. Além destas características, a rede móvel apresenta muito mais ruído e
atenuações de pequena (multi-caminho)/grande escala (sombras) resultando em taxas de erros
de bit (BER) por vezes elevadas.
― Terminal do utilizador: Existe um vasto número de terminais com diferentes características
que podem aceder a conteúdo audiovisual. Cada terminal possui um conjunto de
características internas importantes, tais como a capacidade de memória e de processamento, a
resolução do ecrã, o número de cores suportado, a duração da bateria, os protocolos de
transporte disponíveis, os dispositivos de entrada e saída, etc.
― Preferências do utilizador: Além da tecnologia utilizada para aceder a conteúdo multimédia,
o utilizador, com as suas preferências e comportamentos, deve também ser tido em conta. O
cliente pode filtrar e procurar informação audiovisual de acordo com um conjunto de regras
estabelecidas ou obtidas a partir das preferências do utilizador. Por exemplo, o utilizador pode
especificar o modelo de transmissão de vídeo (downloading vs streaming) desejado, a qualidade
(baixa, alta ou média) para uma determinada cena de vídeo, a resolução espacial miníma, etc.
268
ANEXO A ― DISTRIBUIÇÃO DE VÍDEO EM TEMPO-REAL
O número de características do cliente que influenciam a distribuição de vídeo em tempo-real é de
facto bastante numeroso; quando se efectua a codificação não escalável de vídeo, é necessário
conhecer todos estas características na altura da codificação, de forma a garantir que o utilizador
tenha a melhor experiência possível. Normalmente, quando o cliente acede a conteúdo que não foi
codificado de acordo com as suas características ou preferências, a apresentação pode nem sequer
ser possível (e.g. número de cores superior ao suportado) ou não possuir o impacto desejado (e.g.
qualidade inferior ao desejado).
O elo que falta é uma representação de vídeo que seja independente de todos estes factores e que
melhore a experiência que o utilizador tem quando acede a informação audiovisual. A escalabilidade
de vídeo é um sério candidato para cumprir este objectivo, tal como as técnicas de transcodificação
no cliente e/ou servidor. Por exemplo, com a escalabilidade, os terminais de baixa complexidade,
com pouca memória, baixa capacidade de energia, etc. conseguem descodificar e visualizar o vídeo
com um qualidade adaptada às suas características, mas podem também proporcionar vídeo com
qualidade superior quando o poder computacional disponível aumenta.
A.4 Controlo de QoS
A gama de variação do débito binário efectivo e de outros parâmetros que caracterizam uma rede de
comunicações digital influencia o desempenho da transmissão de vídeo. No caso da Internet, a
variação do débito binário disponível pode ser observada durante pequenos e grandes períodos de
tempo durante uma sessão [6] e a amplitude das variações ocorridas pode ser significativa (Figura
A.2). No caso de uma rede móvel, as flutuações podem ocorrer devido a vários motivos: quando um
terminal móvel muda de rede (e.g. de uma rede WLAN para uma rede GPRS) ou quando a ligação
de um terminal é transferida entre estações de base (handover). Outros factores como a atenuação
multi-caminho, interferência entre canais, ruído e a variação da distância entre o terminal e a estação
de base podem também causar alterações significativas na capacidade do canal e causar problemas
sérios na transmissão de vídeo em redes móveis.
Figura A.2 – Distribuição do débito binário efectivo numa ligação IP entre Los Angeles e Nova Iorque [7].
O objectivo principal deste módulo é maximizar a qualidade do vídeo descodificado na presença de
erros de transmissão, e.g. perdas de pacotes ou erros de bit, e adaptar o débito binário do vídeo
codificado à capacidade do canal num determinado momento. As técnicas mais utilizadas são o
controlo de débito binário, adaptação do débito binário e mecanismos de resiliência a erros que
sumariamente se apresentam de seguida:
269
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
― Controlo de débito binário (rate control): O controlo do débito binário tenta minimizar a
possibilidade de congestão da rede através de mecanismos que adaptam o débito binário do
vídeo a transmitir à capacidade disponível na rede de distribuição. Na codificação não
escalável de vídeo, este tipo de controlo apenas é possível na codificação em tempo-real.
Tipicamente, o cliente envia alguma informação sobre o estado da rede ao codificador e este
regula a taxa de compressão do vídeo, através do controlo dos parâmetros de codificação (e.g.
factor/passo de quantificação). Quando se utilizam técnicas de codificação escalável de vídeo,
o controlo do débito binário pode ser realizado depois do vídeo já ter sido codificado, através
da transmissão de uma ou mais camadas de vídeo, até que o débito binário desejado seja
alcançado.
― Adaptação do débito binário: Este tipo de abordagem fornece uma interface (ou filtro)
entre o codificador e a rede de distribuição, que recebe como entrada o vídeo já comprimido e
o adapta às características da rede [4]. Este tipo de técnicas possibilita a separação entre o
codificador e a rede permitindo que vídeo já comprimido a um determinado débito seja
adaptado a qualquer tipo de débito. Existem muitos tipos de filtros, sendo o mais simples a
descodificação, processamento intermédio e recodificação completa do sinal de vídeo
processado, de acordo com outros requisitos. No entanto, esta abordagem é muitas vezes
inaceitável devido à sua complexidade, atraso e perda de qualidade. Outra abordagem é usar
um filtro que distingue o tipo de imagens (e.g. I, P e B na norma MPEG-2 Vídeo) e as elimina
de acordo com a sua importância. Este filtro permite reduzir o débito binário através da
eliminação de algumas imagens e transmissão das restantes, i.e. reduzindo a resolução
temporal. Outro tipo de filtros são os que efectuam operações no domínio da frequência (i.e.
coeficientes DCT): vários mecanismos são possíveis desde a filtragem passa-baixo (i.e.
eliminando os coeficientes DCT de alta frequência) dos coeficientes da luminância e/ou da
crominância, eliminação total dos coeficientes da crominância (resultando num vídeo
monocromático), recodificação dos coeficientes da DCT com um passo de quantificação mais
elevado e redução da resolução espacial no domínio da frequência através de técnicas de
refinamento dos vectores de movimento e filtros de sub-amostragem no domínio da DCT.
― Mecanismos de resiliência a erros: Os mecanismos de resiliência a erros pretendem
minimizar o impacto negativo dos erros através de uma representação eficiente e robusta da
informação de vídeo. Este tipo de técnicas pode ser classificado em dois tipos [3]:
ƒ
Codificação de fonte resiliente a erros: O objectivo da codificação de fonte resiliente a
erros é comprimir a informação de vídeo de uma forma adequada (de acordo com os
requisitos da aplicação) o mais eficientemente possível mas também de forma robusta à
presença de erros. Os esquemas de codificação normalizados (e.g. MPEG-4 Visual)
incluem o aumento dos marcadores de sincronização para diminuir o tempo que o
descodificador se encontra sem sincronismo depois de o perder, a divisão dos dados para
melhor protecção de partes do fluxo binário consideradas mais críticas ou
subjectivamente mais importantes e a codificação entrópica resiliente a erros através do
uso de códigos Reversible Variable Lenght Codes (RLVC) que permitem diminuir a
quantidade de informação desperdiçada devido aos erros.
270
ANEXO A ― DISTRIBUIÇÃO DE VÍDEO EM TEMPO-REAL
ƒ
Codificação de canal: A codificação de canal inclui dois tipos de técnicas: correcção de
erros Forward Error Control (FEC) e retransmissão Automatic Repeat Request (ARQ). O
princípio do FEC é adicionar informação redundante à mensagem original de forma que
esta possa ser recuperada quando ocorrem erros na rede. Apesar de existirem numerosos
esquemas do tipo FEC, estes podem ser classificados em dois tipos principais: códigos de
bloco, indicados para erros em rajada e perda de segmentos (usando interleaving), e códigos
convolucionais indicados para erros de bit. Muitas vezes, combinações de códigos são
utilizados para garantir uma maior protecção [1]. No ARQ, introduz-se redundância com
o objectivo de ajudar o descodificador a detectar um erro, não a corrigi-lo. Quando o
descodificador detecta um erro indica ao codificador o local da ocorrência e o codificador
retransmite a informação perdida ou transmite mais informação de forma a que o
descodificador consiga recuperar do erro.
― Mecanismos de cancelamento de erros: Estas técnicas lidam com os erros introduzidos
pelo canal que não são corrigidas pelo processo de descodificação de canal ou de fonte. O
cancelamento de erros é utilizado pelo cliente para diminuir ou eliminar o efeito negativo dos
erros que ocorreram e não foram detectados e/ou corrigidos, tornando a apresentação menos
desagradável aos olhos dos utilizadores (Figura A.3). Várias técnicas de detecção, localização e
cancelamento de erros têm sido propostas nos últimos anos (ver [9] para uma revisão
bibliográfica).
Figura A.3 – Cancelamento de erros utilizando técnicas de pós-processamento [3].
Em comparação com a codificação não escalável, a codificação escalável de vídeo possui algumas
vantagens quando combinada com mecanismos de resiliência de erros, devido à sua estrutura em
camadas. Cada camada possui informação que corresponde a um determinado nível de qualidade
e/ou resolução temporal e espacial do vídeo. Normalmente, a importância de cada camada decresce
à medida que o seu número de ordem aumenta, uma vez que para se obter uma representação útil a
partir de uma camada num nível superior é necessário descodificar todas as camadas nos níveis
inferiores. Neste contexto faz sentido que certas camadas sejam transmitidas com uma protecção
contra erros mais elevada [10] ou com maior prioridade [8] [5].
A.5 Protocolos de distribuição de vídeo
Os protocolos de distribuição de vídeo foram desenvolvidos e normalizados para permitir a
comunicação entre os clientes e os servidores de vídeo. No âmbito da Internet, vários protocolos
surgiram nos últimos anos através do processo de normalização do grupo IETF (Internet Engineering
Task Force), de forma a lidar com a variabilidade de recursos (e.g. largura de banda) típica em
271
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
ambientes deste tipo. Os protocolos directamente relacionados com a distribuição de vídeo podem
ser classificados, de acordo com as suas funcionalidades, nas seguintes três categorias:
― Protocolos de rede: Estes protocolos oferecem serviços de rede essenciais como o
endereçamento e encaminhamento da informação. Exemplos de protocolos de rede são o
protocolo de rede IP (Internet Protocol) usado na Internet e o protocolo ATM (Asynchronous
Transfer Mode). Em paralelo com o protocolo IP, existem protocolos que garantem QoS
através de mecanismos que gerem a largura de banda de forma a garantir que os requisitos das
aplicações multimédia possam ser cumpridos (e.g. atrasos, perdas, etc.). Um exemplo deste
tipo de protocolo é o RSVP (ReSerVation Protocol) que permite a reserva dos recursos da rede
de acordo com as exigências da aplicação. Outro tipo de protocolos de rede são os protocolos
que suportam serviços diferenciados, i.e. classificam o tráfego de cada aplicação segundo os
seus requisitos (e.g. fluxos binários de vídeo têm uma prioridade mais elevada que outro tipo
de dados).
― Protocolos de transporte: Os protocolos de transporte são o coração de toda a hierarquia de
protocolos e o seu objectivo é garantir a entrega da informação de uma forma robusta e
fornecer um conjunto de mecanismos de detecção de erros e de controlo do fluxo da
informação (e.g. reordenação dos pacotes). Os protocolos de transporte para redes IP incluem
o protocolo UDP (User Datagram Protocol), TCP (Transmission Control Protocol), RTP (Real-time
Transport Protocol) e RTCP (Real-Time Control Protocol). Os protocolos RTP e RTCP são
implementados no topo dos protocolos UDP/TCP, sendo responsáveis por fornecer um
conjunto de serviços para suportar o transporte em tempo-real de áudio e vídeo, e.g. através
de informação temporal e de sincronismo, identificação do tipo de dados, informação sobre a
QoS de uma ligação, etc.
― Protocolos de sessão: Os protocolos de sessão definem as mensagens e procedimentos para
estabelecer e controlar a transmissão de dados audiovisuais entre o cliente e o servidor,
durante uma sessão iniciada pelo utilizador. Normalmente, fornecem vários tipos de serviços
para iniciar, descrever, terminar ou controlar a distribuição de vídeo, e.g. através das funções
de controlo pause, resume, play ou de métodos de negociação das capacidades do cliente ou
servidor, descrição do tipo de dados, etc. O RTSP (Real-Time Streaming Protocol) e o SIP (Session
Initiation Protocol) são exemplos de protocolos de sessão.
A.6 Rede de distribuição
A própria rede de distribuição dos dados audiovisuais pode oferecer mecanismos capazes de reduzir
atrasos e perdas na entrega da informação. As técnicas mais usadas para alcançar uma melhoria na
QoS por parte da rede de distribuição são a adaptação do débito binário, transmissão de vídeo
ponto-multiponto (multicast) e a replicação do conteúdo.
― Adaptação do débito binário: Quando a adaptação do débito binário é utilizada na rede de
distribuição serve para reduzir a congestão de tráfego na rede e assim maximizar a qualidade
do vídeo recebido pelo utilizador. Tal como acontece no servidor, utilizam-se filtros para
alcançar este objectivo; no entanto estes filtros estão colocados na própria rede de
272
ANEXO A ― DISTRIBUIÇÃO DE VÍDEO EM TEMPO-REAL
distribuição, entre o servidor e os clientes (dando origem ao conceito de rede activa). Estes
filtros conhecem o formato do vídeo transmitido e são capazes de adaptar o débito binário do
fluxo de dados para minimizar a congestão de tráfego através da monitorização de parâmetros
importantes. Tipicamente, as técnicas aqui usadas são semelhantes às técnicas descritas na
Secção A.4, para adaptação do débito binário no servidor de vídeo, e.g. através da remoção de
imagens do fluxo de vídeo codificado.
― Transmissão de vídeo ponto multiponto (multicast): Esta técnica amplia a comunicação
tradicional ponto a ponto (unicast) através do transporte de dados para um conjunto de
destinos simultaneamente [2]. Com esta técnica, as aplicações podem enviar uma única cópia
dos dados para um grupo de clientes, permitindo uma melhoria de eficiência significativa em
relação à comunicação ponto a ponto que transmite N cópias dos dados, uma para cada
cliente. Esta técnica é considerada uma das mais importantes componentes em aplicações IP
de distribuição de vídeo, e suportada por vários elementos de rede (e.g. routers) instalados hoje
em dia na Internet.
― Replicação do conteúdo: Uma forma de melhorar o desempenho do sistema de distribuição
de vídeo é colocar o conteúdo mais perto dos clientes, através da introdução de servidores
intermédios (proxy). Esta estratégia tem a vantagem de reduzir o consumo de largura de banda
em pontos chaves da rede de distribuição, reduzir a carga no servidor e uma vez que o
conteúdo está mais perto do utilizador, minimizar o atraso e maximizar a disponibilidade do
conteúdo.
Para obter mais detalhe sobre as últimas cinco áreas tecnológicas: servidor, cliente, controlo de QoS,
protocolos de distribuição de vídeo e rede de distribuição, o leitor é aconselhado a consultar as
referências [11] e [12].
273
Anexo B
B Sequências de Teste
Neste Anexo apresenta-se uma breve caracterização das sequências de teste utilizadas ao longo desta
tese. Desta forma, evita-se repetir a descrição de cada sequência de teste, cada vez que esta é
utilizada. O leitor pode utilizar este anexo como referência cada vez que necessite de detalhes sobre
as características de cada sequência, sem ter de procurar o local exacto da descrição ao longo da tese.
Na Tabela B.1, apresenta-se um breve descrição das principais características de cada sequência.
Tabela B.1 – Características das sequências de teste.
Nome da
Sequência
Boat
Canoa
Carphone
Coastguard
Rugby
Resoluções
espaciais
disponíveis
CIF,QCIF
CIF,QCIF
CIF,QCIF
CIF,QCIF
CIF,QCIF
Nº de
tramas
260
220
382
300
260
Frequência
de trama
30 fps
25 fps
25 fps
25 fps
30 fps
Origem
VQEG
VQEG
MPEG
MPEG
VQEG
Nome da
Sequência
Foreman
Stefan
Table Tennis
Tempete
Waterfall
Resoluções
espaciais
disponíveis
CIF,QCIF
CIF,QCIF
CIF,QCIF
CIF,QCIF
CIF,QCIF
nº de
tramas
300
300
300
260
260
Frequência
de trama
25 fps
25 fps
25 fps
30 fps
30 fps
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
Origem
MPEG
MPEG
MPEG
VQEG
VQEG
As sequências de teste foram obtidas de duas fontes distintas: o grupo MPEG do ISO/IEC e o
grupo VQEG (Video Quality Experts Group) da ITU-T. De todas as sequências disponibilizadas no
contexto de ambos os grupos, foram escolhidas cinco do grupo MPEG e cinco do grupo VQEG.
As sequências de teste foram escolhidas de forma a representar uma grande variedade de cenários,
desde videotelefonia a desporto, movimentos rápidos, médios e lentos, áreas muito ou pouco
texturadas, diversos tipos de movimento de câmara, objectos rígidos e não-rígidos, faces, paisagens,
nuvens, água, etc. Esta variedade de conteúdos corresponde também a uma grande variedade de
dificuldades e particularidades de codificação como convém para que se obtenham resultados
representativos e para casos extremos. Apresenta-se de seguida uma descrição mais detalhada das
sequências de teste por ordem alfabética.
B.1 Sequência Boat
De todas as sequências de teste, esta sequência é aquela que apresenta a menor quantidade de
movimento ao longo do tempo. Consiste numa cena de um barco atracado num porto, filmada com
um câmara que se mantêm fixa durante toda a sequência. As duas bandeiras do barco apresentam
algum movimento, devido ao vento, e as nuvens deslocam-se lentamente provocando uma pequena
variação de iluminação na popa do barco. Algumas imagens desta sequência são apresentadas na
Figura B.1, com um espaçamento temporal de 52 imagens.
a)
b)
c)
d)
e)
f)
Figura B.1 – Sequência Boat: a) trama 0; b) trama 52; c) trama 104; d) trama 156; e) trama 208; f) trama 259.
276
ANEXO B ― SEQUÊNCIAS DE TESTE
B.2 Sequência Canoa
A sequência Canoa acompanha o movimento de uma praticante de canoagem num rio. Esta
sequência apresenta movimentos de câmara rápidos e um contraste elevado entre os objectos
presentes na cena (praticantes de canoagem) e o fundo. O praticante de canoagem, em primeiro
plano, apresenta um movimento rápido, variado e difícil de caracterizar. A água ocupa uma área
significativa na sequência e possui um movimento errático devido à corrente do rio. Algumas
imagens desta sequência são apresentadas na Figura B.2, com um espaçamento temporal de 44
imagens.
a)
b)
c)
d)
e)
f)
Figura B.2 – Sequência Canoa: a) trama 0; b) trama 44; c) trama 88; d) trama 132; e) trama 176; f) trama 219.
B.3 Sequência Carphone
A sequência Carphone corresponde a uma conversa video-telefónica num automóvel em movimento.
Possui zonas do fundo em que o movimento é quase inexistente (dentro do carro) e outras com uma
quantidade de movimento mais significativa (na janela). O interveniente na conversa video-telefónica
é bastante expressivo, com diversas reacções faciais e largos movimentos. A câmara mantêm-se
quase estática durante toda a sequência mas existe a vibração do carro. Algumas imagens desta
sequência são apresentadas na Figura B.3, com um espaçamento temporal de 76 imagens.
277
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
a)
b)
c)
d)
e)
f)
Figura B.3 – Sequência Carphone: a) trama 0; b) trama 76; c) trama 152; d) trama 228; e) trama 304; f) trama
380.
B.4 Sequência Coastguard
Na sequência Coastguard, a câmara está a seguir um pequeno barco que se desloca para a esquerda
(pan-left) até que um barco maior aparece do lado direito. Neste ponto, a câmara move-se
rapidamente para cima (tilt up) e começa a seguir o barco maior para a direita (pan-right). Os objectos
presentes na cena apresentam um movimento bem definido e constante. Algumas imagens desta
sequência são apresentadas na Figura B.4, com um espaçamento temporal de 60 imagens.
a)
b)
c)
d)
e)
f)
278
ANEXO B ― SEQUÊNCIAS DE TESTE
Figura B.4 – Sequência Coastguard: a) trama 0; b) trama 60; c) trama 120; d) trama 180; e) trama 240; f) trama
299.
B.5 Sequência Rugby
A sequência Rugby é a sequência mais rápida deste conjunto de sequências e consiste numa cena de
futebol americano. A câmara tenta seguir a bola, através de movimentos de câmara rápidos,
interrompidos por paragens. Além disso, todos os jogadores se movimentam de uma forma rápida e
ocorrem muitas oclusões. Algumas imagens desta sequência são apresentadas na Figura B.5, com um
espaçamento temporal de 52 imagens.
a)
b)
c)
d)
e)
f)
Figura B.5 – Sequência Rugby: a) trama 0; b) trama 52; c) trama 104; d) trama 156; e) trama 208; f) trama 259.
B.6 Sequência Foreman
Esta sequência pode ser claramente dividida em duas partes: um cena de video-telefonia típica onde
o terminal está na mão de quem fala, seguida de uma mudança rápida (em panning horizontal) para
uma cena de um prédio em construção. Durante a primeira cena, o movimento da câmara é
reduzido; no entanto, o interveniente na sessão video-telefónica treme um pouco e movimenta-se,
aproximando-se e afastando-se da câmara. Na segunda parte da sequência, o movimento da câmara
é significativo, com a ocorrência de um pan-left, combinado com um tilt-down. Nesta parte, os
objectos não apresentam qualquer movimento. Algumas imagens desta sequência são apresentadas
na Figura B.6, com um espaçamento temporal de 60 imagens.
279
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
a)
b)
c)
d)
e)
f)
Figura B.6 – Sequência Foreman: a) trama 0; b) trama 60; c) trama 120; d) trama 180; e) trama 240; f) trama
299.
B.7 Sequência Stefan
A sequência Stefan é uma sequência rápida que segue os movimentos de um jogador de ténis que se
movimenta em todas as direcções no campo. Por trás do jogador, encontra-se o público, uma área
com pouco movimento mas bastante texturada. Os movimentos de câmara são principalmente
horizontais e o movimento do jogador é bastante complexo ao longo do tempo. Algumas imagens
desta sequência são apresentadas na Figura B.7, com um espaçamento temporal de 60 imagens.
a)
b)
c)
d)
e)
f)
280
ANEXO B ― SEQUÊNCIAS DE TESTE
Figura B.7 – Sequência Stefan: a) trama 0; b) trama 60; c) trama 120; d) trama 180; e) trama 240; f) trama 299.
B.8 Sequência Table Tennis
A sequência Table tennis consiste num jogo de ténis de mesa. Esta sequência pode ser dividida em
duas partes, separadas por um corte de cena. Na primeira metade, é filmado o início do jogo e
ocorre um zoom-out sobre um dos jogadores; na segunda metade, é filmado o segundo jogador e a
câmara mantêm-se fixa. Algumas imagens desta sequência são apresentadas na Figura B.8, com um
espaçamento temporal de 60 imagens.
a)
b)
c)
d)
e)
f)
Figura B.8 – Sequência Table: a) trama 0; b) trama 60; c) trama 120; d) trama 180; e) trama 240; f) trama 299.
B.9 Sequência Tempete
A sequência Tempete é uma sequência semi-sintética, uma vez que mistura objectos do mundo real
com objectos gerados por computador. O único movimento de câmara que ocorre ao longo da
sequência é um zoom-out. Os únicos objectos que apresentam movimento são as folhas que caem em
primeiro plano. Entre os objectos e o fundo (em tons de azul saturado), o contraste é elevado.
Algumas imagens desta sequência são apresentadas na Figura B.9, com um espaçamento temporal
de 60 imagens.
281
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
a)
b)
c)
d)
e)
f)
Figura B.9 – Sequência Tempete: a) trama 0; b) trama 52; c) trama 104; d) trama 156; e) trama 208; f) trama 259.
B.10 Sequência Waterfall
A sequência Waterfall mostra uma paisagem com uma queda de água ao longe. Apresenta uma
textura rica, com muitas tonalidades de verdes e vermelhos. O único movimento de câmara que
ocorre é um zoom-out. Algumas imagens desta sequência são apresentadas na Figura B.10, com um
espaçamento temporal de 60 imagens.
a)
b)
c)
d)
e)
f)
Figura B.10 – Sequência Waterfall: a) trama 0; b) trama 52; c) trama 104; d) trama 156; e) trama 208; f) trama
259.
282
Referências
Capítulo 1
[1]
S. Blake, D. Black, M. Carlson, E. Davies, Z. Wang, W. Weiss, “An Architecture for Differentiated
Service”, RFC 2475, Dezembro 1998.
[2]
ISO/IEC International Standard 13818-2: 1995, “Generic Coding of Moving Pictures and Associated
Audio: Video”
[3]
ISO/IEC International Standard 14496-2: 2001, “Information Technology – Coding of Audiovisual
Objects – Part 2: Visual”
[4]
ISO/IEC International Standard 11172-1: 1993, “Information technology – Coding of Moving
Pictures and Associated Audio for Digital Storage Media at up to About 1,5 Mbit/s – Part 2: Video”
[5]
ISO/IEC International Standard 10918-1: 1993, “Information Technology – Digital Compression and
Coding of Continuous-Tone Still Images – Requirements and Guidelines”.
[6]
ISO/IEC International Standard 15444-1: 2000, “Information Technology – JPEG 2000 Image
Coding System -- Part 1: Core Coding System”.
[7]
ISO/IEC International Standard 14496-3: 2001, “Information technology – Coding of Audio-Visual
Objects – Part 3: Audio”
[8]
ISO/IEC International Standard 14496-2:2001/Amd 2, “Information Technology – Coding of
Audiovisual Objects – Part 2: Visual, Amendment 2: Streaming Video Profile”.
[9]
ITU Telecommunications Standardization Sector of ITU, “Video Codec for Audiovisual Services at
p×64 kbit/s”, ITU-T Recommendation H.261, Março 1993.
[10]
ITU Telecommunications Standardization Sector of ITU, “Video Coding for Low Bitrate
Communications”, ITU-T Recommendation H.263 Version 2, Fevereiro 1998.
[11]
Requirements Group, “Applications and Requirements for Scalable Video Coding”, ISO/IEC
JTC1/SC29/WG11 N5880, Reunião MPEG de Trondheim, Julho 2003.
[12]
Video Group, “Draft Call for Proposals on New Tools for Scalable Video Coding Technology”,
ISO/IEC JTC1/SC29/WG11 N5702, Reunião MPEG de Trondheim, Julho 2003.
[13]
Video Group, “Report on Call for Evidence on Scalable Video Coding (SVC) Technology”, ISO/IEC
JTC1/SC29/WG11 N5701, Reunião MPEG de Trondheim, Julho 2003.
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
[14]
T. Wiegand, G. Sullivan, A. Luthra, “Draft ITU-T Recommendation and Final Draft International
Standard of Joint Video Specification (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC)”, JVT-G050r1,
Reunião JVT (ISO/IEC MPEG & ITU-T VCEG) de Genebra, Junho 2003.
Capítulo 2
[1]
O. K. Al-Shaykh, E. Miloslavsky, T. Nomura, R. Neff, A. Zakhor, “Video Compression Using
Matching Pursuits”, IEEE Transactions on Circuits and Systems for Video Technology, Vol. 9, No. 1, pp. 123143, Fevereiro 1999.
[2]
E. Amir, S. McCanne, H. Zhang, “A Layered DCT Coder for Internet Video”, IEEE International
Conference on Image Processing, Lausanne, Suíça, Setembro 1996.
[3]
V. Bhaskaran, K. Konstantinides, “Image and Video Compression Standards”, Kluwer Academic
Publishers, Massachusetts, EUA, 1995.
[4]
P. J. Burt, E.H. Adelson, “The Laplacian Pyramid as a Compact Image Code”, IEEE Transactions on
Communications, Vol. COM-31, No. 4, pp. 532-540, Abril 1983.
[5]
N. Chaddha, G. Wall, B. Shmidt, “An End to End Software Only Scalable Video Delivery System”, 5th
International Workshop on Network and Operating System Support for Digital Audio and Video, Durham, New
Hampshire, EUA, Abril 1995.
[6]
E. Chang, A. Zakhor, “Variable Bit Rate MPEG Video Storage on Parallel Disk Arrays”, First
International Workshop on Community Networking Integrated Multimedia Services to the Home, São Francisco,
Califórnia, EUA, Julho 1994.
[7]
Y. Chen, C. Dufour, H. Radha, R. A. Cohen, M. Buteau, “Request for Fine Granular Video Scalability
for Media Streaming Applications”, ISO/IEC JTC1/SC29/WG11 M3792, Reunião MPEG de Dublin,
Julho 1998.
[8]
C. Christopoulos, A. Skodras, T. Ebrahimi, “The JPEG2000 Still Image Coding System: An
Overview”, IEEE Transactions on Consumer Electronics, Vol. 46, No. 4, pp. 1103-1127, Novembro 2000.
[9]
C. Christopoulos, J. Askelof, M. Larsson, “Efficient Methods for Encoding Regions of Interest in the
Upcoming JPEG2000 Still Image Coding Standard”, IEEE Signal Processing Letters, Vol. 7, No. 9, pp.
247-249, Setembro 2000.
[10]
G. Coté, B. Erol, M. Gallant, F. Kossentini, “H.263+: Video Coding at Low Bit Rates”, IEEE
Transactions on Circuits and Systems for Video Technology, Vol. 8, No. 7, pp. 849-866, Novembro 1998.
[11]
G. J. Conklin, S. S. Hemami, “A Comparison of Temporal Scalability Techniques”, IEEE Transactions
on Circuits and Systems for Video Technology, Vol. 9, No. 6, pp. 909-919, Setembro 2000.
[12]
R. Crochiere, S. Weber, J. Flanagan, “Digital Coding of Speech in Subbands”, Bell System Technology
Journal, No. 55, pp. 1069-1085, Outubro 1976.
284
REFERÊNCIAS
[13]
M. Domanski, A. Luczak, S. Mackowiak, “Spatio-Temporal Scalability for MPEG Video Coding”,
IEEE Transactions on Circuits and Systems for Video Technology, Vol. 10, No. 7, pp. 1088-1093, Outubro
2000.
[14]
B. Girod, U. Horn, B. Belzer, “Scalable Video Coding With Multiscale Motion Compensation and
Unequal Error Protection”, Symposium on Multimedia Communications and Video Coding, Cidade de Nova
Iorque, EUA, Outubro 1995.
[15]
W.-J. Han, B.-K. Lee, H.-J. Ha, C. Yim, “Experimental Results for Call for Evidence on Scalable Video
Coding Advances”, ISO/IEC JTC1/SC29/WG11 M9923, Reunião MPEG de Trondheim, Julho 2003.
[16]
K. Hanke, T. Rusert, S. Smeets, D. Thull, “Response to the Call for Evidence on Scalable Video
Coding”, ISO/IEC JTC1/SC29/WG11 M9835, Reunião MPEG de Trondheim, Julho 2003.
[17]
B. G. Haskell, A. Puri, A. N. Netravali, “Digital Video: An Introduction to MPEG-2”, Chapman &
Hall, Nova Iorque, EUA, 1997.
[18]
U. Horn, B. Girod, B. Belzer, “Scalable Video Coding in Multimedia Applications and Robust
Transmission over Wireless Channels”, 7th International Workshop on Packet Video, Brisbanne, Austrália,
Março 1996.
[19]
U. Horn, B. Girod, “Scalable Video Transmission for the Internet”, Computer Networks and ISDN
Systems, Vol. 29, No. 15, pp. 1833-142, Novembro 1997.
[20]
P. Howard, F. Kossenti, B. Martins, S. Forchhammer, W. Rucklidge, “The Emerging JBIG-2
Standard”, IEEE Transactions on Circuits and Systems for Video Technology, Vol. 8, No. 7, pp. 889-899,
Novembro 1998.
[21]
K. Illngner, F. Muller, “Spatially Scalable Video Compression Employing Resolution Pyramids”, IEEE
Journal on Selected Areas in Communications, Special Issue on Very Low Bit Rate Coding, Vol. 15, No. 9, pp.
1688-1704, Dezembro 1997.
[22]
Image Communications Lab, Wavelet Image Coding: PSNR Results, UCLA School of Engineering
and Applied Sciences, http://www.icsl.ucla.edu/~ipl/psnr_results.html
[23]
J. In, S. Shirani, F. Kossentini, “On RD Optimized Progressive Image Coding Using JPEG”, IEEE
Transactions on Image Processing, Vol. 8, No. 11, pp. 1630-1638, Novembro 1999.
[24]
Independent JPEG Group, Página Principal em: http://www.ijg.org/
[25]
ISO/IEC International Standard 10918-1: 1993, “Information Technology – Digital Compression and
Coding of Continuous-Tone Still Images – Requirements and Guidelines”.
[26]
ISO/IEC International Standard 14495-1: 2000, “Information technology - Lossless and near-lossless
compression of continuous-tone still images: Baseline”
[27]
ISO/IEC International Standard 13818-2: 1995, “Generic Coding of Moving Pictures and Associated
Audio: Video”
285
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
[28]
ISO/IEC International Standard 14496-2: 2001. “Information Technology – Coding of Audiovisual
Objects – Part 2: Visual”
[29]
ISO/IEC International Standard 15938-3: 2001, “Multimedia Content Description Interface - Part 3:
Visual”
[30]
ISO/IEC International Standard 15444-1: 2000, “Information Technology – JPEG 2000 Image
Coding System -- Part 1: Core Coding System”
[31]
ISO/IEC International Standard 14496-2: 2001/Amd. 2: 2002, “Information Technology – Coding of
Audiovisual Objects – Part 2: Visual, Amendment 2: Streaming Video Profile”
[32]
ITU Telecommunications Standardization Sector of ITU, “Video Coding for Low Bitrate
Communications”, ITU-T Recommendation H.263, Março 1996.
[33]
ITU Telecommunications Standardization Sector of ITU, “Video Coding for Low Bitrate
Communications”, ITU-T Recommendation H.263 Version 2, Fevereiro 1998.
[34]
A. K. Jain, “Fundamentals of Digital Image Processing”, Prentice-Hall International Edition, EUA,
1989.
[35]
G. Karlsson, M. Vetterli, “Packet Video and its Integration into the Network Architecture”, IEEE
Journal on Selected Areas in Communications, Vol. 7, No. 5, pp. 739-751, Junho 1989.
[36]
B.-J. Kim, Z. Xiong, W. A. Pearlman, “Low Bit-Rate Scalable Video Coding with 3-D Set Partitioning
in Hierarchical Trees (3-D SPIHT)”, IEEE Transactions on Circuits and Systems for Video Technology, Vol.
10, No. 8, pp. 1374-1386, Dezembro 2000.
[37]
W. Li, F. Ling, H. Sun, “Bitplane Coding of DCT Coefficients”, ISO/IEC JTC1/SC29/WG1
MPEG97/M2691, Outubro 1997.
[38]
M. W. Marcellin, M. J. Gormish, A. Bilgin, M. P. Boliek, “An Overview of JPEG2000”, IEEE Data
Compression Conference, Snowbird, Utah, EUA, Março 2000.
[39]
R. Mathew, J.F. Arnold, “Efficient Layered Video Coding Using Data Partitioning”, Signal Processing:
Image Communication, Vol. 14, No. 9, pp. 761-782, Julho 1999.
[40]
R. Mokry, D. Anastassiou, “Minimal Error Drift in Frequency Scalability for Motion-Compensated
DCT coding”, IEEE Transactions on Circuits and Systems for Video Technology, Vol. 4, No. 4, pp. 392-406,
Agosto 1994.
[41]
R. Neff, A. Zakhor, “Very Low Bit-Rate Video Coding Based on Matching Pursuits”, IEEE
Transactions on Circuits and Systems for Video Technology, Vol. 7, No. 1, pp. 158-171, Fevereiro 1997.
[42]
M. Rabbani, D. Santa-Cruz, “The JPEG 2000 Still-Image Compression Standard”, Course given at the
IEEE International Conference in Image Processing, Salónica, Grécia, Outubro 2001,
http://jj2000.epfl.ch/jj_publications/
286
REFERÊNCIAS
[43]
H. Radha, Y. Chen, K. Parthasarathy, R. Cohen, “Scalable Internet Video Using MPEG-4”, Signal
Processing: Image Communication, Special Issue on Real-time Video over the Internet, Vol. 15, No. 1-2, pp. 95-126,
Setembro 1999.
[44]
M. Sáenz, P. Salama, K. Shen, E.J. Delp, “An evaluation of Color Embedded Wavelet Image
Compression Techniques”, SPIE Conference on Visual Communications and Image Processing '99, São José,
Califórnia, EUA, Janeiro 1999.
[45]
A. Said, W. Pearlman, “A New, Fast and Efficient Image Codec Based on Set Partitioning in
Hierarchical Trees”, IEEE Transactions on Circuits and Systems for Video Technology, Vol. 6, No. 3, pp. 243250, Junho 1996.
[46]
D. Santa-Cruz, T. Ebrahimi, “A Study of JPEG 2000 Still Image Coding versus Other Standards”,
Proceedings of the X European Signal Processing Conference (EUSIPCO), Tampere, Finlândia, Setembro 2000.
[47]
D. Santa-Cruz, R. Grosbois, T. Ebrahimi, “JPEG 2000 Performance Evaluation and Assessment”,
Signal Processing: Image Communication, Vol. 17, No. 1, pp. 113-130, Janeiro 2002.
[48]
J. Shapiro, “Embedded Image Coding Using Zerotrees of Wavelet Coefficients”, IEEE Transactions on
Signal Processing, Vol. 41, No. 12, pp. 3445-3462, Dezembro 1993.
[49]
A. Skodras, C. Christopoulis, T. Ebrahimi, “The JPEG 2000 Still Image Compression Standard”,
IEEE Signal Processing Magazine, Vol. 18, No. 5, pp. 22-36, Setembro 2001.
[50]
M.-T. Sun, A. Reibman, “Compressed Video over Networks”, Signal Processing and Communications
Series, Marcel Dekker, Nova Iorque, EUA, 2001.
[51]
K. H. Tan, M. Ghanbari, “Layered Image Coding Using the DCT Pyramid”, IEEE Transactions on Image
Processing, Vol. 4, No. 4, pp. 512-516, Abril 1995.
[52]
D. Taubman, A. Zakhor, “Multirate 3-D Subband Coding of Video”, IEEE Transactions on Image
Processing, Vol. 3, No. 5, pp. 572-588, Setembro 1994.
[53]
D. Taubman, “High Performance Scalable Image Compression with EBCOT”, IEEE Transactions on
Image Processing, Vol. 9, No. 7, pp. 1158-1170, Julho 2000.
[54]
J. Y. Tham, S. Ranganath, A. A. Kassim, “Highly Scalable Wavelet-Based Video Codec for Very Low
Bit-Rate Environment”, IEEE Journal on Selected Areas in Communications, Vol. 16, No. 1, pp. 12-27,
Janeiro 1999.
[55]
H. V. Trees, “Detection, Estimation and Modulation Theory”, Wiley, Nova Iorque, EUA, 1968.
[56]
B. E. Usevitch, “A Tutorial on Modern Wavelet Image Compression: Foundations of JPEG2000”,
IEEE Signal Processing Magazine, Vol. 18, No. 5, pp. 22-36, Setembro 2001.
[57]
M. Vetterli, “Multidimensional Subband Coding: Some Theory and Algorithms”, Signal Processing,
Vol. 6, No. 2, pp. 97-112, Abril 1984.
[58]
VideoQ, Página Principal em: www.ctr.columbia.edu/videoq/
287
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
[59]
W3C
Recommendation,
“PNG
http://www.w3.org/TR/REC-png
(Portable
Network
Graphics)
Specification”,
[60]
G. K. Wallace, “The JPEG Still Picture Compression Standard”, IEEE Transactions on Consumer
Electronics, Vol. 38, No. 1, pp. 18-34, Fevereiro 1992.
[61]
Z. Xiong, K. Ramchandran, M. Orchad, “Space-frequency Quantization for Wavelet Image Coding”,
IEEE Transactions on Image Processing, Vol. 6, No. 5, pp. 677-693, Maio 1997.
Capítulo 3
[1]
M. Bénetière, C. Dufour, “Matching Pursuits Residual Coding for Video Fine Granular Scalability”,
ISO/IEC JTC1/SC29/WG11 M4008, Reunião MPEG de Atlantic City, Outubro 1998.
[2]
G. Bjontegaard, “Calculation of Average PSNR Differences Between RD-curves”, ITUT/SG16/VCEG-M33, Reunião VCEG de Austin, Abril 2001.
[3]
N. Brady, “MPEG-4 Standardized Methods for the Compression of Arbitrarily Shaped Video
Objects”, IEEE Transactions on Circuits and Systems for Video Technology, Special Issue on Object-Based Video
Coding and Description, Vol. 9, No. 8, pp. 1170-1190, Dezembro 1999.
[4]
N. Brady, F. Bossen, N. Murphy, “Context-based Arithmetic Encoding of 2D Shape Sequences”,
IEEE International Conference on Image Processing, Washington, DC, EUA, Outubro 1997.
[5]
Y. Chen, H. Radha, R. A. Cohen, “Results of Experiment on Fine Granular Scalability With Wavelet
Coding of Residuals”, ISO/IEC JTC1/SC29/WG11 M3988, Reunião MPEG de Atlantic City,
Outubro 1998.
[6]
S.-C. S. Cheung, A. Zakhor, “Matching Pursuits Coding for Fine Granularity Video Scalability”,
ISO/IEC JTC1/SC29/WG11 M3991, Reunião MPEG de Atlantic City, Outubro 1998.
[7]
T. Ebrahimi, C. Horne, “MPEG-4 Natural Video Coding – An Overview”, Signal Processing: Image
Communication, Tutorial Issue on the MPEG-4 Standard, Vol. 15, No. 4-5, pp. 365-385, Janeiro 2000.
[8]
T. Ebrahimi, “MPEG-4 Video Verification Model: A Video Encoding/Decoding Algorithm Based on
Content Representation”, Signal Processing: Image Communication, Special Issue on MPEG-4, Vol. 9, No. 4,
pp. 367-384, Maio 1997.
[9]
H. Eriksson, “MBONE: The Multicast Backbone”, Communications of the ACM, Vol. 37, No. 8, pp 5461, Agosto 1994.
[10]
M. Gallant, F. Kossentini, “Rate-Distortion Optimized Layered Coding with Unequal Error Protection
for Robust Internet Video”, IEEE Transactions on Circuits and Systems for Video Technology, Special Issue on
Streaming Video, Vol. 11, No. 3, pp. 357-372, Março 2001.
[11]
Implementation Study Group, “Text of ISO/IEC Working Draft 14496-9 Information Technology –
Coding of Audio Visual Objects - Part 9: Reference Hardware Description”, ISO/IEC
JTC1/SC29/WG11 N5153, Reunião MPEG de Shangai, Outubro 2002.
288
REFERÊNCIAS
[12]
ISO/IEC International Standard 14496-1: 2001, “Information Technology – Coding of Audiovisual
Objects – Part 1: Systems”
[13]
ISO/IEC International Standard 14496-2: 2001, “Information Technology – Coding of Audiovisual
Objects – Part 2: Visual”
[14]
ISO/IEC International Standard 14496-2: 2001/Amd. 2: 2002, “Information Technology – Coding of
Audiovisual Objects – Part 2: Visual, Amendment 2: Streaming Video Profile”
[15]
ISO/IEC International Standard 14496-3: 2001, “Information Technology – Coding of Audiovisual
Objects – Part 3: Audio”
[16]
ISO/IEC International Standard 14496-4: 2000, “Information Technology – Coding of Audiovisual
Objects – Part 4: Conformance Testing”
[17]
ISO/IEC International Standard 14496-5: 2001, “Information Technology – Coding of Audiovisual
Objects – Part 5: Reference Software”
[18]
ISO/IEC International Standard 14496-5: 2001/Amd 1: 2002, “Information Technology – Coding of
Audiovisual Objects – Part 5: Reference Software”
[19]
ISO/IEC International Standard 14496-6: 2000, “Information Technology – Coding of Audiovisual
Objects – Part 6: Delivery Multimedia Integration Framework (DMIF)”
[20]
H. Jiang, “Experiment on Post-Clip FGS Enhancement”, ISO/IEC JTC1/SC29/WG11 M5669,
Reunião MPEG de Noordwijkerhout, Março 2000.
[21]
H. Jiang, G. M. Thayer, “Using Frequency Weighting in FGS Bit-Plane Coding for Natural Video”,
ISO/IEC JTC1/SC29/WG11 M5489, Reunião MPEG de Maui, Dezembro 1999.
[22]
H. Katata, N. Ito, T. Aono, H. Kusao, “Object Wavelet Transform for Coding of Arbitrarily-Shaped
Image Segments”, IEEE Transactions on Circuits and Systems for Video Technology, Vol. 7, No. 1, pp. 234237, Fevereiro 1997.
[23]
P. Kauff, K. Schüür, “An Extension of Shape-Adaptive DCT Towards DC Separation and Delta-DCCorrection”, Picture Coding Symposium, Berlim, Alemanha, Setembro 1997.
[24]
R. Koenen, “Profiles and Levels in MPEG-4: Approach and Overview”, Signal Processing: Image
Communication, Tutorial Issue on the MPEG-4 Standard, Vol. 15, No. 4-5, pp. 463-478, Janeiro 2000.
[25]
R. Koenen, “MPEG-4 Requirements, Version 17”, ISO/IEC JTC1/SC29/WG11 N4319, Reunião
MPEG de Sydney, Julho 2001.
[26]
S. Li, I. Sodagar, “Generic, Scalable and Efficient Shape Coding for Visual Texture Objects in MPEG4”, IEEE International Symposium on Circuits and Systems, Genebra, Suiça, Maio 2000.
[27]
S. Li, W. Li, “Shape-Adaptive Discrete Wavelet Transforms for Arbitrary Shaped Visual Object
Coding”, IEEE Transactions on Circuits and Systems for Video Technology, Vol. 10, No. 5, pp. 725-743,
Agosto 2000.
289
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
[28]
W. Li, “Overview of Fine Granularity Scalability in MPEG-4 Video Standard”, IEEE Transactions on
Circuits and Systems for Video Technology, Special Issue on Streaming Video, Vol. 11, No. 3, pp. 301-317, Março
2001.
[29]
W. Li, F. Ling, H. Sun, “Bitplane coding of DCT Coefficients”, ISO/IEC JTC1/SC29/WG11 M691,
Reunião MPEG de Friburgo, Outubro 1997.
[30]
W. Li, “Bit-plane Coding of DCT Coefficients for Fine Granularity Scalability”, ISO/IEC
JTC1/SC29/WG11 M3989, Reunião MPEG de Atlantic City, Outubro 1998.
[31]
W. Li, “Fine Granularity Scalability Using Bit-Plane Coding of DCT Coefficients”, ISO/IEC
JTC1/SC29/WG11 M4204, Reunião MPEG de Roma, Dezembro 1998.
[32]
W. Li, “Frequency Weighting for FGS”, ISO/IEC JTC1/SC29/WG11 M5589, Reunião MPEG de
Maui, Dezembro 1999.
[33]
W. Li, “Verification of Post-Clipping Addition Results”, ISO/IEC JTC1/SC29/WG11 M5967,
Reunião MPEG de Noordwijkerhout, Março 2000.
[34]
J. Liang, “Highly Scalable Image Coding for Multimedia Applications”, Proceedings of the ACM
Multimedia Communication Conference, Seattle, Washington, EUA, Outubro 1997.
[35]
J. Liang, J. Yu, Y. Wang, M. Srinath, M. Zhou, “Fine Granularity Scalable Video Coding Using
Combination of MPEG-4 Video Objects and Still Texture Objects”, ISO/IEC JTC1/SC29/WG11
M4025, Reunião MPEG de Atlantic City, Outubro 1998.
[36]
F. Ling, W. Li, H. Sun, “Bitplane Coding of DCT Coefficients for Image and Video Compression”,
SPIE Visual Communications and Image Processing, São José, Califórnia, EUA, Janeiro 1999.
[37]
F. Ling, X. Chen, “Report on Fine Granularity Scalability Using Bit-Plane Coding”, ISO/IEC
JTC1/SC29/WG11 M4311, Reunião MPEG de Roma, Dezembro 1998.
[38]
Y. Lu, W. Gao, F. Wu, “Fast and Robust Sprite Generation for MPEG-4 Video Coding”, Second IEEE
Pacific-Rim Conference on Multimedia, Pequim, China, Outubro 2001.
[39]
A. Luthra, R. Ghandi, K. Panusopone, K. Mckoen, D. Baylon, L. Wang, “Performance of MPEG-4
Profiles Used for Streaming Video”, Proceedings of Workshop and Exhibition on MPEG-4, São José,
Califórnia, EUA, Junho 2001.
[40]
S. A. Martucci, I. Sodagar, T. Chiang, Y.-Q. Zhang "A Zerotree Wavelet Video Coder," IEEE
Transaction on Circuit and Systems for Video Technology, Vol. 7, No. 1, pp. 109-118, Fevereiro 1997.
[41]
F. Pereira, “MPEG-4: Why, What, How and When ?”, Signal Processing: Image Communication, Tutorial
Issue on the MPEG-4 Standard, Vol. 15, No. 4-5, pp. 271-279, Janeiro 2000.
[42]
A. Puri, T. Chen, “Mutimedia Systems, Standards and Networks”, Signal Processing and
Communications Series, Marcel Dekker, 2000.
290
REFERÊNCIAS
[43]
H. M. Radha, M. van der Schaar, Y. Chen, “The MPEG-4 Fine-Grained Scalable Video Coding
Method for Multimedia Streaming Over IP”, IEEE Transactions on Multimedia, Vol. 3, No. 1, pp. 53-68,
Março 2001.
[44]
Requirements Group, “Streaming Video Profile for FGS PDAM”, ISO/IEC JTC1/SC29/WG11
M5673, Reunião MPEG de Noordwijkerhout, Março 2000.
[45]
Requirements Group, “MPEG-4 Applications”, ISO/IEC JTC1/SC29/WG11 N2724, Reunião
MPEG de Seúl, Março 1999.
[46]
I. Rhee, “Error Control Techniques for Interactive Low-bit Rate Video Transmission over the
Internet”, ACM SIGCOMM, Vancouver, Canadá, Setembro 1998.
[47]
M. van der Schaar, Y. Chen, H. Radha, “Adaptive Quantization Modes for Fine-Granular Scalability”,
ISO/IEC JTC1/SC29/WG11 M5589, Reunião MPEG de Vancouver, Julho 1999.
[48]
M. van der Schaar, Y.-T. Lin, “Content-Based Selective Enhancement for Streaming Video”, IEEE
International Conference on Image Processing, Salónica, Grécia, Outubro 2001.
[49]
M. van der Schaar, H. Radha, “A Hybrid Temporal-SNR Fine-Granular Scalability for Internet Video”,
IEEE Transactions on Circuits and Systems for Video Technology, Special Issue on Streaming Video, Vol. 11, No.
3, pp. 318-331, Março 2001.
[50]
M. van der Schaar, Y. Chen, H. Radha, “Embedded DCT and Wavelet Methods for Fine Granular
Scalable Video Coding: Analysis and Comparison”, SPIE Image and Video Communications and Processing,
São José, Califórnia, EUA, Janeiro 2000.
[51]
B. Schuster, “Fine Granular Scalability with Wavelets Coding”, ISO/IEC JTC1/SC29/WG11 M4021,
Reunião MPEG de Atlantic City, Outubro 1998.
[52]
B. Schuster, B. Thébault, W. Li, Y. Chen, E. François, “Fine Granular SNR Scalability: Target
Applications”, ISO/IEC JTC1/SC29/WG11 M4426, Reunião MPEG de Seúl, Março 1999.
[53]
J. Shapiro, “Embedded Image Coding Using Zerotrees of Wavelet Coefficients”, IEEE Transactions on
Signal Processing, Vol. 41, No. 12, pp. 3445-3462, Dezembro 1993.
[54]
G. Shen, B. Zeng, M. L. Liou, “A New Padding Technique for Coding Arbitrarily Shaped
Image/Video Segments”, IEEE International Conference on Image Processing, Kobe, Japão, Outubro 1999.
[55]
T. Sikora, “Low Complexity Shape Adaptive DCT for Coding Arbitrarily Shaped Image Segments”,
Signal Processing: Image Communication, Special Issue on Coding Techniques for Very Low Bit Rate Video, Vol. 7,
No. 4-6, pp. 381-396, Novembro 1995.
[56]
Systems Sub-group, “Text of ISO/IEC 14496-8/FDIS (Carriage of ISO/IEC 14496 Contents Over IP
Networks)”, ISO/IEC JTC 1/SC 29/WG 11 N4427, Reunião MPEG de Pattaya, Dezembro 2001.
[57]
I. Sodagar, H.-J. Lee, P. Hatrack, Y.-Q. Zhang, “Scalable Wavelet Coding for Synthetic/Natural
Hybrid Images”, IEEE Transactions on Circuits and Systems for Video Technology, Vol. 9, No. 2, pp. 244-254,
Março 1999.
291
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
[58]
S.-H. Son, E. S. Jang, S.-H. Lee, D.-S. Cho, J.-S. Shin, Y.-S. Seo, “Scan Interleaving Based Scalable
Binary Shape Coding”, Signal Processing: Image Communication, Special Issue on Shape Coding for Emerging
Multimedia Applications, Vol. 15, No. 7-8, pp. 619-629, Maio 2000.
[59]
R. Talluri, “Error Resilient Video Coding in ISO MPEG-4 Standard”, IEEE Communication Magazine,
Vol. 6, No. 6, pp. 112-119, Junho 1998.
[60]
Video Group, “Text of 14496-7 PDTR (Optimized Visual Reference Software)”, ISO/IEC
JTC1/SC29/WG11 N4344, Reunião MPEG de Sydney, Julho 2001.
[61]
Video Group, “MPEG-4 Video Verification Model 18.0”, ISO/IEC JTC1/SC29/WG11 N3908,
Reunião MPEG de Pisa, Janeiro 2001.
[62]
Video Group, “FGS Core Experiments”, ISO/IEC JTC1/SC29/WG11 N2814, Reunião MPEG de
Vancouver, Julho 1999.
[63]
R. Yan, F. Wu, S. Li, Y.-Q. Zhang, “Error Resilience Methods in FGS Video Enhancement
Bitstream”, ISO/IEC JTC1/SC29/WG11 M6207, Reunião MPEG de Pequim, Julho 2000.
[64]
WebCastTechnologies, Página Principal em: www.webcasttechnologies.com
[65]
Y. Wang, Q.-F. Zhu, “Error Control and Concealment for Video Communications: A Review”,
Proceedings of the IEEE, Vol. 85, No. 5, pp. 974-977, Maio 1998.
[66]
T. Wiegand (editor), “Text of Final Committee Draft of Joint Video Specification (ITU-T Rec. H.264
| ISO/IEC 14496-10 AVC)”, ISO/IEC JTC1/SC29/WG11 N4920, Reunião MPEG de Klagenfurt,
Julho 2002.
Capítulo 4
[1]
3GPP TS 26.234 version 5.3.0 Release 5: “Packet-switched Streaming Service (PSS); Protocols and
Codecs”, Dezembro 2002.
[2]
J. Au, B. Lin, A. Joch, F. Kossentini, “Complexity Reduction and Analysis for Deblocking Filter”,
JVT-C094, Reunião JVT (ISO/IEC MPEG & ITU-T VCEG) de Fairfax, Maio 2002.
[3]
G. Bjontegaard, K. Lillevold, “Context-adaptive VLC (CVLC) Coding of Coefficients”, JVT-C028,
Reunião JVT (ISO/IEC MPEG & ITU-T VCEG) de Fairfax, Maio 2002.
[4]
L. Chiariglione, “Terms of Reference for a Joint Project between ITU-T Q.6/SG16 and ISO/IEC JTC
1/SC 29/WG11 for the Development of new Video Coding Recommendation and International
Standard”, ISO/IEC JTC1/SC29/WG11 N4400, Reunião MPEG de Pattaya, Dezembro 2001.
[5]
L. Chiariglione, “Resolutions of the 63rd Meeting”, ISO/IEC JTC1/SC29/WG11 N5316, Reunião
MPEG de Awaji, Dezembro 2002.
[6]
R. Clark, “Transform Coding of Images”, Academic Press, Londres, 1990.
292
REFERÊNCIAS
[7]
DVB-S2, Página principal em http://www.dvb.org/index.php?id=75
[8]
Video Group, “Call for Proposals on New Tools for Video Compression Technology”, ISO/IEC
JTC1/SC29/WG11 N4065, Reunião MPEG de Singapura, Março 2001.
[9]
Video and Test Group, “Preliminary Results of Subjective Assessment of Responses to Video Call for
New Tools to Further Improve Coding Efficiency”, ISO/IEC JTC1/SC29/WG11 N5489, Reunião
MPEG de Sydney, Julho 2001.
[10]
Video and Test Group, “Draft 0.1 AVC Video Verification Test Plan”, ISO/IEC JTC1/SC29/WG11
N5124, Reunião MPEG de Shangai, Outubro 2002.
[11]
T. Halbach, M. Wien, “Concepts and Performance of Next-Generation Video Compression
Standardization”, 5th Nordic Signal Processing Symposium, Trondheim, Noruega, Outubro 2002.
[12]
ITU Telecommunications Standardization Sector of ITU, “Annex X to ITU-T Recommendation
H.263 - Video Coding for Low Bit Rate Communication”, ITU-T Recommendation H.263, Abril
2001.
[13]
A. Joch, J. In, F. Kossentini, “Demonstration of FCD-conformant Baseline Real-Time Codec”, JVTE136, Reunião JVT (ISO/IEC MPEG & ITU-T VCEG) de Genebra, Outubro 2002.
[14]
R. Kurceren, M. Karczewicz, “Synchronization-Predictive Coding for Video Compression: The SP
Frames Design for JVT/H.26L”, IEEE International Conference on Image Processing, Rochester, Nova
Iorque, EUA, Setembro 2002.
[15]
W. Li, J.-R. Ohm, M. van der Schaar, H. Jiang, S. Li, “MPEG-4 Video Verification Model Version
18.0”, ISO/IEC JTC1/SC29/WG11 N3908, Reunião MPEG de Pisa, Janeiro 2001
[16]
D. Marpe, H. Schwarz, G. Blättermann, T. Wiegand, “Context-based Adaptive Binary Arithmetic
Coding in JVT/H.26L”, IEEE International Conference on Image Processing, Salónica, Grécia, Outubro
2001.
[17]
A. Perkis, “On the Importance of Error Resilience in Visual Communications over Noisy Channels”,
Birkhauser Boston Transactions on Circuits, Systems and Signal Processing, Special issue on Multimedia
Communications, Vol. 20, No. 3, pp. 415-445, 2001.
[18]
K. R. Rao, P. Yip, “Discrete Cosine Transform: Algorithms, Advantages, Applications”, Academic
Press, Boston, EUA, 1990.
[19]
S. Saponara, C. Blanch, K. Denolf, J. Bormans, “Data Transfer and Storage Complexity Analysis of the
H.264/AVC Codec on a Tool-by-Tool Basis”, ISO/IEC JTC1/SC29/WG11 M8547, Reunião MPEG
de Klagenfurt, Julho 2002.
[20]
R. Schafer, T. Wiegand, H. Schwarz, “The Emerging H.264/AVC Standard”, EBU Technical Review,
No. 293, Janeiro 2003.
[21]
H. Schwarz, D. Marpe, G. Blättermann, T. Wiegand, “Improved CABAC”, JVT-C060, Reunião JVT
(ISO/IEC MPEG & ITU-T VCEG) de Fairfax, Maio 2002.
293
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
[22]
K. Suehring, “H.264/AVC Reference Software”, página oficial de coordenação do software de
referência (todas as versões) em http://bs.hhi.de/~suehring/tml/
[23]
G. Sullivan, T. Wiegand, “Rate-Distortion Optimization for Video Compression”, IEEE Signal
Processing Magazine, Vol. 15, No. 6, pp. 74-90, Novembro 1998.
[24]
UbVideo Inc., Página Principal em: www.ubvideo.com
[25]
VideoLocus Inc., “H.264/AVC Real-Time SD Encoder Demo”, JVT-D023, Reunião JVT (ISO/IEC
MPEG & ITU-T VCEG) de Klagenfurt, Julho 2002.
[26]
VideoLocus Inc., Página Principal em: www.videolocus.com
[27]
H. Malvar, A. Hallapuro, M. Karczewicz, L. Kerofsky, “Low-Complexity Transform and Quantization
with 16-bit Arithmetic for H.26L”, IEEE International Conference on Image Processing, Rochester, Nova
Iorque, EUA, Setembro 2002.
[28]
I. Moccagatta, K. Ratakonda, “A Performance Comparison of CABAC and VCL-based Entropy
Coders for SD and HD Sequences”, JVT-E079, Reunião JVT (ISO/IEC MPEG & ITU-T VCEG) de
Genebra, Outubro 2002.
[29]
D. Tiang, M. Hannuksela, Y.-K. Wang, M. Gabbouj, “Coding of Faded Scene Transitions”, IEEE
International Conference on Image Processing, Rochester, Nova Iorque, EUA, Setembro 2002.
[30]
T. Wiegand, G. J. Sullivan, “The Emerging JVT/H.26L Video Coding Standard”, IEEE International
Conference on Image Processing, Rochester, Nova Iorque, EUA, Setembro 2002.
[31]
T. Wiegand, G. Sullivan, A. Luthra, “Draft ITU-T Recommendation and Final Draft International
Standard of Joint Video Specification (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC)”, JVT-G050r1,
Reunião JVT (ISO/IEC MPEG & ITU-T VCEG) de Geneva, Maio 2002.
[32]
T. Wiegand, B.D. Andrews, “An Improved H.263 Coder Using Rate-Distortion Optimization”, ITUT/SG16/Q15-D-13, Reunião VCEG de Tampere, Abril 1998.
Capítulo 5
[1]
G. Bjontegaard, K. Lillevold, “Context-adaptive VLC (CVLC) Coding of Coefficients”, JVT-C028,
Reunião JVT (ISO/IEC MPEG & ITU-T VCEG) de Fairfax, Maio 2002.
[2]
ISO/IEC International Standard 14496-5: 2001/Amd 1:2002, “Information Technology – Coding of
Audiovisual Objects – Part 5: Reference Software”.
[3]
B. Jeon, “Entropy Coding Efficiency of H.26L”, ITU-T/SG16/Q15-J57, Reunião VCEG de Osaka,
Maio 2000.
[4]
H. Jiang, G. M. Thayer, “Using Frequency Weighting in Fine-Granularity-Scalability Bit-plane Coding
for Natural Video”, ISO/IEC JTC1/SC29/WG11 M5489, Reunião MPEG de Maui, Dezembro 2003.
294
REFERÊNCIAS
[5]
L. Kerofsky, “Entropy Coding of Transform Coefficients”, ITU-T/SG16/Q15-K45, Reunião VCEG
de Portland, Agosto 2000.
[6]
W. Li, “Frequency Weighting for FGS”, ISO/IEC JTC1/SC29/WG11 M5589, Reunião MPEG de
Maui, Dezembro 1999.
[7]
W. Li, “Fine Granularity Scalability for MPEG-4 Part 10”, ISO/IEC JTC1/SC29/WG11 M8003,
Reunião MPEG de JeJu, Março 2002.
[8]
S. Ma, W. Gao, Y. Lu, H. Lu, “Proposed Draft Description of Rate Control on JVT Standard”,
ISO/IEC JTC1/SC29/WG11 N4920, Reunião MPEG de Awaji, Dezembro 2002.
[9]
H. Malvar, A. Hallapuro, M. Karczewicz, L. Kerofsky, “Low-Complexity Transform and Quantization
with 16-bit Arithmetic for H.26L”, IEEE International Conference on Image Processing, Rochester, Nova
Iorque, EUA, Setembro 2002.
[10]
K. Suehring, “H.264/AVC Reference Software”, JM 5.0, http://bs.hhi.de/~suehring/tml/
[11]
K. Ugur, P. Nasiopoulus, “Design Issues and Proposal for H.264 Based FGS”, ISO/IEC
JTC1/SC29/WG11 M9505, Reunião MPEG de Pattaya, Março 2003.
[12]
F. Wu, S. Li, Y.-Q. Zhang, M. van der Schaar, W. Li, “The Requirements on Advanced FGS (AFGS)”,
ISO/IEC JTC1/SC29/WG11 M8734, Reunião MPEG de Klagenfurt, Julho 2003.
Capítulo 6
[1]
S. Han, B. Girod, “Robust and Efficient Scalable Video Coding With Leaky Prediction”, IEEE
International Conference on Image Processing, Rochester, Nova Iorque, EUA, Setembro 2002.
[2]
P. Haskell, D. Messerschmitt, “Resynchronization of Motion Compensated Video Affected by ATM
Cell Loss”, IEEE International Conference on Acoustics, Speech and Signal Processing, São Francisco,
Califórnia, EUA, Março 1992.
[3]
H.-C. Huang, C.-N. Wang, T. Chiang, “A Robust Fine Granularity Using Trellis-Based Predictive
Leak”, IEEE Transactions on Circuits and Systems for Video Technology, Vol. 12, No. 6, pp. 372-385, Junho
2002.
[4]
H.-C. Huang, C.-N. Wang, T. Chiang, H.-M. Hang, “H.26L-based Robust Fine Granularity Scalability
(RFGS)”, ISO/IEC JTC1/SC29/WG11 M8604, Reunião MPEG de Klagenfurt, Julho 2002.
[5]
W.-H. Peng and Y.-K. Chen, “Mode-Adaptive Fine Granularity Scalability”, IEEE International
Conference on Image Processing, Salónica, Grécia, Outubro 2001.
[6]
R. K. Rajendran, M. van der Schaar, Shih-Fu Chang, “FGS+: A Joint Spatio-Temporal Framework for
Improved FGS”, ISO/IEC JTC1/SC29/WG11 M8710, Reunião MPEG de Klagenfurt, Julho 2002.
[7]
R. Schafer, T. Wiegand, H. Schwarz, “The Emerging H.264/AVC Standard”, EBU Technical Review,
No. 293, Janeiro 2003.
295
CODIFICAÇÃO ESCALÁVEL DE VÍDEO COM ELEVADA GRANULARIDADE
[8]
X. Sun, F. Wu, S. Li, W. Gao, Y.-Q. Zhang, “Macroblock-Based Progressive Fine Granularity Scalable
Video Coding”, IEEE International Conference on Image Processing, Salónica, Grécia, Outubro 2001.
[9]
Video Group, “Common Conditions for Advanced FGS Experiments”, ISO/IEC JTC1/SC29/WG11
N4748, Reunião MPEG de Fairfax, Maio 2002.
[10]
Q. Wang, F. Wu, S. Li, Y. Zhong, Y.-Q. Zhang, “Fine-Granularity Spatially Scalable Video Coding”,
IEEE International Conference on Acoustics, Speech and Signal Processing, Salt Lake City, Utah, EUA, Maio
2001.
[11]
F. Wu, S. Li, Y.-Q. Zhang, “A Framework for Efficient Progressive Fine Granularity Scalable Video
Coding”, IEEE Transactions on Circuits and Systems for Video Technology, Special Issue on Streaming Video, Vol.
11, No. 3, pp. 332-344, Março 2001.
[12]
F. Wu, S. Li, X. Sun, R. Yan, Y.-Q. Zhang, “Comparisons Between the One-Loop and Two-Loop
Solutions for Improving the Coding Efficiency of FGS”, Second Workshop and Exhibition on MPEG-4,
São José, Califórnia, EUA, Junho 2001.
Capítulo 7
[1]
Requirements Group, “Applications and Requirements for Scalable Video Coding”, ISO/IEC
JTC1/SC29/WG11 N5880, Reunião MPEG de Trondheim, Julho 2003.
[2]
Video Group, “Report on Call for Evidence on Scalable Video Coding (SVC) Technology”, ISO/IEC
JTC1/SC29/WG11 N5701, Reunião MPEG de Trondheim, Julho 2003.
[3]
Video Group, “Call for Evidence on Scalable Video Coding Advances”, ISO/IEC JTC1/SC29/WG11
N5559, Reunião MPEG de Pattaya, Março 2003.
[4]
Video Group, “Draft Call for Proposals on New Tools for Scalable Video Coding Technology”,
ISO/IEC JTC1/SC29/WG11 N5702, Reunião MPEG de Trondheim, Julho 2003.
Anexo A
[1]
J. Cai, C. W. Chen, “Use of Pre-Interleaving For Video Streaming Over Wireless Networks”, IEEE
International Conference on Image Processing, Salónica, Grécia, Outubro 2001.
[2]
S. Deering, “Multicast Routing in Internetworks and Extended LANs”, Proceedings of ACM SIGCOMM,
Standford, Califórnia, EUA, Agosto 1988.
[3]
L. Ducla-Soares, F. Pereira, “Error Resilience and Concealment Performance for MPEG-4 Framebased Video Coding”, Signal Processing: Image Communication, Special Issue on Error Resilience, Vol. 14, No.
6-8, pp. 447-473, Maio 1999.
[4]
A. Eleftheriadis, D. Anastassiou, “Meeting Arbitrary QoS Constraints Using Dynamic Rate Shaping of
Coded Digital Video”, 5th International Workshop on Network and Operating System Support for Digital Audio
and Video, Durham, New Hampshire, EUA, Abril 1995.
296
REFERÊNCIAS
[5]
A. F. Mosri, M. Ghanbari, “Analysis of Two Frameworks for Transmission of Layered Video Over IP
Networks”, IEEE International Conference on Image Processing, Salónica, Grécia, Outubro 2001.
[6]
V. Paxson, “End-to-End Internet Packet Dynamics”, IEEE/ACM Transactions on Networking, Vol. 7,
No. 3, pp. 277-292, Setembro 1997.
[7]
M. van der Schaar, “Fine Granular Scalability – A New Framework for Real Time Streaming of Video
Over the Internet”, lecture on Advanced Topics in Image, Video, and Multimedia Systems, Standford University,
EUA, Janeiro 2001.
[8]
H.-R. Shao, W. Zhu, Y.-Q. Zhang, “A New Framework for Adaptive Multimedia Over the Next
Generation Internet”, Proceedings of International Conference on Media Futures, Florença, Itália, Maio 2001.
[9]
R. Talluri, “Error Resilience Video Coding in the ISO MPEG-4 Standard”, IEEE Communications
Magazine, Vol. 36, No. 6, pp. 112-119, Junho 1998.
[10]
W.-T. Tan, A. Zakhor, “Video Multicast Using Layered FEC and Scalable Compression”, IEEE
Transactions on Circuits and Systems for Video Technology, Special Issue on Streaming Video, Vol. 11, No. 3, pp.
373-386, Março 2001.
[11]
D. Wu, Y. T. Hou, Y.-Q. Zhang, “Transporting Real-Time Video Over the Internet: Challenges and
Approaches”, Proceedings of the IEEE, Vol. 88, No. 12, pp. 1855-1877, Dezembro 2000.
[12]
D. Wu, Y. T. Hou, W. Zhu, Y.-Q. Zhang, J. M. Peha, “Streaming Video Over the Internet:
Approaches and Directions”, IEEE Transactions on Circuits and Systems for Video Technology, Special Issue on
Streaming Video, Vol. 11, No. 3, pp. 282-300, Março 2001.
297

Documentos relacionados