Vous êtes sur la page 1sur 9

TP

sur
le Traitement numérique
des images

1
TP1
Familiarisation avec,
Les manipulations de base des images numériques sous Matlab

1 . Objectifs

L’objectif de ce TP est de se familiariser avec les notions de base de l’image


numérique sous MATLAB.

2. Quelques rappels sur les images sous Matlab

Matlab considère les images comme des matrices. Il utilise 2 types de données (8
bits, 64 bits) et 2 types d’images (Indexed images, TrueColor images).

– Indexed images : Matrices 2D dont les coefficients sont des indices de la table
des couleurs (colormap).

– Colormap : Matrice de p lignes et 3 colonnes. Chaque ligne donne la


décomposition R,G,B d’une couleur. Les coefficients sont des “floating-point
double precision”.

– TrueColor images : Matrices 3D. La troisième dimension donne la


décomposition R,G,B de la couleur du pixel.

– 8-bit data (unsigned bytes ou uint8) : Les valeurs vont de 0 à 255. Dans le cas
d’images indexées, 1 correspond à la première ligne de la table des couleurs
(colormap). Ce format réduit l’utilisation de la mémoire mais ne permet pas
d’opérations algébriques sur les coefficients.

– 64-bit data (floating-point, double) : Dans le cas d’images indexées, 1


correspond à la première ligne de la table des couleurs (colormap).

Pour trouver les spécifications d’une command matlab, taper “help command”.

3. Manipulations de base

Charger l’image « woman2 » à l’aide de la commande « load » et regarder les


variables relatives à l’image.

clear all; close all; clc


load woman2; % Load workspace variables from disk.
whos; % Affichage des variables relatives à l'image

>>

2
Name Size Bytes Class

X 128x128 131072 double array  128*128*8=131072


map 255x3 6120 double array  255*3*8=6120

Grand total is 17149 elements using 137192 bytes  16384+765=17149; 131072+6120=137192

X(1:5,1:5) % Affichage d’une partie de l'image X

ans =

106 105 95 106 100


110 102 106 96 102
106 101 102 96 106
106 106 95 106 99
110 99 102 111 102

map(1:20,:) % Affichage d’une partie du map


ans =

0 0 0
0.0207 0.0207 0.0207
0.0337 0.0337 0.0337
0.0447 0.0447 0.0447
0.0547 0.0547 0.0547
0.0640 0.0640 0.0640
0.0727 0.0727 0.0727
0.0809 0.0809 0.0809
0.0889 0.0889 0.0889
0.0965 0.0965 0.0965
0.1039 0.1039 0.1039
0.1111 0.1111 0.1111
0.1180 0.1180 0.1180
0.1248 0.1248 0.1248
0.1315 0.1315 0.1315
0.1380 0.1380 0.1380
0.1444 0.1444 0.1444
0.1506 0.1506 0.1506
0.1568 0.1568 0.1568
0.1628 0.1628 0.1628

>>

Afficher l’image à l’aide de la commande « imshow » et « imagesc ».

figure(1);imshow(X, map) %Affiche en niveau de gris the indexed image X with the
colormap(map)
colorbar('vert') %COLORBAR Display color bar (color scale)

figure(2); imagesc(X);
colorbar('vert') %Affichage de l'image et la barre de couleur

3
colormap(gray); %Affichage de l'image en niveau de gris (N&B)

Lire l’image « flowers.tif » avec la commande « imread », regarder le « map ».

clear all; close all; clc


[X,map] = imread('flowers.tif'); % Read image from graphics file.
figure(3)
subplot(1,2,1), subimage(X)
load trees;subplot(1,2,2), subimage(X,map)

Afficher les informations relatives à l’image à l’aide de la commande « imfinfo ».

clear all; close all; clc


[a,map] = imread('forest.tif');
Sa=size(a)
Smap=size(map)
a15=a(1:5,1:5)
map15=map(1:5,:)
c=imfinfo('flowers','tiff')
figure(1); imagesc(a);
cm=colormap; cm(1:15,:) %lecture de la map

>>
Sa =
301 447

Smap =

4
256 3

a15 =
45 115 123 123 142
107 214 231 216 231
85 231 196 173 231
85 231 215 173 231
83 214 194 215 196

map15 =
1.0000 1.0000 1.0000
0 1.0000 1.0000
1.0000 0 1.0000
0 0 1.0000
1.0000 0.9686 0.9686

c=
Filename: 'flowers.tif'
FileModDate: '25-Oct-1996 23:11:10'
FileSize: 543962
Format: 'tif'
FormatVersion: []
Width: 500
Height: 362
BitDepth: 24
ColorType: 'truecolor'
FormatSignature: [73 73 42 0]
ByteOrder: 'little-endian'
NewSubfileType: 0
BitsPerSample: [8 8 8]
Compression: 'Uncompressed'
PhotometricInterpretation: 'RGB'
StripOffsets: [73x1 double]
SamplesPerPixel: 3
RowsPerStrip: 5
StripByteCounts: [73x1 double]
XResolution: 72
YResolution: 72
ResolutionUnit: 'Inch'
Colormap: []
PlanarConfiguration: 'Chunky'
TileWidth: []
TileLength: []
TileOffsets: []
TileByteCounts: []
Orientation: 1
FillOrder: 1
GrayResponseUnit: 0.0100
MaxSampleValue: [255 255 255]
MinSampleValue: 0
Thresholding: 1
ImageDescription: [1x173 char]

