Vous êtes sur la page 1sur 4

T P d e T raitem en t d Im ages M d icales

Dcembre 2006

Gwenal Brunet & Laurent Lecornu


D partem ent Im age et T raitem ent d e lInform ation
Ecole Nationale Suprieure des Tlcommunications de Bretagne (ENSTB)
Groupe des Ecoles des Tlcommunications (GET)
Gwenael.Brunet@enst-bretagne.fr, Laurent.Lecornu@enst-bretagne.fr

Introduction
Ce TP vous propose de directem ent m ettre en uvre quelques concepts clefs de Traitem ent dIm ages N um riques
appliqus diverses m odalits dIm agerie M dicale.Ilest en prolongem ent direct du TP Traitem ent dIm ages
Numriques ralis au cours de la deuxime anne.
Lobjectifprincipalde ce cours est de vous faire appliquer quelques traitem ents de base sur des im ages
slectionnes, afin de mieux comprendre comment ils fonctionnent, quoi ils servent, et galement de les mettre
en application en implmentant ces algorithmes dans un langage couramment utilis dans le milieu.

Rappels des principaux traitements


Oprateurs linaires
Pour rappel,ces oprateurs sont im plm ents en effectuant une convolution dun m asque sur une lim age traite.Il
existe diffrents masques, dont voici une partie :
Passe-bas (flou)
Filtre moyenneur Filtre gaussien
1/9

1/16

Passe-haut (contours)
X

Oprateur de Robert
Oprateur de Prewitt
Oprateur de Sobel

Filtre Laplacien

Oprateurs non linaires


Filtrage mdian
Le pixel tudi prend la valeur mdiane de son voisinage. Par exemple :
Tri: 16, 32, 55, 65, 76, 82, 100, 122, 150.
Valeur mdiane: 76.
La valeur centrale 100 est donc remplace par 76.
rosion
Le pixel tudi prend la valeur minimale de son voisinage. Par exemple :
Page |1

Tri: 16, 32, 55, 65, 76, 82, 100, 122, 150.
Valeur minimale : 16.
La valeur centrale 100 est donc remplace par 16.
Dilatation
Le pixel tudi prend la valeur maximale de son voisinage. Par exemple :
Tri: 16, 32, 55, 65, 76, 82, 100, 122, 150.
Valeur maximale : 150.
La valeur centrale 100 est donc remplace par 150.
Note :ilest coutum e dutiliser un enchanem ent des oprateurs drosion et de dilatation.Lorsque lon effectue une
rosion suivie dune dilatation,on parle d Ouverture ,et linverse,une dilatation suivie dune rosion,on parle
de Fermeture .
Autres traitements
Contraste

Seuillage

Histogramme

Le contraste seffectue par application dun coefficient m ultiplicateur au pixeltudi.


Lorsque ce coefficient est suprieur 1,le contraste est augm ent,lorsquilest compris
entre 0 et 1, le contraste est diminu.
Le seuillage consiste mettre zro (0) tous les pixels de niveau de gris infrieur un
seuil (127 par exemple), et 255 ceux qui sont suprieurs. On obtient ainsi une image en
noir et blanc, soit deux niveaux.
Lhistogram m e perm et dobtenir un graphique qui dcompte pour chaque valeur de
niveau de gris,le nom bre doccurrences de pixelquipossde cette valeur.Exemple :

Rappels de lapplication en langage C


1. Caractristiques de base des images numriques
Une image numrique est une matrice deux dimensions, reprsente du point de vue du langage C, par un
tableau deux dimensions "[][]" (double crochets).
Le prsent TP ne traitera pas de la gestion optimise proprement parler des images numriques, du point de
vue de la mmoire. Nous conviendrons donc, que chaque image correspond un emplacement mmoire de
taille prdterm ine (allocation de m m oire statique,par opposition lallocation de m m oire dynam ique).
D finir une variable pour une im age seffectue par consquent de la faon suivante :
unsigned char image[320][200];
Cette prem ire dclaration perm et de construire une im age dune taille de 320 pixels par 200. Le type utilis,
unsigned char ,indique quilsagit dune im age dont chaque pixelest cod sur 1 octet,soit 8 bits.8 bits
permettent de coder 28 niveaux, soit 256 (valeurs comprises entre 0 et 255, 0 reprsentant le noir, et 255 le
blanc).Lim age possde pour conclure,320*200 pixels,cods chacun sur 256 niveaux (du gris dans notre cas).
Pour information, chaque image "psera" ainsi 64000 octets, soit 62.5 Ko.
Accder un pixelest relativem ent sim ple.Suivant la dclaration prcdente,silon souhaite obtenir la valeur
du pixelprsent la position (115,28),ilsuffit dcrire :
unsigned char pixel ;
pixel = image[115][28];

