Vous êtes sur la page 1sur 6

Travaux pratiques de traitement dimages num riques e Premi` re s ance e e Institut Galil e e 2010-2011

G. Dauphin et A. Beghdadi

Les travaux pratiques de traitement dimage sont r partis en trois s ances de 8 heures chacune. e e

Quelques indications sur MatLab


` Les images en niveaux de gris sont m moris es sous la forme dune matrice form e chacune dentiers de 0 a 255 e e e ` un octet (format MatLab : uint8). Les images color es sont parfois m moris es sous la forme correspondant a e e e ` dun tableau de chiffres chaque chiffre correspondant a un index dans une table de couleur, cest souvent le format choisi pour les images en couleurs. Elles peuvent aussi etre m moris es sous la forme dune matrice-3D form es e e e ` chacune dentiers de 0 a 255 (par exemple image(1,1,1) d signe lintensit du rouge [3` me 1] pr sent dans le e e e e pixel qui est sur la colonne 1 [1er 1] et sur la ligne 1 [2` me 1]). e Le traitement dimage am` ne a faire des op rations sur les valeurs de chaque pixel. Il faut donc que ces e ` e valeurs soient repr sent es avec un type adapt appel double en MatLab. Il est alors n cessaire que les valeurs e e e e e doivent etre comprises entre 0 et 1 ; cela an de pouvoir utliser les commandes MatLab de visualisation des images. MatLab dispose dune aide en ligne sur la fen tre de commandes : help permet dafcher les diff rentes e e sections, help nom dune section permet davoir la liste des commandes dans cette section, en particulier help ` images donne la liste des commandes relatives a limage. help nom dune commande donne une explication sur ` la commande et souvent un exemple qui peut vraiment etre essay . Les images peuvent etre obtenues soit a partir e du r pertoire de MatLab toolbox\images\imdemos. e Les fonctions MatLab pour lire et enregistrer les images sont imread et imwrite. Les fonctions disponibles ` pour afcher les images sont image, imagesc et imshow. Attention a imshow qui consid` re que si limage e consid r e est compos e dentiers alors limage est suppos e etre en 0 et 256, tandis que si limage est form e de ee e e e double, alors limage est suppos e etre entre 0 et 1. Dans le cadre de ces TP, on se placera dans ce deuxi` me cas. e e Plusieurs images peuvent etre afch es sur une seule gure gr ce aux fonctions figure et subplot. Une image e a ` en niveau de gris et plus g n ralement nimporte quelle matrice peuvent etre consid r es comme une surface : a e e ee chaque coefcient de la matrice, on associe un point dont labscisse et lordonn e sont d termin s par la position e e e de ce coefcient et dont la cote est d termin e par la valeur du coefcient. Les fonctions MatLab disponibles sont e e e surf et mesh, la premi` re fonction colore les el ments de surface tandis que la deuxi` me colore seulement les e e e bords des el ments de surface. MatLab permet dutiliser les commandes internes et les noms de programmes ecrits comme des variables. Cependant il faut absolument eviter de faire cela.

Pr ambule e
` On appelle image naturelle, une image obtenue a partir du monde r el, par exemple au moyen dun appareil phoe ` tographique. Ici limage naturelle est not e image n. On appelle image synth tique, une image construite a partir e e dun ordinateur, ici limage synth tique est not e image s. Dans le cadre de ces travaux pratiques, il est conseill e e e ` dutiliser a la fois une image naturelle et une image synth tique. Sauf indication contraire, les commandes proe pos es sont valables pour des images en niveaux de gris (avec 256 niveaux)et de taille 256x256. Cependant on peut e faire les traitements sur des images couleurs en appliquant ces traitements s par ment sur les composantes rouges, e e vertes et bleues. 1

` On peut obtenir une image en niveau de gris a partir dune image en couleur en utilisant la commande rgb2gray. On peut obtenir une image de taille 256 256 en ne consid rant quune partie de limage en utilisant imcrop ou e en r duisant la taille de limage avec imresize. e Pour avoir la liste des images d j` disponibles sous MatLab ea help imdemos, Cas dune image avec des vraies couleurs : image_n=imread(autumn.tif); On peut voir que cette image n nest pas une matrice mais un ensemble de trois matrices en faisant : size(image_n), On peut visualiser en niveaux de gris la composante rouge de limage couleur figure(1); imshow(image_n(:,:,1)) On peut visualiser en niveaux de gris la composante verte de limage couleur figure(1); imshow(image_n(:,:,2)) On peut visualiser lensemble des trois matrices sous la forme dune image couleur figure(1); imshow(image_n); Cas dune image avec un petit nombre de couleurs : [image_ind,map]=imread(forest.tif); ` Cette image couleur est manifestement stock e sous la forme dune table dindice qui renvoie a une table de e couleurs parce que image ind est une matrice. size(image_ind), Pour repr senter cette image couleur sous la forme dun triplet de matrice correspondant au rouge, vert et bleu. e image_n=ind2rgb(image_ind,map); On peut v rier quon sest ramen au cas pr c dent avec e e e e size(image_n) On peut alors afcher limage couleur ainsi obtenue. figure(1); imshow(image_n); Pour faire des calculs il est n cessaire de passer en format double puis aussi de convertir lensemble des valeurs e en des valeurs contenus dans lintervalle [0, 1]. En effet on pourrait afcher une image couleur avec seulement ces instructions im1=imread(autumn.tif); figure(1); imshow(im1); Cependant pour faire des calculs on est amen a convertir au format double et dans ce cas on ne voit plus rien. e` 2

figure(1); imshow(double(im1); Il suft alors de diviser par 256 pour obtenir le r sultat souhait . e e figure(1); imshow(double(im1)/256); Pour savoir si une image provient dune palette nie de couleur, il existe une facon de faire avec la fonction Mat Lab unique en comptabilisant toutes les couleurs diff rentes au sein de limage couleur (ce nombre de couleurs e diff rentes est n cessairement inf rieur ou egal au nombre de pixels de limage et a priori diff rent de la somme du e e e e nombre de rouges diff rents du nombre de verts diff rents et du nombre de bleus diff rents). Comme les couleurs e e e sont repr sent s par des triplets, une astuce pour les repr senter sur un seul nombre est de les laisser sous la forme e e e dun triplet dentier entre 0 et 255 et de convertir ce triplet en un entier entre 0 et 255*255*255 par le biais de ces commandes. im1=imread(autumn.tif); image_c=im1(:,:,1)+256*im1(:,:,2)+256*256*im1(:,:,3); Le nombre de couleurs diff rentes est alors donn par e e length(unique(image_c(:))), Ce nombre est bien s r diff rent de u e length(unique(im1(:,:,1)))+length(unique(im1(:,:,2)))+length(unique(im1(:,:,3))), Construction dune image synth tique : e Soit un carr blanc noy dans un fond uniforme gris, soit un disque noy dans un fond uniforme. La premi` re e e e e image peut se faire avec ones(256,256)*0.5 pour le fond gris et avec ones(15,15) pour le carr . La e deuxi` me image peut se faire avec meshgrid et find en utilisant le fait quun disque a pour equation : (x e 100)2 + (y 100)2 400. Limage synth tique choisie est not e image s. e e Pour le carr : e im1=ones(256)*0.5; im1(128-7:128+7,128-7:128+7)=1; figure(1); imshow(im1); On peut v rier que le carr est de bonne taille avec e e sqrt(sum(sum(im1>=0.8))), Pour le disque : [x,y]=meshgrid(0:255,255:-1:0); im1=((x-100).2+(y-100).2<=400); figure(1); imshow(im1); Quantication lin aire : e ` La fonction N d termine pour chaque valeur de t, le nombre d l ments de A inf rieur a cette valeur de t. e ee e La commande inline permet de d nir cette commande. Le symbole . signie en fait transpos e de la e e matrice auquel il sapplique. Lapostrophe est doubl e parce quelle est incluse dans une chane de caract` re qui va e e etre interpr t e lors de lex cution de la fonction. ee e
N_=inline(... reshape(sum(ones(length(t(:).),1)*(A(:).)<t(:)*ones(1,length(A)),2),size(t))... ,t,A);

Cette commande qui r alise une fonction en escalier permet dillustrer le fonctionnement de cette commande e figure(1); plot(0:0.01:10,N_(0:0.01:10,0:10)); Gr ce a cette commande la quantication lin aire devient a ` e im1=double(imread(coins.png))/256; figure(1); imshow(im1); Scale=0:1/8:1; ImQuant=Scale(N_(im1,Scale)); Le nombre de niveaux de quantications est d termin par le vecteur Scale. e e Quantication non-lin aire : e La quantication non-lin aire est r alis e de facon presque similaire. e e e
im1=double(imread(coins.png))/256; figure(1); imshow(im1); Scale=(0:1/8:1).2; ImQuant=Scale(N_(im1,Scale));

e On peut v rier que limage a et quanti e en utilisant e e length(unique(ImQuant)),

Analyse du signal image

e On consid` re une image synth tique de taille 256 256 not e image s puis une image naturelle de m me taille, e e e not e image n. e 1. On souhaite r duire par un facteur de quatre la taille de limage choisie. e ` (a) Une premi` re solution consiste a prendre un pixel sur quatre (i.e. un pixel par carr de quatre pixels). e e Utiliser ce proc d pour r duire la taille de limage. R it rer ce processus de r duction (3 fois) jusqu` e e e e e e a obtenir une image de taille 32 32 (on parle de d composition multir solution). Afcher avec des e e tailles diff rentes les images ainsi obtenues. e deci=inline(im(1:2:end,1:2:end),im); im2=deci(im1); (b) A chaque etape, discuter du crit` re de Nyquist et adapter le ltre de restitution vu en pr paration e e pour r constituer lensemble de limage. Comparer les versions restitu es avec la version originale e e de limage.
inte=inline(filter2(ones(2),upsample(upsample(im1.,2).,2)),im1);

` (c) Une deuxi` me solution consiste a remplacer un groupe de pixels (2 2) par un seul dont le niveau de e ` gris est egal a la moyenne des quatre pixels du groupe, limage est alors not e image rd2. Comparer e les deux approches. ` Une impl mentation consiste a construire une fonction en ligne qui remplace un groupe de 2 2 pixels e ` par un seul dont le niveau de gris est egal a la moyenne des quatre pixels. En fait cest ici inutile car la fonction mean2 le fait d j` . ea A=[1 0;0 1]; mean2(A), ` ` La suite de limpl mentation consiste a utiliser blkproc pour appliquer cette fonction a tous les e groupes de 2 2 pixels de limage. 4

im2=blkproc(im1,[2 2],@mean2); ` Une deuxi` me impl mentation consiste a ltrer limage par le moyenneur de masque ones(2)/4 puis e e ` e e a d cimer. Dans la deuxi` me impl mentation un grand nombre de calculs en plus ont et effectu s mais e e e les pixels contenant les r sultats de ces nouveaux calculs ne sont plus dans limage r sultante. e e im2=deci(filter2(ones(2)/4,im1)); 2. On souhaite maintenant retrouver une image de m me taille que loriginale en partant de la derni` re version e e ` r duite. Une premi` re solution consiste a reproduire le m me pixel plusieurs fois de facon a retrouver la e e e ` taille initiale. Exp rimenter cette solution, not e image mr et discuter son effet. Proposer une solution plus e e efcace et exp rimenter la. Afcher pour chacune des solutions le signal image erreur sur fond gris not e e e image err et analyser le aux diff rents etages de la d composition multir solution. e e e

Quantication

Appliquer une quantication uniforme sur image s puis sur une image naturelle image n en utilisant 30,10 puis 5 niveaux de quantications. Indiquer les diff rences perceptibles entre les images quanti es et les images e e dorigine.

Couleur, luminance, espace de couleur


1. Calculer le signal luminance dune image couleur, dabord en extrayant les composantes rouge, puis verte puis bleue, et ensuite en utilisant seulement rgb2gray. Explication on pourra utiliser L = 0.3 R + 0.57 G + 0.11 B. 2. Afcher successivement en niveau de gris les signaux de luminance et chrominance. Puis reformer limage ` couleur et afcher limage obtenue qui doit etre identique a celle du d part. e Explication Il existe diff rents espaces de couleurs dans lesquels cette transformation peut se faire, mais dans e
tous les espaces, il y a forc ment deux signaux de chrominance qui comportent une information sur la teinte et la satue ration (proportion de blanc) et un signal de luminance (sombre ou claire). Les fonctions rgb2ycbcr et ycbcr2rgb peuvent etre utilis es. e

Impact sur limage dune r duction de la r solution de la chrominance ou de e e la luminance

Sous- chantillonner le signal de chrominance et reformer limage. Puis sous- chantillonner le signal de luminance e e et reformer cette autre image. Observer et commenter les images obtenues.

Impact sur limage dune sous-quantication de la chrominance ou de la luminance

On consid` re des images en niveaux de gris, ces valeurs de gris etant d j` quanti es sur 256 niveaux. Simuler des e ea e quantications sur un certain nombre de niveaux. Observer et commenter les images obtenues.
La quantication sur N niveaux se fait en appliquant la fonction g pixel (celui-ci etant a priori entre 0 et 1).

Explication

E(N g) N

a la valeur de chaque `

` e Une m thode pour impl menter cette quantication consiste a d nir une fonction en ligne inline qui r alise e e e ` ` cette op ration et a lappliquer a limage. e On consid` re maintenant une image couleur. S parer le signal chrominance du signal de luminance. Quantier e e le signal de chrominance et reformer limage. Puis quantier le signal de luminance et reformer cette autre image. Observer et commenter les images obtenues.

Pr sentation de quelques mesures e


o b On consid` re ici deux images : une image origine [gm,n ] et une image bruit e [gm,n ]. Lappr ciation visuelle de e e e la ressemblance entre ces deux images est ce quon appelle un crit` re subjectif. Les mesures de qualit suivantes e e ` forment des crit` res dits objectifs. Elles sont plus rapides a utiliser, mais souvent moins ables parce quelles ne e mesurent que des distortions entre images sans pouvoir vraiment pr dire dans quelle mesure cette distortion g` ne e e effectivement lobervateur, ce qui pourtant est le plus important.

Lerreur quadratique moyenne est aussi appel e MSE (mean square error) : e EQM = 1 M N
o b gm,n gm,n m n 2

EQM=1/M/N*sum(sum((image_o-image_b).2)); Le PSNR, encore appel peak signal noise ratio, signie e dB = 10 log10 (max(g) min(g))2 EQM

` Ces mesures n voluent pas de facon proportionnelle, ainsi le calcul du quotient de lune par rapport a lautre e peut mettre en evidence certains aspects.

Graphes

Construire deux graphiques repr sentant pour une image donn e en niveaux de gris, l volution du PSNR en fonce e e tion du niveau de quantication dune part, et dautre part l volution du PSNR en fonction de la r solution de e e limage.

Vous aimerez peut-être aussi