Traitement des données d'images numériques
Traitement des données d'images numériques
BIBDA
A. El moutaouakkil
elmou01@[Link]
1
Quelques notions sur la perception
Lumière, scène, optique et image
Haytham Ibno Haytham
Surface Optique
Sources et types de l’image
Images en émission (cas des sources infra-
rouges) ;
Images en transmission = absorption (cas
des rayons X) ;
Images en réflexion : cas le plus courant
Processus physiques
et formation d’image
Radiométrie
Principes physiques de la réflectance des objets
Relation entre la lumière émise par une source et
la quantité de lumière qui parvient au capteur
Photométrie
Mécanisme pour mesurer la quantité de lumière
qui arrive au capteur
Numérisation
Échantillonnage dans l’espace et le temps pour
produire une image numérique
Du système visuel humain
au système de vision numérique
Système visuel humain
Système visuel humain (suite)
Système visuel humain (suite)
Chaîne d’acquisition et d’affichage
d’images numériques
Traitements Stockage
Stockage
Visualisation
Numérisation Acquisition
Echantillonnage
Définition d’une image
Image physique : généralement
analogique
Image continue (ne pouvant être traitée
par un ordinateur)
En 2D :
f(x,y) est représenté par une matrice de MxN éléments,
Chaque élément f(i,j) de cette matrice image est appelé un
pixel (picture element).
En 3D :
f(i,j,k) = matrice de voxels.
Echantillonnage spatial
(discrétisation de l’espace)
Théorie de l’échantillonnage :
L’image est considérée comme un ensemble
d’impulsions de Dirac où chaque impulsion est au
centre du pixel et a pour amplitude l’intensité du
pixel.
f(x,y)=I(x,y)SmSn d(x-mDx,y-nDy)
Echantillonnage carré le plus fréquent
Echantillonnage spatial
(discrétisation de l’espace)
Echantillonnage et résolution
N=4 N=8 N=16
g g g
g g g
0 f ( x, y ) 255 8 bits
0 f ( x, y ) 65635 16 bits
Quantification
Tableaux, Pointeurs
Fichiers et images 2D et 3D
19
Rappel sur les pointeurs
ptr 0 1 2 3 4 5 6 7
0
ptr 1
5
Rappel sur les pointeurs
char **ptr; /* *ptr[] */
char *ptr_char; /* ptr_char[] */
char car;
For(i=0;i<6;i++)
ptr [i] = (unsigned char *) malloc(sizeof(unsigned char) * 8);
0 1
Vecteur 1D
Rappel sur les fichiers
/* OUVERTURE, LECTURE ET FERMETURE DE FICHIER */
FILE *fp1;
Ou
fp1 = fopen(argv[1],“r”);
fread(vec,sizeof(unsigned char),6*8,fp1);
fclose(fp1);
Rappel sur les fichiers
/* OUVERTURE, LECTURE ET FERMETURE DE FICHIER */
FILE *fp1;
fread, fwrite
feof
Syntaxe: feof(fichier_pt) /* détection de fin de fichier*/
27
Retourne une valeur non nulle (vraie) si une fin de fichier a été trouvée sinon zéro (faux)
Matrice 2D et image
j
i
Une image est avant tout un signal 2D (x,y)
Souvent, cette image représente une réalité 3D
(x,y,z)
D'un point de vue mathématique :
o Une image est un matrice de nombres représentant un
signal
o Plusieurs outils permettent de manipuler ce signal
D'un point de vue humain :
o Une image contient plusieurs informations sémantiques
o Il faut interpréter le contenu au-delà de la valeur des
nombre
Image naturelle – Plusieurs moyens d'acquisition
caméra, microscope, tomographie, infra-rouge, satellite, …
Image artificielle – Plusieurs outils de représentation
synthèse d'images, réalité virtuelle, visualisation scientifique, …
Ordre de connexité :
Il existe principalement deux ordres de connexité :
4 et 8. Ce nombre correspond à la taille du plus
petit voisinage non vide d'un pixel. Un pixel a 4
voisins directs si l'on choisit la distance d1, il en a 8
avec la distance dinf.
• Ordre de connexité :
• En 2-D , maille carrée:
(i-1,j-1) (i-1,j) (i-1,j+1)
• 6-connexité
• 18-connexité
• 26-connexité
Image, traitement d’images et
autre disciplines
Analyse
Théorie du numérique Statistique
signal
Informatique Traitement
Théorie de
d’images l’information
Electronique Neurophysiologie
Théorie des psychophysique
Optique systèmes
Image, traitement d’images et
domaines d’applications
Diagnostique
médical
Image et traitement d’images
– Image = information issue d'un capteur de vision (œil, caméra)
g(x,y)=Pf(x,y)+L
L=-100
Traitements de base d’une image
Opérations ponctuelles
P=1.5
Traitements de base d’une image
Opérations ponctuelles
Inversion
Traitements de base d’une image
Opérations ponctuelles
Original Contrasté
Traitements de base d’une image
Opérations ponctuelles
Original Contrasté
Traitements de base d’une image
Opérations ponctuelles
Histogramme
Pour chaque niveau de gris, compter le nombre de pixels s’y référant
Pour chaque niveau, tracer le graphe en bâton du nombre de pixels
(possibilité de regrouper les niveaux proches en une seule classe)
2 2 2 2 2 2 2 2
2 0 0 0 0 0 0 2
2 0 1 1 1 1 0 2
2 0 1 0 0 1 0 2
2 0 1 1 1 1 0 2
2 0 1 0 0 1 0 2
2 0 0 0 0 0 0 2
2 2 2 2 2 2 2 2
% %
% %
%
étirement de l’histogramme = ?amélioration du
contraste
Etirement d’histogramme
gl' gl ' m gl b
255 PIXMAX 255
m
max min max min
PIXMAX min
gl1' b
max min
PIXMAX PIXMAX min
0 gl ' gl
gl1 gl
max min max min
min max
PIXMAX
gl ' ( gl min)
PIXMAX gl ' max min
max min gl min
PIXMAX
gl ' ( gl min)
max min
Traitements de base d’une image
Opérations ponctuelles
Amélioration du contraste
Égalisation de l’histogramme [densité de probabilité cumulative]
GL’
%
GL GL’
min max
* C i
0 255
min max
Traitements de base d’une image
Opérations ponctuelles
Amélioration du contraste
Égalisation de l’histogramme
D: Dynamique
H C ( f ( x , y ))
(w,h): Dimension de l’image f ( x , y )' ( 2 D 1 )
wh
HC(.): Histogramme cumulé
Segmentation des images
par seuillage
Segmentation par seuillage
Choix des seuils
Manuel
Par inspection de l’histogramme
Segmentation par seuillage
Segmentation par seuillage
Seuillage simple
for (i=0;i<H;i++)
for (j=0;j<L;j++)
{
if(ima[i][j]<seuil)
ima[i][j]=0;
else
ima[i][j]=255;
}
Segmentation par seuillage
binaire
Opérations ponctuelles
sur plusieurs images
Somme d’images
Ajout de bruit, fusion d’images,...
Soustraction d’images
Élimination de l’arrière-plan, dérivation par
rapport au temps,…
Moyenne point à point d’images
Réduction du bruit
Opérations ponctuelles
Les sources de bruit
transformation
0 0 0 0 0000000
0 0
(x,y) 0
0
0
0
0 0
0 0
0 0
0 0
0 0
0 0 0 0 0000000
m DF n DF
2 2
filtre normalisé Point Spread Function
1 1 1 1/9 1/9 1/9 w1 w2 w3
DF ou
1/9 X 1 1 1 = 1/9 1/9 1/9 w4 w5 w6 Dimension
1 1 1 1/9 1/9 1/9 w7 w8 w9
Filtre : 3
résultat divisé par la somme
des poids [wx] du filtre (P-B)
ou son nombre de pixels (P-H)
Opérations locales
Transformation par convolution
I * K
Noyau de convolution
Image
Opérations locales
Convolution numérique R = I*K
K
I R
I R
K
I R
I R
m DF n DF
2 2
filtre normalisé Point Spread Function
1 1 1 1/9 1/9 1/9 w1 w2 w3
DF ou
1/9 X 1 1 1 = 1/9 1/9 1/9 w4 w5 w6 Dimension
1 1 1 1/9 1/9 1/9 w7 w8 w9
Filtre : 3
résultat divisé par la somme
des poids [wx] du filtre (P-B)
ou son nombre de pixels (P-H)
Opérations locales
Convolution discrète
00 FF transition
Lissage(flou apparent)
1 1 1 1 1
1 1 1 1 1 N.B. plus le filtre grossit ,
1/25 X 1 1 1 1 1 plus le lissage devient important
1 1 1 1 1 et plus le flou s’accentue !
1 1 1 1 1
Opérations locales
Filtre de détection de contour (passe-haut)
00 FF transition
Filtres passe-bas
Filtre de moyenne
Filtre Gaussien
Triangle de Pascal
Autres filtres
Moyenne versus médiane
Filtre médian
Filtre adaptatif
Filtres passe-haut
Opérateurs mathématique
Masque de détection
Gradient
Laplacien
Kirsch
Marr-Hildreth
Opérations locales
Typologie des Filtres
Pour accélérer les traitements, il est possible de décomposer les filtres en sous-
filtres équivalents qu’on passe un après l’autre.
Opérations locales
Typologie des Filtres
Opérations locales
Typologie des Filtres : suite
Le filtre moyenne
Permet de lisser l'image (smoothing)
Remplace chaque pixel par la valeur moyenne
de ses voisins
Réduit le bruit
Réduit les détails non-important
Rend floue l'image (blur edges)
Filtre dont tous les coefficients sont égaux.
Exemple de filtres moyennes :
Opérations locales
Filtre Moyenneur
On affecte à chaque pixel la valeur
moyenne obtenue dans le voisinage :
avec j les voisins de i
Opérations locales
Filtres passe-bas
Plus le filtre est grand, plus on coupe les hautes fréquences (les
changements rapides)
1 1 1 1 1
1 1 1 1 1
1 1 1
1/9* 1 1 1 1/25* 1 1 1 1 1
1 1 1 1 1 1 1 1
1 1 1 1 1
Opérations locales
Filtres passe-bas
Filtre de moyenne
Filtres passe-bas
Filtre Gaussien 1 2 1
(1/16) 2 4 2
1 2 1
1 1 1 2 1
1 1
(1/4) * (1/4) = (1/16) 2 4 2
1 1 1 1
1 2 1
1
1 2 1
(1/4) 2 * (1/4) 1 2 1 = (1/16) 2 4 2
1
1 2 1
Opérations locales
( x 2 y 2 )
1 2 2
gauss ( x, y ) PSF ( x, y ) e
2 2
w1 w2 w3
w4 w5 w6 Dim X = DimY = 8 + 1
w7 w8 w9 où 0,3
Opérations locales
Filtres passe-bas
Triangle de Pascal
Chaque élément est la somme des éléments supérieur et
supérieur gauche
On choisit une ligne impaire
On convolue un filtre horizontal avec un filtre vertical
On obtient un filtre carré
On normalise par la somme de tous les éléments du filtre
Opérations locales
Filtres passe-bas
Autres filtres passe-bas
1 4 6 4 1 1 2 3 2 1 0 0 1 0 0
4 16 24 16 4 2 4 6 4 2 0 2 2 2 0
1/256 6 1/81
24 36 24 6 3 6 9 8 3 1/25 1 2 5 2 1
4 16 24 16 4 2 4 6 4 2 0 2 2 2 0
1 4 6 4 1 1 2 3 2 1 0 0 1 0 0
Filtre Gaussien ou binomial Filtre pyramidal Filtre Conique
10
10 30
30 55
20
20 200
20 20
20 5 10 10 15 20 20 30 30 200
15 10
15 10 30
30
Valeurs d’intensité médiane
Opérations locales
Filtre Médian
Filtre Médian
9. Traitements de base d’une image
Opérations locales
Choix du filtre
Bruit gaussien : filtre moyenneur
Filtres adaptatifs
Opérations locales
Filtres passe-haut: Détection de contours
Opérations mathématiques
- =
Image originale Image filtrée passe-bas Hautes fréquences
Caractéristiques des images obtenues
par filtrage spatial
Lissage Rehaussement
(filtre passe-bas) (filtre passe-haut)
Opérations locales
moyenne)
0 0 0 1 1 1 1 1 1
d(x, y) h(x, y) 0 9 0 1 1 1 1 8 1
1 1 1
9 9 9
0 0 0 1 1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1
Ex: filtre 5X5 1
25
1 24 1 1
1 1 1 1 1
1 1 1 1 1
Opérations locales
Passe-bas Passe-haut
1 1 1 1 1 -1 -1 -1 -1 -1
0 0 0 0 0 0 0 1 1 11 11 11 1 11 1 -1-1-1-1 -1
-1 -1
-1-1-1-1 -1
0 0 0 0 0 0 0 1 11 1 1 1 11 1 11 -1 -1 -1
-1 -1-1-1 -1 -1
0 0 0 0 0 0 0 5924 1
1 1 11 111 11 1 11 152 -1 -1
-1 -1 -1 -1 -1-1
-1 24 -1 -1 -1
0 0 0 1 0 0 0
1 X1 1111 111 1111 11 1 1 1 -1-1 -1
X-1-1-1 -1 -1-1
8 48 -1-1
-1 -1
499 1 499 4
9 -1-1-1-1 -1
0 0 0 0 0 0 0 1 1111 111 11 1 11 -1 -1
-1 -1-1
-1 -1
0 0 0 0 0 0 0 1 1 1 1 11 1 1 -1-1 -1
-1 -1 -1-1-1 -1 -1
0 0 0 0 0 0 0 1 1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1
Opérations locales
Technique en 2 étapes :
Gx = f * Mx
Gy = f * My
La norme du gradient
La direction du gradient
Opérations locales
Différences
Filtres passe-haut: Détection de contours
avant et
Approximation du gradient (en x –arêtes verticales) arrière
f f (x D x , y) f (x, y) f (x, y) f (x D x , y)
lim lim
x D x 0 Dx D x 0 Dx
Dx 1 Masque de convolution 1 -1 ou -1 1
f f (x D x , y) f (x D x , y)
lim Différence centrée
x D x 0 2D x
Dx 1 Masque de convolution -1 0 1
00 FF 00 Image
prof il d’une
ligne
horizontale
(dérivée
première)
seconde)
(a) (b)
Opérations locales
| Gx | + | Gy |
-1
-1 -20 -1
1
0
-2 00 02 || G
Gyx ||
1
-1 20 11
Opérations locales
Sobel
Le passe-haut intensifie le bruit; on fait
donc un passe-bas pour le diminuer.
Composition d’un filtre gaussien et d’un
gradient
1 2 1 1 0 1
0 0 0 2 0 2
1 2 1 1 0 1
Opérations locales
Sobel (=Gaussien+Gradient)
Deux masques de taille 3x3 :
1 2 1 1 0 1
0 0 0
et 2 0 2
1 2 1 1 0 1
Opérations locales
Roberts
Deux masques de taille 2x2 :
et
Opérations locales
Opérations locales
Opérations locales
Laplacien
2 ( 2 2 )
Dérivée seconde x y
Différence centrée
2f (x, y)
f ' (x 1, y) f ' (x, y)
x 2
=[f(x+1,y)-f(x,y)]-[f(x,y)-f(x-1,y)]
= f(x+1,y)-2f(x,y)+f(x-1,y)
Noyau de convolution 1 2 1
Opérations locales
Laplacien (suite)
Hautes fréquences dans toutes les directions
1 0 1 0
( 1 2 1 2 1 4 1
2
)
x 2
y 2
1 0 1 0
Autres formes
0 1 0 1 1 1
1 4 1 Ou 1 8 1
0 1 0 1 1 1
Opérations locales
Laplacien (suite)
Dérivée seconde du signal image
Localisation des contours par le passage par 0
Différents masques :
0 1 0 1 1 1
1 4 1 1 8 1
0 1 0 1 1 1
Opérations locales
Kirsch
8 masques, dans chaque direction (45°)
Opérations locales
Filtres passe-haut: Détection de contours
Marr-Hildreth
Le Laplacien augmente encore plus le bruit
Marr-Hildreth
0 -1 -2 -1 0
-1 0 2 0 -1
-2 2 8 2 -2
-1 0 2 0 -1
0 -1 -2 -1 0
-1 -3 -4 -3 -1
-3 0 6 0 -3
-4 6 20 6 -4
-3 0 6 0 -3
-1 -3 -4 -3 -1
Opérations locales
Filtres passe-haut
Sobel
Marr-Hildreth
Canny
…
Opérations locales
Sobel
On applique le filtre horizontal, puis
vertical
On somme les valeurs absolues, ou racine
carrée des carrées des valeurs
Seuillage: si la valeur est assez élevée, la
dérivée est forte et il y’a un contour
Opérations locales
Marr-Hildreth
On applique le filtre de Marr-Hildreth
Canny
Critères
Taux d’erreur bas
Seuillage
Différents types de seuillage
si ndg > sb alors ndg = 255
si ndg < sh alors ndg = 0
Binarisation
Rappel
Binarisation
Binarisation
Comment trouver le bon seuil ?
Localisation des modes de l’histogramme
Opérations locales
Images couleur
Utilisation de R,G,B puis combinaison
Autres méthodes plus robustes
Opérations locales
Filtres passe-haut: Détection de contours
Fermeture de contours
Problème des contours ouverts
Opérations locales
Opération sur les contours:
Codage de Freeman
Représentation discrète d’un contour
X0,Y0 01067744
Opérations locales
Erosion
• Soit B un élément structurant
Bx élément centré en un pixel x
• Erodé = On positionne l’origine de B en chaque pixel x de l’objet A :
Si tous les pixels de B font partie de l’objet A, alors l’origine de B
appartient à l’érodé
Image A Erodé : A -B
Opérations locales
Erosion
Opérations locales
Erosion
Opérations locales
Erosion
les objets de taille inférieure à celle de l'élément structurant
vont disparaître,
s'il existe des trous dans les objets, c'est à dire des
"morceaux" de fond à l'intérieur des objets, ils seront
accentués
les objets reliés entre eux vont être séparés.
Remarquons également qu'une érosion de taille n peut se
réaliser en répétant une érosion n fois avec un élément
structurant de taille 1 ou en appliquant une seule érosion avec
un élément structurant de taille n.
Opérations locales
Dilatation
Soit B un élément structurant
Bx élément centré en un pixel x
Dilaté : Pour chaque position de B, est-ce que l’intersection entre B et
l’objet A est non vide ? Si oui, x l'origine de B appartient à l'image
Dilatée
Image A Dilaté : A + B
Opérations locales
Dilatation
Opérations locales
Erosion
Opérations locales
Dilatation
Dilatation
Erosion
Opérations locales
Ouverture
Opérations locales
Ouverture
Fermeture
Opérations locales
Fermeture
Filtrage Morphologique
Détection de Contours
Opérations locales
Détection de Contours
Gradient interne : contour intérieur
Image originale - Image érodée = Contour intérieur
A - (A - B)
Gradient externe : contour extérieur
Image dilatée - Image originale = Contour extérieur
(A + B) – A
Gradient morphologique
Image dilatée - Image érodée = Gradient morphologique
(A + B) - (A - B)
Opérations globales
Filtrage fréquentiel
Filtrage fréquentiel
Dans une image, les basses fréquences représentent les
zones lisses, qui varient peu
Les hautes fréquences sont les zones très variables:
textures, arrêtes, coins
Un filtre passe-bas fait passer les basses fréquences
Élimine les hautes fréquences, diminue le bruit
Permet de lisser , d’adoucir les arêtes
Un filtre passe-haut fait passer les hautes fréquences
Met en évidence les arêtes, les contours, les
ombres
Augmente le bruit dans l’image
Opérations globales
Transformée de Fourier
f (t ) dt
2
Opérations globales
TF, Quelques définitions…
TF est imaginaire F ( ) R( ) i I ( ) F ( ) ei ( )
M 1
f ( x) F ( ) ei 2x / M x 0 ,1, 2 , , M 1
0
soit M N
1 N 1 N 1
F(, ) f ( x, y) e i 2 ( x y ) / N , 0 ,1, 2 , , N 1
N x 0 y 0
1 N 1 N 1
f ( x, y) F(, ) ei 2 ( x y ) / N x , y 0 ,1, 2 , , N 1
N 0 0
Note: la normalisation a été répartie sur la paire de
transformée…
Opérations globales
Filtrage fréquentiel