Vous êtes sur la page 1sur 9

22/02/2021 Les images sous MATLAB - Tutoriel - Jérôme Briot

FORUMS TUTORIELS FAQ BLOGS CHAT NEWSLETTER EMPLOI ÉTUDES DROIT CLUB

DI/DSI Solutions d'entreprise Cloud IA ALM Microsoft Java Dév. Web EDI Programmation SGBD Office Mobiles Systèmes

EDI 4D Delphi Eclipse JetBrains LabVIEW NetBeans MATLAB Scilab Visual Studio WinDev Visual Basic 6 Lazarus Qt Creator

Accueil MATLAB Forums MATLAB FAQ MATLAB Tutoriels MATLAB Livres MATLAB Sources MATLAB

Introduction à la gestion des images sous MATLAB


Apprendre à mieux programmer en MATLAB

Table des matières


Avant propos
I. Formats de fichiers supportés
I-A. Formats supportés nativement par MATLAB
I-B. Formats supportés via les Toolbox
I-C. Formats supportés via des contributions du File Exchange
II. Outils de gestion des images
II-A. Les fonctions MATLAB
II-B. Les Toolbox
II-C. Les images tests
II-C-1. Images fournies avec MATLAB
II-C-2. Images fournies avec l'Image Processing Toolbox
II-C-2-a. Images au format JPEG
II-C-2-b. Images au format TIFF
II-C-2-c. Images au format PNG
III. Représentation des images
III-A. Tableau de pixels
III-B. Objets graphiques représentant les images
III-B-1. L'objet Image
III-B-2. L'objet Surface
IV. Ressources disponibles
V. Les images cachées (Easter Eggs)
Remerciements

Cet article est une introduction à la gestion des images sous MATLAB.

Contenu : dans un premier temps, il récapitule les différents formats de fichiers images supportés. Les outils permettant de gérer les images sont ensuite brièvement
présentés. Puis la représentation des images est abordée. Des liens pour s'initier ou se perfectionner au traitement d'images sont ensuite répertoriés. Pour conclure sur
une note moins sérieuse, quelques Easter Eggs relatifs aux images sont dévoilés.

Public visé : sans être destiné aux novices, cet article vise un public débutant avec l'utilisation des images sous MATLAB.

Votre avis et vos suggestions sur cet article m'intéressent !


Alors après votre lecture, n'hésitez pas : 9 commentaires

Article lu 126887 fois.

L'auteur

Jérôme Briot

L'article
Publié le 29 octobre 2007 - Mis à jour le 29 janvier 2014

Liens sociaux
Partager

https://briot-jerome.developpez.com/matlab/tutoriels/introduction-gestion-images/ 1/9
22/02/2021 Les images sous MATLAB - Tutoriel - Jérôme Briot

Avant propos▲
MATLAB est un langage initialement créé pour traiter des problèmes d'analyse numérique. Il est optimisé pour le calcul matriciel et convient donc parfaitement pour la
manipulation et le traitement d'images numériques. Ces dernières sont en effet représentées par des tableaux à deux ou trois dimensions (2D ou 3D).

Cet article est avant tout une présentation générale de la gestion des images sous MATLAB. Il n'a pas pour vocation à aborder les notions de manipulation ou de
traitement d'images. Les liens donnés en fin d'article permettront au lecteur d'approfondir les notions abordées ici.

Certaines parties de cet article sont évolutives (par exemple, le tableau de la première partie) et seront mis à jour au fur et à mesure.

I. Formats de fichiers supportés▲


Les opérations de lecture/écriture des fichiers contenant des images sous MATLAB sont grandement simplifiées grâce à des fonctions toutes faites qui sont disponibles
soit :

dans MATLAB nativement (imread, imwrite, print) ;


dans les Toolbox dédiées aux images (Image Acquisition, Image Processing, Mapping) ;
sur le File Exchange du MATLAB Central.
sur le web

Si vous constatez une erreur ou si vous souhaitez qu'une fonction soit ajoutée aux tableaux suivants, contactez en priorité l'auteur de cet article ou le responsable de la
rubrique MATLAB sur Developpez.com

I-A. Formats supportés nativement par MATLAB▲


Format Lecture Ecriture
BMP imread imwrite, print
CUR imread
EMF print
EPS print
GIF imread imwrite
HDF imread imwrite
ICO imread
ILL print
JPEG/JPEG2000 imread imwrite, print
PBM imread imwrite, print
PCX imread imwrite, print
PGM imread imwrite, print
PNG imread imwrite, print
PNM imread imwrite, print
PPM imread imwrite, print
RAS imread imwrite, print
TIFF imread imwrite, print
XWD imread imwrite

