2 Background
2.1 World inequalities
A predição intraquadro prediz macroblocos a partir de outros já codificados e pertencentes ao mesmo quadro. O primeiro quadro de uma sequência de vídeo ou os quadros classificados como quadros de acesso randômico (random access points) utilizam- se somente deste tipo de predição. Essa forma se mostra eficiente em muitas situações porque há uma grande chance de que exista uma alta correlação entre as amostras luma e chroma de blocos adjacentes. Qualquer tipo de slice pode conter macroblocos Intra, com a restrição de que, se uma slice é Intra, todos os seus macroblocos devem ser Intra [16].
De todos os tipos de codificação de slices existentes no padrão H.264/AVC, há quatro opções relacionadas à codificação intraquadro: CHROMA, INTRA-4x4, INTRA- 8x8 e INTRA-16x16. Em contraste com padrões de codificação de vídeo anteriores, que conduziam a predição no domínio das transformadas, a predição no padrão H.264/AVC é sempre conduzida no domínio do espaço, referindo-se a amostras vizinhas de blocos já codificados. Com vistas a manter todas as slices independentes entre si, não são permitidas predições intraquadros que avancem os limites da slice [24].
O tamanho de bloco CHROMA gera um bloco de predição para cada par de componentes chroma, usando blocos de quatro tamanhos possíveis. No uso do tamanho de bloco luma 4x4 (INTRA-4x4), cada bloco utiliza um modo de predição, dentre nove possíveis (uma predição DC e oito modos de predições direcionais). Para cada bloco 4x4 de amostras luma é gerado um bloco predito 4x4. O tamanho de bloco luma 8x8 (INTRA- 8x8) também suporta nove modos de predição, e, nesse caso, para cada bloco luma 8x8 é gerado um bloco predito 8x8. Com tamanho de bloco luma 16x16 (INTRA-16x16), indicado para áreas com imagens muito semelhantes ou áreas de transições graduais, uma predição uniforme é aplicada para todo o componente de luminância do macrobloco. São suportados, nesse caso, quatro modos de predição, e é gerado um único bloco predito de tamanho 16x16. As amostras de crominância de um macrobloco são preditas usando uma técnica de predição similar à do componente de luminância em macroblocos INTRA- 16x16 [24].
A escolha de qual tamanho de bloco é mais conveniente exige uma ponderação sobre dois fatores geralmente antagônicos: eficiência de cálculo da predição x custo de sinalização do modo de predição escolhido. Blocos de tamanho 16x16 normalmente produzem mais dados residuais em consequência de predições menos precisas. Como
22
vantagem, menos bits são necessários para codificar a predição em si. No outro extremo, blocos de tamanho 4x4 precisam individualmente sinalizar ao decodificador o modo de predição utilizado, requerendo, assim, um maior número de bits. A vantagem é a maior acuidade da predição e o consequente menor tamanho dos dados residuais. Isso porque, com tamanho menor de bloco, há uma maior chance de os blocos atuais e preditos serem muito aproximados [24].
Conjuntamente à decisão de qual o melhor tamanho de bloco a ser utilizado, o codificador deve selecionar o modo de predição Intra a ser utilizado. Os modos têm o propósito de minimizar o número de bits dos blocos preditos e residuais.
As três tabelas abaixo resumem os modos compatíveis com os tamanhos de bloco luma 4x4/8x8, 16x16 e CHROMA, nessa ordem.
Tabela 2.3: Codificação de slices INTRA-4x4 e INTRA-8x8. Modos compatíveis com tamanhos de
bloco luma 4x4 e 8x81 Descrição
0 (Vertical) Extrapolação de amostras acima
1 (Horizontal) Extrapolação de amostras à esquerda
2 (DC) Média de amostras acima e à esquerda
3 (Diagonal Down-Left)
Interpolação a um ângulo de 45º entre amostras abaixo e à esquerda e acima e à direita
4 (Diagonal Down-Right) Extrapolação a um ângulo de 45º entre amostras abaixo e à direita
5 (Vertical Left) Extrapolação a um ângulo de 26.6º à esquerda da vertical (largura/altura = ½) 6 (Horizontal-Down) Extrapolação a um ângulo de 26.6º à abaixo
da horizontal
7 (Vertical-Right) Extrapolação ou interpolação a um ângulo de 26.6º à direita da vertical
8 (Horizontal-Up) Interpolação a um ângulo de 26.6º acima da horizontal
Tabela 2.4: Codificação de slices INTRA-16x16.
23
Modos compatíveis com tamanho de
bloco luma 16x16 Descrição
0 (Vertical) Extrapolação de amostras acima
1 (Horizontal) Extrapolação de amostras à esquerda
2 (DC) Média de amostras acima e à esquerda
3 (Plane)
Função plana linear envolvendo as amostras acima e à esquerda. (Apropriada para áreas com variações sutis de luminância.)
Tabela 2.5: Codificação de slices CHROMA. Modos compatíveis com tamanho de
bloco luma CHROMA Descrição
0 (DC)2 Média de amostras acima e à esquerda
1 (Horizontal) Extrapolação de amostras à esquerda
2 (Vertical) Extrapolação de amostras acima
3 (Plane)
Função plana linear envolvendo as amostras acima e à esquerda. (Apropriada para áreas com variações sutis de luminância.)
A forma de cálculo do modo DC modifica-se dependendo de quais amostras estão disponíveis para o cálculo. Os demais modos listados nas tabelas, apesar de suportados, só podem ser usados se as amostras requeridas para a predição estiverem disponíveis [24].
As escolhas de modo de predição Intra para cada bloco devem ser sinalizadas para o decodificador. Para predições com tamanho de bloco 16x16 ou CHROMA, o modo de predição é sinalizado na própria sintaxe do macrobloco. No caso de blocos luma de tamanhos 4x4 e 8x8, contudo, o padrão H.264/AVC utiliza-se de um estilo de codificação preditiva para evitar que seja necessário um grande número de bits para esse fim. Essa solução diminui o número de bits necessários para a sinalização justamente porque blocos vizinhos tendem a ser bastante correlacionados. Assim, se um determinado bloco foi mais
2 Neste caso os quatro modos de predição são os mesmos dos modos compatíveis com o tamanho de bloco luma 16x16, havendo mudança somente na numeração dos modos.
24
bem predito usando o modo 1, é grande a probabilidade de que o próximo bloco também seja mais bem predito por esse modo [24].