Sie sind auf Seite 1von 10

1

INSTITUT DE GNIE BIOMDICAL COLE POLYTECHNIQUE GBM-3318 IMAGERIE MDICALE GUIDE DE LABORATOIRE
Auteur de la premire version : Michel Bertrand

INTRODUCTION MATLAB
PROFESSEUR : Julien Cohen-Adad ASSISTANTS : Michle Desjardins Samuel Blanger

HIVER 2013

1. PRSENTATION GNRALE DES TRAVAUX PRATIQUES Les leons du cours GBM3318 sont accompagnes de travaux pratiques. Ces sances permettront d'illustrer les notions prsentes au cours en offrant l'occasion d'exprimenter diverses techniques de traitement et d'analyse d'images appliques au domaine biomdical. Ces travaux pratiques sont raliss dans l'environnement Matlab. Pour l'utilisateur, Matlab est la fois un langage de programmation et un progiciel. Comme langage de programmation, son principal attrait tient ce qu'il opre comme un interprteur. Comme pour le langage BASIC, les instructions entres au clavier, ou provenant de fichiers ASCII (les M-File dextension .m), sont excutes directement sans que l'usager ait besoin de les compiler, et les calculs sont souvent quasi instantans. Le langage de programmation Matlab permet aussi de construire des instructions vectorielles, c.--d. des instructions simples et compactes oprant de faon indpendante sur chacun des lments d'un vecteur ou d'une matrice; notons que cette forme de reprsentation et de manipulation des donnes convient particulirement bien au traitement des signaux (vecteurs) ou des images (matrices) de mme qu' l'analyse et la simulation des systmes biologiques. En tant que progiciel, Matlab offre un choix trs riche de fonctions de haut niveau. Ces fonctions sont soit intrinsques (le terme anglais est : built-in functions), soit externes. Les fonctions intrinsques sont prcompiles et charges en mmoire avec Matlab, et prtes tre excutes. Les fonctions externes prennent le plus souvent la forme dun fichier source et, par consquent, peuvent tre directement lues lcran, imprimes et surtout modifies pour satisfaire les besoins particuliers de lutilisateur. Elles ont lextension .m et sont interprtes par MATLAB avant dtre excutes. Plus rarement, les fonctions de librairies externes sont prcompiles; leurs fichiers ont lextension .mex. Ces fonctions font partie de la librairie externe standard ou encore de librairies spcialises pour certains types d'applications. Les librairies spcialises sont appeles toolbox; ainsi, pour les travaux pratiques dont il est question ici, on fera appel au toolbox Signal Processing, au toolbox Image Processing de mme qu' quelques fonctions crites pour simplifier les exercices et rpondre plus directement aux objectifs viss dans le cours.

2. OBJECTIF DE LA SANCE D'INTRODUCTION


Cette sance d'introduction a pour principal objectif de permettre de se familiariser avec l'environnement de travail et avec la programmation Matlab. l'aide d'exemples, vous aurez l'occasion de voir comment on peut utiliser le langage Matlab pour la manipulation et le traitement des

images, et d'exprimenter l'utilisation de fonctions disponibles pour faciliter la ralisation de traitements complexes. Il sagit surtout de donner un point de dpart pour vous permettre dexplorer Matlab par vous-mmes.

