Créer un filtre sur mesure (pour compresser)

Slides:



Advertisements
Présentations similaires
S.S.I., ESSI1, samedi 10 avril 2004 Page 1 Comment tailler les filtres sur mesure Séance 8, nouvelle application des filtres, 1 heure Version : samedi.
Advertisements

Cours S.S.I.I., , n°8, Créer des filtres pour compresser Cours S.S.I.I., , n°8, : Créer des filtres pour compresser Page 1 Mise en œuvre.
S.S.I.I., , n°6, Créer des filtres sur mesure pour compresser S.S.I.I., , n°6, : Créer des filtres sur mesure pour compresser 1 Créer un.
Cours S.S.I.I., , n°7, Créer des filtres pour compresser Cours S.S.I.I., , n°7, : Créer des filtres pour compresser Page 1 Retour sur le.
SSII, séance n°13, bilan du cours 15 décembre 2015 Dernière séance 2015 Résumé des chapitres et notions abordées en 2015.
Plan de l’exposé Introduction
1 © Copyright 2012, F5OWL Philippe Arlotto Creative Commons Attribution-ShareAlike 2.0 license 13/11/2016 SDR Comment ça marche.
DUT INFORMATIQUE ET GÉNIE INFORMATIQUE UE2 CONNAISSANCES ET COMPÉTENCES COMPLÉMENTAIRES EGO 4 ORGANISATION et GESTION LA CAPITALISATION ET L’ACTUALISATION.
Cours COMPOSANTES DES VECTEURS Dimitri Zuchowski et Marc-Élie Lapointe.
1 Reconnaissance automatique de la parole Exposé sur les différentes méthodes d’analyse acoustique Présenter par : Mounir GRARI Najlae KORIKACHE.
Université Hassan 1er Faculté des sciences et techniques MST Génie biomedical instrumentation et maintenance.
A. Objectifs de la séquence: à l'issue de la séquence, il faut être capable de: Identifier l’ordre et la nature d’un filtre Tracer les diagrammes asymptotiques.
Utiliser le calcul littéral pour résoudre ou démontrer
16 Apprendre à rédiger Voici l’énoncé d’un exercice et un guide (en orange) ; ce guide vous aide : pour rédiger la solution détaillée ; pour retrouver.
temporelle – fréquentielle –Stabilité diagrammes de Bode / Nyquist
Traitements et interprétation des données gravimétriques
13 Apprendre à rédiger Voici l’énoncé d’un exercice et un guide (en orange) ; ce guide vous aide : pour rédiger la solution détaillée ; pour retrouver.
Modélisation mathématique des systèmes asservis
Algorithme et programmation
Information, Calcul, Communication
Analyse Technique (5) Le stochastique.
Information, Calcul, Communication
Les opérations sur les nombres
L’Instruction de Test Alternatif
Mesures vibratoires et modales Analyseur FFT OROS Chapitre 2
Fonctions.
Chapitre 7: L’algèbre des vecteurs
ECHANTILLONNAGE.
Evaluation diagnostique
Mesure de température par radiométrie photothermique
L’analyse de Fourier, Temps-fréquence, Temps-échelle:
Contre-réaction et amplificateurs opérationnels
Équations - Inéquations
Stabilité des porteurs horizontaux (Poutres)
Séries de Fourier Tout signal périodique (T) de puissance finie peut être décomposé en une somme de sinus et de cosinus. An=0 1(4/) 1+ 3 (4/3)
chapitre 11 Fonction inverse.
Filtre en traitement du signal entrée filtre sortie e s h
Les amplificateurs opérationnels
Chapitre 3 : Caractéristiques de tendance centrale
Contre-réaction et amplificateurs opérationnels
Adaptive Neuro Fuzzy Inference System (ANFIS)
Analogique-numérique
Compresser avec un banc de filtres
Transformation linéaires
Révision des systèmes LIT, convolution et série de Fourier
ELG La transformée de Fourier, énergie, puissance et densités spectrales.
ANALYSE HARMONIQUE 1) Rappels et définitions 2) Lieux de Bode
Le signal audio numérique
Université de la méditerranée
Introduction du cours à partir d’extraits
2. La série de Fourier trigonométrique et la transformée de Fourier
Contre-réaction et amplificateurs opérationnels
Les nombres complexes Saison 1 - Épisode 2. Les nombres complexes Saison 1 - Épisode 2.
Un principe de compression d’image
Présentation 9 : Calcul de précision des estimateurs complexes
Les signaux périodiques
Sous-échantillonner le signal audio pour compresser
Information, Calcul, Communication
chapitre 7 La colinéarité des vecteurs.
Construire et utiliser un banc de filtres
Sommaire : Les capteurs de force. Les capteurs à jauges de contraintes
Présentation 6 : Sondage à plusieurs degrés
Tris Simples/Rapides.
Les nombres complexes (2)
Principe de récurrence
Sous-échantillonner le signal audio pour compresser
μ = N 3) Moyenne d’une série discrète : ∑ ni xi que l’on peut noter
Exercice 3 : Ordonnez sans faire un seul calcul les carrés des nombres suivants :
Exploiter la fonction fft(.) de Scilab
Dérivation – Fonctions cosinus et sinus
Transcription de la présentation:

