Вы находитесь на странице: 1из 10

Gestion des images sous MATLAB

http://briot-jerome.developpez.com/matlab/tutoriels/introduction-gestio...

Forums Tutoriels Magazine FAQs Blogs Projets Chat Newsletter tudes Emploi Club Contacts

Accueil ALM Java .NET Dv. Web EDI Langages SGBD Office Solutions d'entreprise Applications Mobiles Systmes
EDI 4D Delphi Eclipse LabVIEW NetBeans MATLAB Visual Studio WinDev
Livres MATLAB

Visual Basic 6

Lazarus

Qt Creator

Accueil MATLAB

Forums MATLAB

FAQ MATLAB

Tutoriels MATLAB

Sources MATLAB

Introduction la gestion des images sous MATLAB

Tour d'horizon des possibilits offertes par MATLAB

Table des matires Avant propos I. Formats de fichiers supports I-A. Formats supports nativement par MATLAB I-B. Formats supports via les Toolbox I-C. Formats supports 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. Reprsentation des images III-A. Matrice image III-B. Objets graphiques reprsentant les images III-B-1. L'objet Image III-B-2. L'objet Surface IV. Ressources disponibles V. Les images caches (Easter Eggs) Remerciements Cet article est une introduction la gestion des images sous MATLAB. Contenu : dans un premier temps, il rcapitule les diffrents formats de fichiers images supports. Les outils permettant de grer les images sont ensuite brivement prsents. Puis la reprsentation des images est aborde. Des liens pour s'initier ou se perfectionner au traitement d'images sont ensuite rpertoris. Pour conclure sur une note moins srieuse, quelques Easter Eggs relatifs aux images sont dvoils. Public vis : sans tre destin aux novices, cet article vise un public dbutant avec l'utilisation des images sous MATLAB. Votre avis et vos suggestions sur cet article m'intressent ! Alors aprs votre lecture, n'hsitez pas : 7 commentaires L'auteur

Jrme Briot

Larticle Avant propos Publi le 29 octobre 2007 - Mis jour le 15 novembre 2012 Liens sociaux MATLAB est un langage initialement cr pour traiter des problmes d'analyse numrique. Il est optimis pour le calcul matriciel et convient donc parfaitement pour la manipulation et le traitement d'images numriques. Ces dernires sont en effet reprsentes par des matrices 2 ou 3 dimensions. Cet article est avant tout une prsentation gnrale 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 donns en fin d'article permettront au lecteur d'approfondir les notions abordes ici. Certaines parties de cet article sont volutives (par exemple, le tableau de la premire partie) et seront mis jour au fur et mesure.

1 sur 10

17/02/2013 10:15

Gestion des images sous MATLAB

http://briot-jerome.developpez.com/matlab/tutoriels/introduction-gestio...

I. Formats de fichiers supports Les oprations de lecture/criture des fichiers contenant des images sous MATLAB sont grandement simplifies grce des fonctions toutes faites qui sont disponibles soit : sous MATLAB nativement (imread, imwrite, print) dans les Toolbox ddies 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 ajoute aux tableaux suivants, contactez en priorit l'auteur de cet article ou le responsable de la rubrique MATLAB sur Developpez.com

I-A. Formats supports nativement par MATLAB


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

I-B. Formats supports via les Toolbox


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

I-C. Formats supports 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 possdez pas les Toolbox, effectuez une recherche sur le File Exchange. 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

2 sur 10

17/02/2013 10:15

Gestion des images sous MATLAB

http://briot-jerome.developpez.com/matlab/tutoriels/introduction-gestio...

II-A. Les fonctions MATLAB


Les fonctions MATLAB utiles pour grer 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)

II-B. Les Toolbox


Il existe trois Toolbox MATLAB spcifiques lies l'acquisition, l'analyse et au traitement des images : Image Acquisition Toolbox : acquisition d'images et de vidos partir de matriel industriel Image Processing Toolbox : analyse et traitement d'images Mapping Toolbox : analyse et visualisation de donnes gographiques

II-C. Les images tests


II-C-1. Images fournies avec MATLAB

cape.mat

clown.mat

detail

durer.mat

earth.mat

flujet

gatlin.mat

gatlin2.mat

mandri

spine.mat Chaque image est enregistre dans un fichier .mat et chacun de ces fichiers comporte deux variables : X : la matrice image map : la palette de couleurs associes Le chargement de ces images s'effectue avec la fonction load et l'affichage peut tre obtenu comme ceci : Slectionnez
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 (mme les plus anciennes) :

3 sur 10

17/02/2013 10:15

Gestion des images sous MATLAB

http://briot-jerome.developpez.com/matlab/tutoriels/introduction-gestio...

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 livre 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 utilises dans le livre Digital Image Processing Using MATLAB sont disponibles sur le site http://www.imageprocessingplace.com/root_files_V3 /image_databases.htm II-C-2-a. Images au format JPEG

football.jpg

greens.jpg

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

AT3_1m4_01.tif, AT3_1m4_02.tif... AT3_1m4_10.tif

autumn.tif

boa

cameraman.tif

canoe.tif

ce

circbw.tif

circuit.tif

eig

forest.tif

kids.tif

log

4 sur 10

17/02/2013 10:15

Gestion des images sous MATLAB

http://briot-jerome.developpez.com/matlab/tutoriels/introduction-gestio...