3. ENVIRONNEMENT MATLAB
Vous pourrez lancer Matlab partir du raccourci dans le dossier Bureau/Logiciels/matlab. Vous obtiendrez alors la fentre dapplication Matlab, dans laquelle vous verrez trois fentres : 1. La premire fentre comporte deux onglets : Current Directory, qui montre le contenu du rpertoire dans lequel Matlab travaille actuellement ; et Workspace, qui numre les variables actuellement charges en mmoire et pouvant tre utilises pour des oprations. 2. La fentre Command History, qui garde lhistorique des lignes que vous excutez. 3. La fentre Command Window, dans laquelle il faut taper les commandes Matlab excuter, et qui est videmment la fentre la plus importante. Nous vous recommandons dutiliser lditeur de Matlab, lanc par la commande edit, pour diter et sauvegarder vos programmes. Ainsi, si vous enregistrez dans le dossier actuel un nouveau fichier script.m contenant quelques lignes de code, il suffit de tapper script dans la Fentre de commandes poour excuter ce code. Ladresse du dossier actuel dans lequel Matlab cherche et enregistre les fichiers par dfaut est crite en haut de la fentre de commandes ( Current directory : G:\MesProgrammes , par exemple). Nous vous conseilllons de crer un nouveau rpertoire pour chaque projet et dy enregistrer tous les fichiers pertinents. Plusieurs commandes semblables celles de UNIX ou de DOS sont disponibles l'intrieur de l'environnement Matlab (dir, ls, cd, type, ...). Les commentaires sont marqus par un signe % (i.e. les instructions suivant le signe % sur une mme ligne ne sont pas excutes). Nous vous recommandons fortement de garnir vos scripts de commentaires afin dexpliquer vos dmarches et de les rendre lisibles pour autrui !

3.1 Fonctions d'aide


Matlab jouit dune documentation extrmement riche et accessible. En slectionnant le menu Help > Product Help, ouvrez la fentre Help. En plus dun index dtaill sous longlet du mme nom, longlet Search Results permet de rechercher ( Search for : ) de linformation complte sur tout ce que vous voulez accomplir dans Matlab. Vous pouvez chercher en entrant le nom dune fonction Matlab que vous connaissez (quivalent la commande >> doc nom_de_cette_fonction dans la fentre de commandes), ou encore un sujet ou une opration que vous dsirez excuter sans savoir comment. Chaque fois que vous tes aux prises avec un problme dans vos codes, nous vous suggrons dabord de consulter la documentation. La commande : commande : >> help >> help ledit_sujet >> help graph2d >> help images donne une liste des fonctions graphiques 2D et des fonctions du toolbox Image Processing offertes par Matlab. Plusieurs vous seront utiles. Enfin, on obtient de laide sur lutilisation dune fonction en particulier en tappant : >> help <fonction>. Par exemple, essayez : >> help sqrt >> help plot Ltudiant qui ne connat pas Matlab, ou encore un des toolboxes, pourra trouver utile d'excuter les programmes de dmonstration appropris. Plusieurs dmonstrations sont accessibles sous lonlet Demos de la fentre Help ou en tappant : >> demo Pour une introduction quelques concepts-cls de Matlab, nous vous suggrons de lancer les dmonstrations suivantes : Matlab : Mathematics : Basic matrix operations Matlab : Mathematics : Matrix manipulations Matlab : Mathematics : Using FFT in MATLAB (pour effectuer des transformes de Fourier, opration assez frquente en traitement de signaux/dimages!) Matlab : Graphics : 2-D plots produit une liste de sujets regroupant les fonctions disponibles dans l'environnement Matlab. La permet d'obtenir la liste des fonctions regroupes sous ce sujet. Par exemple :

3.2 Erreurs courantes et petits trucs


a) Une erreur frquente et aux consquences importantes est la confusion entre loprateur .* et loprateur *. Le premier (.*) permet une multiplication terme terme des lments dune matrice ; le second (*) est le produit matriciel. (Cela vaut aussi pour les oprateurs division ./ et / ainsi que exposant .^ et ^). >> mat1 = ones(2) mat1 = 1 1 ans = 1 1 ans = 2 2 2 2 1 1 1 1

>> mat1.*mat1

>> mat1*mat1

b) Pour empcher laffichage des rsultats dans la fentre Command, ajoutez un ; la fin de votre ligne. >> mat1 = rand(2,4) mat1 = 0.9501 0.2311 0.6068 0.4860 0.8913 0.7621 0.4565 0.0185

>> mat1 = rand(2,4); c) Pour arrter le dfilement de laffichage dune immense matrice lcran, ou pour stopper lexcution dun programme, tapez Ctrl-C. Pour effacer toutes les variables en mmoire (nettoyer le Workspace), utilisez la commande clear all. d) Les flches permettent de circuler dans lhistorique des commandes. Par exemple, si vous rptez la commande plot(vect1), il suffit dentrer p et ensuite dutiliser la flche vers le haut pour que soit affiches une une toutes les commandes qui dbutaient par p, et seulement celles-l.

