Matlab – Manipulation des images

Une image numérique est définie par une fonction bidimensionnelle f(x, y), où x et y sont des coordonnées spatiales. L’amplitude de ‘f’ à n’importe quelle coordonnée est appelée l’intensité de l’image à ce point. Lorsque x, y et les l’amplitude de f sont toutes des quantités discrètes finies, l’image est considérée numérique.

La numérisation des coordonnées est appelée “échantillonnage”, tandis que la numérisation des valeurs d’amplitude est appelée “quantification”. Le résultat de l’échantillonnage et de la quantification est une matrice de nombres réels.

Une image numérisée est représentée en Matlab par:

\begin{bmatrix} f( 1,1) & f( 1,2) & \cdots & f( 1,N)\\ f( 2,1) & f( 2,2) & & f( 2,N)\\ \vdots & & & \vdots \\ f( M,1) & & \cdots & f( M,N) \end{bmatrix}
Les opérations de lecture/écriture des fichiers contenant des images sous Matlab sont simplifiées grâce à des fonctions prédefinies disponibles.

Les images sont lues avec la fonction «imread».
Exemple:

F = imread('peppers.png'); % si le repetoire de l'image n'est pas accessible, il faut indiquer le chemin d'accèes.

Un certain nombre d’images sont fournies avec Matlab, voir un échantillon des plus utilisées

Pour afficher l’image:

imshow (F)

Pour récupérer la dimension de l’image:

size (F)
ans =
   384   512     3

La hauteur de l’image: 384
La largeur de l’image: 512
3: indique les 3 matrices relatives aux 3 couleurs R, V et B.

Décomposition de l’image en 3 composantes Rouge, verte et bleu.:

f = imread ( 'peppers.png' ) ; 
n = size (f) ;
n = n(1:2);
figure ;
f1 = cat ( 3, f (:,:,1) , zeros (n) , zeros (n) ) ;
f2 = cat ( 3, zeros (n) , f (:,:,2),zeros(n)) ;
f3 = cat ( 3, zeros (n) , zeros (n) , f (:,:,3)) ;
subplot ( 2 , 2 , 1 ) ; imshow( f) ; title ( 'peppers image' ) ;
subplot ( 2 , 2 , 2 ) ; imshow( f1) ; title ( 'composante rouge' ) ;
subplot ( 2 , 2 , 3 ) ; imshow( f2) ; title ( 'composante verte' ) ;
subplot ( 2 , 2 , 4 ) ; imshow( f3) ; title ( 'composante bleue' ) ;

Construire une image à partir d’une matrice:
Exemple 1:

row = 256;
col = 256;
img = zeros(row, col);
img(100:105, :) = 0.5;
img(:, 100:105) = 1;
figure;
imshow(img);

 

Exemple 2:
Une image de bruit:

row = 256;
col = 256;
img = rand(row, col);
img = round(img);
figure;
imshow(img);

Rotation d’une image
code Matlab pour pivoter une image:

I = imread('onion.png');
J = imrotate(I,35);
subplot(1,2,1); imshow(I); title('image I' );
subplot(1,2,2); imshow(J); title('image J (rotation de 35°)');