I-B. Formats supportés via les Toolbox▲


Format Lecture Ecriture Toolbox
Analyze 7.5 analyze75read Image Processing
DICOM dicomread dicomwrite Image Processing
FITS fitsread fitswrite Image Processing
GeoTIFF geotiffread geotiffwrite Mapping
HDR hdrread hdrwrite Image Processing
NITF nitfread Image Processing

I-C. Formats supportés via des contributions du File Exchange▲


Si le format de fichiers que vous souhaitez ouvrir ne figure dans aucun des deux tableaux ci-dessus, ou que vous ne possédez pas les Toolbox, effectuez une recherche
sur le File Exchange de MathWorks.

Pour plus d'informations sur les codes disponibles sur le File Exchange ou sur le web, merci de contacter en priorité leurs auteurs.

II. Outils de gestion des images▲


II-A. Les fonctions MATLAB▲
Les fonctions MATLAB utiles pour gérer les images sont les suivantes :

image : affiche une image (objet graphique Image) ;


imagesc : affiche une image (objet graphique Image) avec interpolation des couleurs ;
imread : lit une image d'un fichier (formats standards) ;
imwrite : écrit une image dans fichier (formats standards) ;
imfinfo : extrait des informations d'un fichier (formats standards) ;
print : exporte une image (formats standards).

https://briot-jerome.developpez.com/matlab/tutoriels/introduction-gestion-images/ 2/9
22/02/2021 Les images sous MATLAB - Tutoriel - Jérôme Briot

II-B. Les Toolbox▲


Il existe trois Toolbox MATLAB spécifiques liées à l'acquisition, à l'analyse et au traitement des images :

Image Acquisition Toolbox : acquisition d'images et de vidéos à partir de matériel industriel ;


Image Processing Toolbox : analyse et traitement d'images ;
Mapping Toolbox : analyse et visualisation de données géographiques.

II-C. Les images tests▲

II-C-1. Images fournies avec MATLAB▲

clown.mat
cape.mat detail.mat

durer.mat earth.mat flujet.mat

gatlin2.mat
gatlin.mat mandrill.mat

spine.mat

Chaque image est enregistrée dans un fichier .mat et chacun de ces fichiers comporte deux variables :

X : le tableau contenant les pixels de l'image ;


map : la palette de couleurs associées.

Le chargement de ces images s'effectue avec la fonction load et l'affichage peut être obtenu comme ceci :

Sélectionnez
figure
load(<nom du fichier mat>);
colormap(map);
imagesc(X);
axis image

Il existe aussi une image au format JPEG disponible sur toutes les versions de MATLAB (même les plus anciennes) :

ngc6543a.jpg

Cette image se lit avec la fonction imread et s'affiche avec la fonction image.

II-C-2. Images fournies avec l'Image Processing Toolbox▲


Cette toolbox est livrée avec plusieurs images dans les formats courants (jpeg, tiff, png).

Certaines de ces images sont soumises à un copyright : http://www.mathworks.fr/fr/help/images/image-credits.html

Les images standards (lena, cameraman…) pour le traitement d'images utilisées dans le livre Digital Image Processing Using MATLAB sont disponibles sur le site
http://www.imageprocessingplace.com/root_files_V3/image_databases.htm

https://briot-jerome.developpez.com/matlab/tutoriels/introduction-gestion-images/ 3/9
22/02/2021 Les images sous MATLAB - Tutoriel - Jérôme Briot

II-C-2-a. Images au format JPEG▲

greens.jpg
football.jpg

II-C-2-b. Images au format TIFF▲

AT3_1m4_01.tif, AT3_1m4_02.tif… autumn.tif


AT3_1m4_10.tif board.tif

canoe.tif
cameraman.tif cell.tif

circbw.tif circuit.tif eight.tif

forest.tif
kids.tif logo.tif

mandi.tif
m83.tif moon.tif

mri.tif paper1.tif pout.tif

shadow.tif spine.tif tire.tif

trees.tif

https://briot-jerome.developpez.com/matlab/tutoriels/introduction-gestion-images/ 4/9
22/02/2021 Les images sous MATLAB - Tutoriel - Jérôme Briot

II-C-2-c. Images au format PNG▲

bag.png blobs.png circles.png

concordaerial.png
coins.png concordorthophoto.png

gantrycrane.png glass.png
fabric.png

onion.png
hestain.png liftingbody.png

