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

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...

Plus en détail