Pontilhamento: Sinal ruidoso para melhorá-lo

imagem

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 discreta


Precisão de Onda Senoidal Amostrada

Vamos 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.

Source: https://habr.com/ru/post/pt481386/


All Articles