Alocação Ótima de Bits Alan Dantas de Medeiros Endalécio Diego Berg Brum Nilson Carvalho Silva Junior Victor Pereira da Costa Vitor Borges Coutinho da Silva Processamento Digital de Áudio Introdução Ganho de Codificação Espectro Colorido Sinais Quase Estacionários Modelo Psicoacústico de Mascaramento Alocação Ótima Minimização do Erro Médio Quadrático Introdução Quantização uniforme < Ɛ𝟐 > = 𝟏 𝟑∗𝟐𝟐𝑹 Realocação de Bits 𝟏 + 𝟑∗𝟐𝟐(𝑹+𝜹) 𝟏 𝟑∗𝟐𝟐(𝑹−𝜹) ≥ 𝟐 𝟑∗𝟐𝟐𝑹 Erro Constante nas Amostras Ponto Flutuante 𝒒𝟐 𝒃𝒍𝒐𝒄𝒌 = 𝟏 𝑲 𝑲−𝟏 𝒌=𝟎 𝟐 < Ɛ𝒌 > = 𝟏 𝑲 𝟐 𝑲−𝟏 𝒙𝒌 𝒌=𝟎 𝟑∗𝟐𝟐𝑹𝒌 Introdução 𝟐 Como 𝒙𝒌 = 𝟐 𝒍𝒐𝒈𝟐 (𝒙𝒌 𝟐 ) , 𝒒 𝟐 𝒃𝒍𝒐𝒄𝒌 = 𝟏 𝟏 𝑲 𝟐 𝑲−𝟏 𝒙𝒌 𝒌=𝟎 𝟑∗𝟐𝟐𝑹𝒌 𝑹𝒌 = (𝑪 + 𝒍𝒐𝒈𝟐 𝒙𝒌 𝟐 ) 𝟐 Maior escala requer mais bits Substituindo C em função do número total de bits e fazendo a média 𝑪= 𝑷 𝟐 𝑲𝒑 𝒐𝒑𝒕 𝑹𝒌 = − 𝑷 𝑲𝒑 𝟏 𝑲𝒑 + 𝒑𝒂𝒔𝒔𝒆𝒅 𝒌 𝒍𝒐𝒈𝟐 𝟐 𝒙𝒌 = 𝑷 𝟐 𝑲𝒑 𝟏 𝟏 𝒍𝒐𝒈𝟐 𝒙𝒌 𝟐 − < 𝒍𝒐𝒈𝟐 𝒙𝒌 𝟐 𝟐 𝟐 − 𝒍𝒐𝒈𝟐 𝒑𝒂𝒔𝒔𝒆𝒅 𝒌 𝒙𝒌 𝟐 𝟏 𝑲𝒑 >𝒑𝒂𝒔𝒔𝒆𝒅 𝒌 𝑲𝒑 -> número de frequências com, pelo menos, 1 bit de mantissa alocado 𝑷 -> total de bits de mantissa Ganho de Codificação e Planitude Espectral 𝒐𝒑𝒕 𝒐𝒑𝒕 𝒃𝒍𝒐𝒄𝒌 e 𝒖𝒏𝒊𝒇𝒐𝒓𝒎 𝒒𝟐 𝒃𝒍𝒐𝒄𝒌 Substituindo 𝑹𝒌 em 𝒒𝟐 em consideração em 𝒐𝒑𝒕 𝒒𝟐 𝒃𝒍𝒐𝒄𝒌 = 𝒖𝒏𝒊𝒇𝒐𝒓𝒎 𝒒𝟐 𝒃𝒍𝒐𝒄𝒌 levando a potência 𝟏 𝑲 = 𝑲−𝟏 𝟐 𝟐𝑹 𝒙 (𝟑 ∗ 𝟐 ) 𝒌 𝒌=𝟎 𝟏 𝑲−𝟏 𝒙𝒌 𝟐 (𝟑 ∗ 𝟐𝟐𝑹 ) 𝒌=𝟎 𝑲 Quando 𝒔𝒇𝒎 = 𝑲−𝟏 𝟐 𝒌=𝟎 𝒙𝒌 𝟏 𝑲 ( 𝟏 𝑲 𝑲−𝟏 𝟐 𝒌=𝟎 𝒙𝒌 ) alocação com ponto flutuante é melhor < 𝟏, a Ganho de Codificação e Planitude Espectral 𝒔𝒇𝒎 = 𝑲−𝟏 𝟐 𝒙 𝒌 𝒌=𝟎 𝟏 𝑲 ( 𝟏 𝑲 𝑲−𝟏 𝟐) 𝒙 𝒌 𝒌=𝟎 ≤ 𝟏 (Média Geométrica/Média Aritmética) Igual a 1 para ruído branco Quanto menor, maior ganho de codificação Quantização em Ponto Flutuante por Blocos Número de bandas de frequência pequeno Alocação ótima de bits Quantização amostra por amostra Número de bandas de frequência grande Agrupamento de amostras em sub-bandas Quantização das sub-bandas em FP por Blocos Quantização em Ponto Flutuante por Blocos Equação de alocação de bits para sub-banda “b”: 𝒐𝒑𝒕 𝑹𝒃 = 𝑷 𝑲𝒑 + 𝟏 𝒍𝒐𝒈𝟐 𝟐 𝒙𝒎𝒂𝒙 𝒃 𝟐 − 𝟏 𝑲𝒑 𝒑𝒂𝒔𝒔𝒆𝒅 𝒃 𝑵𝒃 ∗ 𝟏 𝒍𝒐𝒈𝟐 𝟐 b -> índice de sub-banda Nb -> Número de amostras na sub-banda “b” 𝑥 2 𝑚𝑎𝑥𝑏 -> Valor máximo de 𝑥 2 𝑘 na sub-banda “b” 𝒙𝒎𝒂𝒙 𝒃 𝟐 Quantização em Ponto Flutuante por Blocos Informações necessárias para descrever alocação: Se bandas são passadas e quantos bits por banda Alocação ótima de bits: Garantir resultados coerentes Número de bits alocados positivo Pelo menos 2 bits de mantissa para quantizações midtread Quantização em Ponto Flutuante por Blocos Informações necessárias para descrever alocação Problema: Overhead Número grande de alocações diferentes por sub-banda Solução: Valores pré-definidos no decodificador MPEG II – máximo de bits alocados para certas bandas Quantização em Ponto Flutuante por Blocos Equação de alocação de bits Problemas: Número de bits alocados > máximo permitido Número de bits alocados < 2 por sub-banda Quantização em Ponto Flutuante por Blocos Soluções: Ajustar limites superior e inferior do sinal Alocação “water-filling” Quantização em Ponto Flutuante por Blocos Escolha de limites de sinal para alocação de bits: 2 1 Se 𝑙𝑜𝑔2 (𝑥𝑚𝑎𝑥 ) > 2 𝑏 limite máximo => máximo de alocação de bits(Saturação) 2 1 Se 𝑙𝑜𝑔2 (𝑥𝑚𝑎𝑥 ) < limite mínimo => nenhum bit é alocado 2 𝑏 2 1 Se limite mínimo < 𝑙𝑜𝑔2 (𝑥𝑚𝑎𝑥 ) < limite máximo: 2 𝑏 Fórmula ótima de alocação de bits para sub-banda Se resultados da fórmula incluirem alocações superiores ao limite máximo de bits ou inferiores a 2 bits limites de sinal inválidos Aumenta limite inferior e diminui superior. Quantização em Ponto Flutuante por Blocos Alocação “water-filling”: Condição inicial (0 bits) Ordenar sub-bandas Limite = 2 1 𝑙𝑜𝑔2 (𝑥𝑚𝑎𝑥 ) 2 𝑏 2 1 Max( 𝑙𝑜𝑔2 (𝑥𝑚𝑎𝑥 )) 2 𝑏 1 Limite-- Se (2 𝑙𝑜𝑔2 (𝑥𝑚𝑎𝑥 2 𝑏 )) >= Limite Se numBits𝑏 < MaxBits numBits𝑏 ++ Até que P=0 Se existirem sub-bandas com numBits𝑏 = 1, agrupar em pares na mesma situação ou distribuir bits para outras amostras.