pears.png
peppers.png pillsetc.png

snowflakes.png

rice.png saturn.png

tape.png testpat1.png text.png

tissue.png
westconcordaerial.png westconcordorthophoto.png

III. Représentation des images▲


III-A. Tableau de pixels▲
MATLAB peut lire des images codées sur 8, 16, 24 ou 32 bits. Mais le stockage de ces données ne peut être fait qu'avec trois types de variables :

le type uint8 (entier non signé de 8 bits) de plage [0 255] ;


le type uint16 (entier non signé de 16 bits) de plage [0 65535] ;
le type double (réel 64 bits) de plage [0 1] (Plus généralement : [-realmax realmax]).

https://briot-jerome.developpez.com/matlab/tutoriels/introduction-gestion-images/ 5/9
22/02/2021 Les images sous MATLAB - Tutoriel - Jérôme Briot

III-B. Objets graphiques représentant les images▲


Parmi les nombreux objets graphiques disponibles sous MATLAB, deux permettent de visualiser des images : l'objet graphique de type Image et l'objet graphique de type
Surface.

III-B-1. L'objet Image▲


L'objet graphique de type Image est l'objet généralement utilisé pour visualiser les images. Il est généré soit par la fonction image, soit par la fonction imagesc.

Cet objet a pour parent un objet conteneur de type Axes et il ne possède pas lui-même d'objet enfant.

La seule restriction concernant cet objet est qu'il est impérativement créé dans le plan x0y et qu'il ne peut en aucun cas être manipulé en rotation (par des fonctions
comme rotate3d par exemple).

Les propriétés principales de cet objet sont :

CData : tableau 2D ou 3D contenant les valeurs des pixels de l'image ;


CDataMapping : interprétation des valeurs pixels sous forme de couleur (valeur 'direct' ou 'scale') ;
XData : position dans le repère x0y du premier et du dernier pixel suivant l'axe x ;
YData : position dans le repère x0y du premier et du dernier pixel suivant l'axe y.

Vous pouvez consulter la liste complète des propriétés des objets Image.

Le code suivant montre la différence entre une image dont le premier pixel est centré en (1,1) et une autre image dont le premier pixel est centré en (5,4) :

Sélectionnez
function placeimage

rgb=rand(3,6,3);

figure('numbertitle','off',...
'toolbar','none','menubar','none')

subplot(2,1,1)
image(rgb)
axis image
hold on
plot(1,1,'ro')

subplot(2,1,2)
image(rgb,'xdata',5,'ydata',4 )
axis image
hold on
plot(5,4,'ro')

Voici le résultat à l'affichage :

III-B-2. L'objet Surface▲


Un objet de type Image étant contraint à être dessiné dans le plan x0y, un objet Surface sera utilisé dans les cas d'affichage d'image dans un plan quelconque. Ce type
d'objet est généré par des fonctions comme : surf, surface, pcolor…

Cet objet a pour parent un objet conteneur de type Axes et il ne possède pas d'objet enfant.

Vous pouvez consulter la liste complète des propriétés des objets Surface.

Un point très intéressant de cet objet est qu'il peut également servir à appliquer une image comme texture sur une surface mathématique.

Le code ci-dessous montre comment plaquer l'image suivante (Projet Blue Marble - NASA's Earth Observatory) sur une sphère :

https://briot-jerome.developpez.com/matlab/tutoriels/introduction-gestion-images/ 6/9
22/02/2021 Les images sous MATLAB - Tutoriel - Jérôme Briot

Sélectionnez
figure('doublebuffer','on',...
'renderer','opengl',...
'numbertitle','off',...
'name','Projet Blue Marble - NASA''s Earth Observatory',...
'menubar','none',...
'toolbar','none',...
'units','pixels',...
'position',[200 200 400 300])

X = imread('BlueMarble.jpg','jpg');
X = X(end:-1:1,:,:);

n = 50;

theta = (-n:2:n)/n*pi;
phi = (-n:2:n)'/n*pi/2;
cosphi = cos(phi); cosphi(1) = 0; cosphi(n+1) = 0;
sintheta = sin(theta); sintheta(1) = 0; sintheta(n+1) = 0;

r = 1;
x = r*cosphi*cos(theta);
y = r*cosphi*sintheta;
z = r*sin(phi)*ones(1,n+1);

surf(x,y,z,'facecolor','texturemap',...
'cdata',X,'edgecolor','none');

axis tight
axis equal
axis off
axis vis3d
cameratoolbar
cameratoolbar('setcoordsys', 'none')

