Академический Документы
Профессиональный Документы
Культура Документы
MATLAB est un langage initialement créé pour traiter des problèmes d'algèbres linéaires
donc ,entant qu'outil optimisé pour le calcul matriciel , il convient parfaitement pour le
développement rapide d'algorithmes et de programmes pour la manipulation d'images
numériques.
Ces dernières sont en effet représentées par des matrices à 2 ou 3 dimensions.
Il existe trois Toolbox MATLAB spécifiques liées à l'acquisition , à l'analyse et au traitement
des images:
Programme en Matlab
200
img=imread('oiseau.jpg'); 300
figure 400
500
imshow(img);
600
figure
700
imagesc(img) 100 200 300 400 500 600 700 800 900 1000
figure
image (img)
HISTOGRAMME
Exemple
On a l’image suivante
Programme en Matlab
img = imread('circuit.tif');
cont1 = edge(img,'prewitt');
cont2 = edge(img,'canny');
figure; imshow(img);
figure; imshow(cont1);
figure; imshow(cont2);
Binarisation
La binarisation est basée sur un seuillage brut. Cela signifie que si un pixel de l’image a
une intensité supérieure à une certaine valeur de seuil, il lui sera attribué la couleur blanche
sinon il sera noir.
Ce procédé est réalisé sur chaque pixel de l’image. Nous obtenons donc une image
comportant seulement deux niveaux (valeur 0 ou 1). L’image est binarisée.
Programme en Matlab
Im=imread('ISABE_LUMI.BMP');
seuil = 128 ;
ImBinaire=Im;
ImBinaire(find(ImBinaire<seuil))=0;
ImBinaire(find(ImBinaire>=seuil))=1;
image(ImBinaire)
Opérations géométriques :
Les opérations géométriques classiques sont permises avec la boîte à outils de traitement
d'images: rotation, changement de taille, découpage...
L'exemple ci-dessous illustre la rotation d'une image avec Matlab. Dans le premier cas,
imgrot1 est plus grande que img. Dans le second cas, le paramètre 'crop' impose un
découpage de l'image et la taille de l'image imgrot2 est la même que celle de l'image img.
Programme en Matlab
img=imread('image2.bmp');
figure;imshow(img);
imgrot1=imrotate(img,3,'bilinear');
figure;imshow(imgrot1);
imgrot2=imrotate(img,3,'bilinear','crop');
figure;imshow(imgrot2);
Un autre outil géométrique très utile pour détecter les niveaux de gris dans une
image est la fonction de profil. On exécute cette fonction, on choisit à l'aide de la
souris une ligne de l'image et on obtient le profil du niveau de gris le long de cette
ligne.
Programme en Matlab
img=imread('image2.bmp');
figure;imshow(img);
improfile
Segmentation:
La segmentation est une étape importante pour l'extraction des informations
qualitatives de l'image. Elle fournit une description de haut niveau : chaque région
est connectée à ses voisines dans un graphe et chaque région porte une étiquette
donnant des informations qualitatives comme sa taille, sa couleur, sa forme, son
orientation
On regroupe généralement les algorithmes de segmentation en trois grandes
classes :
Programme en Matlab
close all
clear all
clc
rgb = imread('pears.png');
I = rgb2gray(rgb);
imshow(I)
Filtrage :
Effectuer un filtrage consiste a réaliser pour chaque pixel de l'image, les trois pas suivants:
– Le centre du filtre est place sur un pixel de l'image
– Chaque pixel de l'image a filtrer est multiplie par le poids correspondant du filtre
– Les produits sont ensuite additionnes et le résultat divise par la somme des poids.
* Il existe des filtres non-linéaires très efficaces par rapport au bruit (conflit: passe-bas et
suppression de détails)
programme Matlab
img=imread('image2.bmp');
for i=2:x-1
for j=2:z-1
imf(i,j)=1/9*(img(i-1,j-1)+img(i-1,j)+img(i-1,j+1)+img(i,j-1)+img(i,j)+img(i,j+1)+ …
img(i+1,j-1)+img(i+1,j)+img(i+1,j+1));
end
end
img=imread('image2.bmp');
F=fspecial('gaussian');
imf2=filter2(F,img);
img=imread('image2.bmp');
for i=2:x-1
for j=2:z-1
imf3(i,j)=median(M);
end
end
Pretraitement de documents:
clear all
close all
clc
img= imread('scan3.jpg');
info=imfinfo('scan3.jpg');
info =
Filename: 'C:\Users\Client\Documents\MATLAB\scan3.JPG'
FileModDate: '13-déc.-2010 16:32:’16'
FileSize: 158792
Format: 'jpg'
FormatVersion: ''
Width: 1052
Height: 601
BitDepth: 24
ColorType: 'truecolor'
FormatSignature: ''
NumberOfSamples: 3
CodingMethod: 'Huffman'
CodingProcess: 'Sequential'
Comment: {}
Artist: 'oussama '
DigitalCamera: [1x1 struct]
UnknownTags: [2x1 struct]
J=rgb2gray(img) ;
imshow(j)
[row,col]=size(J);
img=imread('scan3.jpg')
seuil=mean(mean(img))
img(img<seuil)=0;
img(img>=seuil)=255;
figure
imshow(img),title('image binarisé')
%%filtrage Gaussien
F=fspecial('gaussian');
gf=filter2(F,img);
%%filtrage par Médian
for i=2:x-1
for j=2:z-1
M=[img(i-1,j-1) img(i-1,j) img(i-1,j+1) img(i,j-1) img(i,j) img(i,j+1)
img(i+1,j-1) img(i+1,j) img(i+1,j+1)];
imf3(i,j)=median(M);
end
end
figure ;imshow(gf)
figure ;imshow(imf3)
%%histogrmme _histogramme veticale_histogramme horizontale
[r,c]=size(im);
for i=1:r
for j=1:c
mat(i,j)=im(i,j);
end
end
figure(1)
imhist(mat);
hh=sum(im);
hv=sum(im');
figure(2)
barh((1:256),hh)
hold on
plot ((1:256),hv,'g')
legend('hori' ,'verti')
%%%rotation successif
img=imread('scan3.jpg');
[x1,z1]=size(img);
while i<=7
img = imrotate(img,-1,'bilinear','crop');
figure;imshow(img)
i=i+1;
end
CONCLUSION
Le traitement d'images permet de modifier le contenu des images afin de tirer
l'information utile pour une application particulière. Matlab offre de nombreuses
possibilités de traitement avec une palette très fournie d'outils prêts à l'emploi.
L'inconvénient majeur de Matlab réside dans sa relative lenteur pour effectuer
certaines opérations de calculs (par exemple la transformée de Fourier). Toutefois
Matlab permet de déployer rapidement des tests pour vérifier la validité d'une
méthode de traitement d'images. La manipulation d'images revient à la manipulation
de matrices qui est très facile grâce au langage de haut niveau de Matlab.