• Nenhum resultado encontrado

3.3 Predição Intra entre Camadas

3.3.2 Upsampling da Predição Intra Entre Camadas

A aplicação do método de upsampling tem a função de redimensionar os blocos da camada de referência, para que estes possam ser usados como predição para a camada de enriquecimento. A implementação do upsampling utiliza um filtro de 4 taps para filtrar os componentes de luminância da imagem, e um filtro bilinear para filtrar os componentes de crominância. Os filtros são aplicados no sentido horizontal e, logo após, no sentido vertical (SCHWARZ et al., 2007).

O módulo de upsampling do padrão H.264/SVC é composto por 16 filtros, de modo que o filtro a ser utilizado é determinado de acordo com o fator de escala do upsampling e a posição da amostra a ser filtrada (SEGALL, 2007). Para o caso diádico, adotado nessa dissertação, são utilizados os filtros de índices 4 e 12, tanto para a filtragem de luminância, quanto para a filtragem de crominância (ITU-T, 2007). Após a aplicação dos filtros, é realizado um deslocamento de cinco posições para a direita, para normalizar os resultados obtidos nas filtragens (SEGALL, 2007).

Os filtros aplicados nos componentes de luminância são representados pelas equações 3.43 e 3.44 (ITU-T, 2007).

S4 = (– 3.A + 28.B + 8.C – D) / 32 (3.43) S12 = (– A + 8.B + 28.C – 3.D) / 32 (3.44)

As equações (3.43) e (3.44) foram extraídas da tabela de filtros de interpolação para

upsampling de luminância encontrada em (SEGALL, 2007), e representam os filtros de

luminância de índices 4 e 12, respectivamente.

Os filtros aplicados nos componentes de crominância são representados pelas equações (3.45) e (3.46) (ITU-T, 2007). Essas equações foram extraídas da tabela de

47

filtros de interpolação para upsampling de crominância, também encontrada em (SEGALL, 2007), e representam os filtros de índices 4 e 12, respectivamente.

S4 = (24.A + 8.B) / 32 (3.45) S12 = (8.A + 24.B) / 32 (3.46)

Assim, o filtro de upsampling é composto, principalmente, pelos módulos de filtragem dos componentes de luminância e de crominância e ocorre conforme os passos apresentados na Figura 3.7. Na Figura 3.7(a) os círculos brancos representam as amostras de uma imagem da camada base. A Figura 3.7(b) apresenta o resultado da filtragem horizontal, onde os círculos brancos representam as posições das amostras originais, as quais foram substituídas pelas amostras resultantes da filtragem realizada pelo filtro de índice 12, e os círculos hachurados representam as amostras intermediárias, geradas a partir da filtragem utilizando o filtro de índice 4, obtendo-se assim, ao término da filtragem horizontal, uma imagem com o dobro da largura.

A Figura 3.7(c) mostra o resultado da filtragem vertical, onde os círculos brancos e hachurados representam as novas posições das amostras resultantes da filtragem horizontal, tais círculos também foram substituídos pelas amostras filtradas com o filtro de índice 12. Os círculos cinza são as amostras geradas utilizando o filtro de índice 4. Depois de concluída a filtragem vertical, tem-se a imagem com o dobro de largura e o dobro de altura, conforme esperado.

Figura 3.7: (a) Imagem original, (b) Filtragem horizontal e (c) Filtragem vertical (Modificada a partir de (REDIESS, 2008)).

Após investigações realizadas no software de referência JSVM (JSVM, 2008), foi possível identificar o método responsável pela aplicação do upsampling no codificador/decodificador H.264/SVC (xBasicIntraUpsampling). As imagens a seguir, extraídas a partir desse método com a execução do software de referência, ilustram o resultado da aplicação do upsampling em um quadro QVGA (320x240 pixels), de modo que a imagem resultante esperada é o mesmo quadro, porém, com resolução VGA (640x480 pixels).

A Figura 3.8 apresenta o quadro na resolução QVGA (320x240 pixels). A seguir, na Figura 3.9, é apresentado o mesmo quadro após ter sido filtrado horizontalmente, de modo que sua dimensão horizontal foi dobrada (640x240 pixels). Finalmente, a Figura 3.10, apresenta o quadro com a resolução VGA (640x480 pixels), após a filtragem vertical.

