Annexe A : La transformation de FOURIER
Transcription
Annexe A : La transformation de FOURIER
ANNEXE OUTIL DE TRAITEMENT D’IMAGE DE MATLAB Dans cette dernière annexe, nous introduisons le fondement de l’utilisation de l’Outil traitement d’Image (Image processing Toolbox) dans MATLAB (version 6.5 R13). Cet outil fournit des fonctions très riches en traitement d’image numérique comme : les fonctions de représentation de l’image, les opérations de filtrage, l’analyse d’image, transformation et segmentation d’image. Cependant, dans cette section, nous n’examinerons que les fonctions indispensables pour la représentation et la transformation de l’image. Deux fonctions les plus importantes sont les fonctions de la transformation de Radon : radon et iradon. Ces fonctions nous permettent de simuler un système de Tomographie X actuelle. Annexe B. OUTIL DE TRAITEMENT D’IMAGE DE MATLAB 104 1. Introduction MATLAB est un outil et ainsi un langage de programmation très utile pour les techniciens, les mathématiciens et les informaticiens. Il a été actuellement appliqué dans de différents domaines scientifiques comme traitement de signal, analyse de données, acquisition de données en temps réel, réseaux de neurone, traitement d’image, et simulation. MATLAB expose ses points forts dans le calcul des opérations sur des matrices complexes et dans le traitement des grosses données. MATLAB présente l’Outil de traitement d’Image (Image processing Toolbox) particulièrement pour le traitement d’image numérique. Les types d’image supportés par cet outil sont très variés comme Z image d’index, Z image d’intensité, Z image binaire, Z image couleur (RGB). En outre, cet outil contient beaucoup de fonctions de traitement d’image comme : Z fonctions de lecture et de représentation de l’image, Z opérations géométriques : rotation, coupe et change de la taille d’image, Z groupe des opérations de filtrage : convolution, FIR1, méthode de fenêtrage, Z transformation d’image : Fourrier, Cosine, Radon, Z analyse et rehaussement : profil d’intensité, histogramme, détection de bord, ajustement du contraste, Z segmentation de l’image. Dans la partie suivante, nous présenterons les fonctions concernant la lecture et la représentation d’image. Nous introduisons ainsi les opérations fondamentales pour travailler avec l’histogramme de l’image et pour ajuster le contraste. Dans la dernière section, nous expliquerons deux fonctions importantes de la transformation de Radon dans MATLAB : la fonction radon et la fonction iradon. 1 FIR : Finite impulse response trongton© 2004 LA TRANSFORMATION DE RADON ET SON APPLICATION … 105 2. Les fonctions de traitement d’image 2.1. Lecture et représentation de l’image Pour lire la structure d’une image à partir d’un fichier, on utilise la fonction imread, syntaxe A = imread (filename, fmt). Le premier paramètre de cette fonction indique le chemin du fichier contenant l’image. Le deuxième est l’un des formats d’image supportés qui se trouvent dans le tableau suivant : Format Type du fichier ‘bmp’ Windows Bitmap (BMP) ‘cur’ Windows Cursor resources (CUR) ‘hdf’ Hierarchical Data Format (HDF) ‘ico’ Windows Icon resources (ICO) ‘jpg’ ou ‘jpeg’ Joint Photographic Experts Group (JPEG) ‘pcx’ Windows Paintbrush (PCX) ‘png’ Portable Network Graphics (PNG) ‘tif’ ou ‘tiff’ Tagged Image File Format (TIFF) ‘xwd’ X Windows Dump (XWD) Table 2-1 Des formats d’images supportés par MATLAB Par défaut, on peut réduire le deuxième paramètre car MATLAB identifie automatiquement le format de l’image en accédant à l’en-tête du fichier. On lit, par exemple, une image TIFF: I = imread('rice.tif'); Le fichier rice.tif est reconnu comme une image TIFF valide. La fonction lit immédiatement les données de cette image et les stocke dans la mémoire sous forme d’une matrice de deux dimensions. Pour vérifier la représentation de l’image dans la mémoire, on tape : Whos MATLAB repond: Name I Size 291x240 Bytes Class 69840 uint8 array où, le nombre 69840 manifeste le nombre total d’octets pour archiver cette image et chaque élément utilise seulement un octet (uint8) de la mémoire. trongton© 2004 Annexe B. OUTIL DE TRAITEMENT D’IMAGE DE MATLAB 106 Puis, on affiche image I sur l’écran par la fonction imshow figure, imshow(I) Figure 2-1 L’affichage de l’image rice.tif 2.2. Égalisation d’histogramme Histogramme est un diagramme statistique qui représente la distribution d’intensité d’une image d’index ou d’une image d’intensité. La fonction imhist nous permet d’observer l’histogramme d’une image entrée. figure, imhist(I) Figure 2-2 Histogramme de l’image rice.tif trongton© 2004 LA TRANSFORMATION DE RADON ET SON APPLICATION … 107 Dans cet histogramme, on observe que le nombre maximum des distributions de densité se concentre au tour de la valeur 100 du niveau de gris dû au fond foncé (dark-background) de l’image I. Donc, on peut régler le contraste et la distribution d’intensité de cette image en utilisant la fonction d’égalisation d’histogramme histeq. Cette fonction permet de redistribuer l’histogramme d’une image plus égale et plus large. Le contraste de l’image est donc plus élevé. J = histeq(I); imshow(I); figure, imshow(J) ; figure, imhist(J) ; Figure 2-3 Image J et son histogramme après exécuter la fonction d’égalisation histogramme 2.3. Ajustement du contraste Maintenant, l’image J devient un peu plus sombre. Donc, on utilise la fonction imadjust(I,[low_in high_in],[low_out high_out],gamma) en vue d’ajuster le contraste de cette image. I2 = imadjust(J, [0 max(J(:))], [0 1]); figure, imshow(I2); Regardons les deux vecteurs utilisés dans la syntaxe de cette fonction : [low high] et [bottom top]. En fournissant les valeurs de ces paramètres, MATLAB projette la valeur low trongton© 2004 Annexe B. OUTIL DE TRAITEMENT D’IMAGE DE MATLAB 108 dans l’image entrée à la valeur bottom dans l’image sortie. Il projette de façon similaire avec les valeurs hight et top. Pour les valeurs se trouvant au milieu de ces deux limites, MATLAB utilise l’opération d’interpolation linéaire pour les déduire. Figure 2-4 Le contraste de l’image rice.tif a été réglé abondamment en appliquant la fonction imadjust. 2.4. Enregistrement d’image sur disque Comment peut-on sauvegarder une image traitée sur le disque? MATLAB nous fournit la fonction qui s’appelle imwrite(A, filename, fmt). Le symbole A représente la matrice d’image qu’on veut stocker. Les deux paramètres filename et fmt ont le même sens que ceux de la fonction imread au dessus. Par exemple, si on veut sauvegarder l’image modifiée I2 (de l’image originale I1), la syntaxe de la commande est comme suit imwrite (I2, 'rice2.png'); Ici, l’extension choisie du fichier d’image sortie est PNG. MATLAB accepte ce format et écrit l’image sur le disque. L’image I2 est stockée dans la mémoire sous forme d’une image de 8-bits. Donc, pour diminuer la taille du fichier, on peut indiquer la valeur du paramètre bitdepth dans la fonction imwrite comme suit imwrite(I2, 'rice2.png', 'BitDepth', '4'); Dans cet exemple, on a diminué la profondeur de l’image jusqu’à une valeur de 4-bits. Pour vérifier le résultat, on tape dans la console du MATLAB la commande suivante imfinfo('rice2.png') trongton© 2004 LA TRANSFORMATION DE RADON ET SON APPLICATION … 109 MATLAB répond: ans = Filename: 'rice2.png' FileModDate: '03-Jun-2004 15:50:25' FileSize: 36938 Format: 'png' FormatVersion: [] Width: 240 Height: 291 BitDepth: 4 ColorType: 'grayscale' 3. La transformation de Radon dans MATLAB 3.1. La fonction radon La fonction radon calcule les projections d’une matrice d’image à certains angles précisés. Comme nous avons défini dans Chapitre 2, la projection d’une fonction de deux dimensions f(x, y) est déterminée par l’intégrale de curviligne à une direction spécifique. Par exemple, Figure 3-1 montre deux projections d’une fonction f(x, y). L’intégrale de ligne à la direction horizontale correspond à la projection de f(x, y) à l’axe Ox. L’intégrale de ligne à la direction verticale correspond à la projection de f(x, y) à l’axe Oy. trongton© 2004 Annexe B. OUTIL DE TRAITEMENT D’IMAGE DE MATLAB Projection à l’axe Oy 110 Projection à l’axe Ox Figure 3-1 Projection horizontale et projection verticale d’une fonction simple f(x, y) La syntaxe de la fonction radon qui calcule la transformation de Radon d’image I à de certains angles theta spécifiés se présente comme suit : [R,xp] = radon(I,theta); Le résultat de cette dernière donne une matrice R de deux dimensions et un vecteur xp. Les colonnes de R contiennent la transformation de Radon à chaque angle de projection dans theta. Le vecteur xp contient des coordonnées correspondantes au long de l’axe Ox. Les commandes au dessous calculent et désignent la transformation de Radon à l’angle theta = 0 et theta = 45 d’un carré simple. I = zeros(100,100); I(25:75, 25:75) = 1; imshow(I) trongton© 2004 LA TRANSFORMATION DE RADON ET SON APPLICATION … 111 [R,xp] = radon(I,[0 45]); figure; plot(xp,R(:,1)); title('R_{0^o} (x\prime)') figure; plot(xp,R(:,2)); title('R_{45^o} (x\prime)') Figure 3-2 Deux projections à l’angle theta = 0 et theta = 45 d’un carré. Si on veut simuler un système de Tomographique X, on doit calculer l’ensemble des projections de fonction f(x, y) dans un plus grand nombre d’angles : de 0o à 180o avec incrément de 1o. En complétant toutes ces projections, on obtient une matrice entière de la transformation de Radon de fonction f(x, y). theta = 0:180; %180 d’angles de projections [R,xp] = radon(I,theta); imagesc(theta,xp,R); % sinogramme de la transformation de Radon title('R_{\theta} (X\prime)'); xlabel('\theta (degrees)'); ylabel('X\prime'); set(gca,'XTick',0:20:180); colormap(hot); colorbar trongton© 2004 Annexe B. OUTIL DE TRAITEMENT D’IMAGE DE MATLAB 112 Figure 3-3 Sinogramme de la transformation de Radon prise par 180 angles de projection. 3.2. La fonction iradon La fonction iradon est utilisée pour calculer la transformation de Radon inverse de la transformée de Radon de fonction f(x, y). Dans le cas de l’image I, elle reconstruit l’image originaire à partir des mesures de ses projections en géométrie parallèle. En fait, cette fonction est une implémentation de l’algorithme de rétro-projection des projections filtrées version discrète. Le temps d’exécution de cette dernière est plutôt rapide (acceptable) en comparant avec des applications de la tomographie usuelle. De plus, la qualité de l’image reconstruite satisfait la demande des applications médicales normales. Comme on a discuté dans Section 3.1, la fonction radon nous donne la matrice de Radon d’une image I de l’ensemble d’angles de projection précisée theta. Pour calculer la transformation de Radon inverse, on applique la fonction iradon avec les syntaxes comme suit : I = iradon(P,theta) I = iradon(P,theta,interp,filter,d,n) La première est simplement la forme réduite de la deuxième. Ensuite, on va expliquer en détail des paramètres de la deuxième syntaxe. trongton© 2004 LA TRANSFORMATION DE RADON ET SON APPLICATION … 113 P dénote la matrice de transformation de Radon. Les colonnes de P sont les données de projection en géométrie parallèle. Le symbole theta décrit des angles de rétro-projection. La valeur de theta est soit un vecteur qui contient les angles de rétro-projection, soit un nombre scalaire D_theta qui représente l’incrément d’angle entre les deux projetions. Si on utilise la grandeur scalaire D_theta, la valeur de theta peut être déduite par la formule suivante : theta = m*D_theta, m = 0, 1, 2, …, size(P, 2) – 1. L’option interp spécifie le type d’algorithme d’interpolation appliqué dans la phase de rétro-projection. La liste suivante classe les noms d’algorithme dans son ordre d’augmentation de la précision et de la complexité. Z 'nearest' – nearest neighbor interpolation, Z 'linear' – linear interpolation (par défaut), Z 'spline' – spline interpolation. L’option filter détermine la méthode du filtrage utilisée dans la phase de filtrage des projections. Elle peut comporter l’un des filtres suivants : Z 'Ram-Lak' – Filtre rampe (par défaut), Z 'Shepp-Logan' – Filtre Shepp-Logan, Z 'Cosine' – Filtre cosine, Z 'Hamming' – Filtre Hamming, Z 'Hann' – Filtre Hann. d est un nombre scalaire à support compact (0, 1]. Par défaut, la valeur de d est 1. Si on modifie cette valeur, le domaine fréquentiel du filtre est compressé dans une rangée de [0, d]. La valeur n est aussi un nombre scalaire qui décide la taille de l’image reconstruite. Par défaut, cette valeur est calculée par la formule suivante : n = 2*floor(size(P,1)/(2*sqrt(2))) Pour la démonstration de l’application de fonction iradon, on réutilise l’exemple du fantôme tête de Shepp– Logan dans Chapitre 3. La commande suivante représente l’image d’une tête à la taille 128x128 pixels. P = phantom(128); imshow(P) ; trongton© 2004 Annexe B. OUTIL DE TRAITEMENT D’IMAGE DE MATLAB 114 Et puis, on calcule la transformation de Radon avec différents angles de projection. theta1 = 0:10:170; [R1,xp] = radon(P,theta1); theta2 = 0:5:175; [R2,xp] = radon(P,theta2); theta3 = 0:2:178; [R3,xp] = radon(P,theta3); Enfin, on utilise la fonction de transformation de Radon inverse pour reconstruire l’image du fantôme tête à différents angles de projection. I1 = iradon(R1,10); figure, imshow(I1); I2 = iradon(R2,5); figure, imshow(I2); I3 = iradon(R3,2); figure, imshow(I3); I1 (18 projections) I2 (36 projections) I3 (90 projections) Figure 3-4 Représentation des images reconstruites du fantôme tête de Shepp – Logan. trongton© 2004
Documents pareils
Traitement d`images, TP1 Manipulations d`images en Matlab
On calcule et visualise l’histogramme d’une image en nuances de gris avec la commande hist.
L’histogramme est un outil simple pour ajuster la dynamique d’une image, c’est-à-dire la distribution des...