TP Isj
TP Isj
TP Isj
2022
__________________________________________________________________
TP sous MATLAB
%analyse harmonique d'une tension sinusoïdale redressée
N=2048; %nbre de points
F=50; %fréquence de la sinusoïde
T=1/F; %période
Fe=2000; % fr. ech.
Te=1/Fe; % per ech
t=0:Te:(N-1)*Te; % axe du temps, N points
x=abs(sin(2*pi*F*t)); % tension redressée
fprintf('moyenne de x(t) :\n m = %d\n',mean(x));
fprintf('puissance de x(t):\n P = %d\n',mean(x.^2));
fprintf('valeur efficace de x(t) :\n s = %d\n',sqrt(mean(x.^2)));
% spectre de Fourier de x
y=fft(x)/N; %TFD de x = |Cn|=An/2=sqrt(an^2+bn^2)
z=abs(y); % spectre de module de x
f=0:Fe/N:Fe/2-Fe/N; %axe des fréquences
%affichage
subplot(121);plot(t(1:50),x(1:50));grid on;
xlabel('temps en s');
ylabel('tension redressée');
A=[51.07 9.238 3.469 2.857];
fprintf('taux de distorsion harmonique TO = %d\n',sqrt(sum(A.^2)/(A(1)^2)-1));
subplot(122);plot(f(1:N/2),z(1:N/2));grid on;
xlabel('fréquence en Hz');
ylabel('spectre de module');
TP I INITIATION au logiciel MATLAB
_____________________________________________________________________________________________________
Ce TP a pour but d’apprendre à utiliser le logiciel Matlab afin de pouvoir développer des
applications simples en traitement du signal.
Créer d’abord un répertoire portant votre nom sous la directorie work pour y
développer vos programmes : >>mkdir « votre nom » puis >>cd « votre nom ».
1- Variables scalaires
Dans un premier temps on génère trois variables scalaires a, b et c de la manière
suivante :
>> a=2 ;
>> b=3;
>> c=4 ;
>> a
La réponse serait :
a=
2
Cela signifie que les valeurs des variables sont mémorisées automatiquement avec leurs
noms.
3- Commandes de base :
who et whos :
Affiche la taille mémoire et types de toutes les variables utilisées.
cd :
Affiche le répertoire (directorie) où vous opérez en ce moment.
what, dir :
Affiche la liste les noms des fichiers contenus dans le répertoire actuel.
help nom_fonction :
Donne un descriptif de la fonction et ses arguments d’entrée sortie.
Matlab est optimisé pour l’usage matriciel : Eviter les formulations non matricielles.
[ a b c ] est un vecteur ligne.
[a ;b ;c ;] est un vecteur colonne.
V’ est le transposé du vecteur V
u=1:5 est le vecteur [1 2 3 4 5] (de même que [1 :5] et (1 :5).
t=0 :2 :15 est le vecteur [0 2 4 6 8 10 12 14]
sin(t) est le vecteur [sin(0) sin(2) …sin(14)]
zeros(1,N) est le vecteur ligne nul à N éléments.
Ones(1,N) est le vecteur ligne à N éléments égaux à 1.
V=début:pas:fin;
On définit une valeur de début : début
On définit une valeur de fin : fin
On définit un pas de progression linéaire ou logarithmique
(incrémentation) : pas ;
si le pas n’est pas spécifié, il est égal à 1 automatiquement.
>>v3=1:10
>>v4=1:-0.5:-1
>>debut=0;fin=256;pas=8;
>>v5=debut:pas:fin
II- ROGRAMMATION
1-LES SCRIPTS
Plutôt que de taper les commandes au clavier les unes après les autres pour effectuer
une tâche, ce qui vous oblige à refaire la même chose à chaque utilisation de cette tâche,
il est préférable de grouper les commandes dans un fichier à extension .m, ainsi tous les
programmes auront pour nom name.m. Il suffit alors de taper name pour que la tâche
s’exécute.
Exemple 1 :
Créez un fichier qui s’appelle essai1.m, qui génère un signal sinusoïdal x(t) de n points,
puis visualisez le à l’aide de la commande plot(x).
Etape 1 : édition du fichier par la commande : edit essai1.m
Etape 2 : taper les commandes suivantes dans la fenêtre d’édition :
2- Utilitaires graphiques
Exemple 2 :
Générez,à l’aide d’un programme prog1.m, deux périodes des deux signaux x(t)=cos(t)
et y(t)=sin(t) et visualisez les deux signaux sur une même figure, l’une en rouge et l’autre
en bleu à l’aide de la fonction plot(t,x,’b’,t,y,’r’). Mettre une légende.
Exemple 3 :
Visualisez sur une même figure,à l’aide d’un programme prog2.m, les quatre signaux
cos(t), sin(t),log10(t) et exp(t) en utilisant la fonction subplot(.,.,.) qui divise l’écran en
quatre sous figures : (2,2,1),(2,2,2),(2,2,3) et (2,2,4).
>>subplot(2,2,1),plot(t,x);
x=input(‘x=’) ;
1 n 2
s= p = x (i)
n i 1
Testez cette fonction sur un signal sinusoïdal d’amplitude A et de période 1.
Comparer avec la fonction matlab std.
PARTIE THEORIQUE
1. En utilisant e j .n e j . , Trouver les expressions de cos(nα) et sin(nα) pour n=2 et n=3.
n
/2 /2
8. Calculer I n sin ( x)dx et J n cos ( x)dx
n n
0 0
________________________________________________________________________
Le compte rendu de la séance doit être rédigé sur la feuille qui vous est fournie et
doit contenir en plus de la partie théorique :
Un listing des programmes :
prog1.m
prog2.m
puissance.m
spectre(f,H)
myfilter.m
factoriel(n)
somme(x,n)
prog3.m
___________________________________________________________________________
TP II NOTIONS DE SIGNAL NUMERIQUE
_________________________________________________________________________________________________________________
I- Définition
Un signal numérique s(k) est une suite de N échantillons régulièrement espacés de T e
secondes :
s(0,),s(Te),s(2Te),…,s((N-1)Te)
La grandeur Fe=1/Te est appelée fréquence d’échantillonnage : c’est le nombre
d’échantillons par seconde.
Le nombre d’échantillons N est le plus souvent une puissance de 2 : N= 2 p où p est un
entier naturel.
Signal numérique
100
80
s(kTe)
60
40
20
0
Te 2Te 3Te 4Te kTe
kTe (secondes)
Remarque :
Le nombre de points de z(k) est généralement N+M-1 où N et M désignent
le nombre d’échantillons respectifs de x et y.
L’expression générale de la convolution est un peu différente si la variable
temps débute à zéro au lieu de un (ce qu’exige Matlab).
4
(1) k
s2(t)= k 1 k
. cos(2 .k . f 2 .t )
Le bruit b(k) est défini comme étant un signal indésirable se mêlant additivement ou
autrement à un signal s(t) qui intéresse l’observateur.
Le model le plus fréquent de bruit de mesure de grandeurs physiques est le bruit blanc
gaussien : c’est un bruit aléatoire b(k) dont les échantillons sont dé-corrélés (entendez
par cela que même si on connaît b(k1), b(k2) reste aussi imprévisible qu’avant).
La fonction b=randn(1,N) permet de générer un vecteur bruit b de distribution pseudo
normale (de Gauss) de taille N de moyenne nulle et d’écart type 1.
Un coefficient multiplié par randn permet d’augmenter à volonté la puissance du bruit.
Ainsi pour générer un vecteur bruit blanc de taille N, de moyenne m et d’écart type la
commande est :
bruit= m+ *randn(1,N);
Dont la puissance est Pb m 2 2 (Puissance de la moyenne plus celle des fluctuations
autour de cette moyenne).
Ps
SNR= 10. log 10
Pb
On distingue trois cas de figure :
SNR positif : le signal est plus puissant que le bruit.
SNR nul : il y a autant de bruit que de signal.
SNR négatif : le signal est dégradé, il ya plus de bruit que d’information.
L’énergie d’un signal x(k) est fournie sous matlab par sum(x.^2). Concernant la puissance
moyenne, il faut diviser l’énergie par le nombre d’éléments de x(k).
PARTIE THEORIQUE
1- s(t) étant un signal défini sur [-T/2,T/2], on peut l’analyser sous la forme :
s (t ) C e
n
n
j 2nf0t
Avec :
T
2
1
s(t )e
j 2nf0t
Cn= dt , f0=T 1
T T
2
(Cn)n constituent le spectre de Fourier du signal s(t) aux fréquences (harmoniques) nf 0 multiples
du fondamental f0.
s(t)=sin(t) si 0≤ t <
a) Tracer s(t).
b) Calculer la valeur moyenne de s(t).
c) Calculer la série de Fourier de s(t).
s(t)=0 si T/4<|t|<T/2
a) Tracer s(t).
b) Calculer la valeur moyenne de s(t).
c) Calculer la série de Fourier de s(t).
a) Tracer s(t).
b) Calculer la valeur moyenne de s(t).
c) Calculer la série de Fourier de s(t).
d) On définit le spectre de puissance du signal s(t) par Pn=Cn 2 , Cn désigne un coefficient de
Fourier.
Calculer Pn.
_____________________________________________________________________________________________________
Le compte rendu de la séance doit être rédigé sur la feuille qui vous est fournie et
doit contenir en plus de la partie théorique :
Un listing des programmes : prog1.m, prog2.m, prog3.m
TP III TRANSFORMEE de FOURIER DISCRETE (TFD)
_____________________________________________________________________________________________________
sin(u )
Où : sin c(u ) .
u
Obstacles pratiques :
Les signaux physiques observés possèdent le plus souvent des spectres
de Fourier occupant des bandes fréquentielles illimitées, donc Fmax est
infini.
L’observation d’un signal physique se fait durant un intervalle limité [0,T]
ce qui donne le plus souvent un spectre très étalé.
Pour pallier ces difficultés, il faut noter que le spectre d’un signal physique tend vers zéro
avec la fréquence (l’énergie du signal s’évanouit aux hautes fréquences). Ceci nous
permet de limiter la bande significative du spectre et par la suite appliquer le théorème de
Shannon.
II- Transformée de Fourier Discrète :
La TFD d’ordre N d’un signal numérique s(kTe), k=0…N-1 est définie par :
N 1
n
S(f)=S( .Fe )= s(kTe) Exp[ j 2kn / N ] , n= -N/2…N/2-1
N k 0
La transformation inverse :
N / 2 1
1
s(t)=s(kTe)=
N
S (nFe / N ) Exp[ j 2kn / N ] , k=0…N-1
n N / 2
Remarques :
Par abus d’écriture et pour simplifier on note s(k) et S(n) le signal et
sa TFD en omettant les facteurs Te et Fe.
N est souvent une puissance de 2 et dans ce cas il ya un algorithme
rapide de calcul des N coefficients de la TFD, on parle de FFT (Fast
Fourier Transform).
Ainsi aux coefficients s(1)…s(N) correspondent par TFD les coefficients S(1)…S(N).
Sous matlab la TFD est donnée par la fonction fft(s,N).
La transformée inverse est donnée par ifft(s,N).
Transformée de Fourier Discrète
35
30
|S(nFe/N)|
25
20
15
10
5
0
Fe/N 2Fe/N 3Fe/N 4Fe/N (1-1/N)Fe
nFe/N (Hertz)
20*log10(abs(fft(s,N)))
angle(fft(s,N))
Repliement de spectre (aliaising)
Générer le signal x(t)= sin( .t 2 2 .t 1) de durée une seconde avec Fe=1kHz. Visualiser
x en fonction de t. Visualiser la TFD de x. Commenter.
La fréquence instantanée de x(t) dépend de t, exprimer cette fréquence. Cela implique
que le théorème d’échantillonnage ne pourra jamais être respecté : aliaising inévitable.
Matlab permet de visualiser le spectre par tranches temporelles en fonction du temps :
C’est le spectrogramme. Observer ce spectrogramme à l’aide de la fonction
specgram(x) ;
prog1.m :
Générer et visualisez les n/8 points de la TFD d’ordre n d’une sinusoïde
sin(t) ainsi que sa phase. Utiliser le zoom et « data cursor » pour lire les
pics.
Faites de même pour une somme de sinusoïdes sin[(2k+1)t], k=0…4.
prog2.m
Générer et visualisez Rec(k), sur 2 secondes. Visualisez les n/8 points des
spectres d’amplitude et de phase de la TFD d’ordre n=512 en respectant
les unités temporelle et fréquentielle.
Générer et visualisez la convolution z(k) de Rec(k) avec lui-même (utilisez
la fonction conv(Rec,Rec)) ainsi que sa TFD et sa phase (Les n/8 points
uniquement).
Comparez la TFD de z(k) et le carré de la TFD de Rec(k).
Générez wave(k) une onde carrée à l’aide de la fonction square( pour
l’utiliser correctement tapez help square).
Visualisez wave et sa TFD.
prog3.m
Générer et visualisez la TFD d’une sinusoïde bruitée de fréquence f0 en lui
rajoutant un bruit blanc centré de puissance 2 et observez si l’on
distingue le pic correspondant à la fréquence de la sinusoïde. Testez
plusieurs valeurs de 2 et de f0.
PARTIE THEORIQUE
I- Propriétés de la TFD
II- Modulation
On considère un signal s(t) dont la transformée de Fourier S(f) occupe la bande de
fréquences [-Fmax,Fmax].
2- Fenêtre d’analyse :
Une fenêtre d’analyse est une mise en forme que l’on donne au signal avant de l’analyser
par TFD :
On multiplie s(k) terme à terme par une fenêtre w(k) de forme adéquate pour réduire les
lobes secondaires afin que le spectre observé tende vers le résultat théorique qui est pour
une sinusoïde de fréquence f 0 une raie pure à la fréquence f0.
Les analyseurs de spectre (appareils qui donnent le spectre d’un signal) proposent de
nombreuses fenêtres d’analyse, qui ont chacune des effets différents : Blackman,
Hamming, Hanning…
Sous matlab on peut utiliser les fonctions hanning(N) et blackman(N) pour le fenêtrage
(ce sont deux vecteurs colonnes de taille N).
f=Fe/N
On va essayer de voir les limites de l’analyse par TFD en essayant de détecter des
sinusoïdes prôches.
12. Visualise la TFD X(n) d’un signal rectangulaire x(k), sa fonction d’auto-corrélation
R(n) et la TFD de R. Utiliser xcorr(x,x,’biased’) ;
13. Visualise un bruit blanc b(k), son auto-corrélation B(n) et la TFD de B.
14. En comparant R(n) et X(n), vérifiez le théorème de Wiener-kinchine.
PARTIE THEORIQUE
On désigne par u(t) l’échelon unité, nul pour t négatif et égal à 1 ailleurs.
5- Quelle est la puissance ΔP localisée dans la bande [f0- f/2, f0+ f/2] d’un signal s(t) à
puissance moyenne finie. Que se passe-t-il si f tend vers zéro ?
_________________________________________________________________
Le compte rendu de la séance doit être rédigé sur la feuille qui vous est fournie et
doit contenir en plus de la partie théorique :
Un listing du programme :
prog1.m, prog2.m, prog3.m, prog4.m
15. TP V NOTIONS de TRAITEMENT AUDIO
_____________________________________________________________________________________________________
1- La puissance acoustique
P
P étant la puissance par cm2, la puissance en dB s’écrit : PdB 10. log 10 , avec P0=10-
P0
16. La puissance est proportionnelle au carré de la pression subie par le tympan.
L’écart de puissance minimum distinguable par l’oreille est de l’ordre de 1dB soit à peu
près 11% d’écart relatif en puissance (correspond à une pression minimale de 20
micropascales).
L’oreille possède une sensibilité logarithmique : un facteur deux ressenti correspond à un
facteur dix en puissance.
2- La hauteur du son
Le fondamental étant f, les harmoniques sont 2f, 3f, 4f, …liés respectivement aux modes
fondamental (do3), second (do4), troisième (sol4)…
3. Le timbre
Il correspond au contenu spectral du son, peu importe son allure temporelle.
4. Echelle logarithmique
la séparation minimum entre niveaux distinguables étant de 1dB, pour coder la plage
allant de 0dB à 120 dB il faudra coder la plage de puissance allant de 0 à 10 12 soit sur 40
bits.
Du fait que l’oreille ait une sensibilité logarithmique, seuls 120 niveaux sont distinguables,
d’où un codage sur 8 bits uniquement. Cela exige une quantification logarithmique des
échantillons sonores (Echelle de quantification compensée).
X étant la donnée originale, la donnée quantifiée Y s’écrit :
ln(1 . X )
Y , 0 X 1 (standard US, ex. =255)
ln(1 )
1 ln( A. X )
Y , 1/A X 1 (standard EU, ex. A=87.6)
1 ln( A)
5. Qualité des données audio
u=wavread(‘son1.wav’,N) ;
u contient les N premières données ou échantillons.
fid=fopen(‘son1.wav’,’r’) ;
Ouvre le fichier son en tant que flot de données non spécifiés pour sa lecture.
fid est le pointeur du fichier :pointe la donnée actuelle.
son_lu=fread(fid,inf,’int16’);
son_lu est un vecteur colonne constitué de données 16 bits ;
inf demande la lecture jusqu’à la fin du fichier.
fclose(fid); Ferme le fichier.
Testez ces instructions sur un fichier son et en déduire la taille de l’entête.
wavwrite(x,fs,’son2.wav’) ;
prog2.m
Enregistrer un son x stéréo de durée 16 secondes.
Visualisez sur deux systèmes d’axes différents les N=2048 premiers échantillons
de chaque canal (un extrait y).
Visualisez les spectres de phase et d’amplitude correspondant à y.
Modifier le contenu de x, en effaçant quelques passages, puis écouter le résultat.
prog3.m
Mixage : Enregistrer deux sons différents x1 et x2 et fusionner les données
alternativement (un morceau de x1 suivi d’un morceau de x2…etc) dans un fichier
y.
Ecouter x1, x2 et y .
___________________________________________________________________
Le compte rendu de la séance doit être rédigé sur la feuille qui vous est fournie et
doit contenir un listing des programmes : prog1.m, prog2.m, prog3.m
TP VI MODULATIONS NUMERIQUES
_____________________________________________________________________________________________________
I- Modulations analogiques
On se propose de moduler un signal audio en utilisant les fonctions Matlab ammod et pmmod.
1- Modulation d’amplitude
prog2.m
Visualiser et écouter les trois signaux x ,y et z ainsi que leurs spectres d’amplitude.
2- Modulation de phase
x = sin(2*pi*t) + sin(4*pi*t);
Fp = 10;
y = pmmod(x,Fc,Fs,phasedev); % Modulation
Matlab permet d’effectuer le tracé des constellations des modulations les plus courantes (trace
l’enveloppe complexe des symboles de l’alphabet). En voici deux exemples :
PSK-16
x = int16([0:M-1]);
QAM-32
M = 32;
x = int16([0:M-1]);
y = qammod(x,M);
scale = modnorm(y,'peakpow',1);
2- Modulation QAM-16
y = qammod(x,M); % modulation
Visualisez x et y.
scatterplot(ynoisy);
z = qamdemod(ynoisy,M); % démodulation
Visualisez x, y, ynoisy et z
PARTIE THEORIQUE
4- Donner l’enveloppe et la phase du signal modulé x(t ) a(t ). cos(2 . f 0 t ) , a(t) étant
un signal réel. Faire un tracé qui illustre l’enveloppe de x(t).
L’enveloppe complexe d’un signal réel x(t) est définie, pour une pulsation arbitraire 0
par : ~ x (t ).e j .0t
r (t ) ~
On peut interpréter l’enveloppe complexe comme le résultat d’une modulation d’amplitude
du signal analytique.
5- Exprimer les parties réelles et imaginaires a(t) et b(t) de ~
r (t ) en fonction de x(t), y(t)
et les porteuses sin( 0 t) et cos( 0 t).
a(t) et b(t) s’appellent la composante en phase (IN) et en quadrature (Q) du signal réel
x(t).
6- Inversement, exprimer x(t) et y(t) en fonction de a(t), b(t) et les porteuses.
7- On considère un signal x(t) réel, aléatoire ou non, à spectre passe bande symétrique :
x ( f ) 1 , pour f1 f f 2 Et nul ailleurs.
8- Exprimer les spectres de x(t), a(t) et b(t) en fonction du spectre de l’enveloppe
complexe. Faites un schéma illustratif.
_____________________________________________________________________________________________________
Le compte rendu de la séance doit être rédigé sur la feuille qui vous est fournie et
doit contenir en plus de la partie théorique : Un listing des programmes prog1.m et
prog2.m
TP VII ESTIMATION et DETECTION
I- Estimation de la moyenne
Soit X une variable aléatoire stationnaire d’ordre un et x(1)…x(N) une série de N observations ou
mesures de X décorrélées. On se propose d’étudier le comportement de l’estimateur de la
moyenne =E[X] suivant (moyenne empirique):
1 N
̂ ( N ) . x(i)
N i 1
prog1.m
Générez n=1000 points d’un signal aléatoire X en additionnant 4 périodes d’une sinusoïde
sin(t) et un bruit blanc de moyenne =5.
Calculez l’estimateur ̂ (N) pour les valeurs de k = 1..n. Utiliser mean().
Visualisez ̂ (k), l’erreur (k)=( ̂ - )(k) et l’erreur quadratique 2(k).
Est ce qu’il y a convergence?
N.B. : Avant chaque génération de bruit il faut initialiser le processus de génération à l’aide de la
commande rand('state',0);
1 N
ˆ 1 2 ( N ) . [ x(i ) ˆ ( N )] 2
N i 1
1 N
ˆ 2 2 ( N ) . [ x(i) ˆ ( N )] 2
N 1 i 1
prog2.m
Générez 1000 échantillons décorrélés d’une variable aléatoire X stationnaire au second
ordre en additionnant une sinusoïde et un bruit blanc de moyenne =5 et de variance 2
=1.5.
Calculez les deux estimateurs ˆ (N) pour les valeurs de N = 1…1000.
Visualisez ˆ 1(N), l’erreur (N)=( ˆ 1- )(N) et l’erreur quadratique 2(N).
Est ce qu’il y a convergence?
On considère un signal constant C noyé dans un bruit b(k) blanc centré de variance v, le signal
résultant observé est s(k). On estime la valeur de la constante en prenant la moyenne de s(k).
_____________________________________________________________________________________________________
Le compte rendu de la séance doit être rédigé sur la feuille qui vous est fournie et
doit contenir en plus de la partie théorique :
Un listing du programme : prog1.m, prog2.m, prog3.m
TP VIII FILTRAGE NUMERIQUE
Remarques :
il peut y avoir plusieurs fréquences de coupure.
Les fonctions filter, fir1, fir2, remez…permettent la création de filtres
suivant plusieurs méthodes.
La réponse fréquentielle (RF) du filtre, égale à la TFD de la RI en dB, doit
être contenue dans le gabarit pour que le filtre soit utilisable correctement ;
sinon on dit que la méthode diverge :il faut chercher une autre procédure.
Le module de H(f) étant déterminé, le choix de la phase se fait
généralement en prenant tous les pôles et zéros de h(k) à l’intérieur du
cercle unité (exigences de stabilité et de causalité).
Passe haut
|H(f)
tra
|
ond
att
coupée
passante
|
f1 fc Fe/2 f
La fonction matlab y=filter(b,a,x) permet de filtrer le signal x(kTe), la sortie du filtre étant y(kTe).
b et a sont les vecteurs dont les éléments sont les coefficients du numérateur et du dénominateur
de la fonction de transfert du filtre :
M
b
m 0
m z m
H(z)= N
, b=[b0,..,bM], a=[a0,..,aN]
a
n 0
n z n
On se propose de rehausser une sinusoïde noyée dans le bruit. Un bruit blanc possède
un spectre étalé sur toute la bande fréquentielle, alors que celui du sinus est concentré
autour de sa fréquence.
prog4.m
H(z)=1+2 z 1 +3 z 2
I- DEFINITIONS
1- Une image à deux dimensions est définie comme une matrice I(N,N) de N ligne et N colonnes.
2- Le point (i,j) est appelé pixel (picture cell), sa valeur I(i,j) réelle traduit le degré de luminosité
de l’image au point (i,j) : On l’appelle niveau de gris de l’image au point (i,j).
3- Généralement N est une puissance de 2 (32,64,…,1024..) et le niveau de gris des pixels varie
entre 0 et 255=256-1=2 8 -1.
0 correspond au noir (luminosité minimum) et 255 au blanc (luminosité maximum) ; Tous les
niveaux sont codables sur 8 bits (octet ou byte). Ceci pour une image noir et blanc, pour une
image couleur, il faut prévoir trois matrices qui correspondent aux niveaux du rouge, vert et bleu
(RVB ou RGB).
pixel
(1, N )
(1,1)
( N ,1) (N , N )
Les images noir et blanc ou couleur occupent beaucoup d’espace mémoire, ceci est ressenti lors
de la conception d’un programme manipulant plusieurs images.
Ainsi une image telle que celle définie ci-dessus, va occuper NxNx8 bits ou encore NxN octets (un
Kilo octets=1Kb=1024 octets=2 10 octets):
N Mémoire en bytes Mémoire en Kby
128 16.384 16
256 65.536 64
On parle aussi de compression d’une image. Vue la taille occupée par une image, surtout en
couleur et lorsque les images sont animées, on a inventé des méthodes qui permettent de réduire
considérablement la taille mémoire d’une image après compression : On distingue les images
bitmap, tif, gif, epg, jpeg…suivant la méthode de compression utilisée.
MATLAB Dénomination
Une entête : c’est une suite d’octets spécifiant le nombre de lignes et de colonnes
de l’image, le nombre d’octets par pixel, le genre de codage utilisé pour compresser
l’image…
C’est justement le format induit par la méthode de compression : tif, gif,
mpeg…
Les données : c’est la suite des niveaux de gris de tout les pixels de l’image tenant
compte de la méthode de compression, ce qui exige pour lire l’image un programme
spécifique connaissant le code de l’image.
Si R est une matrice NxN, la commande imwrite (R,’nom.tif’) crée une nouvelle image
NxN nom.tif dont les pixels ont les niveaux de gris figurant dans la matrice r.
Exemple 1
Cette instruction stock l’image cameraman.tif dans une matrice i de type uint8.
Les niveaux de gris de l’image sont disponibles maintenant dans la matrice i, ce qui nous permet
d’effectuer toutes les transformations possibles sur cette image et de sauver les résultats du
traitement dans une autre image (il faut la convertir au type double avant de la manipuler
x=double(i)).
Les opérations mathématiques nécessaires s’effectuent sur des variables de type double ; il serait
indispensable de convertir les images sources avant leur traitement de la manière suivante :
id=double (isource) ;
prog1.m :
m=mean (i( :) ); % donne la moyenne de tous les niveaux de gris :un scalaire
On considère le pixel x(i,j) d’une image donnée à laquelle on a additionné un bruit gaussien
(utiliser rand(N,N)), et on s’intéresse à ses 8 pixels proches voisins : x(i-1,j-1), x(i,,j-1), x(i+1,j-1),
x(i-1,j), x(i+1,,j), x(i-1,j+1), x(i,j+1) et x(i+1,j+1). Ces neuf pixels forment une fenêtre locale :
Un filtrage linéaire de l’image x(.,.) consiste à créer une nouvelle image y(.,.) en glissant le masque
point par point et en effectuant une combinaison pondérée linéaire des niveaux de gris :
m 3 n 3
y (i, j ) a m,n .x(i m 2, j n 2)
m 1 n 1
Filtrage médian
Le filtrage médian est une opération non linéaire, qui consiste en deux étapes :
prog3.m
Le seuillage d’une image consiste à choisir un nombre réel s (threshold) et de tester les pixels
de l’image point par point et ligne par ligne : tout niveau de gris inférieur au seuil s est mis à zéro
(noir) sinon il est mis à 255 (blanc) ou 1 : Binarisation.
Matlab permet en une seule instruction de comparer les éléments d’une matrice M à un seuil
donné s : a=(M>s), a est une matrice composée de 1 et de 0.
prog4.m
Le contour d’une image Im(N,N) est lui-même une image C de même taille NxN :
L’image C contient les limites ou frontières ou périmètres des objets contenus dans Im. Par
exemple si Im est la photo d’un disque plein alors C sera une image contenant un cercle de même
centre et rayon que le disque.
Méthode du gradient :
Le parcours d’une image ligne par ligne (ordre lexicographique) dans un programme s’effectue
de la manière suivante :
traitement1 ;
traitement2 ;…
end
end
prog5.m
____________________________________________________________________________________________________
Le compte rendu de la séance doit être rédigé sur la feuille qui vous est fournie et
doit contenir :
Un listing des programmes : prog1.m, prog2.m, prog3.m, prog4.m, prog5.m
___________________________________________________________________________