C# PadrõeC# Padrões de codificação e boas praticass de Codificação e Boas Praticas
Algoritmo para codificação em bitrate constante Vinicius Kursancew.
Transcript of Algoritmo para codificação em bitrate constante Vinicius Kursancew.
Algoritmo para codificação em bitrate constante
Vinicius Kursancew
INTRODUÇÃO AO MPEG VIDEO
● Padrão de codificação perceptivo
● Usado em transmissão de TV digital
● A ISO especifica o comportamento do decoder
● Elimina redundancia espacial
● Utiliza quantização para reduzir número de bits necessários para representar um dado
INTRODUÇÃO AO MPEG VIDEO
DCT Quantização VLC1011010
DCT
● Representa o sinal em termos de cossenos apenas
● No MPEG é feita em em blocos 8x8
● Quatro blocos adjacentes formam um macrobloco
DCT
● Expressão
Quantização
● Processo de reduzir o número de bits necessários para representar os coeficientes
● Divide os coeficientes por um valor predefinido
● Componentes mais altas de freqüencia são divididos por valores maiores
Quantização
Coeficiente DC(F(0,0)) = 73
O coeficiente DC é dividido por 8:
floor[73(100'1001b)/8(1000b)] = 9(1001b) 3 bits a menos
Coeficiente AC (F(6,5)) = 189
O Coeficiente AC(F(6,5)) é dividido por 48
floor[189(8bits)/48] = 3 (2 bits, 6 a menos)
Quantização adaptiva
● Aumentar os fatores de quantização para manter a taxa de bits
● Diminui a qualidade
● Necessário pois a largura de banda de transmissões é limitada
● Útil apenas para visialização em tempo real
Quantização adaptiva
● Leva em conta dois fatores principais– O quanto ja foi gasto da banda
– Atividade espacial da imagem
● Método consiste de 3 passos:– Alocar quantidade de bits para frame
– Calcular fator adaptivo base
– Calcular fator adaptivo para o macrobloco
Quantização adaptiva - PASSO1
● Calcula quantos bits existem disponíveis para este frame, parametro rc_T
BITRATE/FRAMERATE
● Porém... se faltaram ou sobraram bits para codificação do frame anterior estes devem ser considerados
BITRATE/FRAMERATE + BITS_FRAME_ANTERIOR
Quantização adaptiva - PASSO1
● Depois de codificar a imagem um ”parâmetro de compexidade global” (rc_X) é calculado:
Bits Usados na Imagem * média dos fatores
● A média dos fatores é obtida somando cada um dos fatores de quantização adaptiva calculados para cada macrobloco no frame anterior e dividindo-se pelo total de macroblocos
Quantização Adaptiva PASSO2
● Antes de codificar um macrobloco o algoritmo estima quanto falta para encher o ”buffer virtual”. O algoritmo determina como achar este valor (dj).
dj = rc_d + Bj-1 (rc_T*j)/TOTAL MACROBLOCOS
● Bj é o número de bits gerados para codificar o frame até o presente macrobloco
● rc_d é o indicador de quanto sobrou o faltou de bits estão sobrando ou faltando até o momento
rc_d = rc_d + BitsAlocados - BitsUsados
Quantização Adaptiva PASSO2
● A partir de dj calcula-se o valor base da quantização
Quantização Adaptiva PASSO3
● Por último se calcula o valor de quantização adaptiva para o macrobloco j
● actj é o mínimo das varianças entre os blocos(vblk) do macrobloco e avgactj é a média das varianças do frame anterior:
Resultados
● Imagens
500kbps500kbps 750kbps
Resultados
● Imagens
1000kbps Sem quantização adaptiva
Resultados
● Valores de mquantj para os 10 primeiros macroblocos
500kbps 750kbps 1000kbps
13121313111312111312
8888798788
6666565566
Resultados
● Tamanho da stream (12 frames)– 500kbps: 37452 bytes
– 750kbps: 55175 bytes
– 1000kbps: 73467 bytes
– Sem bitrate constante: 238412 bytes
Resultados
● Implementação em hardware:– Área anterior: 918374.8 sq um
– Área atual: 1703531.0 sq um