Tramage: signal bruyant pour l'améliorer

image

Présentation


Dans la première partie de cette série d'articles, nous examinerons le côté théorique du tramage, un peu d'histoire et son application aux signaux 1D et à l'échantillonnage. J'essaierai de faire une analyse fréquentielle des erreurs de discrétisation et de parler de la façon dont le tramage aide à les corriger. Fondamentalement, ce sera un article théorique, donc si vous êtes intéressé par des applications plus pratiques, attendez les prochaines parties.

Le cahier Mathematica pour la reproduction des résultats peut être trouvé ici , et la version pdf est ici .

Qu'est-ce que le tramage?


Le tramage peut être décrit comme l'introduction délibérée / délibérée de bruit dans un signal pour éviter les erreurs à grande échelle / basse résolution résultant de l'échantillonnage ou du sous-échantillonnage.

Si vous avez déjà travaillé avec:

  • Signaux audio
  • Formats d'image de palette des années 90

ils devraient avoir rencontré des options de tramage qui, grâce à l'ajout de bruit et d'artefacts à faible résolution, ont «magiquement» amélioré la qualité du son ou des images.

Cependant, j'ai trouvé sur Wikipedia un fait assez surprenant sur la façon dont le tramage a été défini et utilisé pour la première fois:

... L'une des premières applications du tramage est apparue pendant la Seconde Guerre mondiale. Les bombardiers utilisaient des ordinateurs mécaniques pour naviguer et calculer la trajectoire des bombes. Il est curieux que ces ordinateurs (boîtes remplies de centaines d'engrenages et d'engrenages) fonctionnent plus précisément lorsqu'ils volent à bord d'un avion qu'au sol. Les ingénieurs ont réalisé que les vibrations causées par l'avion réduisaient l'erreur causée par les pièces mobiles collantes. Sur terre, ils se déplaçaient dans de courts mouvements saccadés, et dans l'air, leur mouvement était plus continu. De petits vibromoteurs ont été intégrés dans les ordinateurs, et leur vibration était appelée «tremblement» du mot moyen anglais «didderen» signifiant «trembler». Aujourd'hui, lorsque vous frappez sur un compteur mécanique pour augmenter sa précision, vous appliquez le tramage. Lorsqu'il est utilisé en petites quantités, le tramage convertit avec succès le système de numérisation en un système plus analogique, dans le bon sens du terme.

- Ken Polmann, Principes de l'audio numérique

Il s'agit d'un fait historique inspirant et intéressant et je comprends pourquoi il nous permet d'éviter les écarts dans les calculs et les résonances en interrompant au hasard les cycles de rétroaction des vibrations mécaniques.

Mais assez d'histoire, regardons d'abord le processus de tramage dans les signaux 1D, par exemple, dans l'audio.

Échantillonnage en tramant un signal constant


Nous commencerons par analyser le signal le plus ennuyeux du monde - un signal constant. Si vous en savez un peu sur le traitement numérique des signaux liés au son, vous pouvez dire: mais vous aviez promis de considérer l'audio, et par définition il n'y a pas de composante constante dans le son! (De plus, dans les logiciels et les équipements de traitement du son, le soi-disant décalage CC est volontairement éliminé.)

C'est vrai, et bientôt nous examinerons des fonctions plus complexes, mais nous recommencerons.

Imaginez que nous effectuons un échantillonnage sur 1 bit d'un signal à virgule flottante normalisé. Cela signifie que nous n'avons affaire qu'à des valeurs binaires finies, 0 ou 1.

Si le signal est de 0,3 , un simple arrondi sans tramage sera la fonction la plus ennuyeuse - juste zéro !

L'erreur est également constante et égale à 0,3 , par conséquent, l'erreur moyenne est égale à 0,3 . Cela signifie que nous avons introduit un écart assez important dans le signal et perdu complètement les informations du signal d'origine.

Nous pouvons essayer de trembler ce signal et regarder les résultats.

Dans ce cas, le tramage (lors de l'utilisation de la fonction d'arrondi) applique simplement un bruit blanc aléatoire ordinaire (une valeur aléatoire pour chaque élément, ce qui crée un spectre de bruit uniforme) et ajoute un intervalle aléatoire (-0,5, 0,5) au signal avant l'échantillonnage.

quantizedDitheredSignal =
Round [constantSignalValue + RandomReal [] - 0.5] & / @ Range [sampleCount];