m83.tif

mandi.tif

mo

mri.tif

paper1.tif

po

shadow.tif

spine.tif

tir

trees.tif

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

bag.png

blobs.png

ci

coins.png

concordaerial.png

concord

fabric.png

gantrycrane.png

hestain.png

liftingbody.png

5 sur 10

17/02/2013 10:15

Gestion des images sous MATLAB

http://briot-jerome.developpez.com/matlab/tutoriels/introduction-gestio...

pears.png

peppers.png

pi

snow rice.png saturn.png

tape.png

testpat1.png

tissue.png

westconcordaerial.png

westconco

III. Reprsentation des images

III-A. Matrice image


MATLAB peut lire des images codes sur 8, 16, 24 ou 32 bits. Mais le stockage de ces donnes 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 (rel 64 bits) de plage [0 1] (Plus gnralement : [-realmax realmax])

III-B. Objets graphiques reprsentant 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 gnralement utilis pour visualiser les images. Il est gnr soit par la fonction image, soit par la fonction imagesc. Cet objet a pour parent un objet conteneur de type Axes et il ne possde pas lui-mme d'objet enfant. La seule restriction concernant cet objet est qu'il est imprativement 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 proprits principales de cet objet sont : CData : matrice 2D ou 3D contenant les valeurs des pixels de l'image CDataMapping : interprtation des valeurs pixels sous forme de couleur (valeur 'direct' ou 'scale') XData : position dans le repre x0y du premier et du dernier pixel suivant l'axe x YData : position dans le repre x0y du premier et du dernier pixel suivant l'axe y La liste complte des proprits de l'objet Image est disponible ici.

6 sur 10

17/02/2013 10:15

Gestion des images sous MATLAB

http://briot-jerome.developpez.com/matlab/tutoriels/introduction-gestio...

Le code suivant montre la diffrence 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) : Slectionnez
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 rsultat 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 gnr par des fonctions comme : surf, surface, pcolor, ... Cet objet a pour parent un objet conteneur de type Axes et il ne possde pas d'objet enfant. La liste des proprits des objets Surface est disponible ici. Un point trs intressant de cet objet est qu'il peut galement servir appliquer une image comme texture sur une surface mathmatique. Le code ci-dessous montre comment plaquer l'image suivante (Projet Blue Marble - NASA's Earth Observatory) sur une sphre :

Slectionnez
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;

7 sur 10

17/02/2013 10:15

Gestion des images sous MATLAB

http://briot-jerome.developpez.com/matlab/tutoriels/introduction-gestio...

cosphi = cos(phi); cosphi(1) = 0; cosphi(n+1) = 0; sintheta = sin(theta); sintheta(1) = 0; sintheta(n+1) = 0; r x y z = = = = 1; r*cosphi*cos(theta); r*cosphi*sintheta; 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" ( faire tourner la sphre terrestre. IV. Ressources disponibles

) de la barre d'outils pour

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 V. Les images caches (Easter Eggs) De nombreux dveloppeurs MATLAB furent surpris, suite une mauvaise manipulation (l'appel de la fonction image sans argument), de voir apparaitre la photo d'un petit garon l'cran (qui plus est la tte l'envers) :

Steve Eddins a donn la cl de ce mystre dans son blog. Voici donc un programme permettant de visualiser les 15 images caches dans MATLAB depuis la version 5.0 : Slectionnez
function showhiddenimages defimage = pow2(get(0,'DefaultImageCData'),47);

8 sur 10

17/02/2013 10:15

Gestion des images sous MATLAB

http://briot-jerome.developpez.com/matlab/tutoriels/introduction-gestio...

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(:));

Commentaires sur ces images (toujours d'aprs Steve Eddins) : 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. le plus vieux des fils de Steve Eddins un chien appartenant un dveloppeur de MathWorks un autre chien appartenant un dveloppeur de MathWorks l'inverse de la matrice de Hilbert (3x3) le logo (initial et de mauvaise rsolution) de MathWorks le nombre prfr de Loren Shure le carr magique (3x3) le plus jeune des fils de Steve Eddins le carr magique cach dans la gravure de Albrecht Drer, Melancholia des pices de monnaie (en fait un calembour en anglais...) Loren Shure ge de 4 ans Wilkinson, Givens, and Forsythe, la Gatlinburg Conference de 1964 sur l'algbre numrique. 13. Steve Eddins lui-mme 14. l'image par dfaut de MATLAB 4 15. l'histoire du cochon jaune Sources : The Story Behind the MATLAB Default Image, par Steve Eddins Remerciements L'auteur tient remercier UNi[FR] et Winjerome pour la correction orthographique de cet article.

9 sur 10

17/02/2013 10:15

Gestion des images sous MATLAB

http://briot-jerome.developpez.com/matlab/tutoriels/introduction-gestio...

Copyright 2007-2013 Jrme Briot. Aucune reproduction, mme partielle, ne peut tre faite de ce site et 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 intrts. Cette page est dpose.

Responsable bnvole de la rubrique MATLAB : le Rdacteur en Chef - Contacter par email

Developpez.com
Nous contacter Participez Informations lgales

Services
Forum MATLAB Blogs Hbergement

Partenaires
Hbergement Web

Copyright 2000-2013 - www.developpez.com

10 sur 10

17/02/2013 10:15

Вам также может понравиться