Beruflich Dokumente
Kultur Dokumente
OIM - 2015
1/4
2. Fichiers de test
references : images de reference pour les tests.
noisy : images bruitees devant etre filtrees.
file list.txt : liste des images qui seront utilisees pour les tests automatiques
3. Script de test
test script.sh : script shell de test de votre programme. Lorsque vous le lancez, ce script applique les
differents filtres sur les images indiquees dans le fichier file list.txt et gen`ere un rapport de test dans le
fichier comparison.txt.
Pour chaque etape du sujet, vous devrez ecrire dans votre programme principal la portion correspondant `
a la
ligne de commande associee `
a loperation `
a realiser.
D
ebruitage dimages
Nous considerons une image en niveaux de gris ref de taille M N , dont les pixels sont de type pixel t et
contiennent des valeurs entre 0 et 255. Cette image a ete degradee par lajout dun bruit Gaussien resultant en
une image noisy, de meme type et de meme taille que limage originale ref . Un exemple dimages ref et noisy est
donne sur la figure 1.
Figure 1 Exemple dimage et de sa degradation. A gauche, image dorigine, `a droite, image bruitee.
Lobjectif de ce devoir est de developper et comparer deux algorithmes de traitement dimages dont lobjectif
est de debruiter limage noisy, cest `
a dire, de reconstruire une image f iltered la plus proche possible de ref `
a
partir de noisy. Le resultat attendu de ces deux algorithmes est montre sur la figure 2.
Figure 2 Resultat des algorithmes de debruitage avec la meme valeur de f iltersize. A gauche, filtrage moyen,
a droite filtrage moyen non local.
`
2/4
OIM - 2015
255
255
u=0 v=0
OIM - 2015
3/4
Si un pixel de coordonnee (u, v) dans les bloc b1 ou b2 est hors de limage, il nintervient pas dans le calcul
de la distance.
2. Soit un pixel (i, j) dans limage noisy. Soit la region dinteret Rij de limage noisy de taille f iltersize
f iltersize centree sur le pixel (i, j). Soit le bloc bij de pixels de taille texturesize texturesize centre sur le
pixel (i, j). Soit un pixel (k, l) de Rij pour lequel le bloc, note bkl , de taille texturesize texturesize centre
sur ce pixel est enti`erement inclus dans Rij . On definit la similarite entre les blocs bij et bkl de la mani`ere
suivante :
s(i, j, k, l) = exp(d(bij , bkl ))
Specifier et implementer, dans le fichier nonlocalmeanfilter.c, une fonction qui calcule la moyenne des
pixels de Rij ponderes par leur similarite avec le pixel (i, j). Une region ou un boc peuvent netre que
partiellement inclus dans limage. Aussi, la gestion des bords de limage sera faite au niveau du pixel,
par restriction de loperateur de calcul de distance entre blocs au domaine de definition de limage. Une
attention particuli`ere sera apportee sur les types utilises pour les calculs intermediaires de sorte `a ne pas
perdre dinformation et deviter les depassements de capacite.
3. Implementer la fonction void nonlocalmeanfilter(image img, image out, int filtersize, int texturesize )
dans le fichier nonlocalmeanfilter.c de facon `a ce quelle applique sur limage img un filtre moyen non
local tel que decrit ci-dessus Afin de sassurer que les deux images ont la meme taille, une restriction du
filtre `
a limage sera mise en place. Ainsi, quand la region dinteret est partiellement `a lexterieur de limage,
la moyenne ne sera calculee quavec les pixels de la region appartenant `a limage.
4. Modifier le programme principal de facon `a ce quil applique le filtre moyen lorsquil est appele avec la
commande ./imagefilter 1 infile outfile filtersize. Le programme devra uniquement afficher sur la sortie
standard le nom de limage et le temps de calcul necessaire pour lapplication du filtre selon le format non
local mean : image.pgm filtersize time in second. Generer differents resultats de lapplication de ce filtre en
appelant le script de test de la facon suivante : test script.sh nonlocalmean. ATTENTION, le temps
de calcul de cette methode peut etre tr`es important.
Comparaison des m
ethodes (5 points)
1. Afin devaluer la difference entre une image resultant dun filtrage et limage de reference, nous definissons
une metrique de comparaison calculant la distance euclidienne moyenne entre un voisinage de taille f iltersize
centre sur un pixel (i, j) de limage de reference et le meme pixel dans limage filtree. La distance euclidienne
entre 2 blocs est definie comme `
a la question 1. Implementer, dans le fichier imagemetric.c, la fonction
float compare images(image ref, image comp, int filtersize) calculant la distance euclidienne moyenne
entre deux images.
2. Modifier le programme principal de facon `a ce quil calcule la distance entre limage de reference et limage
filtree lorsquil est appele avec la commande ./imagefilter 2 reference filteredimage filtersize. Le
programme devra uniquement afficher sur la sortie standard le nom de limage de reference, le nom de limage
filtree, la valeur de f iltersize et la distance entre les images selon le format reference.pgm filteredimage.pgm
filtersize distance. Generer differents resultats de lapplication de ce traitement en appelant le script de test
de la facon suivante : test script.sh distance.
3. A partir du fichier test files/comparison.txt genere par lappel au script de test et dun outil de trace de
courbe de votre choix (openoffice, gnuplot, excel, ...), tracer, pour chaque image testee, les courbes derreur
en fonction de la valeur de f iltersize et expliquer la forme de ces courbes.
Acc
el
eration des m
ethodes de filtrage (5 points)
OIM - 2015