Sie sind auf Seite 1von 33

UL8 PROJET MATLAB

TRAITEMENT DIMAGES
CONVOLUTION ET RESTAURATION DIMAGES

RIVIERE Nicolas

Universit Paul Sabatier Toulouse III - Licence de Physique - Juin 2000

SOMMAIRE

Rappel du sujet ...

Introduction . 2

Position du problme et dfinitions ...

Mthodes de traitement .. 6
Traitement, conservation et perte de linformation .. 6
Transformations ponctuelles (moyenne, mdiane, transformation spciale) ... 6
Rduction de bruit et moyenne . 9
Rduction de bruit par algorithme 9
Transforme de Fourier 10
Transforme par ondelettes .. 11

Comparaison des rsultats . 13

Conclusion ...

15

Bibliographie ... 16

Annexes (publications, scripts des programmes) .

17

RAPPEL DU SUJET

A partir dun signal deux dimensions et considr comme tant idal, ce projet consiste tudier les
principes de convolutions numriques. Aprs avoir modlis une chane dacquisition, nous essaierons
de reconstituer un signal correct, dpourvu de tout bruit parasite. Enfin, nous regarderons quelle
mthode est privilgier pour ltude dune image dgrade, celle dun chat.

Nicolas RIVIERE 2000 page 1

INTRODUCTION

Les objets auxquels sintressent notamment lastrophysique, la tldtection spatiale ou la


mtorologie, ne sont, par nature, pas accessibles lexprience directe (pas de contrle des
paramtres externes). Ainsi limagerie constitue-t-elle lunique moyen daccder aux paramtres
physiques et gomtriques des systmes tudis.

La distance gomtrique qui spare lexprimentateur du systme impose lutilisation dinstruments ;


en effet la seule observation visuelle ne permet pas de collecter une quantit suffisante dinformations
car lil humain - qui peut tre considr comme un instrument - a des performances limites
(frquence de coupure incohrente, rsolution angulaire, sensibilit, ).

La mise en place de tels dispositifs peut tre dcrite par la situation suivante :

Emission

Chane d e stimulation

Systme

Environnement

Systme de
contrle et
dacquisition

(2)

(1)

(4)
(3)

Rception

Instrument
figure.1.a
(1)

Informations sur le systme modifies ventuellement par lenvironnement.


Informations sur lenvironnement = parasites et/ou bruit de fond.
(3)
Fonction de transfert de lappareil (dfauts + rponse).
(4)
Bruit dlectronique.
(2)

Lorsque la chane de stimulation (partie suprieure du diagramme) nest pas prsente, on aboutit au diagramme
suivant, o le problme de linteraction entre la stimulation et lenvironnement ne se pose pas.

(2)
(3)

Systme

Environnement

(1)
(4)

Rception

Systme de
contrle et
dacquisition

Instrument
figure.1.b

Nicolas RIVIERE 2000 page 2

Evidemment dans ce cas on na plus de contrle sur lenvironnement. Si on considre, dans un premier
temps, que linformation collecter est constitue de la runion de celle relative au systme et de celle
relative lenvironnement, on doit alors saffranchir des perturbations lies linstrument. Pour cela
deux possibilits sont envisageables :
-

soit amliorer les performances des instruments,

soit recourir au traitement numrique.

Le premier cas induit ncessairement une augmentation du budget allou la ralisation. En revanche,
la seconde solution est aise mettre en uvre et permet de diminuer le cot de conception.

Nicolas RIVIERE 2000 page 3

POSITION DU PROBLEME - DEFINITIONS