Il est difficile de voir quelque chose ici, maintenant le résultat de la discrétisation n'est qu'un ensemble de zéros et de nombres aléatoires. Avec (prévu) beaucoup de zéros. En soi, ce signal n'est pas particulièrement intéressant, mais le calendrier des erreurs et l'erreur moyenne sont assez intéressants.


Ainsi, comme nous nous y attendions, l'erreur varie également, mais il est effrayant que l'erreur soit parfois devenue plus importante (valeur absolue 0,7)! Autrement dit, l'erreur maximale s'est malheureusement aggravée, mais le bruit moyen compte:

Mean [ditheredSignalError]
0,013

Beaucoup mieux que l'erreur initiale de 0,3. Avec un nombre d'échantillons significativement important, cette erreur tendra vers zéro (à la limite). Ainsi, l'erreur de la composante constante est devenue beaucoup moins, mais regardons le graphique de fréquence de toutes les erreurs.


Graphique rouge / rafale = spectre de fréquence de l'erreur en l'absence de tramage (signal constant sans fréquences). Noir - avec tramage utilisant du bruit blanc.

Tout devient de plus en plus intéressant! Cela démontre que la première conclusion de ce post- tramage répartit l'erreur / l'écart d'échantillonnage sur plusieurs fréquences .

Dans la section suivante, nous découvrirons en quoi cela nous aidera.

Sensibilité aux fréquences et filtrage passe-bas


Ci-dessus, nous avons observé le tramage d'un signal constant échantillonné:

  • Il a augmenté l'erreur maximale.
  • Presque zéro l'erreur moyenne.
  • Ajout d'un bruit blanc constant (avec une couverture complète du spectre) au spectre de fréquence d'erreur, réduisant l'erreur à basse fréquence.

En soi, cela ne nous est pas très utile ... Cependant, nous ne considérons pas la discrétisation d'une fonction / signal mathématique arbitraire. Nous considérons les signaux qui seront perçus par l'homme. De toute évidence, la perception humaine est limitée. En voici quelques exemples:

  • Notre vision a une limite de netteté. Beaucoup de gens souffrent de myopie et sans lunettes, ils voient des images floues d'objets distants.
  • On perçoit bien mieux l'échelle moyenne des détails que les fréquences très hautes ou très basses (les petits détails de gradients très lisses peuvent être invisibles).
  • Notre audition fonctionne dans une certaine gamme de fréquences (20 Hz - 20 kHz, mais s'aggrave avec le temps) et nous sommes les plus sensibles à la gamme moyenne - 2 kHz - 5 kHz.

Par conséquent, toute erreur dans les fréquences plus proches de la plage supérieure de la fréquence perçue sera beaucoup moins visible.

De plus, nos appareils multimédias sont de mieux en mieux, offrant un plus grand suréchantillonnage . Par exemple, dans le cas des téléviseurs et des moniteurs, nous avons la technologie «rétine» et des écrans 4K (sur lesquels il est impossible de voir un seul pixel), dans le domaine du son, nous utilisons des formats de fichiers avec une fréquence d'échantillonnage d'au moins 44 kHz, même pour des haut-parleurs bon marché qui ne peuvent souvent pas jouer. plus de 5-10 kHz.

Cela signifie que nous pouvons approximer l'apparence perçue du signal en effectuant son filtrage passe-bas. Sur le graphique, j'ai effectué un filtrage passe-bas (le remplissage avec des zéros à gauche est une "montée"):


Rouge - Signal non échantillonné souhaité. Vert - signal discret avec tramage. Le bleu est le filtre passe-bas de ce signal.

Le signal commence à se rapprocher beaucoup plus de la fonction d'origine, non échantillonnée!

Malheureusement, nous commençons à voir des basses fréquences très visibles et absentes dans le signal d'origine. Dans la troisième partie de la série, nous allons essayer de le réparer à l'aide du bruit bleu. En attendant, voici à quoi pourrait ressembler le graphique avec une fonction de pseudo-bruit dont le contenu est à une fréquence beaucoup plus basse:

Cela est possible car notre séquence pseudo-aléatoire a le spectre de fréquences suivant:


Mais finissons de regarder les fonctions simples et constantes. Jetez un œil à l'onde sinusoïdale (si vous êtes familier avec le théorème de Fourier, vous savez qu'il est la pierre angulaire de tout signal périodique!).

Échantillonnage à onde sinusoïdale


