Vous êtes sur la page 1sur 4

1. Images Indexes : Il s'agit d'images en couleurs.

pixel dont l'indexe est 5

palette

ligne 5

Ce sont des matrices (m,n) contenant des nombres uint8 [0, 255], uint16[0, 65535] ou double [-1e308, +1e308]. Ces nombres correspondent une palette (N,3) de couleurs (color map). Chaque colonne correspond un niveau en Red, Green et Blue (RGB) compris dans l'interval [0,1]. ex1 : Charger cette image : >> [X,map] = imread('C:\matlabR12\help\toolbox\images\intro2a.gif'); Quel est le type et la taille de X ? de map ? Quel et le maximum et le minimum de X ? de map ? l'afficher : >> imshow(X) pourquoi est-elle en niveaux de gris ? l'afficher de nouveau : >> imshow(X,map) ex2 : Dans un script nomm cre_ima_ind1, crer une image indexe A 100X100 dont les indexes, donc les couleurs, seront compris entre 0 et 63 de faon alatoire (utiliser rand). Crer aussi dans le script, une palette nomm mapalette de taille 64X3 dont chaque colonne est identique d'lments variant linairement de 0 1. Afficher l'image. Pourquoi est-elle en niveau de gris ? Modifier la palette de faon ce qu'elle contiennent des valeurs alatoires dans [0, 1]. Afficher la nouvelle image, elle devrait tre colore. Modifier A et mapalette de faon qu'il y ait un carr rouge 5X5 en bas gauche de l'image, un carr vert en bas droite, un carr bleu en haut gauche et enfin un carr blanc en haut droite. Dans la fentre de commande, taper : >> map2=colormap; Que renvoie la fonction colormap ? Examiner le contenu de map2 puis taper : >> imshow(A,map2); % ou ce qui est quivalent : >> imshow(A,colormap); Essayer : >> imshow(A,jet);

>> imshow(A,hot); Voir la liste dans l'aide sur colormap. Essayer ceci : >> close all >> load flujet >> image(X) >> colormap(jet); Interprter la transformation des images lorsque l'on tape la suite : >> colormap(jet(128)); >> colormap(jet(256)); Ou encore >> colormap(2);

2. Images en Intensit : Il s'agit d'images en niveaux de gris [0, 1] pour les types double et [0, 255] pour les types uint8. Chaque lment d'une image (m,n) correspond au niveau de gris du pixel de coordonnes (1<= x <=m, 1<= y <=m). ex3 : Ecrire un script nomm cre_ima_int qui cre une image 100X100 de niveau de gris alatoire compris dans [0, 1]. Affiche l'image, convertit l'image en une seconde de type uint8 avec la fonction de mme nom de telle sorte que les niveaux de gris soient dans l'intervalle [0, 255] et l'affiche. Quelles sont les diffrences ? Enfin, modifie l'image en une troisime o apparaissent 5 carrs 10X10 juxtaposs de niveaux successifs 0, 64, 128, 192 et 255. 3. Images binaires : Ce sont des images NB (BW en anglais) le plus souvent de type uint8 similaires aux images en intensit mais avec seulement 2 valeurs possible, 0 (noir) ou 1 (blanc). ex4 : Recharger l'image intro2a, la convertir en image binaire avec la fonction im2bw. Quel est le type des donnes contenues dans la nouvelle image ? Dterminer la valeur maximum en utilisant la fonction max. Essayer plusieurs seuils 0.5, 0.25 et 0.1. 4. Images RGB : Une image RGB est de type double valeurs dans [0, 1] ou uint8 valeurs dans [0,255]. Elle est de taille (m,n,3) et peut-tre interprte comme l'empilement de 3 tableaux (m,n) dfinissant l'intensit de chaque pixel en Red, Green et Blue. Ainsi, l'intensit en rouge du pixel (10,10) de l'image RGB est RGB(10,10,1). L'intensit en vert est donne par RGB(10,10,2) et celle de la couleur bleue par RGB(10,10,3). ex5 : Que fait le script suivant : % cre_ima_rgb close all map=jet(64); RGB=ones(100,64,3); for i=1:64 for j=1:100 RGB(j,i,1:3)=map(i,1:3); end end subplot(411),imshow(RGB),title('palette jet :') rouge=RGB; rouge(:,:,2)=0; rouge(:,:,3)=0; subplot(412),imshow(rouge),title('plan rouge de jet :') vert=RGB; vert(:,:,1)=0; vert(:,:,3)=0; subplot(413),imshow(vert),title('plan vert de jet :') bleu=RGB; bleu(:,:,1)=0;

bleu(:,:,2)=0; subplot(414),imshow(bleu),title('plan bleu de jet :') Appliquer ce script aux palettes gray puis hot en interprtant les rsultats. 5. Trames et films (frames and movies en anglais): Il peut-tre utile de travailler avec une succession d'images prises diffrents instants (film d'un phnomne) ou partir de diffrentes vues (coupes de l'imagerie mdicale). Une telle squence compose par exemple de 10 images RGB aura la taille : (m,n,3,10). On utilisera la fonction cat pour former le film partir des images, ainsi >> film=cat(4, A1, A2, ... ,A10); concatne les 10 images Ai dans la quatrime dimension. Pour extraire la 7 ime image : >> image7=film(:, :, :, 7); ex6 : Les images dont l'extension est .tif peuvent contenir plusieurs trames. Exprimentar ce script : close all % Initialisation d'un tableau pour contenir les 27 trames de mri.tif sequence = uint8(zeros(128,128,1,27)); for i=1:27 % lit chaque trame et la palette associe, les stocke en mmoire [sequence(:,:,:,i),map] = imread('mri.tif',i); end subplot(121),imshow(sequence(:,:,:,3),map); subplot(122),imshow(sequence(:,:,:,7),map); Noter la taille et le type de chacune des variables cres dans le l'espace de travail. Afin de visualiser l'ensemble des trames, mettre en commenatire les 2 dernires lignes et ajouter celle-ci : close,montage(mri,map) Enfin, on peut afficher les trames comme pour un film, dans la fentre de commandes taper : >> close, film = immovie(mri,map); % cre le film partir des trames et le joue une premire fois >> colormap(map), movie(film); % joue le film

Ralisons quelques manipulations, dans la suite du script ou dans un nouveau script :

assigner la 26 ime trame la variable A, la 27 ime B. Les entiers non signs uint8 ne supportant pas la soustraction, convertir A et B en type double avec la fonction double. Assigner la diffrence A-B la variable AB. Calculer la plus grande et la plus faible valeur de AB en utilisant les fonctions max et min. Avant d'afficher AB, la convertir en entier non sign avec la fonction uint8. Utiliser la commande subplot (avant chaque instruction imshow) et colorbar (aprs chaque instruction imshow) pour afficher les 5 images suivantes (utiliser title pour expliciter l'image) : A associe map, B associe map, AB associe map, AB associe la palette gray(88), AB associe une palette vide. 5. Oprations gomtriques : ex7 : Exprimenter ce genre de commande : >> Y=imread('cameraman.tif'); >> imshow(Y) >> Y = imresize(Y,[256 128]); >> imshow(Y) et maintenant, si vous taper : >> imshow(Y,jet) ou encore : >> Y = imrotate(Y,45); imshow(Y,jet) vous devriez savoir pourquoi vous obtenez une image bizarre ... Utiliser imcrop pour avoir quelquechose comme ceci

6. Oprations par blocs : 7. Filtrage : 8. Analyse et amlioration de l'image : 9. Oprations binaires:

Vous aimerez peut-être aussi