Ce qui donne :

Sous MATLAB, utilisez le bouton « Orbit Camera » ( ) de la barre d'outils pour faire tourner la sphère terrestre.

IV. Ressources disponibles▲


De nombreuses ressources sont disponibles sur Internet afin de s'initier ou se perfectionner à la manipulation et au traitement d'images :

FAQ MATLAB - Traitement d'Images


Forum Traitement d'Images sous MATLAB
Forum Algorithmes

Image Processing Toolbox Demos


Image Processing Webinars
Le File Exchange
Steve on Image Processing

https://briot-jerome.developpez.com/matlab/tutoriels/introduction-gestion-images/ 7/9
22/02/2021 Les images sous MATLAB - Tutoriel - Jérôme Briot

V. Les images cachées (Easter Eggs)▲


De nombreux développeurs MATLAB furent surpris, suite à une mauvaise manipulation (l'appel de la fonction image sans argument), de voir apparaitre la photo d'un petit
garçon à l'écran (qui plus est la tête à l'envers) :

Steve Eddins a donné la clé de ce mystère dans son blog. Voici donc un programme permettant de visualiser les 15 images cachées dans MATLAB depuis la version 5.0 :

Sélectionnez
function showhiddenimages

defimage = pow2(get(0,'DefaultImageCData'),47);

figure('numbertitle','off','name','MATLAB hidden images',...


'toolbar','none','menubar','none')
colormap(gray)

X = [47,51
42,46
37,41
36,36
35,35
34,34
33,33
28,32
23,27
18,22
13,16
9,12
5,8
1,4];

for n=1:14

subplot(3,5,n)
imagesc(bitslice(defimage,X(n,1),X(n,2)));
axis image off
title(num2str(n))

end

subplot(3,5,15)
r = bitslice(defimage,0,0);
g = bitslice(defimage,17,17);
b = bitslice(defimage,34,34);
imagesc(cat(3,r,g,b));
axis image off
title('15')

function b = bitslice(a,lowbit,highbit)
%BITSLICE(A,LOWBIT,HIGHBIT)

numbits = highbit - lowbit + 1;


b = bitshift(a,-lowbit);
b = fix(b);
b = bitand(b,bitcmp(0,numbits));
b = b/max(b(:));

https://briot-jerome.developpez.com/matlab/tutoriels/introduction-gestion-images/ 8/9
22/02/2021 Les images sous MATLAB - Tutoriel - Jérôme Briot

Commentaires sur ces images (toujours d'après Steve Eddins) :

1. le plus vieux des fils de Steve Eddins ;


2. un chien appartenant à un développeur de MathWorks ;
3. un autre chien appartenant à un développeur de MathWorks ;
4. l'inverse de la matrice de Hilbert (3x3) ;
5. le logo (initial et de mauvaise résolution) de MathWorks ;
6. le nombre préféré de Loren Shure ;
7. le carré magique (3x3) ;
8. le plus jeune des fils de Steve Eddins ;
9. le carré magique caché dans la gravure de Albrecht Dürer, Melancholia ;
10. des pièces de monnaie (en fait un calembour en anglais…) ;
11. Loren Shure âgée de 4 ans ;
12. Wilkinson, Givens, and Forsythe, à la Gatlinburg Conference de 1964 sur l'algèbre numérique ;
13. Steve Eddins lui-même ;
14. l'image par défaut de MATLAB 4 ;
15. l'histoire du cochon jaune.

Sources : The Story Behind the MATLAB Default Image, par Steve Eddins

Remerciements▲
Je tiens à remercier UNi[FR] et Winjerome pour la correction orthographique de cet article.

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Partager

En complément sur Developpez.com

Gestion des matrices par MATLAB


Gestion des couleurs par MATLAB

Copyright © 2007-2014 Jérôme Briot. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images,
etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sortie de MATLAB R2019b, l'environnement Meilleurs langages en 2018 selon l'IEEE :


Quels sont les langages de programmation de développement technique s'enrichit Python conforte sa place de leader, grâce à
les plus demandés par les employeurs ? d'une connexion à Unreal Engine pour la son ascension dans le machine learning et
simulation de voitures autonomes l'embarqué

Contacter le responsable de la rubrique MATLAB

Nous contacter Participez Hébergement Publicité / Advertising Informations légales Partenaire : Hébergement Web
© 2000-2021 - www.developpez.com

https://briot-jerome.developpez.com/matlab/tutoriels/introduction-gestion-images/ 9/9

Vous aimerez peut-être aussi