Créer un filtre sur mesure (pour compresser) Jean-Paul Stromboni, Polytech'Nice Sophia, S.I. 3ème année Cours n° 6, novembre 2015, durée : 50 mn, avec vidéoprojecteur Le principe de compression par sous-échantillonnage du cours précédent est appliqué au signal dont le spectre est ci-dessous : fe f spectre (R échantillons) R/4 R/8 3*R/16 fe f fe f H1(f) 4 fe f

Quel est le taux de compression atteignable pour le signal (plus aigü) dont le spectre est donné ci-dessous ? fe f spectre fe f fe f fe f 2

Si on sait créer le filtre passe-bande H2 ci-dessous, on peut atteindre un taux de compression de 4 au lieu de 2 ! fe f spectre fe f fe f H2 4 fe f La condition de Shannon générale est respectée, car la largeur totale du spectre du signal est inférieure à fe/4 !

Pour programmer un filtrage de réponse fréquentielle H2, on implémente l’équation générale suivante : Le vecteur e=(en, n=0..N-1) contient les N échantillons du signal à filtrer, ou entrée du filtre Le vecteur h=(hm, m= 0..R-1) contient les R coefficients du filtre (coefficients réels) Le vecteur s=(sn, n=0..N-1) contient la sortie du filtre ou signal filtré, chaque valeur sn est calculée par une itération de l’équation ci-dessus R est la taille du filtre L’équation est un produit de convolution (symbole ‘*’): h contient la réponse impulsionnelle du filtre, c’est-à-dire que s= h pour une entrée impulsion (e0=1, en=0 si n!=0). Pour en savoir plus : Il s’agit d’un filtre linéaire et stationnaire, en anglais Linear Time Invariant (LTI). Par exemple : sn=en+ en-1 est linéaire et stationnaire sn= sin (en-1) est non linéaire sn=en+n en-1 est non stationnaire Il s’agit d’un filtre non récursif, ou à réponse impulsionnelle de durée finie (FIR en anglais) : Par contre, sn=sn-1+en-1, est un filtre récursif (ou IIR)

Afin de calculer la réponse fréquentielle d’un filtre non récursif, on utilise les propriétés suivantes de TFD et TFD inverse : H = fft(h) est périodique de période R h= ifft(H) est périodique, de période R En effet, les calculs des fonctions fft et ifft sont identiques, ou presque, seul le signe des exponentielles change. On vérifie :

Afin de calculer la réponse fréquentielle d’un filtre non récursif à partir de l’équation du filtre (suite): si le vecteur H est réel, soit Hm réel pour m=0..R-1, à quelle condition le vecteur h=ifft(H) est il réel ? Réponse : il suffit que Hm=HR-m, pour m=0..R-1 car Et par conséquent hk est réel, pour k=0..R-1: noter que ce que l’on vient d’établir pour h et H, est vrai également pour en particulier ek est périodique de période R, et pour On utilisera dans la suite e et E, h et H et s et S ainsi définis, et de tailles R

La TFD du produit de convolution s= h La TFD du produit de convolution s= h*e est égale au produit des TFD de e et de h : Voici la démonstration, qui utilise la périodicité de la TFD inverse. Soit l ’équation du filtre Soit le signal filtré et le signal à filtrer C.Q.F.D. avec v= n-m quand n-m >0 et v=n-m+R quand n-m<0, puisque en-m=en-m+R.

