• Nenhum resultado encontrado

3.3 Predição Intra entre Camadas

3.3.1 Filtro Redutor de Efeito de Bloco da Predição Intra Entre Camadas

Está subseção apresentará o funcionamento do filtro redutor de efeito de blocos usado na predição intra entre camadas. Esse filtro é aplicado antes da utilização do método de upsampling, para evitar que quaisquer artefatos gerados por um alto passo de quantização no momento da codificação da camada base sejam transmitidos para a camada de enriquecimento durante a predição intra entre camadas.

A filtragem é realizada nas bordas dos blocos 4x4 de um macrobloco, conforme os passos a seguir, que podem ser acompanhados através da Figura 3.4. Inicialmente, são filtradas as quatro bordas verticais do componente de luminância (a, b, c e d na Figura 3.4) e, logo após, suas quatro bordas horizontais (e, f, g e h na Figura 3.4). A seguir, as duas bordas verticais de cada componente de crominância são filtradas (i e j na Figura 3.4) e, por fim, suas duas bordas horizontais (k e l na Figura 3.4) (RICHARDSON, 2003).

42

Figura 3.4: Ordem de filtragem de bordas em um macrobloco (Modificada a partir de (RICHARDSON, 2003)).

Como está ilustrado na Figura 3.5, cada operação de filtragem pode afetar até três amostras de cada lado de uma borda vertical ou horizontal (RICHARDSON, 2003). No exemplo da Figura 3.5 são apresentadas as quatro amostras de cada bloco que utilizadas em uma filtragem de borda vertical ou horizontal, considerando dois blocos 4x4 vizinhos (bloco p e bloco q).

Figura 3.5: Amostras adjacentes para bordas verticais e horizontais (Modificada a partir de (RICHARDSON, 2003)).

Para cada borda existente entre dois blocos 4x4 vizinhos uma força de filtragem é atribuída, tal força depende dos modos e condições de codificação usados em cada um desses blocos (LIST, 2003), como o parâmetro de quantização (QP), por exemplo. A força de filtragem é definida pelo parâmetro bS (boundary strength) e, no padrão H.264/SVC, seu valor pode variar entre zero, um, dois ou quatro. De modo que bS = 4 define uma força de filtragem máxima e um bS = 0 define que nenhuma filtragem será realizada (ITU-T, 2007).

No filtro do padrão H.264/SVC, considerando uma borda entre dois blocos p e q, o algoritmo que define qual força de filtragem será usada é aplicado somente se pelo menos um dos blocos (p ou q) pertencerem a um macrobloco do tipo I_BL. Um macrobloco do tipo I_BL é inferido se todos os blocos 4x4 de um macrobloco da camada de enriquecimento corresponderem a blocos codificados com predição intraquadros na camada base (SEGALL, 2007).

O filtro redutor de efeito de bloco entre camadas do padrão H.264/SVC se diferencia do filtro do padrão H.264/AVC, no que diz respeito à definição da força de filtragem.

43

No padrão não escalável, a força de filtragem bS pode variar entre 0 e 4, porém, no padrão escalável, o valor de bS igual a 3 nunca é utilizado.

A definição de qual parâmetro bS será aplicado na filtragem é definido através de uma série de regras definidas pelo padrão, conforme apresentado em (ITU-T, 2007).

No entanto, a realização ou não da filtragem não depende somente do valor do parâmetro bS, pois considerando um conjunto de amostras a serem filtradas (p2, p1, p0, q0, q1, q2), a filtragem só ocorrerá se as condições apresentadas em (3.17), (3.18), (3.19) e (3.20) forem verdadeiras (RICHARDSON, 2003; ITU-T, 2007).

bS > 0 (3.17)

| p0 – q0 | < α(IndexA) (3.18)

| p1 – p0 | < β(IndexB) (3.19)

| q1 – q0 | ≤ β(IndexB) (3.20)

Além do parâmetro bS, outros parâmetros são considerados para na aplicação do filtro, como os parâmetros α (alfa) e β (beta). Esses parâmetros são limites (thresholds) definidos no padrão (ITU-T, 2007) e seus valores são dependentes dos índices IndexA e

