Erreur de quantifications
Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

Erreur de quantifications



  1. #1
    invite824a8033

    Erreur de quantifications


    ------

    Bonjour

    Je cherche à calculer l'erreur liée à un changement de quantification.
    L'idée est celle-ci :
    - des valeurs sont quantifiées avec un pas de 'q'.
    - ces dernières valeurs quantifiées sont ensuite re-quantifiées avec un pas de 'r'. (q et r sont indépendants)
    => Quel est le bruit liée à cette succession de quantification ?

    La documentation que j'ai trouvée, ne parle que de la première quantification, où l'erreur de quantification est équi-répartie sur l'intervalle q (densité de probabilité P(x) égale à 1/q). Dans ce cas, la variance peut être calculée (), et l'écart-type devient

    Pour la seconde quantification, l'erreur n'est plus équi-répartie sur l'intervalle r, puisque les valeurs ont désormais une résolution égale à q. Du coup, je ne parviens pas à formuler P(x) et donc à calculer la variance. Faut-il passer par des peignes ?


    Merci pour votre aide

    -----

  2. #2
    phuphus

    Re : Erreur de quantifications

    Bonsoir DkVz,

    la réponse m'intéresse aussi, mais je crains fort de ne pas être la bonne personne pour te donner la solution toute faite. Je me suis un peu penché sur le problème ce soir, et j'ai des résultats, mais aucune démonstration solide. Je te livre l'état de mes réflexions, tu pourras me dire ce que tu en penses.

    Petit détail : j'ai pris p et q au lieu de q et r, ces variables me semblaient plus explicites.

    J'ai supposé que le signal à quantifier était compris entre 0 et 1, avec p et q petits devant 1. Je suis parti d'une quantification étalée sur toute la plage utile, c'est à dire :
    . 1/p entier
    . 1/q entier

    avec p < q (la deuxième quantification est plus grossière). Le résultat que je trouve au final est aussi valable pour p > q, mais pour l'instant il est plus simple de réfléchir avec p plus petit.

    Ainsi, le signal quantifié une première fois avec un pas q peut prendre toutes les valeurs suivantes :
    . m*q avec m entier compris entre 0 et 1/p

    De même, le signal quantifié une deuxième fois avec un pas r peut prendre toutes les valeurs suivantes :
    . n*q avec n entier compris entre 0 et 1/q

    Lors de la requantification, à une valeur de m donnée correspond une ou plusieurs valeurs de n. Si l'on suppose que la requantification se fait sans erreur, alors cela signifie que n est non entier et égal à :
    . n = m*p/q

    Lors du rééchantillonnage, échelonner les valeurs sur la liste des valeurs possibles revient à prendre n entier, donc :
    . n = round(m*p/q)

    A partir de là, on peut construire une fonction de toutes les valeurs possibles prises par l'erreur lors de la requantification :
    . suite_p_q = round(m*p/q) avec m entier compris entre 0 et 1/p

    Il reste donc à prouver (ou non) que les valeurs prises par la fonction "suite_p_q" sont :
    - uniques
    - régulièrement réparties entre -q/2 et q/2
    - équiprobables

    Je ne l'ai pas prouvé, mais je l'ai constaté grâce à un programme Matlab. Dans ce programme, d'un côté j'échantillonne avec un pas p puis un pas q un bruit blanc, et je construis à chaque fois le signal d'erreur que j'analyse statistiquement.
    Ensuite, je construis ma fonction suite_p_q, et je compare les valeurs de cette fonction au dépouillement statistique de mes signaux d'erreur.
    Je constate que :
    - ma suite_p_q colle parfaitement aux erreurs constatées sur le bruit blanc quantifié 2 fois, et ce pour de nombreux couples p / q : mon raisonnement précédent est juste
    - l'erreur se situe bien entre -q/2 et q/2 (à quelques pouillèmes près lorsque, par exemple, p et q sont impairs et ne sont pas petits devant 1)
    - les différentes valeurs d'erreur suite à la deuxième quantification sont équiprobables : tu peux les modéliser en continu par un P(x) constant
    - le niveau RMS du bruit total sur le signal requantifié est la somme quadratique des bruits ajoutés à chaque quantification : les deux bruits sont décorrélés quel que soit le couple p / q


    En fait, le problème lors de ces quantifications successives n'est pas tant le niveau du bruit introduit que la répartition de ce bruit (répartition spatiale dans le cas d'une image, ou temporelle dans le cas d'un signal temporel). Cette question a trouvé quelques réponses satisfaisantes, et je suppose qu'en allant chercher quelque publis traitant du modelage du bruit de quantification et de requantification, tu trouveras des données sérieuses sur le niveau de ces bruits. Tu peux commencer ici :

    http://en.wikipedia.org/wiki/Dither

    http://en.wikipedia.org/wiki/Noise_shaping

    Enfin, le programme Matlab :

    Code:
    % Estimation de l'erreur (bruit) dans le cas d'un signal numérique re-quantifié
    
    clear all ;
    clc ;
      
    % Génération d'un bruit blanc support de test
      Fs = 48000 ;
      signal = (rand(1,Fs)) ;
        
    % Quantification en amplitude du signal de test, pas = p
      N = 100 ;
      p = 1/N ;
      signal_p = round(signal*N)/N ;
      erreur_p = signal_p - signal ;
      % wavwrite(erreur_p,Fs,16,'erreur_p.wav') ;
      
    % Requantification avec pas = q
      N = 43 ;
      q = 1/N ;
      signal_q = round(signal_p*N)/N ;
      erreur_q = signal_q - signal ;
      erreur_q_p = signal_q - signal_p ;
      % wavwrite(erreur_q,Fs,16,'erreur_q.wav') ;
      
      figure(1) ;
      plot(unique(erreur_q_p),'b.') ;
      hold on ;
      title('Erreurs constatées Vs erreurs estimées théoriquement') ;
      
    % construction de la suite des erreurs
      m = [0:1:1/p] ;
      n = round(m*p/q) ;
      suite_p_q = n*q-m*p ;
      
      % figure(1) ;
      plot(unique(suite_p_q),'ro') ;
      hold off ;
      legend('Erreurs constatées sur bruit blanc','Erreurs estimées théoriquement') ;
      
      figure(2) ;
      hist(erreur_q_p,size(unique(erreur_q_p),2)) ;
      title('Histogramme des erreurs de requantification sur bruit blanc') ;
      
    % Quelques valeurs
      RMS_erreur_p = sqrt((1/Fs)*sum(erreur_p.^2)) 
      RMS_erreur_q_p = sqrt((1/Fs)*sum(erreur_q_p.^2)) 
      RMS_erreur_q = sqrt((1/Fs)*sum(erreur_q.^2))
      sqrt(RMS_erreur_p^2+RMS_erreur_q_p^2)
      % => les bruits générés à chaque quantification s'additionnent quadratiquement (pas de corrélation dans le cas d'un signal initial de type bruit blanc)

  3. #3
    phuphus

    Re : Erreur de quantifications

    ... ch'tite erreur, l'expression de la fonction d'erreur est :

    . suite_p_q = round(n*p/q)*q - m*p

    Toutes mes excuses !

  4. #4
    invite824a8033

    Re : Erreur de quantifications

    En premier lieu, merci pour la réponse.

    Ne trouvant pas de solution théoriques "propres", j'ai fait une simulation avec awk/Gnuplot (je n'ai pas Matlab). Je pense que j'obtiens à peu près les mêmes résultats que tu as obtenu avec Matlab.

    Mes constatations:
    => Comme tu l'as dis, le RMS total est à peu près la somme quadratrique des RMS de chaque quantif.
    => L'amplitude de l'erreur totale peut excéder la résolution de chacune des 2 quantif (Je recherche également les incertitudes engendrées par les quantif successives, et ce résultat m'intéresse)
    => A noter que l'équiprobabilité des valeurs après la 2e quantif ne semble pas avérée. Il existe des valeurs de quantification qui ne quantifient aucune valeur initiale dans mon illustration.

    Pour l'exemple, j'ai pris 100000 valeurs allant de 1 à 100000, avec comme 1ere quantif un pas de 10 et comme 2e quantif un pas de 7.8

    Au départ, je voulais exprimer P(x) après 1ere quantif sur [-q/2;q/2] en utilisant une formule telle que . Mais mes compétences mathématiques sont limitées ... A défaut de démonstration, je pense que je me contenterai des résultats empiriques précédents.

    Je te remercie encore pour tes éléments de réponse
    Images attachées Images attachées
    Fichiers attachés Fichiers attachés

  5. A voir en vidéo sur Futura
  6. #5
    invite824a8033

    Re : Erreur de quantifications

    Oups ... il faut lire "100000 valeurs allant de 1 à 100"

Discussions similaires

  1. erreur
    Par invite5411484d dans le forum Physique
    Réponses: 0
    Dernier message: 30/08/2010, 12h04
  2. Erreur de raisonnement, erreur logique ou erreur tout court?
    Par invite7f97ca01 dans le forum Epistémologie et Logique (archives)
    Réponses: 7
    Dernier message: 03/02/2010, 13h32
  3. erreur 414 et erreur 1055
    Par invite8cfedb72 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 03/02/2006, 12h26