48

Figura 3.8: Quadro original na resolução QVGA (320x240 pixels).

Figura 3.9: Quadro após a filtragem horizontal, com 640x240 pixels.

49

Neste capítulo, foi apresentada a escalabilidade espacial do padrão H.264/SVC, suas características principais e os três mecanismos de predição entre camadas que a compõem: predição residual, predição de movimento e predição intra entre camadas. Estes dois últimos mecanismos foram descritos de forma mais detalhada, pois as arquiteturas desenvolvidas nesta dissertação estão direcionadas para estes dois tipos de predição entre camadas do padrão H.264/SVC.

No próximo capítulo, serão apresentadas as arquiteturas de hardware desenvolvidas para os módulos da predição de movimento entre camadas e da predição intra entre camadas.

4 DESCRIÇÃO DAS ARQUITETURAS

DESENVOLVIDAS PARA O DECODIFICADOR

H.264/SVC

Conforme apresentado no capítulo anterior, a escalabilidade espacial do padrão H.264/SVC possui três métodos de predição entre camadas: predição de movimento, predição intra e predição residual, os quais visam reutilizar os dados resultantes da codificação/decodificação de uma camada de resolução menor, para predizer os dados da camada enriquecida, melhorando sua eficiência de codificação e reduzindo, assim, a redundância de informação presente entre as camadas.

Este capítulo apresenta, as arquiteturas de hardware desenvolvidas para a implementação dos módulos que compõem a predição de movimento entre camadas e predição intra entre camadas, tais módulos estão destacados em cinza na Figura 4.1, a qual apresenta um diagrama em blocos simplificado de um decodificador H.264/SVC com duas camadas espaciais.

Figura 4.1: Diagrama em blocos de um decodificador H.264/SVC com destaque para as predições de movimento e intra entre camadas.

52

A arquitetura de hardware desenvolvida para implementar a predição de movimento entre camadas é composta, em síntese, por um compensador de movimento escalável, o qual é formado por um módulo de predição de movimento, duas instâncias de um compensador de movimento não escalável e uma memória de dados da camada base, que está apresentada na Figura 4.1.

Na Figura 4.1, pode-se observar ainda, que a arquitetura desenvolvida para a predição intra entre camadas é composta por dois módulos principais: um filtro redutor de efeito de bloco, que recebe a saída do módulo de predição intraquadros da camada base e, o módulo de upsampling, que recebe os dados filtrados, sobreamostra esses dados e os disponibiliza para serem usados na predição intraquadros da camada de enriquecimento. Estes dois módulos da predição intra entre camadas foram desenvolvidos em parceria com os alunos Fabiane Rediess e Guilherme Corrêa, da UFPel. Resultados iniciais deste esforço de desenvolvimento foram relatados nos trabalhos de conclusão de curso (REDIESS, 2008) e (CORRÊA, 2009).

As arquiteturas desenvolvidas neste trabalho consideram que o espaço de cores usado no vídeo codificado é o YCbCr (SHI, 2000), conforme definido pelo próprio padrão H.264/AVC (ITU-T, 2005). Além disso, as arquiteturas consideram que existe uma subamostragem de cores do tipo 4:2:0, onde para cada quatro informações de luminância (Y) existe uma informação de crominância azul (Cb) e uma informação de crominância vermelha (Cr) (GHANBARI, 2003). Esta subamostragem é usada nos perfis baseline, extended e main do padrão H.264/AVC (AGOSTINI, 2007; ITU-T, 2003).

Todas as arquiteturas foram desenvolvidas considerando um decodificador escalável com duas camadas espaciais: a camada base e uma camada de enriquecimento. A resolução adotada para a camada base foi QVGA (320x240 pixels) e para a camada de enriquecimento a resolução foi definida como VGA (640x480 pixels).

A arquitetura de hardware de cada um dos módulos mencionados acima será explicada em detalhes nas próximas seções deste capítulo.

4.1 Arquitetura Desenvolvida para a Predição de Movimento entre