IndexB. Tais índices dependem da média dos QPs utilizados nos blocos filtrados e dos

valores dos offsets (OffsetA e OffsetB) selecionados pelo codificador. Esses índices são

utilizados para acessar as tabelas de valores de α e β. Os valores de OffsetA e OffsetB

são transmitidos no bitstream, nos cabeçalhos de slice, e podem ser usados para ajustar os valores de α e β. As equações (3.21) e (3.22) (LIST, 2003) mostram como o valor dos índices (IndexA e IndexB) são encontrados.

IndexA = Min (Max (0, QP + OffsetA), 51) (3.21)

IndexB = Min (Max (0, QP + OffsetB), 51) (3.22)

Os limites α e β definem se, de fato, uma filtragem ocorrerá ou não, pois seus valores variam de acordo com a média dos QPs dos blocos p e q. Assim, quando essa média é baixa e ocorre uma mudança significativa nos valores das amostras de uma borda, provavelmente, essa mudança será devido a características da imagem original, que devem ser preservadas. No entanto, quando essa média dos QPs é alta, significa que o processo de quantização ocasionará mais perdas e a distorção por efeito de bloco será maior, neste caso, os valores de α e β são maiores também, indicando que a filtragem das amostras deve ocorrer (RICHARDSON, 2003).

No H.264/SVC, existem dois tipos de filtragem possíveis: no primeiro, o valor de bS é igual a 1 ou 2 e, no segundo o valor de bS é igual a 4, mas em ambos os casos, as condições apresentadas pelas equações (3.23) e (3.24) (ITU-T, 2007) devem ser verificadas, pois essas condições determinam a intensidade da mudança de valores existente nas amostras internas a um dos blocos adjacentes. De modo que, se houver uma mudança significativa de valores nessas amostras, uma filtragem forte iria resultar em perda de detalhes da imagem, caso contrário, uma filtragem forte iria resultar em uma suavização da imagem.

| p2 – p0 | < β(IndexB) (3.23)

| q2 – q0 | < β(IndexB) (3.24)

Quando as condições apresentadas nas equações (3.23) e (3.24) são verdadeiras e o valor de bS é igual a 1 ou 2, a filtragem é realizada através da aplicação das equações

44

(3.25) e (3.26) sobre as amostras de entrada p1, p0, q0 e q1 gerando, assim, as amostras

filtradas p’0 e q’0.

p’0 = p0 + clipping (∆0i) (3.25)

q’0 = q0 – clipping (∆0i) (3.26)

∆0i = (4 (q0 – p0) + (p1 – q1) + 4) >> 3 (3.27)

Além disso, quando as condições (3.23) e (3.24) são verdadeiras e as amostras são de luminância, os filtros apresentados pelas equações (3.28) e (3.30) são aplicados sobre as amostras de entrada p0, p1, p2, q0, q1 e q2, gerando as amostras filtradas p’1 e q’1.

p’1 = p1 – clipping (∆p1i) (3.28)

∆p1i = (p2 + ((p0 + q0 + 1) >> 1) – 2p1) >> 1 (3.29)

q’1 = q1 – clipping (∆q1i) (3.30)

∆q1i = (q2 + ((q0 + p0 + 1) >> 1) – 2q1) >> 1 (3.31)

As operações de clipping utilizadas nas equações (3.25), (3.26), (3.28) e (3.30) são utilizadas para limitar os valores de delta (LIST, 2003), de modo que, esses valores fiquem na faixa de –c1 até c1, onde c1 é um parâmetro definido a partir de uma tabela

indexada por IndexA e bS, conforme definido no padrão H.264/SVC (ITU-T, 2007).

Os valores de clipping são definidos conforme as equações (3.32), (3.33) e (3.34) (ITU-T, 2007).

clipping (∆p1i) = Min (Max (-c1, ∆p1i), c1) (3.32) clipping (∆q1i) = Min (Max (-c1, ∆q1i), c1) (3.33) clipping (∆0i) = Min (Max (-c0, ∆0i), c0) (3.34)

As filtragens das amostras p0 e q0 de luminância utilizam a operação de clipping a

