normas de compressão vídeo: H.264
► H.264
•
MPEG-4, H.264, AVC•
conceitos principais e áreas de aplicação•
semelhanças com outras normas e valor acrescentado•
Perfis e ferramentasMPEG4 e H.264
► MPEG4 Part 2: Visual (1998)
•
especifica ferramentas para codificação de várias formas de vídeo► vídeo natural, imagens rectangulares e formas arbitrárias, corpos e caras 3D ► introduz o conceito de codificação orientada aos objectos
► MPEG4 Part 10: Advanced Video Coding (AVC) (2003)
•
especifica ferramentas mais eficientes e mais robustas a erros•
apenas para vídeo composto por imagens rectangulares•
desenvolvido em conjunto pelo ISO/IEC MPEG e ITU-T JVT► H.264/AVC
Breve sinopse do H.264/AVC
►
Esforço conjunto do ITU-T e ISO/IEC MPEG
•
suporta grande diversidade de aplicações► enterlaçado e progressivo
► desde débitos muito baixos até qualidade de estúdio e cinema digital ► várias resoluções espaciais e temporais
•
Constituída por um conjunto de perfis, a cada um dos quais podem estar associados diversos níveis► nível ⇔ gama de resoluções e débitos binários ► perfil ⇔ aplicação (tipo de ferramentas)
• ex: para HDTV utiliza-se, tipicamente, o perfil High no nível 4
•
Cerca de 50% mais eficiente do que MPEG2 e MPEG4-2Breve sinopse do H.264/AVC
► Baseado na arquitectura híbrida de codificação do MPEG2 e MPEG4 mas
com as diferenças
•
tamanhos de bloco variáveis para a estimação e compensação de movimento•
possibilidade de várias imagens de referência•
resolução a ¼ de pixel para a estimação de movimento•
transformada hierárquica com tamanhos de bloco mais pequenos•
filtro “deblocking” no loop de prediçãoBreve sinopse do H.264/AVC (2)
► Áreas de aplicação•
entertenimento ► difusão de TV ► DVD ► VoD ► DCinema► de 1 a 8 + Mbit/s; atrasos maiores
•
serviços interactivos► videoconferência
► menos de 1 Mbit/s; atrasos reduzidos
•
serviços de streaming► Internet RTP/UDP/IP
► 3GPP
Aspectos comuns com outras normas
•
3 componentes no sinal vídeo► luminância e dois de crominância
•
Macroblocos► 16x16 Y e 8x8 Cr e Cb
•
esquemas convencionais de sub-amostragem da crominância► 4:2:0, 4:2:2, 4:4:4
•
estimação e compensação de movimento•
transformadas aplicadas ao bloco•
quantização escalarEstrutura em níveis do H.264/AVC
► VLC: ferramentas para codificar vídeo eficientemente
► Data Partioning: agrupa MBs em slices e junta cabeçalho com informação
suficiente para descodificar todos os MBs do slice (um slice é “self-contained”)
•
objectivo: aumentar a robustez a erros► NAL: formata dados e adiciona cabeçalho com informação necessária para
diferentes níveis de transporte ou meios de armazenamento Network Abstraction Layer (NAL)
Video Coding Layer (VCL)
Data Partitioning MPEG2 systems MP4FF H.320 . . , Control Data sequência de MBs codificados sequência de slices/ partições codificados sequência de unidades de acesso camada de sistema, multiplexagem
Hierarquia de codificação
•
sequência ⇔ uma ou mais unidades de acesso► unidade de acesso ⇔ conjunto de unidades
NAL com toda a informação necessária à descodificação de uma imagem
•
uma imagem codificada está dividida em slices•
um slice está dividido num conjº de MBs► um slice é “self-contained”
► slices e MB podem ser do tipo I, P ou B
unidade de acesso imagem
...
...
...
...
... ... ... ...Hierarquia de codificação (2)
•
cada slice tem um cabeçalho seguido de um conjº de MBs► slice e MB podem ser do tipo I, P ou B
• slice I só tem MBs Intra
• slice P pode ter MBs Intra e Inter backward
• slice B pode ter MBs Intra e Inter bidireccional
► um MB contem um bloco de 16 x16 de
luminância e 2 de 8 x 8 de crominância (4:2:0)
• unidade básica de processamento
• MBs de um slice dependem uns dos outros
imagem ... slice 1 slice 2 slice 3 ...
► existem ainda slices do tipo SP e SI
• “switching P” , “switching I”
Diagrama de blocos codificador H.264 (nível VCL)
[Single Universal VLC e Context Adaptive VLC] OU [Context-Based Adaptive Binary Arithmetic Coding]Modos de predição Intra:
9 4x4 & 4 16x16 = 13 modos Intra Inter _ Video In transformada
Bit Stream Out Coeficientes DCT quantizados Vectores de movimento + imagem prevista Quantização codificação entropia Motion Estimation memória de imagem Motion Compensation Quantização inversa transformada inversa + controlo de codificação Filtro “deblocking” + Predição Intra trasformada inteira de 16 bits em blocos de 4x4 maior resolução do degrau de quantização para controlo mais fino do bit rate
• 7 tamanhos e formas de blocos
• selecção de múltiplas imagens de referência • estimação de movimento com precisão de 1/4-pel
Valor acrescentado do H.264/AVC
► melhorias substanciais na estimação de movimento
•
a melhor forma de maximizar a eficiência em compressão de vídeo é encontrar formas de minimizar o nº de bits necessário para descrever o movimento► dimensões variáveis de bloco ► várias imagens de referência ► resolução a ¼ de pixel
► modos de predição para imagens Intra ► novas transformadas e quantização ► filtro “de-blocking”
► novas formas de codificação de entropia ► novas técnicas para robustez a erros
Estimação de movimento
► 4 partições possíveis do MB, 4 partições possíveis do sub-MB
•
se for feita uma partição 8x8, cada um dos sub-MB de 8x8 pode ainda ser dividido de 4 formas diferentes► 4 modos de predição ao nível de sub-MB
► no máximo, 16 vectores de movimento para um MB
16x16 16x8 8x16 8x8 4x4 8x4 4x8 partições do MB de 16x16 partições do sub-MB de 8x8 sub-MB
Estimação de movimento (2)
► diferentes partições do MB de
acordo com a actividade da cena/imagem
Estimação de movimento (3)
imagem a prever
Estimação de movimento (4)
► até 16 imagens de referência para obtenção dos melhores vectores de
movimento (menor resíduo ⇒ menos bits, mais qualidade)
► o descodificador guarda em memória as imagens de referência
•
indicadas por comandos de controlo de memória enviados no bitstream•
só vectores forward (imagem de referência passada)► útil para imagens
imediatamente antes de cortes de cena
•
só vectores backward (imagem de referência futura)► útil para uma imagem
imediatamente após um corte de cena
Estimação de movimento (5)
►
Benefícios de imagens múltiplas de referência
►
imagens B também podem ser referência
Predição Intra
► Explora correlação entre blocos ou MBs de uma mesma imagem ► Os blocos ou MBs têm que pertencer ao mesmo slice
•
garante independência entre slices► É feita uma previsão do MB que se pretende codificar com base num MB do
mesmo slice; essa previsão é subtraída ao MB que se pretende codificar
•
Duas alternativas com vários modos possíveis para a luminância•
Apenas uma alternativa para a crominânciaPredição Intra (2)
► Duas alternativas de predição para a luminância
•
4 modos para o MB de 16 x16 (Intra16x16)► vertical, horizontal, planar e DC ► adequado para áreas uniformes
•
9 modos para cada sub-bloco de 4 x 4 de um MB (Intra4x4)► 8 direcções e DC
► adequado para áreas de muito detalhe.
► Predição única para a crominância
•
4 modos para o MB de 16 x 16Predição Intra (3)
► 4 modos para Intra16x16
Várias transformadas
► É possíve usar 3 transformadas diferentes
► A escolha é feita de acordo com o tipo de predição efectuada
•
Hadamard 4 x 4 para os coeficientes DC de luminância de MBsIntra16x16
•
Hadamard 2 x 2 para os coeficientes DC de crominância de qualquer MB•
DCT inteira 4 x 4 para todos os outros coeficientes► mais fácil de implementar
Quantização
► Quantização escalar com o mesmo peso ou parâmetro de quantização (Qp)
para todos os coeficientes do MB
•
para cada MB, é escolhido um quantizador a partir de uma tabela com 52 quantizadores possíveis (logo 52 valores de degrau de quantização)► a tabela define uma relação entre parâmetro de quantização (Qp) e o
degrau de quantização (Qstep)
► Qp é usado como índice para essa tabela: Qstep = f(Qp)
• a tabela foi definida de forma a que para um aumento de 1 no Qp
o Qstep aumente levando a uma redução de cerca de 12.5% do
Filtro “de-blocking”
► filtro adaptativo que opera nas fronteiras do blocos para eliminar ou suavizar o
efeito de bloco
► é utilizado no anel de predição
•
os blocos filtrados são usados na estimação de movimento► Benefícios:
•
suaviza as fronteiras dos blocos sem manchar a imagem, melhorando a qualidade subjectiva da imagem•
permite utilizar os blocos filtrados para a estimação de movimento► dá origem a resíduos de predição mais pequenos, logo menor débito binário
Filtro “de-blocking” (2)
► Pretende suavizar as fronteiras entre blocos, apenas se as diferenças entre
blocos se devem à quantização
•
se não for da quantização, então é porque as diferenças existiam já na imagem e devem então ser preservadas► filtro adaptativo ao conteúdo
•
ao nível do slice, os parâmetros do filtro podem ser ajustados de acordo com as características da sequência video•
ao nível do bloco, os parâmetros podem ser ajustados de acordo com o tipo de codificação efectuada (Inter ou Intra)•
ao nível da amostra, o filtro pode ser desactivado dependendo da quantização efectuadaFiltro “de-blocking” (3)
► resultados subjectivos da codificação Intra sem e com filtroFiltro “de-blocking” (4)
► resultados subjectivos da codificação Inter sem e com filtroVarrimento
Codificação de entropia
► Para símbolos que não são coeficientes de transformadas quantizados•
Universal Variable Length Coding (UVLC) com códigos Exp-Golomb► tabela única com códigos VLC, com regras simples de descodificação
► Para os coeficientes quantizados
•
Context Adaptive VLC (CAVLC) para os coeficientes das transformadas► usa várias tabelas VLC, seleccionadas de acordo com as estatísticas dos símbolos já
transmitidos
•
Context Adaptive Binary Arithmetic Coding (CABAC)► utiliza modelos de probabilidades adaptativos
► explora a correlação entre símbolos através da criação de contextos
• estima probabilidades condicionadas baseado nas estatísticas dos símbolo já transmitidos
• usa essa probabilidades condicionadas (em contexto) para escolher o modelo de probabilidade a usar
Robustez a erros
► Flexible Macroblock Ordering (FMO)
•
cria grupos de slices e distribui MBs de forma flexivel por um ou mais grupos de slices, transmitidos separadamente► se um “slice group” se perde, podem-se utilizar MBs espacialmente adjacentes
mas atribuídos a outro “slice group” recebido correctamente para recuperar os MBs perdidos
► Arbitrary Slice Ordering (ASO)
•
envia os “slice groups” numa ordem arbitrária, diferente da ordem de varrimento normal► Data Partitioning (DP)
•
permite separar elementos do bit stream codificado em diferentes pacotes de acordo com a sua importância permitindo “unequal error protection” (UEP)► Redundant Slices (RS)
•
permite enviar uma representação adicional de uma região da imagem (com menor fidelidade)Flexible Macroblock Ordering (FMO)
► cada imagem pode ser dividida até 8 grupos de slices
•
cada grupo pode conter um ou mais slices► diferentes formas de atribuir MBs aos grupos de slices
Flexible Macroblock Ordering (FMO) - 2
•
dentro de um grupo, os MBs aparecem pela ordem de varrimento natural► mas os grupos podem ser enviados com ordem arbitrária ► e os MBs podem ser atribuídos a grupos de forma arbitrária
Eficiência de codificação
PSNR Y (dB)
24 39
32
bit rate (Kbit/s)
0 128 256 384 512 640 768
PSNR Y (dB)
24 32 40
ganho em débito relativamente ao H.263 (%)
0 10 20 30 40 50 ► Sequência “Paris” CIF, 15 Hz
Eficiência de codificação (2)
► Sequência “Tempete” CIF, 30 HzComplexidade
►
o reverso da medalha ...
•
em relação ao MPEG2 MP, a complexidade é cerca 4x superior no codificador e 3x no descodificador•
devido essencialmente a► estimação de movimento com blocos mais pequenos e várias possibilidades de
partição dos MBs
► estimação de movimento com referências múltiplas ► modos de predição Intra
► filtro “de-blocking”
MPEG-1 MPEG-2 MPEG-4 part 2 (visual)
H.264/MPEG-4 part 10
Macroblock size 16x16 16x16 (frame mode) 16x8 (field mode)
16x16 16x16
Block Size 8x8 8x8 16x16, 16x8, 8x8 16x16, 8x16, 16x8, 8x8, 4x8, 8x4, 4x4 Transform 8x8 DCT 8x8 DCT 8x8 DCT/Wavelet 4x4, 8x8 Int DCT
4x4, 2x2 Hadamard Quantization Scalar quantization
with step size of constant increment
Scalar quantization with step size of constant increment
Vector quantization
Scalar quantization with step size of increase at the rate of
12.5%
Entropy coding VLC VLC VLC VLC, CAVLC,
CABAC Motion Estimation &
Compensation
Yes Yes Yes Yes, more flexible
Up to 16 MVs per MB
Random Access Yes Yes Yes Yes
Comparação de normas
FerramentaFerramenta
norma MPEG-1 MPEG-2 MPEG-4 part 2 (visual)
H.264/MPEG-4 part 10
Pel accuracy Integer, ½-pel Integer, ½-pel Integer, ½-pel, ¼-pel
Integer, ½-pel, ¼-pel
Profiles No 5 8 3
Reference picture one one one multiple
Bidirectional
prediction mode forward/backward forward/backward forward/backward forward/backwardforward/forward backward/backward Picture Types I, P, B, D I, P, B I, P, B I, P, B, SP, SI Error robustness Synchronization &
concealment
Data partitioning, FEC for important packet transmission Synchronization, Data partitioning, Header extension, Reversible VLCs Data partitioning, Parameter setting, Flexible macroblock ordering, Redundant slice, Switched slice Transmission rate Up to 1.5Mbps 2-15Mbps 64kbps - 2Mbps 64kbps -150Mbps Compatibility with
previous standards
n/a Yes Yes No
Encoder complexity Low Medium Medium High
Extensões ao H.264
►
H.264 Scalable Video Video Coding (SVC)
H.264 SVC
► Scalable Video Coding (SVC)
•
necessário devido à grande heterogeneidade de plataformas receptores e de redes•
permite “graceful degradation” em ambientes de transmissão sujeitos a perdas•
fácil adaptação de débitos e formatos no domínio comprimido•
tipos de escalabilidade► temporal ► espacial
► fidelidade (SNR)
•
em relação a uma codificação não escalável► tem um acréscimo de cerca 10% no débito
► mas ganhos consideráveis em relação a simulcast ► complexidade apenas ligeiramente superior
H.264 SVC: perfis
► Scalable Baseline Profile
•
vocacionado para aplicações de videoconferência, ambiente móveis e videovigilância•
construído a partir do perfil Baseline do H.264/AVC► o nível base do stream escalável tem que estar em conformidade com H.264/
AVC Baseline
► Scalable High Profile
•
vocacionado para aplicações de difusão e streaming•
construído a partir do pefil High Profile do H.264/AVC► o nível base do stream escalável tem que estar em conformidade com H.264/
AVC High Profile
► Scalable High Intra Profile
•
vocacionado para aplicações na área da produção de conteúdos (professional)H.264 Multiview Coding (MVC)
► Codificação múltipla
•
codifica e multiplexa N vistas da mesma sequência vídeo► várias cameras captam diferentes ângulos da mesma cena ► para compatibilidade com displays 2D, apenas uma vista é
descodificada
•
permite mudar livremente o ângulo de visão•
o caso mais importante é N=2► vídeo estereoscópico ou 3D
► cada uma das vistas é usada para projectar a imagem em cada um dos
H.264 Multiview Coding: perfis
► Stereo High Profile
•
este perfil destina-se a video estereoscópico 3D•
combina ferramentas do perfil H.264/AVC High profile com predição entre vistas (inter-view)► Multiview High Profile
•
este perfil suporta uma ou mais vistas usando predição entre imagens no tempo e predição entre vistasH.264 MVC: princípios
►
incorpora versões múltiplas concorrentes de uma mesma cena
► vídeo estéreo, 2 vistas combinadas para dar a ilusão de profundidade (3DTV)
► necessita de óculos polarizados ou de écrâns auto-estereoscópicos
• utilizam uma película à frente do écrân, constituída por milhares de pequenas lentes que refractam a luz de cada pixel, de forma a que cada olho vê uma prespectiva diferente da imagem, dando a sensação de profundidade
H.264 MVC: princípios (2)
► 3D vídeo genérico
•
são apresentadas vista múltiplas de forma a que a vista que está a ser visualizada muda quando o espectador quando move a cabeça, dando a sensação de imersão na cena► free viewpoint
•
é codificado e enviado um nº limitado de vistas•
o utilizador escolhe um ângulo de visão para a apresentação► se a vista correspondente não existir, o descodificador cria-a com base nas
H.264 MVC: codificação entre vistas
► dado que as várias vistas representam a mesma cena, deverá existir um
elevado grau de redundância entre elas
•
para comprimir tira-se partido dessas redundâncias imagensH.264 MVC: codificação entre vistas (2)
► explorar redundância entre vistas
•
a sequência de imagens de cada vista poderia ser codificada independentemente e enviada como um stream separado► simulcast
•
mas se a posição da camera ao tirar as vistas se modificar pouco► grande probabilidade da imagem i da vista k ser muito semelhante à imagem i
da vista k+1, k+2, etc
► introduz-se predição entre vistas (inter-view prediction) ► é precisamente esse o objectivo do H.264 MVC
H.264 MVC: codificação entre vistas (3)
► inter-view prediction
•
a vista 0 é codificada usando abordagem tradicional H.264► pode ser descodificada quer por um
descodificador H.264/AVC quer por um H.264 MVC
► constitui o nível base
•
as outras vistas são codificadas de modo semelhante mas► as imagens de referência para
efectuar a previsão são elas próprias previstas com base em imagens I ou P da vista anterior
vista 0
H.264 Multiview Coding (MVC)
► Perfis MVC
•
Stereo High Profile► este perfil destina-se a video estereoscópico 3D
► combina ferramentas do perfil H.264/AVC High profile com predição entre
vistas (inter-view)
•
Multiview High Profile► este perfil suporta uma ou mais vistas usando predição entre imagens no tempo
e predição entre vistas