e) Lindiage dans les matrices est sous la forme (ligne, colonne). Par exemple : >> bob = [1 2 3; 4 5 6] bob = 1 4 2 5 3 6

Llment la seconde ligne, premire colonne : >> bob(2,1) ans = 4 Pour extraire toutes les colonnes (ou les lignes), on utilise le : : >> bob(1,:) ans = 1 2 3

3.3 Chemin daccs aux fonctions et rpertoire courant


Lorsquune fonction est appele, Matlab entreprend de la chercher selon la procdure suivante : Supposons que vous venez dentrer lnonc : >>mon_enonce(3) 1) D'abord Matlab vrifie si l'tiquette utilise n'est pas celle d'une variable dj dfinie; dans ce cas, il utilise la variable dans l'nonc o elle est cite. 2) Matlab vrifie ensuite s'il s'agit pas d'une fonction interne, et l'excute si c'est le cas. 3) Sinon Matlab explore le rpertoire courant et cherche un fichier mon_enonce.m ou mon_enonce.mex. Si ce fichier n'y est pas, 4) Matlab explore tous les rpertoires dfinis dans le chemin d'accs Matlab (appel path ; nous nen discutertons pas ici.) pour y retrouver mon_enonce.m ou mon_enonce.mex et lexcute s'il le trouve, sinon le message d'erreur suivant apparat l'cran : ??? Undefined function or variable mon_enonce. L'nonc pwd permet de connatre le rpertoire courant. Lorsque Matlab cherche une fonction, il arrte sa recherche aussitt quil a trouv la premire manifestation de la fonction et ne donne aucun message davertissement si la mme fonction se trouve plus loin dans la liste. Par exemple, Matlab vous permet dappeler une variable sin. Mais alors lnonc

>>sin(2) ne retourne plus le sinus de 2, mais plutt le deuxime lment de la variable sin. Cet exemple est un peu extrme et il est fort peu probable que vous nommiez une de vos variables dun nom comme sin ou encore exp. Par contre, il est assez commun de donner le mme nom deux fonctions qui sont dans des rpertoires diffrents. Suivant sa procdure de recherche de fonction, Matlab utilisera la premire manifestation de la fonction quil trouvera, et vous aurez un bogue qui peut vous faire perdre quelques heures.

4. VISUALISATION et manipulation D'IMAGES


Effectuez une une les lignes de commande suivantes pour charger une image puis lillustrer laide de la fonction imagesc (noubliez pas la commande doc imagesc !) : >> clear % Nettoie le "Workspace" >> load clown; % Charge le fichier contenant l'image (Matlab sait o le % trouver) >> figure; >> imagesc(X) % Illustre l'image avec la palette de couleurs par dfaut >> colorbar % Fait apparatre l'chelle des couleurs >> colormap gray % Utilise plutt une palette de couleurs noir et blanc >> clims = [20 50]; >> figure, imagesc(X,clims), colorbar, colormap gray % Ici seules les valeurs entre 20 et 50 sont illustres avec toutes les % teintes de la palette "gray": tous les pixels qui valent plus de 50 ont % la mme couleur la plus brillante et tous les pixels qui valent moins % de 20 ont la mme couleur la plus sombre.) %(Par dfaut, si on ne spcifie pas "clims", % il s'agira des valeurs minimale et maximale de l'image, c--d. que %'imagesc(X)' quivaut 'imagesc(X,[min(min(X)) max(max(X))])'). Pour tourner une image de 90 ou k fois 90 : >> X2 = rot90(X); >> X3 = rot90(X,k); Matlab permet de construire des matrices boolennes (0/1), que l'on utilise ensuite comme masque pour oprer sur une image. Par exemple : >> masque = X > 50; % % % % % Pour crer une nouvelle image masque avec des intensits gales la premire, l o le masque est actif (=1) et zro ailleurs, on utilise l'oprateur point-toile (.*) entre le masque et l'image traiter; cet oprateur signifie une multiplication lment par lment entre les matrices :
o o