Page |2

O u encore,"balayer" tous les pixels dune im age seffectue de la faon suivante (balayage ligne par ligne):
for( y=0; y<HAUTEUR_IMAGE; y++ )
for( x=0; x<LARGEUR_IMAGE; x++ )
pixel = image[x][y];
2. Le programme
Le prsent TP a pour objectif de raliser un certain nombre de traitements de base sur des images. Un squelette
de program m e est fourni,afin de sim plifier la m ise en uvre des m thodes.
Ce programme effectue les tches suivantes :
1.
2.
3.
4.

Dfinition de variables et de constantes utiles ;


lecture dune im age source ;
criture de lim age traite ;
affichage de lim age traite et de lim age source, laide dun program m e externe.

Ltudiant devra donc insrer ses algorithm es de traitem ent,entre la lecture de lim age source (tape 2),et
lcriture de lim age traite (tape 3).
Les variables dclares (cf. leur description ci-dessous)perm ettront dorienter la ralisation des traitem ents.
Type

Nom de la variable

unsigned char

image[LARGEUR][HAUTEUR]

unsigned char
unsigned char
unsigned char
char

char

Description
La matrice contenant l'image source
image2[LARGEUR][HAUTEUR]
Deux matrices pour une seconde image, ou une
imageTemp[LARGEUR][HAUTEUR]
image temporaire (traitements multiples)
imageT[LARGEUR][HAUTEUR]
La matrice de l'image aprs traitement
imageC[LARGEUR][HAUTEUR]
La m atrice dune ventuellem ent im age couleur
nomFichier[]
Le nom du fichier image lire, et qui sera utilise
pour tous les traitements. A modifier suivant les
traitements, par exemple : "images\\lena.raw"
nomFichier2[]
Le nom du deuxime fichier image lire. A modifier
suivant les images utilises, par exemple :
"images\\echoendo.raw"

char

nomFichierT[]

char

nomFichierC[]

int

x, y, i, j, n

FILE*

fichier

Le nom du fichier image crire.Ilsagit du fichier


qui contiendra le rsultat du ou des traitements, par
dfaut "images\\res.raw". Ilnest pas utile de
modifier le contenu.
Le nom du fichier de limage couleur, par dfaut
"images\\lena_color.raw"

Variables d'itration et autres


La variable fichier
int
pixel
Variable tampon pour stocker temporairement la
valeur dun pixel
float
fpixel
Variable tampon pour traitements ncessitant un
type de flottant
int
histogramme[256]
Vecteur contenant lhistogramme
histogramme_cum[256]
Vecteur contenant lhistogramme cumul
unsigned char
median[MEDIAN*MEDIAN]
Tableau pour le filtre mdian
char
str[256]
Variable texte temporaire
(les cases grises indiquent les variables dont les valeurs seront changer directement dans leur dclaration)

Page |3

Traitements implmenter
Voiciles quelques traitem ents que nous vous dem andons dim plm enter.Ils ne sont pas nombreux, aussi, prenez
votre temps et essayez de bien comprendre leur intrt ainsi que leur fonctionnement propre.
Mthode
Contraste

Description
Effectuer un contraste sur une im age radio dun fm ur,pour m ettre en
vidence des dtails.

Image(s) source
femur.raw

Histogramme

Raliser lhistogram m e dun ensem ble dim ages,afin den com parer les profils. femur.raw

thrombose.raw
radio.raw
irm2.raw

Fusion intramodalit

Implmenter une fusion entre deux images. Ces deux images ont la mme
taille et sont en niveaux de gris. Essayer diffrents oprateurs (+, -, min, max,
etc.).

Fusion intermodalit

Segmentation

irm_bw.raw
irm_c.raw

Effectuer une segmentation dune thrombose veineuse (image ultrason). Pour thrombose.raw
cela,raliser un seuillage suividun filtrage de type contour.Commencer par le
seuillage,en testant diffrentes valeurs de seuil,jusqu obtenir celuiquivous
parat le plus pertinent (il est galement possible deffectuer une analyse
dhistogram m e). Comparer ensuite diffrents rsultats provenant des
diffrents filtrages cits plus haut.

Ouverture

Implmenter une fusion entre deux images, cette fois, de modalits


diffrentes. La premire est en niveaux de gris,la seconde en couleur.Lim age
rsultante tant en niveaux de gris, convertir le pixel de couleur en niveau de
gris. Essayer diffrents oprateurs (+, -, etc.).

irm1.raw
irm2.raw

Effectuer une ouverture sur une image radio.

radio.raw

Page |4

Vous aimerez peut-être aussi