Si nous échantillonnons une sinusoïde avec un échantillonnage de 1 bit, nous obtenons un signal rectangulaire simple.


Le signal rectangulaire est assez intéressant car il inclut à la fois la fréquence de base et les harmoniques impaires .

Il s'agit d'une propriété intéressante qui est activement utilisée dans les synthétiseurs soustractifs analogiques pour créer le son d'instruments creux / cuivre. La synthèse soustractive prend un son complexe et harmonieusement riche et le filtre, éliminant certaines fréquences (les paramètres du filtre varient dans le temps) pour donner aux sons la forme souhaitée.

Spectre de fréquence d'une onde carrée:


Mais dans ce post, nous sommes plus intéressés par les erreurs d'échantillonnage! Créons un graphique d'erreur, ainsi qu'un spectre de fréquences d'erreur:


Dans ce cas, la situation est bien meilleure - l'erreur moyenne est proche de zéro! Malheureusement, nous avons encore beaucoup de basses fréquences indésirables qui sont très proches de notre fréquence principale (multiplicateurs impairs avec une amplitude décroissante). Ce phénomène est appelé bruit de crénelage ou de tramage - des fréquences apparaissent qui étaient absentes dans le signal d'origine, et elles sont assez importantes.

Même le filtrage passe-bas ne sera pas en mesure d'améliorer considérablement le signal. L'erreur a beaucoup de basses fréquences:


Filtrage passe-bas à onde sinusoïdale discrétisé


Précision de l'onde sinusoïdale échantillonnée

Voyons comment la situation change lorsque le tramage est ajouté. À première vue, il n'y a presque aucune amélioration:


Cependant, si nous considérons cela comme une image, cela commence à mieux paraître:


Notez que les erreurs d'échantillonnage sont à nouveau réparties sur différentes fréquences:


Cela semble très prometteur! Surtout que nous pouvons maintenant essayer de filtrer:


Il s'agit d'une onde sinusoïdale légèrement déformée, mais elle semble beaucoup plus proche de l'original que la version sans tramage, à l'exception du déphasage introduit par le filtre asymétrique (je ne l'expliquerai pas ici; je peux seulement dire que le problème peut être résolu en appliquant des filtres symétriques):


Le rouge est l'onde sinusoïdale d'origine. Vert - signal filtré passe-bas sans tramage. Bleu - signal filtré passe-bas avec tramage.

Les graphiques des deux erreurs confirment numériquement que l'erreur est beaucoup plus petite:


Rouge - l'erreur du signal filtré passe-bas sans tramage. Bleu - l'erreur du signal filtré passe-bas avec tramage.

Enfin, regardons brièvement un signal avec une meilleure fonction de tramage ne contenant que des hautes fréquences:


L'image du haut est fonction du bruit blanc. L'image inférieure est une fonction contenant des fréquences plus élevées.


Une version avec filtrage passe-bas, tramage et une fonction améliorée - des résultats presque parfaits, si vous ne tenez pas compte du déphasage provoqué par le filtre!

Et enfin, une comparaison des trois spectres d'erreur:


Rouge - spectre d'erreur d'échantillonnage sans tramage. Noir - spectre d'erreur d'échantillonnage avec un bruit blanc tremblotant. Bleu - spectre d'erreur d'échantillonnage avec tramage avec des fréquences plus élevées.

Résumé


Ceci est la première partie de la série se termine. Constatations clés:

  • Le tramage répartit l'erreur / l'écart d'échantillonnage sur une pluralité de fréquences, et cela dépend de la fonction de tramage; ils ne se concentrent pas sur les basses fréquences.
  • La perception d'une personne de tout signal (son, vision) fonctionne mieux dans des gammes de fréquences très spécifiques. Les signaux sont souvent suréchantillonnés aux limites du spectre perceptuel, où la perception n'est pas sensible. Par exemple, les taux d'échantillonnage audio standard vous permettent de reproduire des signaux que la plupart des adultes ne peuvent pas entendre du tout. En raison du paragraphe précédent, cela rend très intéressante l'idée d'utiliser des erreurs de tramage et de décalage dans cette gamme de fréquences.
  • Différentes fonctions de bruit créent différents spectres d'erreur qui peuvent être utilisés, sachant quel spectre d'erreur est le plus souhaitable.

Dans la partie suivante, nous examinerons diverses fonctions de tramage - celle que j'ai utilisée dans cet article (la série des proportions d'or) et le bruit bleu.

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


All Articles