ans =
0 0 0.5625
0 0 0.6250
0 0 0.6875
0 0 0.7500
0 0 0.8125
0 0 0.8750
0 0 0.9375
0 0 1.0000
0 0.0625 1.0000
0 0.1250 1.0000
0 0.1875 1.0000
0 0.2500 1.0000
0 0.3125 1.0000
0 0.3750 1.0000
0 0.4375 1.0000

>>

5
Afficher en ‘’gary’’ l’image ‘’woman2’’ et en ‘’jet’’ l’image ‘’flujet’’.

clear all; close all; clc


load woman2;
figure(1); magesc(X)
colormap(gray);
colorbar('vert')

load flujet
figure(2);image(X)
colormap(jet);
colorbar('vert')

Charger l’image “spine” et afficher là en utilisant la palette «hsv». Utiliser la


commande « hsv2rgb » pour changer de palette. Utiliser la commande
« colorbar » pour afficher la palette avec l’image.

load spine
figure(3);image(X)
colormap(bone)
colorbar('vert')

6
colormap(hsv);
c=hsv2rgb(map); %h=rgb2hsv
colormap(c)

Changer le format de l’image (de « tif » en « jpg » par exemple) puis regarder les
informations.

clear all; close all; clc


a=imread('flowers','tif'); %lecture d'une image .tif
Sa=size(a)
c1=imfinfo('flowers','tiff') %affiche les informations sur l'image flowers
whos
>>
Sa =

362 500 3

c1 =
Filename: 'flowers.tif'
FileModDate: '25-Oct-1996 23:11:10'
FileSize: 543962
Format: 'tif'
FormatVersion: []
Width: 500
Height: 362
BitDepth: 24
ColorType: 'truecolor'
FormatSignature: [73 73 42 0]
ByteOrder: 'little-endian'
NewSubfileType: 0
BitsPerSample: [8 8 8]

7
Compression: 'Uncompressed'
PhotometricInterpretation: 'RGB'
StripOffsets: [73x1 double]
SamplesPerPixel: 3
RowsPerStrip: 5
StripByteCounts: [73x1 double]
XResolution: 72
YResolution: 72
ResolutionUnit: 'Inch'
Colormap: []
PlanarConfiguration: 'Chunky'
TileWidth: []
TileLength: []
TileOffsets: []
TileByteCounts: []
Orientation: 1
FillOrder: 1
GrayResponseUnit: 0.0100
MaxSampleValue: [255 255 255]
MinSampleValue: 0
Thresholding: 1
ImageDescription: [1x173 char]

Name Size Bytes Class

Sa 1x3 24 double array


a 362x500x3 543000 uint8 array
c1 1x1 6208 struct array

Grand total is 543462 elements using 549232 bytes

imwrite(a,'jham','jpg'); %ecriture d'une imge en format .jpg


c2=imfinfo('jham','jpg') %Information about graphics file.
whos
>>
c2 =

Filename: 'jham'
FileModDate: '03-Mar-2010 20:42:53'
FileSize: 39640
Format: 'jpg'
FormatVersion: ''
Width: 500
Height: 362
BitDepth: 24
ColorType: 'truecolor'
FormatSignature: ''

Name Size Bytes Class

Sa 1x3 24 double array


a 362x500x3 543000 uint8 array
c1 1x1 6208 struct array
c2 1x1 1344 struct array

Grand total is 543512 elements using 550576 bytes

imwrite(a,'bham','bmp'); %ecriture d'une imge en format .bmp


c2=imfinfo('bham','bmp')
whos
>>
c2 =

Filename: 'bham'
FileModDate: '03-Mar-2010 20:42:53'
FileSize: 543054
Format: 'bmp'
FormatVersion: 'Version 3 (Microsoft Windows 3.x)'
Width: 500
Height: 362
BitDepth: 24

8
ColorType: 'truecolor'
FormatSignature: 'BM'
NumColormapEntries: 0
Colormap: []
RedMask: []
GreenMask: []
BlueMask: []
ImageDataOffset: 54
BitmapHeaderSize: 40
NumPlanes: 1
CompressionType: 'none'
BitmapSize: 543000
HorzResolution: 0
VertResolution: 0
NumColorsUsed: 0
NumImportantColors: 0

Name Size Bytes Class

Sa 1x3 24 double array


a 362x500x3 543000 uint8 array
c1 1x1 6208 struct array
c2 1x1 3230 struct array

Grand total is 543574 elements using 552462 bytes

>>

4. Re -échantillonnage d’une image

(a) Charger l’image « lena »


(b) Créer une version “sous- échantillonnée” par un facteur 2 de cette image à
l’aide d’une fonction que vous écrirez.
Pour cela, créer une nouvelle image en ne prenant qu’un pixel sur deux dans
l’image originale. (Ne pas oublier de faire cette opération selon les lignes ET les
colonnes de l’image de départ)
(c) Afficher l’image ainsi obtenue.
(d) Recommencer l’opération de sous-échantillonnage sur l’image obtenue.
L’image de départ a ainsi été sous-échantillonnée par un facteur 4.
Décrivez les effets du sous-échantillonnage sur l’image.

5. Quantification d’une image

Soit l’image en niveau de gris ”lena”. On désire déterminer l’influence d’une


quantification à pas variables.
Changer le pas de quantification de l’image pour obtenir 128, 64, 32, 16, 8, 4 et 2
niveaux de gris. Afficher l’image correspondante afin de déterminer le seuil
minimal de quantification à partir duquel certains faux contours apparaissent.

Vous aimerez peut-être aussi