Conclusion: voici la méthode de conception d’un filtre non récursif dont la réponse fréquentielle H2 est imposée E contient le spectre du signal à filtrer S contient le spectre du signal filtré H= fft(h) est la réponse fréquentielle du filtre dont les coefficients réels sont dans le vecteur h La réponse fréquentielle H est la transformée de Fourier de la réponse impulsionnelle h Inversement, h est la TFD inverse de H, d’où l’idée : Méthode de conception: on impose H2 de la réponse fréquentielle du filtre, on calcule h= ifft(H2) qui donne les coefficients et donc l’équation du filtre de réponse fréquentielle H2 Ces coefficients seront bien réels si on a pris la précaution de choisir Hm= HR-m, m=0..R-1 Attention ! on impose uniquement R valeurs sur la réponse fréquentielle, aux fréquence kfe/R, k=0..R-1, il faudra vérifier H(f) entre ces fréquences

Vérification pratique avec Scilab (H est symétrique par rapport à R/2 , et imag(ifft(H))=0, i.e. h=real(ifft(H)) fe=8000; R=64; // H symétrique par rapport à R/2 H=4*[zeros(1,R/8),ones(1,1+R/8),zeros(1,-1+R/2),ones(1,1+R/8),zeros(1,-1+R/8)]; //étude de h=ifft(H) h=ifft(H); t=[0:R-1]/fe; plot2d(t',[real(h'),imag(h')]) e=gce(); e.children(1).thickness=3; xgrid(); xtitle("vérification: imag(ifft(H))=0",... "temps (s)","donc h=real(ifft(H))") h1=legend(['real(h)';'imag(h)'])

Réponse fréquentielle du filtre de coefficients réels h=real(ifft(H)) tracée sur M=1024 valeurs au lieu de 64 Pour tracer la réponse fréquentielle du filtre de coefficients h=real(ifft(H)), il suffit de tracer abs(fft(h)) Pour tracer M=16*R valeurs au lieu de R, il suffit d’aug-menter le vecteur h de 15*R coefficients nuls : M=16*R; fe=8000; fM=[0:M-1]*fe/M; h=real(ifft(H)); hM=zeros(1,M); hM(1:R)=h; plot2d(fM,abs(fft(hM))) xgrid(); xtitle(["tracé de … h=real(ifft(H))) sur",string(M),"points"] ... ,"fréquence (Hz)","H=abs(fft(h))")

Réponse fréquentielle du filtre de coefficients réels h=fftshift(real(ifft(H))) tracée sur M=1024 valeurs h = fftshift(real(ifft(H))) revient à permuter les deux moitiés du vecteur h clf(); M=16*R; h=fftshift(ifft(H)); fM=[0:M-1]*fe/M; hM=zeros(1,M);hM(1:R)=real(h); plot2d(fM,abs(fft(hM))) xgrid(); xtitle(["tracé de abs(fft(fftshift(real(ifft(H))))),", string(M),… " points"],"fréquence (Hz)","H")

Il suffit d’arrondir la forme de la réponse fréquentielle spécifiée dans le vecteur H pour atténuer les oscillations résiduelles. H=4*[zeros(1,R/8-1),0.1,0.5,0.9,ones(1,R/8-3),0.9,0.5,0.1, ... zeros(1,-3+R/2),0.1,0.5,0.9,ones(1,R/8-3),0.9,0.5,0.1, ... zeros(1,-2+R/8)];

Exemple de calcul et d’utilisation d’un filtre avec Scilab La réponse fréquentielle du filtre désiré est définie dans le vecteur H, les coefficients du filtre sont calculés dans le vecteur h, on filtre ‘piano.wav’, on compare spectrogrammes et énergies avant et après filtrage // filtre passe bande 1000Hz-2000Hz // gain 4, R=64, fe=8000Hz R=64; fe=8000; n=0:R-1; fr=n*fe/R; H=4*[zeros(1,R/8),ones(1,1+R/8), ... zeros(1,-1+R/2),ones(1,1+R/8), ... zeros(1,-1+R/8)]; plot2d3(fr,H) xgrid xtitle(['H2,avec R=',string(R)], ... 'fréquence (Hz)’, ‘H’) //calcul des coefficients du filtre h=fftshift(real(ifft(H))); plot2d3(n/fe,h) xtitle('coefficients du filtre',... 'temps (s)',... 'h=fftshift(real(ifft(H)))') xgrid(); // filtrage [y,fe]=wavread('piano.wav'); disp(fe) // fe=8000 sound(y,fe) yf= convol(h,y); wavwrite(yf,fe,'pianofilt.wav') sound(yf,fe) //Spectrogrammes (Goldwave) // énergie Ey=(y*y')/2 // énergie y = 163.96 Eyf=(yf*yf')/2 // énergie yf =89.62