Beruflich Dokumente
Kultur Dokumente
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.
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 !
>> 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
>>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.
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 !
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)
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)