Pour illustrer les principales transformations que l'on peut oprer sur une image nous prendrons
l'image d'un chat.
Afin de simuler le rsultat de l'acquisition de l'image par un instrument (chane d'acquisition), nous
avons convolu l'image initiale I par une matrice reprsentant une fonction de transfert gaussienne,
la suite de quoi nous avons superpos un bruit ( densit spectrale constante), matrice gnre par la
fonction rand de MatLab :

Pour gnrer la matrice de flou F, nous avons construit une matrice carre de rang p impair dont la
valeur centrale ( [ (p+1)/2 ; (p+1)/2 ] ) correspond la valeur maximale de la gaussienne (=1) et dont
l'extension, en pixels, est fixe par le paramtre sigma. L'image dgrade est obtenue en appliquant la
fonction conv2(chat, flou, 'same') 1.

La condition 'same' permet de conserver la taille originale de l'image aprs convolution.

Nicolas RIVIERE 2000 page 4

Le bruit B a les mmes dimensions que l'image ainsi, on peut additionner ces deux matrices pour
simuler le rsultat R de lopration dacquisition de limage par un instrument sommaire.

Il convient maintenant de dterminer quelle procdure nous devons utiliser pour restituer limage
initiale en veillant minimiser la perte dinformation. En effet, on peut crire R = I F + B . En
inversant cette relation, on peut (thoriquement) retrouver limage initiale selon I = ( R B ) F 1 .
Or B ne peut pas tre strictement dtermin, ce qui complique le problme.

Cette premire analyse nous conduit donc rechercher un algorithme visant estomper voire
extraire le bruit de limage. Pour cela deux voies nous semblent intressantes :
-

les transformations ponctuelles (moyenne et mdiane),

la transforme de Fourier.

Nicolas RIVIERE 2000 page 5

METHODES DE TRAITEMENT

o TRAITEMENT, CONSERVATION ET PERTE DE LINFORMATION

Avant dtudier plus en dtails les transformations voques prcdemment, il est important de
remarquer que tout traitement engendre ncessairement une perte dinformation. Pour lillustrer,
considrons une image laquelle on a ajout du bruit ; on peut montrer que la convolution de cette
image par une gaussienne quivaut un filtre passe-bas permettant ainsi de rduire le bruit souvent
caractris par des hautes frquences spatiales. La frquence de coupure est fonction de la largeur de la
gaussienne et, si celle-ci est trop troite dans lespace rciproque, on perd toute linformation. Le
graphique suivant nous impose un savant dosage entre un nombre ditrations trop faible ou trop
important.

Perte dinfo
/
Qt de bruit

Paramtre /
Nbre ditrations
- Reprsentation qualitative de la perte dinformation -

o TRANSFORMATIONS PONCTUELLES

MOYENNE

Si on considre un environnement 3x3, la moyenne est la valeur que lon affecte au pixel central et
qui est la moyenne (pondre ou non) des valeurs des niveaux des pixels de lenvironnement. Dans
limage qui nous intresse, les niveaux se rpartissent de 0 255 2, 0 pour le noir, 255 pour le blanc.
La moyenne non pondre se traduit par la convolution de limage par la matrice

0 255 reprsente 256 niveaux i.e. 28 on pourra donc coder sur 8 bits.

Nicolas RIVIERE 2000 page 6

1 1 1

1
1 1 1
9

1 1 1

- Chat original -

- Chat trait par la mthode Mdiane -

MEDIANE

La mthode de la mdiane quant elle seffectue de la manire suivante : on classe les valeurs de
lenvironnement par ordre croissant et on affecte au pixel central le niveau du pixel situ au milieu
de la liste cest dire la mdiane au sens statistique do le nom donn cette transformation.

1 1 2
X
2 4 4 X
Lmdiane L
3 7 8 1,1,2,2,3,4,4,7,8
X

X
3
X

X
X
X

Remarque : De par son principe, la convolution numrique de matrices pose un problme aux
bords de la matrice. Pour pallier cet inconvnient, on augmente la taille de limage en appliquant
un miroir sur les quatre directions. On conserve ainsi toute linformation statistique contrairement
la mthode qui consiste agrandir limage avec des zros .

3 2 2 3 4 5 5 4
2 1 1 2 3 4 4 3
2
3
4
5

1
2
3
4

1
2
3
4

2
3
4
5

3
4
5
6

4
5
6
7

4
5
6
7

3
4
5
6

5 4 4 5 6 7 7 6
4 3 3 4 5 6 6 5

Nicolas RIVIERE 2000 page 7

q TRANSFORMATION SPECIALE

Nous avons dvelopp une troisime mthode qui sappuie sur lautocorrlation et sur les proprits
statistiques de la moyenne par rapport au bruit. En effet, lautocorrlation augmente gnralement le
rapport signal sur bruit, ce qui est notre but recherch. Mais, nous voulons conserver linformation et
la structure locale de limage. Nous avons donc effectu, dans une premire tape, une
autocorrlation locale (typiquement, un environnement n x n). Le rsultat ainsi obtenu (pav n x n)
peut, en terme de valeurs, tre considr comme une lvation au carr de lintensit. Une question se
pose ce stade de la rflexion : doit-on affecter la valeur moyenne du rsultat puis en prendre la racine
carre ou, doit-on prendre la racine carre avant de raliser la moyenne ? Dans le programme, nous
avons choisi de raliser la premire solution.

Remarque : Si on ne prend pas le soin de prendre la racine carre, on obtient une saturation de la
dynamique de limage (image trop sombre).

Nicolas RIVIERE 2000 page 8

q REDUCTION DE BRUIT ET MOYENNE

Une solution peut tre envisage afin de conserver les proprits locales de limage :
lautoconvolution locale. Dans ce cas, on tient compte de la structure locale de limage et on limine
le bruit qui na pas de corrlation entre les diffrents points et qui se trouve ainsi gomm par
lautoconvolution. En appliquant la mthode de la moyenne dcrite ci-dessus, sur la zone calcule, on
augmente lefficacit du processus dattnuation de bruit tout en limitant la perte dinformation.
La combinaison de ces deux mthodes (moyenne et convolution) nous donne dexcellents rsultats
lorsquil sagit de traiter un signal fortement bruit.

q REDUCTION DE BRUIT PAR ALGORITHME

Jusqu prsent, nous ralisions une tude non itrative de limage. Lalgorithme de Van-Cittert
permet de traiter le signal en appliquant un processus itratif qui attnue le bruit. Le problme li
cette mthode consiste au fait que lon ne sait pas exactement quand il faut stopper la rcurrence. Un
examen des rsultats montre quil suffit de quelques itrations (une dizaine) pour converger vers une
image plus nette. De plus, si lon augmente le nombre de passages, on dtriore limage en faisant
apparatre des artefacts de calculs. Il convient donc de matriser les paramtres avant de raliser cet
algorithme.
Le coefficient de relaxation a est en gnral assez difficile mettre en uvre mais, nous pouvons lui
donner une valeur comprise entre 0 et 1. Pour lalgorithme de Van-Cittert, on aura a qui sera gal 1
alors que pour celui de Jansson, le coefficient est proche de 0,1. Ce terme apparat dans lalgorithme
de Van-Cittert :
I k + 1 ( x , y ) = I k ( x , y ) + a ( x , y ) [I 0 ( x , y ) ( I k ( x , y ) PSF )]

avec k ordre de rcurrence


a coefficient de relaxation
I0 Image traiter
On voit quil est ncessaire de connatre la PSF. Il existe des algorithmes permettant de la dterminer
mais, nous naborderons pas ce sujet dans le prsent rapport. Nous partirons du principe quelle peut
tre dtermine exprimentalement.

Nicolas RIVIERE 2000 page 9

o TRANSFORMEE DE FOURIER

La transformation de Fourier sappuie sur la dcomposition dun signal en somme de fonctions


priodiques (combinaisons linaires des fonctions

rv

e i kx

qui forment une base orthonormale de lespace

de Hilbert). Cette reprsentation contient autant dinformation que le signal dans lespace direct
v
x

. Elle prsente donc lavantage de faire ressortir les structures priodiques ainsi que de rvler le

bruit qui se traduit gnralement par des hautes frquences spatiales dans lespace rciproque

r
k

. De

cette manire on peut diminuer le bruit en appliquant un filtre qui sera la plupart du temps un filtre
passe-bas. Cependant, si on analyse les domaines de frquences spatiales et leurs contenus
informationnels, on saperoit que les basses frquences reprsentent la limite le fond continu, les
hautes frquences - comme on la dj voqu sont assimilables au bruit, quant aux frquences
moyennes on peut considrer quelles vhiculent les dtails. On se trouve donc confront au choix
dlicat de la frquence de coupure du passe-bas, qui, si elle est trop basse, risque dentraner une trop
grande perte dinformation.

Le principal avantage de la T.F. est de transformer le produit de convolution


des transformes de Fourier

f g

f g

en un simple produit

. Ainsi tous les traitements complexes de convolution par des filtres

pourront tre raliss de manire simple, condition de dterminer la rponse caractristique du


filtre, cest dire la T.F de la fonction de convolution qui dfinit le filtre.
En revanche, cette transformation tant globale, si on modifie un coefficient de la dcomposition alors,
cela se rpercute sur tout le signal. Ce principal inconvnient nous pousse donc rechercher une
mthode aussi performante que la T.F. mais pouvant agir localement sur le signal.

Nicolas RIVIERE 2000 page 10

o TRANSFORMEE PAR ONDELETTES

Cette transformation se distingue de la mthode prcdente car elle privilgie une tude locale et non
globale de limage : la dcomposition se fait, non plus dans lespace des fonctions priodiques, mais
sur une autre classe de fonctions telles que les ondelettes de Daubechies, Lemarie , Coiflets,
SymletsCette technique combine les informations de position et de frquence spatiale. Tout comme
il existe la FFT, la DWT (Discrete Wavelet Transform ) permet dobtenir la transforme dondelettes
dordre un, de limage laide dun algorithme rapide.
On peut ainsi extraire les dtails de limage.

Le principe essentiel de cette technique rside dans la dcomposition hirarchique de limage, cest
dire que lon peut visualiser les dtails suivant leur direction (horizontal, vertical, diagonal) et suivant
leur taille caractristique. Ceci peut tre ralis laide de la fonction dwt2 incluse dans la librairie
Wavelets de MatLab 5.3.

Transforme par ondelettes dune matrice 256 x 256

Nicolas RIVIERE 2000 page 11

Dans la suite du problme, nous prfrerons utiliser la commande wavedec2 qui calcule la
dcomposition en ondelettes dun signal en deux dimensions et qui permet daccder aux coefficients
de la transforme afin de les modifier. En effet, en considrant les dtails les plus fins comme tant du
bruit, on peut raisonnablement esprer nettoyer limage en les attnuant, voire en les supprimant.

Cette mthode a retenu notre attention par rapport aux prcdentes car elle possde certains avantages
non ngligeables. La rapidit de calcul, mme pour des ordres de dcomposition assez levs, et la
bonne discernabilit des structures en font une technique gnralement trs utilise dans les domaines
de retraitement dimages (astronomie, stockage de donnes compresses, ).

Nicolas RIVIERE 2000 page 12

COMPARAISON DES RESULTATS

Nous pouvons regrouper lensemble des rsultats dans le tableau ci-dessous :

Nom

Image obtenue

Commentaires

Image initiale

Aucune dformation de limage

Image tudier

Flou + Bruit

Moyenne
&
Mdiane

Autocorrlation

Rapidit : trs lent


Aspect visuel : bon rendu
Difficults : effet miroir aux bords
Paramtres par dfaut : matrice 3 x 3
Parfait pour image fortement bruite
Peu de diffrence entre moyenne et
mdiane

Rapidit : trs lent


Aspect visuel : bon rendu
Difficults : effet miroir aux bords
Paramtres par dfaut : matrice 3 x 3
Garde la structure principale

Nicolas RIVIERE 2000 page 13

Transforme de
Fourier

Rapidit : lent
Aspect visuel : rendu moyen
Difficults : Paramtres par dfaut : Traitement global de limage

Transforme par
ondelettes

Rapidit : trs rapide


Aspect visuel : trs bon rendu
Difficults : Dterminer lordre
Paramtres par dfaut : ordre 11
Traitement local de limage

Algorithme de
Van-Cittert

Rapidit : lent
Aspect visuel : bon rendu
Difficults : Nombre ditrations
Paramtres par dfaut : 10 itrations
Parfait pour image fortement bruite

Nicolas RIVIERE 2000 page 14

CONCLUSION

Lors de la ralisation de cet expos et de la conception des programmes, nous avons rencontr des
difficults lies aux choix des algorithmes. Certaines mthodes sont prfrables dautres mais, il
nexiste pas de traitement universel : chaque image son traitement. De plus, nous avons t
confronts la dtermination des bons paramtres de rglage et laffichage correct de limage finale.
Le rglage de la dynamique reprsente un point important du traitement de signaux deux dimensions
mme si nous ne nous sommes pas trop tendus sur ce sujet.

Toutes les mthodes testes prcdemment ont donc plus ou moins deffets sur le signal. Nanmoins,
on peut retenir la technique sappuyant sur les ondelettes. Cette dernire est dores et dj applique
pour la compression de donnes (ex. le F.B.I.) car, en tant certains coefficients faibles, on rduit la
taille mmoire de limage et on conserve linformation essentielle (i.e. les structures principales).
La moyenne ou la mdiane retirent galement le bruit de limage mais lalgorithme ne semble pas
adapt un logiciel tel que MatLab. En effet, la longueur des oprations et la contrainte des boucles
imposent un temps dattente non ngligeable.
Les mthodes consistant traiter limage par rcurrence (cf. algorithme de Van-Cittert) peuvent tre
intressantes ds que lon tente de dtecter des objets ponctuels comme des toiles dans un ciel
profond. Pour une image classique telle que celle du chat, nous napportons que peu dintrt ces
techniques. Dans le cadre de ltude propose, linformation primordiale doit tre dgage du signal
bruit.

Il existe dautres mthodes qui sont trs largement utilises dans le monde des chirurgiens de
limages. Notre but ntant pas dcrire un catalogue des diffrentes techniques mais de sinitier aux
notions et aux outils dvelopps pour le traitement dimage, nous avons dlibrment laiss de ct les
problmes de seuillage, de reconnaissance de formes, de squelettisation,

Nicolas RIVIERE 2000 page 15

BIBLIOGRAPHIE

Publications

Identification of structures from galaxy counts : use of the wavelet transform E. SLEZAK A.
BIJAOUI Astron. Astrophys. 227, 301-316 (1990)
Image reconstruction by the wavelet transform applied to aperture synthesis J. L. STARCK A.
BIJAOUI Astron. Astrophys. 283, 349-360 (1994)
Image restoration with noise suppression using a multiresolution support F. MURTAGH - J. L.
STARCK A. BIJAOUI Astron. Astrophys. Suppl. Ser. 112, 179-189 (1995)

Livres

Introduction aux techniques de traitement dimages Andr MARION Editions EYROLLES


Prcis danalyse dimages Michel COSTER - J. L. CHERMANT - Editions Presses du CNRS
Le guide pratique de lastronomie CCD Patrick MARTINEZ Alain KLOTZ Editions ADAGIO
Optique Fondements et applications Jos-Philippe PEREZ Editions MASSON
Traitement dimages & architectures parallles Richard DAPOIGNY Editions ADDISON-WESLEY
Analyse dimages : filtrage et segmentation J. P. COCQUEREZ S. PHILIPP Editions MASSON

Sites Internet

Filtrage rcursif adaptatif


http://www-sim.int-evry.fr/~regalia/iirvf.html
Image processing toolbox Traitement dimages
http://www.ssg.fr/tmw/produits/toolboxes/image.html
Wavelet toolbox
http://www.ssg.fr/tmw/produits/toolboxes/wavelet.html

Nicolas RIVIERE 2000 page 16

ANNEXES

Publications

Identification of structures from galaxy counts : use of the wavelet transform E. SLEZAK A.
BIJAOUI Astron. Astrophys. 227, 301-316 (1990)
Image reconstruction by the wavelet transform applied to aperture synthesis J. L. STARCK A.
BIJAOUI Astron. Astrophys. 283, 349-360 (1994)
Image restoration with noise suppression using a multiresolution support F. MURTAGH - J. L.
STARCK A. BIJAOUI Astron. Astrophys. Suppl. Ser. 112, 179-189 (1995)

Scripts des programmes

Prog.m
Ch_acqui.m
Dynamique.m
Convol.m
Reconst.m
Moyenne.m
Mediane.m
Cittert.m
Moyconv.m
Ondelet.m

Nicolas RIVIERE 2000 page 17

Annexes Publications
_______________________________________________________________________________________________________________________________________________________

Annexes Scripts des programmes


__________________________________ __________________________________________________________________________________________________________________________

Prog.m
Programme principal excuter pour visualiser le projet.
%
%
%
%
%
%
%
%

Prog. Principal comment


Licence de Physique 2000 - UL8
Projet MatLab : Traitement d'images
RIVIERE Nicolas & DELAGNES Jean-Christophe

% Initialisation
close all; clear all; clc;
global t;
% Prsentation du programme
dos('\affich\dzlrun.exe \affich\cd01.mcl');
Presentation;
% Modlisation de la chane d'acquisition
dos('\affich\dzlrun.exe \affich\cd02.mcl');
Ch_acqui;
% Reprsentation des images
subplot(2,2,1);
image(chat);
colormap(lut);
axis off;
title('Chat photographier');
subplot(2,2,2);
image(chat_flou);
colormap(lut_flou);
axis off;
title('Chane d''acquisition 1');
figure;
image(chat);
colormap(lut);
axis off;
title('Chat photographier');
figure;
image(chat_flou);
colormap(lut_flou);
axis off;
title('Chane d''acquisition');
% Reconstitution de l''image
dos('\affich\dzlrun.exe \affich\cd03.mcl');
reconst;
prog_fin;

Nicolas RIVIERE 2000 page i

Annexes Scripts des programmes


__________________________________ __________________________________________________________________________________________________________________________

Ch_acqui.m
Ce programme simule une chane dacquisition en rendant flou limage et en appliquant du bruit sur loriginal.
%
%
%
%
%
%
%
%

Sous Prog. Modlisation de la chane d'acquisition


Licence de Physique 2000 - UL8
Projet MatLab : Traitement d'images
RIVIERE Nicolas & DELAGNES Jean-Christophe

global t;
disp
disp
disp
disp

' '
' Modlisation de la chane d''acquisition'
' '
'
Chargement de l''image'

load chat;
taille
=
tx
=
ty
=

disp ' '


disp '
chat_flou
disp ' '
disp '
pause(1);

size(chat);
taille(1);
taille(2);

Ralisation de la PSF'
= convol(chat);

Dfinition du bruitage de l''image'

prompt
= {'Entrez la valeur du paramtre de signal sur bruit ie SNR' };
def={'2'};
dlgTitle = 'Modlisation de la chane d''acquisition' ;
lineNo=2;
dlgresult= inputdlg(prompt,dlgTitle,lineNo,def);
pause(0.5);
dlgresult(1);
SNR
= str2num(cat(1,ans{:}));
if isempty(SNR)
SNR
= 2;
end;
pause(0.5);
bruit
= (255/SNR)*rand(tx,ty);
disp ' '
disp '
chat_flou

Modle restitu par la chane d''acquisition'


= chat_flou + bruit;

% Passage une image code en 8 bits


chat_flou
= (255/max(max(chat_flou))) * chat_flou;
% Correction de la dynamique de l'image
lut
= dynamique(chat);
lut_flou = dynamique(chat_flou);

Nicolas RIVIERE 2000 page ii

Annexes Scripts des programmes


__________________________________ __________________________________________________________________________________________________________________________

Dynamique.m
Fonction permettant de modifier la dynamique de limage.
%
%
%
%
%
%
%
%

Fonction Correction de la dynamique d'une im age


Licence de Physique 2000 - UL8
Projet MatLab : Traitement d'images
RIVIERE Nicolas & DELAGNES Jean-Christophe

function

dynamique

lut(nom);

% Initialisations
format long;
hh=3.0;
% Dfiniton des seuils de visualisation
sh=max(max(nom));
sb=min(min(nom))+1;
% Changement de table de couleurs
if (sb<sh)
haut=1;
bas=0;
else
haut=0;
bas=1;
a=sh;sh=sb;sb=a;
end
% Correction de la dynamique
sb
= 1;
sh
= 255;
dyna = 255;
intensite(1:sb)=linspace(bas,bas,sb);
intensite(sb:sh)=linspace(bas,haut,sh-sb+1);
intensite(sh:dyna)=linspace(haut,haut,dyna -sh+1);
lut(:,1)=intensite';
lut(:,2)=intensite';
lut(:,3)=intensite';
% Retour au prog.
dynamique
= lut;
return

Nicolas RIVIERE 2000 page iii

Annexes Scripts des programmes


__________________________________ __________________________________________________________________________________________________________________________

Convol.m
Fonction permettant de modifier la dynamique de limage.
%
%
%
%
%
%
%
%

Fonction - Modlisation de la chane d'acquisition - Convolution


Licence de Physique 2000 - UL8
Projet MatLab : Traitement d'images
RIVIERE Nicolas & DELAGNES Jean-Christophe

function convol = ti(nom);


% avec nom
= nom de la matrice image traiter
global t;
% Paramtrage
prompt
= {'Entrez la taille de la matrice de convolution. Si la taille de
la matrice carre est paire, elle sera arrondie l''entier impair
suprieur.'};
def={'3'};
dlgTitle = 'Modlisation de la chane d''acquisition - Convolution';
lineNo=2;
dlgresult= inputdlg(prompt,dlgTitle,lineNo,def);
pause(0.5);
dlgresult(1);
t_trou
= str2num(cat(1,ans{:}));
if isempty(t_trou)
t_trou
= 3;
end;
% Vrification de la parit
if rem(t_trou,2)==1
t_trou = t_trou+1;
end;
% Ralisation de l'objet
m_trou
= ones(t_trou,t_trou);
for i=1:t_trou
for j=1:t_trou
if ~( ((i-(t_trou+1)/2)^2+(j-(t_trou+1)/2)^2)<(((t_trou+1)/2)^2) )
m_trou(i,j)=0;
end;
end;
end;
% Convolution
t
= conv2(m_trou,m_trou);
ti
= conv2(nom,t,'same');
% Rgulation des couleurs
ti
= 255*ti/max(max(ti));
% Retour des valeurs
convol
= ti;
return

Nicolas RIVIERE 2000 page iv

Annexes Scripts des programmes


__________________________________ __________________________________________________________________________________________________________________________

Reconst.m
Pour reconstituer limage initiale, ce sous programme prsente sous forme de menu lensemble des mthodes
possibles.
%
%
%
%
%
%
%
%

Sous Prog. Reconstitution de l'image


Licence de Physique 2000 - UL8
Projet MatLab : Traitement d'images
RIVIERE Nicolas & DELAGNES Jean-Christophe

% Parmamtrage des variables


fin
= 0;

% Boucle permettant de tester chaque mthode


while fin ~= 1
clc;
pause(0.5);
disp ' '
disp ' Reconstitution de l''image'
pause(1);
choix = questdlg('Quel traitement souhaitez-vous appliquer l''image obtenue
aprs modlisation de la chane d''acquisition ?' , ...
'Convolution et restauration d''images', ...
'Moyenne /
Mdiane','Transformes','Algorithmes','Fin');
switch choix,
case 'Moyenne / Mdiane'
choix = questdlg('Slectionnez la mthode a utiliser.', ...
'Convolution et restauration d''images' , ...
'Moyenne','Mdiane','Fin');
case 'Transformes'
choix = questdlg('Slectionnez la mthode utiliser.', ...
'Convolution et restauration d''images', ...
'Ondelettes','Espace de
Fourier','"Autoconvolution"','Fin');
case 'Algorithmes'
choix = questdlg('Slectionnez l''algorithme appliquer.' , ...
'Convolution et restauration d''images' , ...
'Van Cittert','Fin');
end; % switch

close all; pause(0.5);


switch choix,
case 'Moyenne',
prompt
=
def
=
dlgTitle =
lineNo
=

{'Entrez la taille de la matrice carre' };


{'3'};
'Traitement de l''image - Moyenne';
2;

Nicolas RIVIERE 2000 page v

Annexes Scripts des programmes


__________________________________ __________________________________________________________________________________________________________________________

dlgresult= inputdlg(prompt,dlgTitle,lineNo,def);
dlgresult(1);
t
= str2num(cat(1,ans{:}));
if isempty(t)
t = 3;
end; %if
im_traitee = moyenne(chat_flou,t);
case 'Mdiane',
prompt
= {'Entrez la taille de la matrice carre'};
def
= {'3'};
dlgTitle = 'Traitement de l''image - Mdiane';
lineNo
= 2;
dlgresult= inputdlg(prompt,dlgTitle,lineNo,def);
dlgresult(1);
t
= str2num(cat(1,ans{:}));
if isempty(t)
t = 3;
end; %if
im_traitee = mediane(chat_flou,t);
case '"Autoconvolution"',
prompt
= {'Entrez la taille de la matrice carre' };
def
= {'3'};
dlgTitle = 'Traitement de l''image - Moyenne d''autoconvolution';
lineNo
= 2;
dlgresult= inputdlg(prompt,dlgTitle,lineNo,def);
dlgresult(1);
t
= str2num(cat(1,ans{:}));
if isempty(t)
t = 3;
end; %if
im_traitee = moyconv(chat_flou,t);
case 'Ondelettes',
im_traitee = ondelet(chat_flou);
case 'Espace de Fourier',
im_traitee = fourier(chat_flou);
case 'Van Cittert',
im_traitee = cittert(chat_flou);
case 'Fin',
fin
= 1;
end % switch
% Affichage du rsultat
if fin==0
disp ' '
disp '
pause(1);
fin2 = 0;
close all;
figure;

Rsultats obtenus aprs traitement de l''image'

Nicolas RIVIERE 2000 page vi

Annexes Scripts des programmes


__________________________________ __________________________________________________________________________________________________________________________

image(chat);
colormap(dynamique(chat));
axis off;
title('Chat initial');
figure;
image(chat_flou);
colormap(dynamique(chat_flou));
axis off;
title('Chat flou');
figure;
image(im_traitee);
colormap(dynamique(im_traitee));
axis off;
title(['Image traite par la mthode ',choix]);
figure;
subplot(2,2,1);
image(chat); colormap(dynamique(chat)); axis off; title( 'Chat initial');
subplot(2,2,2);
image(chat_flou); colormap(dynamique(chat_flou)); axis off; title( 'Chat
flou');
subplot(2,2,3);
image(im_traitee); colormap(dynamique(im_traitee)); axis off; title( 'Chat
trait');

% Affichage par menu des diffrentes images


while fin2 ~= 1
choix = menu('Affichage de','Chat Initial','Chat flou','Chat
restitu','Comparaison','Retour menu mthodes');
switch choix,
case 1,
figure(1);
case 2,
figure(2);
case 3,
figure(3);
case 4,
figure(4);
case 5,
fin2 = 1;
end; % switch
end; % while affichage
end; %if Fin==0
end; %while mthodes
close all;

Nicolas RIVIERE 2000 page vii

Annexes Scripts des programmes


__________________________________ __________________________________________________________________________________________________________________________

Moyenne.m
Fonction retournant limage traite par la mthode de moyenne.
%
%
%
%
%
%
%
%

Fonction - Cration de l'image par la mthode Moyenne


Licence de Physique 2000 - UL8
Projet MatLab : Traitement d'images
RIVIERE Nicolas & DELAGNES Jean-Christophe

function

moyenne =

im_moyen(nom,t_mat);

% avec nom
= nom de la matrice traiter
% et
t_mat = taille de la matrice carre de traitement
% Initialisation
disp ' '
disp '
Mthode de la moyenne'
pause(0.3);
t
= size(nom);
delta
= (t_mat+1)/2;
% Cration d'une matrice plus grande pour conditions aux bords : Effet miroir
nom
= cat( 2, fliplr(nom(:,1:delta)) , nom , fliplr(nom(:,t (2)delta+1:t(2))) );
nom
= cat( 1, flipud(nom(1:delta,:)) , nom , flipud(nom(t(1) delta+1:t(1),:)) );
figure;
im_moyen = nom;
axis off;
colormap(gray(255));
for x=delta:t(1)-delta+1
image(im_moyen);
text(-10,-10,[int2str(round(x*100/(t(1)-delta))),' %']);
pause(0.01);
for y=delta:t(2)-delta+1
tab
= nom( x:x+t_mat-1 , y:y+t_mat-1 );
vect = 0;
for i=1:t_mat
vect = [ vect, tab(i,:) ];
end; % for i
im_moyen(x+delta,y+delta) = mean(vect);
end; %for y
end; %for x
% Extraction de l'image utile
im_moyen = im_moyen(delta:t(1)-delta+1,delta:t(2)-delta+1);
% Retour des valeurs
moyenne = im_moyen;
return

Nicolas RIVIERE 2000 page viii

Annexes Scripts des programmes


__________________________________ __________________________________________________________________________________________________________________________

Mediane.m
Fonction retournant limage traite par la mthode de la mdiane.
%
%
%
%
%
%
%
%

Fonction - Cration de l'image par la mthode Mdiane


Licence de Physique 2000 - UL8
Projet MatLab : Traitement d'images
RIVIERE Nicolas & DELAGNES Jean-Christophe

function mediane = im_median(nom,t_mat);


% avec nom
= nom de la matrice traiter
% et
t_mat = taille de la matrice carre de traitement
disp ' '
disp '

Mthode de la mdiane'

% Initialisation
pause(0.3);
t
= size(nom);
delta
= (t_mat+1)/2-1;
% Cration d'une matrice plus grande pour conditions aux bords : effet miroir
nom
= cat( 2, fliplr(nom(:,1:delta)) , nom , fliplr(nom(:,t(2)delta+1:t(2))) );
nom
= cat( 1, flipud(nom(1:delta,:)) , nom , flipud(nom(t(1) delta+1:t(1),:)) );
figure;
im_median = nom;
axis off;
colormap(gray(255));
for x=delta:t(1)-delta+1
image(im_median);
text(-10,-10,[int2str(round((x-delta)*100/(t(1)))),' %']);
pause(0.01);
for y=delta:t(2)-delta+1
tab
= nom( x:x+t_mat-1 , y:y+t_mat-1 );
vect = 0;
for i=1:t_mat
vect = [ vect, tab(i,:) ];
end; % for i
im_median(x+delta,y+delta) = median(vect);
end; %for y
end; %for x
% Extraction de l'image utile
im_median
= im_median(delta:t(1)-delta+1,delta:t(2)-delta+1);
% Retour des valeurs
mediane = im_median;
return

Nicolas RIVIERE 2000 page ix

Annexes Scripts des programmes


__________________________________ __________________________________________________________________________________________________________________________

Cittert.m
Fonction retournant limage traite par lalgorithme de Van-Cittert.
%
%
%
%
%
%
%
%

Fonction - Traitement de l'image - Mthode Van-Cittert


Licence de Physique 2000 - UL8
Projet MatLab : Traitement d'images
RIVIERE Nicolas & DELAGNES Jean-Christophe

function cittert = res(nom);


% avec nom
= nom de la matrice image traiter
disp ' '
disp '
pause(0.3);

Mthode Van Cittert'

% Dfinition des paramtres


global t;
prompt
= {'A quel ordre souhaitez-vous dvelopper les calculs ?','Entrez le
coefficient de relaxation :'};
def={'10','5'};
dlgTitle
= 'Traitement de l''image - Van Cittert';
lineNo=2;
dlgresult= inputdlg(prompt,dlgTitle,lineNo,def);
pause(0.5);
dlgresult(1);
ordre = str2num(cat(1,ans{:}));
if isempty(ordre)
ordre = 10;
end;
dlgresult(2);
a = str2num(cat(1,ans{:}));
if isempty(ordre)
a = 5;
end;
% Calculs
pause(0.1);
im_traitee =

nom;

for k=1:ordre
im_traitee = im_traitee + a .* ( nom - conv2(im_traitee,t,'same') );
im_traitee = 255 * abs(im_traitee)/max(max(abs(im_traitee)));
image(im_traitee); colormap(gray(255));
title(['Ordre = ',int2str(k)]);
pause(.1);
end;
% Prpondrence de certains "traits" de l'image
res
= 255*(nom+im_traitee)/(max(max(nom+im_traitee)));
% Retour des valeurs
cittert = res;
return

Nicolas RIVIERE 2000 page x

Annexes Scripts des programmes


__________________________________ __________________________________________________________________________________________________________________________

Moyconv.m
Fonction retournant limage traite par la mthode dautocorrlation et de moyenne.
%
%
%
%
%
%
%
%

Fonction - Restitution de l'image - Moyenne de l'autoconvolution


Licence de Physique 2000 - UL8
Projet MatLab : Traitement d'images
RIVIERE Nicolas & DELAGNES Jean-Christophe

function

moyconv =

% avec nom
global t;
disp ' '
disp '
pause(0.3);

ti(nom,t_mat);

= nom de la matrice image traiter

Moyenne de l''autoconvolution'

% Paramtrages
delta
= (t_mat+1)/2;
taille
= size(nom);
% Cration d'une matrice plus grande pour effets de bords
nom
= cat( 2, fliplr(nom(:,1:delta)) , nom , fliplr(nom(:,taille(2) delta+1:taille(2))) );
nom
= cat( 1, flipud(nom(1:delta,:)) , nom , flipud(nom(taille(1) delta+1:taille(1),:)) );

% "Autocorrlatio"
for k=delta:taille(1)-delta+1
for l=delta:taille(2)-delta+1
a
= nom((k-1):(k+1),(l-1):(l+1));
b
= conv2(a,a,'same');
ti(k,l) = mean(mean(b));
end;
end;

% Rgulation des couleurs


ti
= 255*sqrt(ti(delta:taille(1)-delta+1,delta:taille(2)delta+1)/max(max(ti)));
% Retour des valeurs
moyconv = ti;
return

Nicolas RIVIERE 2000 page xi

Annexes Scripts des programmes


__________________________________ __________________________________________________________________________________________________________________________

Ondelet.m
Fonction retournant limage traite par la technique des ondelettes. Ce script fait appel la librairie Wavelet incluse
dans MatLab.
%
%
%
%
%
%
%
%

Fonction - Traitement de l'image - Mthode des ondelettes


Licence de Physique 2000 - UL8
Projet MatLab : Traitement d'images
RIVIERE Nicolas & DELAGNES Jean-Christophe

function

ondelet =

% avec nom
disp ' '
disp '
pause(0.3);

res(nom);

= nom de la matrice image traiter

Mthode par ondelettes (wavelets)'

% Dfinition des paramtres


ok = 0;
while ok ~= 1
choix = questdlg('Quelle mthode par ondelettes souhaitez -vous appliquer ?',
...
'Ondelettes - Filtres', ...
'Daubechies','Coiflets','Symlets','Fin');
pause(0.5);
switch choix,
case 'Daubechies',
fil
= 'db';
bornes = ' [1..45] :';
ok
= 1;
case 'Coiflets',
fil
= 'coif';
bornes = ' [1..5] :';
ok
= 1;
case 'Symlets',
fil
= 'sym';
bornes = ' [1..45] :';
ok
= 1;
case 'Fin',
end; % case
end; %while
pause(0.5);
prompt
= {'Entrez l''ordre de dcomposition :' ,['Entrez le numro du
filtre de ',choix,bornes]};
def
= {'3','2'};
dlgTitle
= 'Traitement de l''image - Ondelettes';
lineNo
= 2;
dlgresult
= inputdlg(prompt,dlgTitle,lineNo,def);
dlgresult(1);
ordre
= str2num(cat(1,ans{:}));
dlgresult(2);
num
= cat(1,ans{:});

Nicolas RIVIERE 2000 page xii

Annexes Scripts des programmes


__________________________________ __________________________________________________________________________________________________________________________

if isempty(ordre)
ordre = 3;
end; %if
if isempty(num)
num
= '2';
end; %if
pause(0.1);

% Dcomposition en ondelettes
[w_nom,s_nom] = wavedec2(nom,ordre,[fil,num]);
% Affichage et lecture graphique
pause(0.1);
figure;
plot(w_nom);
title('Slectionnez la zone de coupure (axe vertical)' );
coord
= ginput(1);
prompt
= {'Entrez le coefficient permettant de traiter les valeurs
suprieures la coupure [0..1] :' };
def
= {'0'};
dlgTitle
= 'Traitement de l''image - Ondelettes';
lineNo
= 2;
dlgresult
= inputdlg(prompt,dlgTitle,lineNo,def);
dlgresult(1);
coef
= str2num(cat(1,ans{:}));
if isempty(coef)
coef = 0;
end; %if
title('Traitement en cours');
pause(0.1);
w_nom(round(coord(1)):length(w_nom))
=
w_nom(round(coord(1)):length(w_nom)).*coef;

% Dcomposition Inverse ie Recomposition


res
= waverec2(w_nom,s_nom,[fil,num]);
% Retour des valeurs
ondelet = res;
return

Dautres programmes sont prsents sur le CD -Rom fourni avec le prsent rapport. Leurs scripts ne nous semblent
pas tre intressants pour tre dvelopps ici.

Nicolas RIVIERE 2000 page xiii

Das könnte Ihnen auch gefallen