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