ANNEXE OUTIL DE TRAITEMENT D’I MATLAB - …trongton.free.fr/memoire/pdf/Annexe B - Outil de...

12
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 OUTIL DE TRAITEMENT D’IMAGE DE MATLAB

Transcript of ANNEXE OUTIL DE TRAITEMENT D’I MATLAB - …trongton.free.fr/memoire/pdf/Annexe B - Outil de...

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

OUTIL DE TRAITEMENT

D’IMAGE DE MATLAB

104 Annexe B. OUTIL DE TRAITEMENT D’IMAGE DE MATLAB

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

image d’index,

image d’intensité,

image binaire,

image couleur (RGB).

En outre, cet outil contient beaucoup de fonctions de traitement d’image comme :

fonctions de lecture et de représentation de l’image,

opérations géométriques : rotation, coupe et change de la taille d’image,

groupe des opérations de filtrage : convolution, FIR1, méthode de fenêtrage,

transformation d’image : Fourrier, Cosine, Radon,

analyse et rehaussement : profil d’intensité, histogramme, détection de bord,

ajustement du contraste,

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 Size Bytes Class

I 291x240 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

106 Annexe B. OUTIL DE TRAITEMENT D’IMAGE DE MATLAB

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

108 Annexe B. OUTIL DE TRAITEMENT D’IMAGE DE MATLAB

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

110 Annexe B. OUTIL DE TRAITEMENT D’IMAGE DE MATLAB

Proj

ectio

n à

l’axe

Oy

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

112 Annexe B. OUTIL DE TRAITEMENT D’IMAGE DE MATLAB

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

'nearest' – nearest neighbor interpolation,

'linear' – linear interpolation (par défaut),

'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 :

'Ram-Lak' – Filtre rampe (par défaut),

'Shepp-Logan' – Filtre Shepp-Logan,

'Cosine' – Filtre cosine,

'Hamming' – Filtre Hamming,

'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

114 Annexe B. OUTIL DE TRAITEMENT D’IMAGE DE MATLAB

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