Ecole Normale Superieure Traitement du signal
TP - Sous-echantillonnage
1 - Sous-echantillonnage naf
1. Charger limage contenue dans le fichier [Link], disponible a ladresse [Link]
~waldspur/tds/13_14_s2/[Link]. La stocker dans une variable im, sous la forme dun tableau
de 0 et de 1.
La commande im = imread([Link]) permet de lire limage et de la stocker dans la vari-
able im.
Normalement, le tableau im est de taille 178 336.
2. Definir une image sous-echantillonnee im sub, de taille 89 168 par :
im sub[m, n] = im[2m, 2n] (m = 0, ..., 88 et n = 0, ..., 167)
Attention, en Octave/Matlab, les tableaux sont indexes a partir de 1. Le reel im[0,0] est donc
stocke dans la case [1,1] du tableau correspondant.
3. Enregistrer im sub dans un fichier.
La commande imwrite(im sub,im [Link]) enregistre limage representee par im sub dans
le fichier im [Link].
Normalement, le resultat obtenu est assez inesthetique. Dans la suite du TP, on va ameliorer la methode
en appliquant un filtre a limage im avant le sous-echantillonnage.
2 - Flou local avant sous-echantillonnage
4. Calculer les signaux im blur x et im blur definis par :
1 1 1
im blur x[m, n] = im[m 1, n] + im[m, n] + im[m + 1, n]
4 2 4
1 1 1
im blur[m, n] = im blur x[m, n 1] + im blur x[m, n] + im blur x[m, n + 1]
4 2 4
Ici, les indices sont consideres modulo 178 selon les lignes et modulo 336 selon les colonnes.
5. Definir im blur sub, la version sous-echantillonnee de im blur, et lenregistrer dans un fichier.
3 - Troncature en frequence
6. Soit h le filtre de taille 178 336 dont la transformee de Fourier bidimensionnelle vaut :
h[k, l] = 1 si k {44, ..., 44} et l {83, ..., 83}
= 0 sinon
A nouveau, les indices sont consideres modulo 178 et modulo 336.
Calculer la convolution circulaire im ? h :
X
im ? h[m, n] = im[k, l]h[m k, n l]
k,l
1
La transformee de Fourier rapide et son inverse sont implementees en Octave/Matlab : il sagit
des fonctions fft et ifft pour des signaux a une dimension et des fonctions fft2 et ifft2 pour
des signaux a deux dimensions.
7. Normalement, im ? h est un signal reel. En raison des erreurs numeriques, il se peut neanmoins que
la partie imaginaire du signal calcule par Octave/Matlab ne soit pas strictement nulle.
Verifier que la partie imaginaire est bien neglieable par rapport a la partie reelle. Projeter le signal
sur lensemble des signaux reels.
8. Definir im trunc sub, la version sous-echantillonnee de im ? h et lenregistrer dans un fichier.
9. Normalement, limage que vous venez dobtenir est facilement lisible mais presente des bavures. A
quoi est-ce du ?
Pouvez-vous refaire les questions 6 a 8 en utilisant a la place de h un filtre h2 de meme support mais
donnant un resultat plus agreable visuellement ? Enregistrer a nouveau le resultat.
10. Envoyer le code et les quatre images a waldspur@[Link], le 11 mars au plus tard.