Xmasque = X.*masque; % Pour voir l'effet de l'opration : figure, imagesc(Xmasque), colormap gray; % Les oprateurs boolens peuvent tre combins pour isoler des rgions % de manire plus complexe. Par exemple, pour isoler et afficher les points % d'intensit de l'image compris entre les niveaux 30 et 50 : masque_minmax = ((X > 15) & (X < 45)); Y = masque_minmax .* X; figure, imagesc(Y), colormap gray;

En conclusion, vous apprendrez vite (si vous ne le savez pas dj) que mme ceux et celles qui connaissent Matlab depuis plusieurs annes continuent den apprendre. On dcouvre au fur et mesure quon en a besoin, do lutilit du Matlab Help !

Exercices facultatifs suggrs (ne sont pas remettre !)


Gnral 1. Produire la matrice suivante en peu de lignes de code : 1111111131 2222222222 1111111131 1141111311 Crer un vecteur temps de 1024 points chantillonn 1000 Hz Crer un sinus 50 Hz (amplitude de 0.7) (sin) Crer un cosinus 120 Hz (amplitude de 1) (cos) Crer un signal de bruit gaussien de moyenne 2 et d'cart type de 1 ( randn) Additionner tous ces signaux Afficher les 4 signaux sur le mme graphique (plot) Ajouter : les axes, un titre et une lgende (axes, title et legend) Modifier lpaisseur dune courbe Afficher une courbe en pointill Agrandir le texte

Crer un signal bruit 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Filtrage

1. Filtrer le signal bruit laide dun filtrage de Butterworth de deuxime ordre passe bas 1 Hz. ( butter et filter ) 2. Effectuer un fentrage (hanning ) 3. Filtrer le signal laide dun filtrage de Butterworth de deuxime ordre passe haut 20 Hz. 4. Afficher les 4 courbes sur 4 graphiques diffrents ( subplot ) Transforme de Fourier 1. 2. 3. 4. 5. 6. 7. Prendre le signal bruit. Effectuer la transforme de Fourier (fft). Afficher si signal obtenu Afficher le spectre avec les frquences rduites allant de - (fftshift) Afficher le spectre avec les frquences en Hz. Prendre le signal initial filtr et le sous-chantillonner (1 point sur 9) Afficher le spectre du signal sous-chantillonn

Fonction 3D 1. 2. 3. 4. 5. Utiliser la fonction meshgrid pour former les matrices pour les graphiques 3 Former une matrice o z(x,y)=sin(2*pi*(20*x+10*y)) Afficher z(x,y) (imagesc et surf) Afficher z(x,y) en nuance de gris (colomap) Ajouter le barre de couleur (colorbar)

Impression dune figure 1. Copier une figure dans word (FigureToolbar>edit>copyfigure )

10

2. 3. 4. 5.

Agrandir la fentre dune figure et recopier la figure dans word Dactiver loption match figure streen size ( Edit> Copy option) Recopier la figure dans word Observer les diffrences

Reformer une matrice 3D Les donnes recueillies sont une suite de colonnes (z) correspondant aux donnes recueillies lorsque le transducteur se trouve la position (xi,yi) Il est ncessaire de rorganiser les donnes recueillies sous forme de volume.

Figure 1 Schma d'acquisition de donnes par le transducteur 1. Charger le fichier labo0.mat - La variable parcours est constitue de position (x,y) lors de chacun des scan - La variable scan1 contient les donnes selon laxe des z pour un point (xi,yi) 2. Trouver le nombre de colonnes en x 3. Trouver le nombre de colonnes en y 4. Trouver le nombre de colonnes en z 5. Crer un vecteur associant chacune des valeurs en x (de parcours) un index positif 6. Crer un vecteur associant chacune des valeurs en y (de parcours) un index positif 7. Crer un volume de la bonne dimension 8. Placer chacune des colonnes de scan1 dans la matrice que vous avez cre me 9. Afficher la 20 tranche de la matrice (z=20)

Das könnte Ihnen auch gefallen