partir dos valores de ∆0i e da verificação das condições apresentadas em (3.23) e (3.24).

Nestas filtragens, o valor de c0 usado na equação (3.34) inicia com o mesmo valor

definido para c1 e é incrementado em um a cada condição verdadeira.

As filtragens das amostras de crominância são realizadas do mesmo modo que as de luminância, mas apenas as amostras p0 e q0 podem ser modificadas e o valor de c0 para

as operações de clipping, nesse caso, é fixado em c1+1.

Quando o valor de bS é igual a 4, as condições apresentadas nas equações (3.23) e (3.24) são verdadeiras e as amostras são de luminância, as filtragens são realizadas conforme as equações (3.35), (3.36), (3.37), (3.38), (3.39) e (3.40) (ITU-T, 2007).

p’0 = (p2 + 2p1 + 2p0 + 2q0 + q1 + 4) >> 3 (3.35) q’0 = (q2 + 2q1 + 2q0 + 2p0 + p1 + 4) >> 3 (3.36) p’1 = (p2 + p1 + p0 + q0 + 2) >> 2 (3.37) q’1 = (q2 + q1 + q0 + p0 + 2) >> 2 (3.38) p’2 = (2p3 + 3p2 + p1 + p0 + q0 + 4) >> 3 (3.39) q’2 = (2q3 + 3q2 + q1 + q0 + p0 + 4) >> 3 (3.40)

45

No entanto, quando bS é igual a 4, mas as amostras de luminância não atendem as condições (3.23) e (3.24), ou bS igual a 4 e as amostras são de crominância, as filtragens são realizadas conforme as equações (3.41) e (3.42) (ITU-T, 2007).

p’0 = (2p1 + p0 + q1 + 2) >> 2 (3.41)

q’0 = (2q1 + q0 + p1 + 2) >> 2 (3.42)

A ordem de filtragem utilizada em um filtro redutor de efeito de bloco pode influenciar muito no seu desempenho, pois para filtrar um macrobloco, cada pixel precisa ser lido diversas vezes, em diferentes sentidos, assim, quanto mais leituras são feitas, mais ciclos são gastos e, provavelmente menor será o desempenho do filtro. No entanto, o padrão H.264/SVC (ITU-T, 2007) faz somente uma restrição, com relação à ordem de processamento das amostras, especificando que as filtragens horizontais envolvendo um pixel, devem ser feitas antes das filtragens verticais.

A abordagem tradicional quanto à ordem de processamento considera que as dependências de dados no processo de filtragem são tratadas em nível de bloco, de modo que a borda de um bloco só pode ser filtrada depois que todas as linhas de pixels (LOPs - Line of Pixels) do seu bloco antecessor (à esquerda) tiverem sido filtradas. Existem diversas ordens de filtragem publicadas na literatura que consideram este nível de dependência, mas que propõem algumas otimizações para aumentar o paralelismo ou reduzir o uso de memória. Este trabalho utiliza uma nova abordagem, proposta em (CORRÊA, 2009) em colaboração com a autora desta dissertação e outros integrantes do grupo de pesquisa onde este trabalho foi desenvolvido. Nesta nova abordagem, as dependências de dados do processo de filtragem são tratadas em nível de amostras, ao invés de blocos, pois, desta forma, a filtragem da primeira linha de pixels de um bloco pode ter início assim que o resultado da filtragem da primeira linha de pixels do bloco antecessor estiver concluída. Esta ordem de processamento possibilita que o paralelismo da arquitetura seja mais bem explorado, sem causar aumento na utilização de memória.

A Figura 3.6 mostra a ordem de processamento utilizada neste trabalho, onde os números iguais correspondem às filtragens que podem ocorrer no mesmo ciclo, paralelamente, através da utilização de diferentes núcleos de filtragem. A partir da Figura 3.6 é possível notar que, nesta ordem de processamento, até quatro filtragens podem ser realizadas em paralelo, resultando no projeto de uma arquitetura com quatro núcleos de filtragem, a qual utiliza será apresentada na subseção 4.2.1.

46

Figura 3.6: Ordem de Processamento de amostras proposta (CORRÊA, 2009).