1. Introdução
Na primeira parte desta
série de artigos, consideraremos o lado teórico do pontilhamento, um pouco da história e sua aplicação aos sinais 1D e amostragem. Vou tentar realizar uma análise de frequência dos erros de discretização e falar sobre como o pontilhamento ajuda a corrigi-los. Basicamente, este será um artigo teórico; portanto, se você estiver interessado em aplicações mais práticas, aguarde as próximas partes.
O caderno Mathematica para reproduzir os resultados pode ser encontrado
aqui , e a versão em pdf está
aqui .
O que é o pontilhamento?
O pontilhamento pode ser descrito como a introdução deliberada / deliberada de ruído em um sinal para evitar erros de larga escala / baixa resolução decorrentes de amostragem ou subamostragem.
Se você já trabalhou com:
- Sinais de áudio
- Formatos de imagem da paleta dos anos 90
eles deveriam ter encontrado opções de pontilhamento que, graças à adição de ruído e artefatos de baixa resolução, “magicamente” melhoraram a qualidade do som ou das imagens.
No entanto, achei na Wikipedia um fato bastante surpreendente sobre como o pontilhamento foi definido e usado pela primeira vez:
... Uma das primeiras aplicações do pontilhamento surgiu durante a Segunda Guerra Mundial. Aviões de bombardeiro usavam computadores mecânicos para navegar e calcular a trajetória das bombas. É curioso que esses computadores (caixas cheias de centenas de engrenagens) funcionassem com mais precisão ao voar a bordo de um avião do que no chão. Os engenheiros perceberam que a vibração causada pela aeronave reduz o erro causado por partes móveis aderentes. Na terra, eles se moviam em pequenos movimentos bruscos, e no ar seu movimento era mais contínuo. Pequenos vibromotores foram incorporados aos computadores e sua vibração foi denominada “pontilhada” da palavra em inglês do meio “didderen”, que significa “tremer”. Hoje, quando você bate em um medidor mecânico para aumentar sua precisão, aplica o pontilhamento. Quando usado em pequenas quantidades, o pontilhamento converte com êxito o sistema de digitalização em um mais analógico, no bom sentido da palavra.
- Ken Polmann, Princípios do áudio digital
Esse é um fato histórico inspirador e interessante, e entendo por que ele nos permite evitar desvios nos cálculos e nas ressonâncias, interrompendo aleatoriamente os ciclos de feedback da vibração mecânica.
Mas já chega de história, vamos primeiro examinar o processo de pontilhamento em sinais 1D, por exemplo, em áudio.
Amostragem pontilhando um sinal constante
Começaremos analisando o sinal mais chato do mundo - um sinal constante. Se você conhece um pouco do processamento digital de sinais relacionados ao som, pode dizer: mas prometeu considerar o áudio e, por definição, não há componente constante no som! (Além disso, em software e em equipamentos de processamento de som, o chamado
deslocamento DC é eliminado intencionalmente.)
Isso é verdade e em breve examinaremos funções mais complexas, mas começaremos novamente.
Imagine que estamos realizando uma amostragem de 1 bit de um sinal de ponto flutuante normalizado. Isso significa que estamos lidando apenas com valores binários finitos, 0 ou 1.
Se o sinal for
0,3 , o arredondamento simples sem pontilhamento será a função mais chata - apenas
zero !
O erro também é constante e igual a
0,3 ; portanto, o erro médio é igual a
0,3 . Isso significa que introduzimos um desvio bastante grande no sinal e perdemos completamente as informações do sinal original.
Podemos tentar reprimir esse sinal e observar os resultados.
Nesse caso, o pontilhamento (ao usar a função de arredondamento) simplesmente aplica ruído branco aleatório comum (um valor aleatório para cada elemento, que cria um espectro de ruído uniforme) e adiciona um intervalo aleatório (-0,5, 0,5) ao sinal antes da amostragem.
quantizedDitheredSignal =
Round [constantSignalValue + RandomReal [] - 0,5] e / @ Range [sampleCount];
É difícil ver algo aqui, agora o resultado da discretização é apenas um conjunto de zeros e aleatórios. Com (esperado) muitos zeros. Em si, esse sinal não é particularmente interessante, mas a
programação de erros e o erro médio são bastante interessantes.
Então, como esperávamos, o erro também varia, mas é assustador que o erro às vezes tenha se tornado maior (valor absoluto 0,7)! Ou seja, infelizmente, o erro máximo piorou, mas o ruído médio é importante:
Média [ditheredSignalError]
0,013
Muito melhor que o erro inicial de 0,3. Com um número significativamente grande de amostras, esse erro tenderá a zero (até o limite). Portanto, o erro do componente constante se tornou muito menor, mas vamos examinar o gráfico de frequência de todos os erros.
Gráfico vermelho / burst = espectro de frequência do erro na ausência de pontilhamento (sinal constante sem frequências). Preto - com pontilhamento usando ruído branco.Tudo está se tornando mais interessante! Isso demonstra que a primeira conclusão deste pós -
pontilhamento distribui o erro / desvio de amostragem entre várias frequências .
Na próxima seção, descobriremos como isso nos ajudará.
Sensibilidade à frequência e filtragem passa-baixo
Acima, observamos o pontilhamento de um sinal constante amostrado:
- Ele aumentou o erro máximo.
- Quase zerou o erro médio.
- Adicionado ruído branco constante (com cobertura total do espectro) ao espectro de frequência de erro, reduzindo o erro de baixa frequência.
Por si só, não é muito útil para nós ... No entanto, não estamos considerando a discretização de nenhuma função / sinal matemático arbitrário. Consideramos os sinais que serão percebidos pelo homem. Obviamente, a percepção humana é limitada. Aqui estão alguns exemplos disso:
- Nossa visão tem um limite de nitidez. Muitas pessoas têm miopia e sem óculos vêem imagens borradas de objetos distantes.
- Percebemos a escala média de detalhes muito melhor do que as frequências muito altas ou muito baixas (pequenos detalhes de gradientes muito suaves podem ser invisíveis).
- Nossa audição funciona em uma certa faixa de frequência (20 Hz - 20 kHz, mas piora com o tempo) e somos mais sensíveis à faixa média - 2 kHz - 5 kHz.
Portanto, qualquer erro nas frequências mais próximas da faixa superior da frequência percebida será muito menos perceptível.
Além disso, nossos dispositivos de mídia estão melhorando cada vez mais, fornecendo maior
sobreamostragem . Por exemplo, no caso de TVs e monitores, temos a tecnologia "retina" e displays 4K (nos quais é impossível ver um único pixel), na área de som usamos formatos de arquivo com uma taxa de amostragem de pelo menos 44 kHz, mesmo para alto-falantes baratos que geralmente não podem ser reproduzidos mais de 5-10 kHz.
Isso significa que podemos aproximar a aparência percebida do sinal executando sua filtragem passa-baixo. No gráfico, realizei a filtragem passa-baixa (preencher com zeros à esquerda é um "aumento"):
Vermelho - sinal não amostrado desejado. Verde - sinal discreto com pontilhamento. Azul é o filtro passa-baixo deste sinal.O sinal começa a parecer muito mais próximo da função original não amostrada!
Infelizmente, estamos começando a ver frequências baixas que são muito visíveis e ausentes no sinal original. Na terceira parte da série, tentaremos corrigi-lo com a ajuda do ruído azul. Enquanto isso, veja como o gráfico pode parecer com uma função de pseudo-ruído com conteúdo em uma frequência muito menor:
Isso é possível porque nossa sequência pseudo-aleatória tem o seguinte espectro de frequência:
Mas vamos terminar de olhar para funções simples e constantes. Dê uma olhada na onda senoidal (se você estiver familiarizado com o teorema de Fourier, você sabe que é a base de qualquer sinal periódico!).
Amostragem de onda senoidal
Se amostrarmos um senoidal com amostragem de 1 bit, obteremos um sinal retangular simples.
O sinal retangular é bastante interessante porque inclui a frequência base e os
harmônicos ímpares .
Esta é uma propriedade interessante que é usada ativamente em sintetizadores subtrativos analógicos para criar o som de instrumentos ocos / cobre. A síntese subtrativa pega um som complexo e harmoniosamente rico e o filtra, eliminando algumas frequências (os parâmetros do filtro variam ao longo do tempo) para dar aos sons a forma desejada.
Espectro de frequência de uma onda quadrada:
Mas neste post, estamos mais interessados em erros de amostragem! Vamos criar um gráfico de erro, bem como um espectro de frequências de erro:
Nesse caso, a situação é muito melhor - o erro médio é próximo de zero! Infelizmente, ainda temos muitas frequências baixas indesejáveis muito próximas da nossa frequência principal (multiplicadores ímpares com magnitude decrescente). Esse fenômeno é chamado de ruído alternativo ou pontilhado - as frequências aparecem ausentes no sinal original e são bastante grandes.
Mesmo a filtragem passa-baixo não será capaz de ajudar significativamente o sinal. O erro tem muitas frequências baixas:
Filtragem discreta de onda senoidal discretaPrecisão de Onda Senoidal AmostradaVamos dar uma olhada em como a situação muda quando o pontilhamento é adicionado. À primeira vista, quase não há melhorias:
No entanto, se considerarmos isso como uma imagem, ele começará a parecer melhor:
Observe que os erros de amostragem são novamente distribuídos entre diferentes frequências:
Parece muito promissor! Especialmente considerando que agora podemos tentar filtrar:
Esta é uma onda senoidal ligeiramente distorcida, mas parece muito mais próxima do original do que a versão sem hesitação, com exceção da mudança de fase introduzida pelo filtro assimétrico (não vou explicar isso aqui; só posso dizer que o problema pode ser resolvido com a aplicação de filtros simétricos):
Vermelho é a onda senoidal original. Verde - sinal filtrado passa-baixo sem pontilhamento. Azul - sinal passa-baixo filtrado com pontilhamento.Os gráficos dos dois erros confirmam numericamente que o erro é muito menor:
Vermelho - o erro do sinal filtrado passa-baixo sem pontilhamento. Azul - o erro do sinal filtrado passa-baixo com pontilhamento.Finalmente, vamos examinar brevemente um sinal com uma função de pontilhamento melhor contendo apenas altas frequências:
A imagem superior é uma função do ruído branco. A imagem inferior é uma função que contém frequências mais altas.Uma versão com filtro passa-baixo, pontilhamento e uma função aprimorada - resultados quase perfeitos, se você não levar em conta a mudança de fase causada pelo filtro!E, finalmente, uma comparação dos três espectros de erro:
Vermelho - espectro de erro de amostragem sem pontilhamento. Preto - espectro de erro de amostragem com ruído branco pontilhado. Azul - espectro de erro de amostragem com pontilhamento com frequências mais altas.Sumário
Esta é a primeira parte da série termina. Principais conclusões:
- O pontilhamento distribui o erro / desvio de amostragem entre uma pluralidade de frequências, e isso depende da função de pontilhamento; eles não se concentram em baixas frequências.
- A percepção de uma pessoa sobre qualquer sinal (som, visão) funciona melhor em faixas de frequência muito específicas. Os sinais costumam ser super-amostrados nos limites do espectro perceptivo, onde a percepção não é sensível. Por exemplo, as taxas de amostragem de áudio padrão permitem reproduzir sinais que a maioria dos adultos não consegue ouvir. Devido ao parágrafo anterior, isso torna muito atraente a ideia de usar erros de pontilhamento e deslocamento para essa faixa de frequência.
- Diferentes funções de ruído criam diferentes espectros de erro que podem ser usados, sabendo qual espectro de erro é mais desejável.
Na próxima parte, veremos várias funções de pontilhamento - a que usei neste artigo (a série da proporção áurea) e o ruído azul.