Diapos de cours - LAGA

Download Report

Transcript Diapos de cours - LAGA

Cours de segmentation d’images
Partie 2 – Méthodes par histogrammes
Master M2TI - Paris V
Novembre 2014
John Chaussard
LAGA – Université Paris 13
Les histogrammes
en niveaux de gris
Les histogrammes N&B
Construire un histogramme en niveaux de gris
L’histogramme d’une image en niveaux de gris consiste à recenser toutes
les valeurs des pixels d’une image.
1
5
4
4
Par exemple, considérons cette image de 4x4 pixels, avec
des valeurs allant de 1 à 5.
1
2
2
1
Il y a :
4
1
2
2
1
4
2
5
. 5 pixels de valeur 1
. 5 pixels de valeur 2
. 0 pixel de valeur 3
. 4 pixels de valeur 4
. 2 pixels de valeur 5
Les histogrammes N&B
Représentation d’histogramme
On peut représenter les résultats à l’aide d’un tableau
valeur
1
2
3
4
5
quantité
5
5
0
4
2
Ou bien à l’aide d’un graphe
6
quantité
1
5
5
2
3
4
5
35
0
4
2
4
2
1
0
1
2
3
valeur
4
5
Les histogrammes N&B
Représentation d’histogramme
L’intérêt de l’histogramme est qu’il peut apporter de précieuses
informations sur l’image.
Valeur : 180
^ Image originale
< Seuil à 180
Les histogrammes N&B
Représentation d’histogramme
En général, on ne regarde pas si un pixel vaut une valeur précise, mais s’il
est dans un intervalle donné.
1
5
4
4
Par exemple, on pourrait vouloir connaître le nombre de
pixels dans les intervalles [0;1], [2;3] et [4;5] :
1
2
2
1
Il y a :
4
1
2
2
1
4
2
5
. 5 pixels entre 0 et 1
. 5 pixels entre 2 et 3
. 6 pixels entre 4 et 5
Ceci permet d’étendre la notion d’histogrammes aux images à valeur
réelles.
Les histogrammes N&B
Représentation d’histogramme
En général, on spécifie le nombre d’intervalles de valeurs que l’on
souhaite étudier (appelés classes, ou bins de l’histogramme) : les
intervalles seront régulièrement espacés entre les valeurs extrémales de
l’image.
10
14
4
3
8
8
9
7
4
5
5
8
12
3
11
11
Les valeurs des pixels de cette image vont de 3 à 14.
Un histogramme en quatre classes donne :
. 6 pixels entre 3 et 5
. 4 pixels entre 6 et 8
. 4 pixels entre 9 et 11
. 2 pixels entre 12 et 14
Un histogramme en trois classes donne :
. 6 pixels entre 3 et 6
. 6 pixels entre 7 et 10
. 4 pixels entre 11 et 14
Les histogrammes N&B
Histogrammes sur SciLab
Tout d’abord, on installe le package image SIVP (à faire une unique fois) :
--> atomsInstall('SIVP')
Puis on lit une image dans le répertoire courant :
--> im = imread('cell1.png');
L’image est alors stockée dans la matrice im. Même si c’est une image en
niveaux de gris, elle apparait comme une image couleur : on en garde qu’un
des trois canaux couleur :
--> im = im(:,:,1);
--> imshow(im);
Les histogrammes N&B
Histogrammes sur SciLab
On peut afficher un histogramme en 20 bins en faisant :
--> h = histplot(20, double(im), normalization=%f);
La matrice h contient l’histogramme : c’est un tableau de 20 cases, et la
somme des valeurs de h vaut le nombre de pixels de l’image.
Si l’on souhaite avoir autant de bins qu’il n’y a de valeurs dans l’image
(dans le cas d’une image à valeurs entières), on fait :
--> h = histplot(double(max(im))-double(min(im))+1, double(im), normalization=%f);
Egalisation d’histogramme
(échauffement)
Egalisation d’histogramme
Egaliser un histogramme
Certaines images peuvent avoir une plage de valeurs réduite, rendant leur
visualisation difficile. On souhaite trouver une transformation permettant
d’améliorer le contraste de l’image.
Image sous exposée
Histogramme de l’image
Egalisation d’histogramme
Egaliser un histogramme
Certaines images peuvent avoir une plage de valeurs réduite, rendant leur
visualisation difficile. On souhaite trouver une transformation permettant
d’améliorer le contraste de l’image.
Les niveaux de gris de l’image sont
concentrés vers des valeurs basses…
Il est nécessaire de corriger ce défaut.
Histogramme de l’image
Egalisation d’histogramme
Approche par le continu
Soient :
P l’image d’entrée (avec le mauvais contraste),
Q l’image de sortie (avec le contraste rehaussé),
N le nombre de pixels des deux images.
On pose :
HP l’histogramme de l’image d’entrée,
HQ l’histogramme de l’image de sortie.
HP(x) est le nombre de pixels de l’image d’entrée possédant le niveau de
gris x.
HQ(y) est le nombre de pixels de l’image de sortie possédant le niveau de
gris y.
Egalisation d’histogramme
Approche par le continu
On pose HP l’histogramme de l’image d’entrée, et HQ l’histogramme de
l’image de sortie.
On souhaite trouver la transformation T, qui à un niveau de gris x de
l’image d’entrée P associe un niveau de gris y de l’image de sortie q :
T(x)=y
Bref, T nous indique comment transformer les valeurs des pixels de P afin
d’obtenir une « jolie » image Q.
Egalisation d’histogramme
Approche par le continu
Pour « faire plus simple », on imagine que l’image est continue, c’est à
dire que c’est une application de Rn dans R.
On imagine que l’image P possède des valeurs allant de pmin jusqu’à pmax,
tandis que l’image Q possèdera des valeurs allant de qmin jusqu’à qmax.
Egalisation d’histogramme
Approche par le continu
HP(x) nous donne le nombre de points, dans P, possédant le niveau de gris
x.
Question : Que représente
x
H
P
( s )ds
pmin
Il s’agit du nombre de points de l’image P qui possèdent un niveau de gris
inférieur ou égal à x.
Egalisation d’histogramme
Approche par le continu
x
H
P
( s )ds
pmin
est le nombre de points de l’image P qui possèdent un niveau de gris
inférieur ou égal à x.
Question : comment écrire cela dans un cadre discret (une image de Nn
dans N) ?
x
H
s  pmin
P
(s)
Egalisation d’histogramme
Approche par le continu
Cadre continu
x
H
pmin
Cadre discret
x
P
( s )ds
H
s  pmin
P
(s)
En général, pour passer d’un cadre continu à un cadre discret, on remplace
les intégrales par des sommes…
Egalisation d’histogramme
Approche par le continu
On souhaite trouver la transformation T, qui à un niveau de gris x de
l’image d’entrée P associe un niveau de gris y de l’image de sortie q :
T(x)=y
La transformation T devra préserver l’ordre des niveaux de gris, c’est à dire
être croissante :
𝑥1 ≤ 𝑥2 → 𝑇 𝑥1 ≤ 𝑇(𝑥2)
On en déduit que, dans le continu, le nombre de points de l’image P
possédant un niveau de gris inférieur ou égal à x1 est égal au nombre de
points de l’image Q possédant un niveau de gris inférieur ou égal à T(x1).
Egalisation d’histogramme
A la recherche de la transformation T
On en déduit que le nombre de points de l’image P possédant un niveau de
gris inférieur ou égal à x1 est égal au nombre de points de l’image Q
possédant un niveau de gris inférieur ou égal à T(x1).
Question : Comment exprimer cette relation en termes d’histogrammes ?
T ( x)
x
H
pmin
P
( s )ds 
H
qmin
Q
(u )du
Egalisation d’histogramme
A la recherche de la transformation T
On souhaite obtenir un histogramme égalisé/uniformisé.
Question : Lequel de ces histogrammes est égalisé ?
Egalisation d’histogramme
A la recherche de la transformation T
Question : Que vaut HQ(y) ?
On pose :
qmax
H
HQ
(u )du  N
qmin
(qm ax  qm in ) H Q ( y )  N
HQ(y)
qmin
Q
y
qmax
N
H Q ( y) 
qm ax  qm in
Egalisation d’histogramme
A la recherche de la transformation T
Question : trouver l’expression de T(x) en fonction de x, en considérant
que
T ( x)
H
qmin
x
Q
(u )du 
H
P
( s )ds
pmin
N
H Q ( y) 
(qm ax  qm in )
Egalisation d’histogramme
A la recherche de la transformation T
T ( x)
H
x
Q
qmin
T ( x)

qmin
H
(u )du 
( s )ds
pmin
N
du 
(qmax  qmin )
T ( x)  qmin
N

qmax  qmin
q  qmin
T ( x)  max
N
P
x
H
P
( s )ds
pmin
x
H
P
( s )ds
P
( s )ds  qmin
pmin
x
H
pmin
Egalisation d’histogramme
A la recherche de la transformation T
On a donc :
qmax  qmin
T ( x) 
N
x
H
P
( s )ds  qmin
pmin
Ce qui donne dans le discret :
qmax  qmin
T ( x) 
N
x
H
s  pmin
P
( s )  qmin
Egalisation d’histogramme
Résultat
Seuil automatique
Seuil automatique
Qu’est-ce qu’un seuil
Réaliser un seuil (threshold en anglais) d’une image consiste à placer tous
les pixels au-dessus d’un certain niveau de gris T à la valeur blanc (255), et
tous les autres à la valeur noir (0).
Seuil à 70
Seuil à 220
Seuil à 150
Les histogrammes N&B
Seuil sur SciLab
On peut effectuer un seuil de l’image im au niveau T en faisant
--> im(find(im<=T)) = 0;
--> im(find(im>T)) = 255;
Seuil automatique
Ne pas se fier à son instinct
En examinant l’histogramme d’une image, on peut parfois voir un seuil
« évident » apparaître :
Seuil à 220
Seuil automatique
Ne pas se fier à son instinct
En examinant l’histogramme d’une image, on peut parfois voir un seuil
« évident » apparaître :
Seuil à 205
Seuil automatique
Ne pas se fier à son instinct
En examinant l’histogramme d’une image, on peut parfois voir un seuil
« évident » apparaître :
L’examen visuel du seuil, même s’il fait apparaître des seuils évidents, ne
fait pas forcément apparaître des seuils intéressants.
Seuil automatique
Trouver un seuil automatiquement
Une méthode permet de trouver un seuil « sympathique » automatiquement
: elle a été proposée par Nobuyuki Otsu en 1979.
Quand on choisit un seuil T, on divise l’histogramme H de l’image en deux
groupes : T< et T>
T<
Nobuyuki Otsu (1979). "A threshold selection method from gray-level histograms".
T>
Seuil automatique
Trouver un seuil automatiquement
Quand on choisit un seuil T, on divise l’histogramme H de l’image en deux
groupes : T< et T>
T<
T>
On calcule la variance VT< et VT> de ces deux
groupes.
On cherche le seuil T qui produit les deux
groupes donnant la somme des variances
pondérées (par la taille des groupes) la plus
faible.
Cela revient à produire deux groupes où « les pixels se ressemblent au sein
d’un même groupe » : cela s’appelle minimiser la variance intra classe.
Seuil automatique
Trouver un seuil automatiquement
On cherche le seuil T qui produit les deux groupes donnant la somme des
variances pondérées la plus faible.
argmin(𝑝< ∗ 𝑉𝑇< + 𝑝> ∗ 𝑉𝑇> )
𝑇
Où p< et p> sont les probabilités qu’un point de l’histogramme appartienne
respectivement à T< ou T>.
Question : Exprimer p< et p> en fonction de |T<|, |T>| et N, le nombre de
points dans l’image
|𝑇< |
|𝑇> |
𝑝 <=
, 𝑝 >=
𝑁
𝑁
Seuil automatique
Exprimer le problème différemment
On peut exprimer différemment ce problème.
La moyenne totale des pixels de l’image I s’écrit:
1
x
N
x
xI
La variance totale des pixels de l’image I s’écrit
1
V
N
2
(
x

x
)

xI
Seuil automatique
Exprimer le problème différemment
On peut décomposer la variance selon les deux groupes de pixels :
1
V
N
On pose :
1
2
2
(
x

x
)

(
(
x

x
)

(
x

x
)
)



1
2
N x1T
xI
x 2 T
2
1
x 
T
1
x 
T
x
x1T
1
x
x 2 T
2
La moyenne des pixels des groupes T< et T>.
Seuil automatique
Exprimer le problème différemment
2
(
x

x
)

 1
x1T
2
((
x

x
)

(
x

x
))
 1  
x1T

2
2
((
x

x
)

(
x

x
)
 2( x1  x )( x  x ))
 1 

x1T

2
2
(
x

x
)

(
x

x
)
 1     2  ( x1  x  )( x   x )
x1T

x1T
x1T
2
2
(
x

x
)

(
x

x
)
 2( x  x )  ( x1  x )
 1   
x1T
x1T
x1T
Seuil automatique
Exprimer le problème différemment
2
2
(
x

x
)

(
x

x
)
 2( x  x )  ( x1  x )
 1   

x1T
x1T
x1T
2
2
(
x

x
)

(
x

x
)
 1   

x1T
x1T
On a donc :
1
V  (  ( x1 x ) 2   ( x2 x ) 2 )
N x1T
x 2 T

1
(  ( x1 x ) 2   ( x2 x ) 2   ( x  x ) 2   ( x  x ) 2 )
N x1T
x 2 T
x1T
x 2 T
Seuil automatique
Exprimer le problème différemment
V
1
(  ( x1 x ) 2   ( x2 x ) 2   ( x  x ) 2   ( x  x ) 2 )
N x1T
x 2 T
x1T
x 2 T
1
 ( T  VT   T  VT    ( x  x ) 2   ( x  x ) 2 )
N
x1T
x 2 T
1
 ( T  VT   T  VT   T ( x  x ) 2  T ( x  x ) 2 )
N
Seuil automatique
Exprimer le problème différemment
𝑇< 𝑥< − 𝑥
2
+ 𝑇> 𝑥> − 𝑥
2
= 𝑇< 𝑥< 2 + 𝑇> 𝑥> 2 + 𝑁𝑥 2 − 2𝑥 𝑇< 𝑥< + 𝑇> 𝑥>
= 𝑇< 𝑥< 2 + 𝑇> 𝑥> 2 − 𝑁𝑥 2
= 𝑇< 𝑥< 2 + 𝑇> 𝑥> 2 − 𝑁
2
= 𝑇< 𝑥< + 𝑇> 𝑥>
2
𝑇< 𝑥< + 𝑇> 𝑥>
𝑁
2
𝑇< 2 𝑥< 2 + 𝑇> 2 𝑥> 2 + 2 𝑇< 𝑇> 𝑥< 𝑥>
−
𝑁
Seuil automatique
Exprimer le problème différemment
2
2
2
2
𝑇
𝑥
+
𝑇
𝑥
+ 2 𝑇< 𝑇> 𝑥< 𝑥>
<
<
>
>
2
2
= 𝑇< 𝑥< + 𝑇> 𝑥> −
𝑁
𝑁 𝑇< 𝑥< 2 − 𝑇< 2 𝑥< 2 𝑁 𝑇> 𝑥> 2 − 𝑇> 2 𝑥> 2 2 𝑇< 𝑇> 𝑥< 𝑥>
=
+
−
𝑁
𝑁
𝑁
Or, 𝑇< + 𝑇> = 𝑁
𝑇< |𝑇> |𝑥< 2 |𝑇< | 𝑇> 𝑥> 2 2 𝑇< 𝑇> 𝑥< 𝑥>
=
+
−
𝑁
𝑁
𝑁
Seuil automatique
Exprimer le problème différemment
𝑇< |𝑇> |𝑥< 2 |𝑇< | 𝑇> 𝑥> 2 2 𝑇< 𝑇> 𝑥< 𝑥>
=
+
−
𝑁
𝑁
𝑁
𝑇< 𝑇>
=
𝑥< − 𝑥>
𝑁
2
La variance totale s’écrit donc
𝑉=
𝑇<
𝑇>
𝑇< 𝑇>
𝑉𝑇< +
𝑉𝑇> +
𝑥< − 𝑥>
2
𝑁
𝑁
𝑁
2
Seuil automatique
Résultat
La variance totale s’écrit donc
𝑇<
𝑇>
𝑇< 𝑇>
𝑉=
𝑉𝑇< +
𝑉𝑇> +
𝑥< − 𝑥>
2
𝑁
𝑁
𝑁
2
Valeur fixe
On peut aussi maximiser cette
quantité, qui est la variance interclasse
Variance intra-classe que l’on cherche à minimiser
Seuil automatique
Résultat
Le problème initial, qui consiste à minimiser la variance intra classe, est
équivalent à maximiser la variance inter classe...
...c’est à dire que construire deux groupes de « pixels qui se ressemblent »...
...revient à construire deux « groupes très dissemblables » de pixels.
On implémentera cet algorithme en testant tous les seuils possibles et en
retenant celui qui maximise la variance inter classe.
Seuil automatique
Résultat
Seuil à 154
Seuil automatique
Résultat
Seuil à 130
Seuil automatique
Plus de deux classes
Dans le cas de k classes, on chercherait les classes qui maximisent :
Cardinal de la classe i
k

i 1
j 1
i j
Ti  T j
N
( xi  x j )
2
Valeur moyenne des éléments de la classe i
Seuil automatique
Plus de deux classes
Cependant, pour implémenter efficacement l’algorithme, on retiendra cette
formule équivalente (obtenue au début de notre calcul de variance) que l’on
cherchera à maximiser :
k
Ti
( xi  x ) 2

i 1 N
Grâce au fait que la contribution, à la valeur à maximiser, d’une classe ne
dépend pas des autres classes, on pourra utiliser des techniques de
programmation dynamique pour résoudre le problème.
Mélange de gaussiennes (1D)
Mélange de gaussiennes
Rappel sur la gaussienne
La densité de probabilité de la loi normale s’écrit
𝑓 𝑥 =
1
𝜎 ∗ √(2𝜋)
𝑒
−
1 𝑥−𝜇 2
2 𝜎
Une loi normale est caractérisée par deux
paramètres : µ et .
𝜎
Pour faire plus court, on écrira :
𝑓 𝑥 = 𝒩𝜇,𝜎 (𝑥)
𝜇
Mélange de gaussiennes
Cadre du problème
On imagine avoir une image avec trois éléments : des éléments circulaires
clairs (190), des rectangles gris foncés (170) et un fond très foncé (120).
Les histogrammes N&B
Du bruit gaussien sur SciLab
On peut ajouter du bruit gaussien à l’image im en faisant
for i=1:length(im)
h = im(i);
if(h == mu1)
im(i) = floor(grand(1,'nor',mu1,sigma1));
while(im(i) < 0 | im(i) > 255)
im(i) = floor(grand(1,'nor',mu1,sigma1));
end
elseif (h == mu2)
im(i) = floor(grand(1,'nor',mu2,sigma2));
while(im(i) < 0 | im(i) > 255)
im(i) = floor(grand(1,'nor',mu2,sigma2));
end
else
im(i) = floor(grand(1,'nor',mu3,sigma3));
while(im(i) < 0 | im(i) > 255)
im(i) = floor(grand(1,'nor',mu3,sigma3));
end
end
end
Mélange de gaussiennes
Cadre du problème
L’image est perturbée par du bruit gaussien, c’est-à-dire que chaque pixel
verra sa valeur modifiée selon une loi gaussienne (différente selon la valeur
du pixel) :
L’histogramme montre la présence de trois gaussiennes.
Mélange de gaussiennes
Cadre du problème
La question que l’on se pose est la suivante :
Peut-on retrouver les paramètres des trois gaussiennes à partir de
l’image de sortie (ou de son histogramme) ?
On possède les données suivantes :
. La loi que suit chacun des processus aléatoires que l’on essaye
de reconstruire (ici, loi gaussienne pour chacun),
. Le nombre k de processus (gaussiens) que l’on suspecte être à
l’origine de notre observation,
. Une observation de la réalisation de ces processus (ici, l’image
bruitée Q).
Mélange de gaussiennes
Poser le problème
Si l’on considère que l’image est le résultat d’un seul processus gaussien
de paramètre mu et sigma (la valeur de chaque pixel est le résultat d’un
même tirage aléatoire gaussien), on a
𝑝 𝑄 𝑞 = 𝑛 | 𝜇, 𝜎
= 𝒩𝜇,𝜎 (𝑛)
Etant donné que le niveau de gris observé du pixel q est Q(q), on a
𝑝 𝑄 𝑞 | 𝜇, 𝜎 = 𝒩𝜇,𝜎 (𝑄(𝑞))
Mélange de gaussiennes
Poser le problème
L’image est en réalité le résultat de k processus gaussiens aléatoires, chacun
avec une moyenne et une variance particulière.
On a alors dans ce cas :
𝜇1
𝜎1
𝜇 = ⋮ ,𝜎 = ⋮
𝜇𝑘
𝜎𝑘
𝑘
𝑝 𝑄 𝑞 | 𝜇, 𝜎 =
𝒩𝜇𝑖,𝜎𝑖 𝑄(𝑞)
𝑖=1
La probabilité qu’un pixel q possède une valeur Q(q) est donc la somme
des probabilités que chaque processus gaussien ait pu générer q avec le
niveau de gris Q(q).
Mélange de gaussiennes
Poser le problème
Question : Quelle est la probabilité que Q(q) soit une valeur entre moins
l’infini et plus l’infini ?
+∞ 𝑘
𝑝 𝑄 𝑞 ∈ ℝ | 𝜇, 𝜎 =
−∞ 𝑖=1
𝑘
𝒩𝜇𝑖 ,𝜎𝑖 𝑄 𝑞
+∞
=
𝑖=1 −∞
𝒩𝜇𝑖 ,𝜎𝑖 𝑄 𝑞
𝑘
=
1 =𝑘>1
𝑖=1
𝑑𝑄(𝑞)
𝑑𝑄(𝑞)
Mélange de gaussiennes
Poser le problème
Une probabilité supérieure à 1 : ce n’est pas très bon…
En vérité, chaque processus gaussien n’a pas le même poids : comme on
le voit sur l’exemple de l’image, chaque processus gaussien s’exerçant sur
le fond de l’image se produit beaucoup plus souvent que le processus
gaussien des rectangles ou des ellipses…
Processus de bruit sur le fond de l’image
Mélange de gaussiennes
Poser le problème
Une probabilité supérieure à 1 : ce n’est pas très bon…
En vérité, chaque processus gaussien n’a pas le même poids : comme on
le voit sur l’exemple de l’image, chaque processus gaussien s’exerçant sur
le fond de l’image se produit beaucoup plus souvent que le processus
gaussien des rectangles ou des ellipses…
Le poids du processus gaussien i
dans tout notre processus…
On a alors dans ce cas :
𝑘
𝑝 𝑄 𝑞 | 𝜇, 𝜎, Π =
𝑖=1
𝑘
Π𝑖 = 1
avec
𝑖=1
Π𝑖 ∗ 𝒩𝜇𝑖 ,𝜎𝑖 𝑄(𝑞)
Mélange de gaussiennes
Poser le problème
Question : Quelle est la probabilité que Q(q) soit une valeur entre moins
l’infini et plus l’infini ?
+∞ 𝑘
𝑝 𝑄 𝑞 ∈ ℝ | 𝜇, 𝜎, Π =
−∞ 𝑖=1
𝑘
=
+∞
Π𝑖 ∗
𝑖=1
Π𝑖 ∗ 𝒩𝜇𝑖 ,𝜎𝑖 𝑄(𝑞) 𝑑𝑄(𝑞)
−∞
𝑘
=
Π𝑖 = 1
𝑖=1
𝒩𝜇𝑖 ,𝜎𝑖 𝑄 𝑞 𝑑𝑄(𝑞)
Mélange de gaussiennes
Poser le problème
On a donc, pour un pixel q en particulier :
𝑘
𝑝 𝑄 𝑞 | 𝜇, 𝜎, Π =
Π𝑖 ∗ 𝒩𝜇𝑖 ,𝜎𝑖 𝑄(𝑞)
𝑖=1
Pour tous les pixels q1,…,qN de l’image, on a
𝑁
𝑘
𝑝 𝑄 | 𝜇, 𝜎, Π =
Π𝑖 ∗ 𝒩𝜇𝑖 ,𝜎𝑖 𝑄(𝑞𝑗 )
𝑗=1 𝑖=1
La probabilité d’observer l’image Q (l’image bruitée que l’on a)
Mélange de gaussiennes
Poser le problème
Notre problème consiste à trouver les 3k paramètres (k mu, k sigma et k pi)
qui maximisent la probabilité d’observer l’image Q que l’on a…
𝑁
𝑘
𝑝 𝑄 | 𝜇, 𝜎, Π =
Π𝑖 ∗ 𝒩𝜇𝑖 ,𝜎𝑖 𝑄(𝑞𝑗 )
𝑗=1 𝑖=1
On souhaite maximiser ça
Ca s’appelle maximiser la vraisemblance, c’est-à-dire maximiser la
probabilité d’observer ce que l’on observe bel et bien…
Mélange de gaussiennes
Poser le problème
Pour plus de simplicité dans les calculs (si si !), on souhaiterait se
débarrasser du produit au début de l’expression et le transformer en
somme…
𝑁 𝑘
𝑝 𝑄 | 𝜇, 𝜎, Π =
Π𝑖 ∗ 𝒩𝜇𝑖 ,𝜎𝑖 𝑄(𝑞𝑗 )
𝑗=1 𝑖=1
Question : comment transformer notre expression
afinétant
de secroissant,
débarrasser
du
Le logarithme
maximiser
cela revient à maximiser cela
produit ?
𝑁
𝑘:
On étudie le logarithme de la probabilité
ln(𝑝 𝑄 | 𝜇, 𝜎, Π ) =
ln
𝑗=1
Π𝑖 ∗ 𝒩𝜇𝑖 ,𝜎𝑖 𝑄(𝑞𝑗 )
𝑖=1
Mélange de gaussiennes
Poser le problème
Pour résumer, on chercher à trouver mu, sigma et pi qui maximisent
𝑁
ln(𝑝 𝑄 | 𝜇, 𝜎, Π ) =
𝑘
ln
𝑗=1
Π𝑖 ∗ 𝒩𝜇𝑖 ,𝜎𝑖 𝑄(𝑞𝑗 )
𝑖=1
On trouvera la solution en posant, pour tout m entre 1 et k :
𝑑 ln(𝑝 𝑄 | 𝜇, 𝜎, Π )
=0
𝑑𝜇𝑚
𝑑 ln(𝑝 𝑄 | 𝜇, 𝜎, Π )
=0
𝑑𝜎𝑚
𝑑 ln(𝑝 𝑄 | 𝜇, 𝜎, Π )
=0
𝑑Π𝑚
Mélange de gaussiennes
Quelques notations
Pour la suite, on pose les notations suivantes :
𝑝(𝑞 ∈ 𝑧𝑖 )
La probabilité que le pixel q ait eut sa valeur attribuée
par le processus gaussien i
= Π𝑖
𝑝(𝑄(𝑞))
La probabilité que le pixel q ait la valeur Q(q)
𝑘
=
Π𝑗 ∗ 𝒩𝜇𝑗 ,𝜎𝑗 𝑄(𝑞)
𝑗=1
𝑝 𝑄(𝑞) 𝑞 ∈ 𝑧𝑖 )
La probabilité que le pixel q ait la valeur Q(q) sachant
que sa valeur a été attribuée par le processus gaussien i.
= 𝒩𝜇𝑖,𝜎𝑖 𝑄(𝑞)
Mélange de gaussiennes
Quelques notations
Question : que représente
𝑝 𝑞 ∈ 𝑧𝑖 𝑄(𝑞))
La probabilité que le pixel q ait eut sa valeur
attribuée par le processus gaussien i sachant que
sa valeur est Q(q).
Question : combien cela vaut-il (théorème de Bayes) ?
𝑝 𝑞 ∈ 𝑧𝑖 𝑄(𝑞)) =
=
𝑝 𝑄 𝑞 𝑞 ∈ 𝑧𝑖 ) ∗ 𝑝(𝑞 ∈ 𝑧𝑖 )
𝑝 𝑄 𝑞
Π𝑖 ∗ 𝒩𝜇𝑖 ,𝜎𝑖 (𝑄 𝑞 )
𝑘
𝑗=1 Π𝑗
∗ 𝒩𝜇𝑗 ,𝜎𝑗 𝑄(𝑞)
Mélange de gaussiennes
Petit rappel
Question : si on considère une fonction u(x), que vaut
𝑑 𝑙𝑛(𝑢 𝑥 )
𝑑𝑥
=
𝑢′(𝑥)
𝑢(𝑥)
Forme très similaire à u’/u
Remarque :
𝑝 𝑞 ∈ 𝑧𝑖 𝑄(𝑞)) =
Π𝑖 ∗ 𝒩𝜇𝑖 ,𝜎𝑖 (𝑄 𝑞 )
𝑘
𝑗=1 Π𝑗
∗ 𝒩𝜇𝑗,𝜎𝑗 𝑄(𝑞)
Mélange de gaussiennes
Résoudre le problème
𝑑 ln(𝑝 𝑄(𝑞) | 𝜇, 𝜎, Π )
=0
Question : Calculer la valeur de 𝜇𝑚 si
𝑑𝜇𝑚
𝑑 ln(𝑝 𝑄(𝑞) | 𝜇, 𝜎, Π )
1
𝑑 𝑝 𝑄(𝑞) | 𝜇, 𝜎, Π
=
∗
𝑑𝜇𝑚
𝑝 𝑄(𝑞) | 𝜇, 𝜎, Π
𝑑𝜇𝑚
𝑘
𝑝 𝑄 𝑞 | 𝜇, 𝜎, Π =
Π𝑖 ∗ 𝒩𝜇𝑖 ,𝜎𝑖 𝑄(𝑞)
𝑖=1
𝑑 𝒩𝜇𝑚 ,𝜎𝑚 𝑄(𝑞)
𝑑 𝑝 𝑄(𝑞) | 𝜇, 𝜎, Π
= Π𝑚 ∗
= Π𝑚 ∗ 𝒩𝜇𝑚 ,𝜎𝑚 𝑄 𝑞
𝑑𝜇𝑚
𝑑𝜇𝑚
∗
𝑄 𝑞 − 𝜇𝑚
𝜎𝑚
2
Mélange de gaussiennes
Résoudre le problème
𝑑 𝑝 𝑄(𝑞) | 𝜇, 𝜎, Π
= Π𝑚 ∗ 𝒩𝜇𝑚 ,𝜎𝑚 𝑄 𝑞
𝑑𝜇𝑚
∗
𝑄 𝑞 − 𝜇𝑚
𝜎𝑚
2
𝑑 ln(𝑝 𝑄(𝑞) | 𝜇, 𝜎, Π )
1
𝑑 𝑝 𝑄(𝑞) | 𝜇, 𝜎, Π
=
∗
𝑑𝜇𝑚
𝑝 𝑄(𝑞) | 𝜇, 𝜎, Π
𝑑𝜇𝑚
=
Π𝑚 ∗ 𝒩𝜇𝑚 ,𝜎𝑚 𝑄 𝑞
𝑘
𝑗=1 Π𝑗
∗ 𝒩𝜇𝑗 ,𝜎𝑗 𝑄(𝑞)
= 𝑝 𝑞 ∈ 𝑧𝑚 𝑄(𝑞)) ∗
∗
𝑄 𝑞 − 𝜇𝑚
𝜎𝑚
𝑄 𝑞 − 𝜇𝑚
𝜎𝑚
2
2
Mélange de gaussiennes
Résoudre le problème
Si on souhaite généraliser le calcul à l’image entière, il suffit de sommer les
dérivées sur chaque point de l’image :
 ln( p (Q  ,  ,  ))
 m

  ln( p (Q(q )  ,  ,  ))
qQ
 m
  p (q  z m Q(q )) 
Q(q)   m
qQ
  p (q  z m Q(q )) 
qQ
0
m
2
Q(q)   m
m
2
0
0
Mélange de gaussiennes
Résoudre le problème
  p (q  z m Q(q )) 
Q(q)   m
m
qQ
 m
2
 p(q  z Q(q))  Q(q)

 p(q  z Q(q))
m
qQ
qQ
m
0
Mélange de gaussiennes
Résoudre le problème
Question : Calculer la valeur de 𝜎𝑚 si
 ln( p (Q  ,  ,  ))
 m
0
k
 ln( p (Q(q )  ,  ,  ))
 m

 ln(  j N  j , j (Q(q )))
j 1
 m
k

1
k

j 1
j
N  j , j (Q(q ))

   j N  j , j (Q(q ))
j 1
 m
Mélange de gaussiennes
Résoudre le problème
k
 ln( p (Q(q )  ,  ,  ))
 m

1
k
  j N  j , j (Q(q))

   j N  j , j (Q(q ))
j 1
 m
j 1

m
k

j 1
j
N  j , j (Q(q ))

N  m , m (Q(q ))
 m
Mélange de gaussiennes
Résoudre le problème
N  m , m (Q(q ))
 m

1
m

2
1
m
2
e
1  Q ( q )m
 
2
m



2
N  m , m (Q(q )) 

1
(Q(q )   m ) 2
 m 2
m
(Q(q )   m ) 2
m
3
3
e
1  Q ( q )m
 
2
m
N  m , m (Q(q ))
 (Q(q )   m ) 2 1 

 N  m , m (Q(q ))  

3
 m 
m




2
Mélange de gaussiennes
Résoudre le problème
 ln( p (Q(q )  ,  ,  ))
 m
 (Q(q )   m ) 2 1 

 k
 N  m , m (Q(q ))  

3
 m 

m

  j N  j , j (Q(q))
m
j 1
 (Q(q )   m ) 2 1 

 p (q  z m Q(q ))  

3
 m 
m

Mélange de gaussiennes
Résoudre le problème
Donc, en généralisant à tout Q :
 ln( p (Q  ,  ,  ))
 m
 (Q(q )   m ) 2 1 
0
  p (q  z m Q(q ))  

3



qQ
m
m


 (Q(q )   m ) 2 1 
0
  p (q  z m Q(q ))  

3
 m 
m
qQ

 m 
2
p
(
q

z
Q
(
q
))

(
Q
(
q
)


)

m
m
qQ
 p(q  z
qQ
m
Q(q ))
Mélange de gaussiennes
Résoudre le problème
Question : Calculer la valeur de Π𝑚 si
𝑑 ln(𝑝 𝑄| 𝜇, 𝜎, Π )
=0
𝑑Π𝑚
𝑘
Ici, on a une contraint concernant les Π𝑘 :
Π𝑖 = 1
𝑖=1
Il faut utiliser la technique des multiplicateurs de Lagrange pour intégrer
la contrainte au calcul d’optimum (on ne veut pas trouver le véritable
optimum de la fonction, mais l’optimum sous contrainte) :
𝑘
𝐹 Π𝑚 , 𝜆 = ln 𝑝 𝑄| 𝜇, 𝜎, Π
+𝜆
(Π𝑖 ) − 1
𝑖=1
Ça fait 0
Mélange de gaussiennes
Résoudre le problème
On veut maintenant trouver Π𝑚 tel que
𝑑𝐹(Π𝑚 , 𝜆)
=
𝑑Π𝑚
𝒩𝜇𝑚 ,𝜎𝑚 (𝑄 𝑞 )
𝑞∈𝑄
𝑘
𝑖=1 Π𝑖
𝒩𝜇𝑖 ,𝜎𝑖 (𝑄 𝑞 )
𝒩𝜇𝑚 ,𝜎𝑚 (𝑄 𝑞 )
↔ Π𝑚
𝑞∈𝑄
𝑘
𝑖=1 Π𝑖
𝒩𝜇𝑖 ,𝜎𝑖 (𝑄 𝑞 )
Π𝑚 𝒩𝜇𝑚 ,𝜎𝑚 (𝑄 𝑞 )
↔
𝑞∈𝑄
𝑘
𝑖=1 Π𝑖
𝒩𝜇𝑖 ,𝜎𝑖 (𝑄 𝑞 )
𝑑𝐹(Π𝑚 , 𝜆)
=0
𝑑Π𝑚
+𝜆 =0
+ 𝜆Π𝑚 = 0
+ 𝜆Π𝑚 = 0
Mélange de gaussiennes
Résoudre le problème
Π𝑚 𝒩𝜇𝑚 ,𝜎𝑚 (𝑄 𝑞 )
On a donc
𝑞∈𝑄
𝑘
𝑖=1 Π𝑖
𝒩𝜇𝑖 ,𝜎𝑖 (𝑄 𝑞 )
+ 𝜆Π𝑚 = 0
Cette équation est vraie pour tout m entre 1 et k, on peut donc sommer
l’équation pour m allant de 1 à k et continuer à avoir 0 :
𝑘
𝑚=1 𝑞∈𝑄
↔
𝑞∈𝑄
Π𝑚 𝒩𝜇𝑚 ,𝜎𝑚 (𝑄 𝑞 )
𝑘
𝑖=1 Π𝑖
𝒩𝜇𝑖 ,𝜎𝑖 (𝑄 𝑞 )
𝑘
𝑚=1 Π𝑚 𝒩𝜇𝑚 ,𝜎𝑚 (𝑄
𝑘
𝑖=1 Π𝑖 𝒩𝜇𝑖 ,𝜎𝑖 (𝑄 𝑞
𝑞 )
)
𝑘
+
𝜆Π𝑚 = 0
𝑚=1
𝑘
+𝜆
Π𝑚 = 0
𝑚=1
Mélange de gaussiennes
Résoudre le problème
𝑞∈𝑄
𝑘
𝑚=1 Π𝑚 𝒩𝜇𝑚 ,𝜎𝑚 (𝑄
𝑘
𝑖=1 Π𝑖 𝒩𝜇𝑖 ,𝜎𝑖 (𝑄 𝑞
↔
𝑞 )
)
𝑘
+𝜆
1+𝜆 =0
𝑞∈𝑄
↔𝑁+𝜆 =0
↔ 𝜆 = −𝑁
Π𝑚 = 0
𝑚=1
Mélange de gaussiennes
Résoudre le problème
On reprend l’équation
𝑑𝐹(Π𝑚 , 𝜆)
=
𝑑Π𝑚
𝒩𝜇𝑚 ,𝜎𝑚 (𝑄 𝑞 )
↔
𝑞∈𝑄
𝑘
𝑖=1 Π𝑖
𝒩𝜇𝑖 ,𝜎𝑖 (𝑄 𝑞 )
Π𝑚 𝒩𝜇𝑚 ,𝜎𝑚 (𝑄 𝑞 )
↔
𝑞∈𝑄
↔
𝑘
𝑖=1 Π𝑖
𝒩𝜇𝑖 ,𝜎𝑖 (𝑄 𝑞 )
𝒩𝜇𝑚 ,𝜎𝑚 (𝑄 𝑞 )
𝑞∈𝑄
=𝑁
= Π𝑚 𝑁
𝑝(𝑞 ∈ 𝑧𝑚 |𝑄 𝑞 ) = Π𝑚 𝑁
𝑞∈𝑄
𝑘
𝑖=1 Π𝑖
𝒩𝜇𝑖 ,𝜎𝑖 (𝑄 𝑞 )
+𝜆=0
Mélange de gaussiennes
Résoudre le problème
↔
𝑝(𝑞 ∈ 𝑧𝑚 |𝑄 𝑞 ) = Π𝑚 𝑁
𝑞∈𝑄
↔ Π𝑚 =
𝑞∈𝑄 𝑝(𝑞
∈ 𝑧𝑚 |𝑄 𝑞 )
𝑁
Mélange de gaussiennes
Problème résolu ?
On obtient donc les solutions suivantes à notre problème :
m
 p(q  z Q(q))  Q(q)

 p(q  z Q(q))
m
qQ
m
qQ
m 
2
p
(
q

z
Q
(
q
))

(
Q
(
q
)


)

m
m
pQ
 p(q  z
pQ
Π𝑚 =
Le problème est-il résolu ?
𝑞∈𝑄 𝑝(𝑞
m
Malheureusement non, car
𝑝 𝑞 ∈ 𝑧𝑚 𝑄(𝑞)) dépend, entre
autre, de 𝜇𝑚 , 𝜎𝑚 , Π𝑚 , mais aussi
de tous les 𝑢𝑖 , 𝜎𝑖 , Π𝑖 .
Q(q ))
∈ 𝑧𝑚 |𝑄 𝑞 )
𝑁
On ne peut pas extraire, des ces
équations, une solution exacte
immédiatement.
On peut par-contre construire un
algorithme...
Mélange de gaussiennes
L’algorithme Expectation-Minimization (EM)
L’algorithme EM (Espérance-Maximisation en français) permet de trouver
une valeur approchée des paramètres de notre problème en répétant deux
étapes :
1. On estime l’espérance de la vraisemblance, c’est-à-dire la
probabilité que la valeur d’un pixel ait été attribuée par un des processus
que l’on cherche à caractériser :
𝑝 𝑞 ∈ 𝑧𝑖 𝑄(𝑞))
2. A partir des ces calculs, on estime les valeurs des paramètres
des processus que l’on cherche à caractériser :
m
 p(q  z Q(q))  Q(q)

 p(q  z Q(q))
m
qQ
qQ
m
m 
 p(q  z Q(q))  (Q(q)  
 p(q  z Q(q))
m
pQ
pQ
m
m
)2
Π𝑚 =
𝑞∈𝑄 𝑝(𝑞
∈ 𝑧𝑚 |𝑄 𝑞 )
𝑁
A.P. Dempster, N.M. Laird et Donald Rubin(1974). "Maximum Likelihood from Incomplete Data via the EM Algorithm".
Mélange de gaussiennes
L’algorithme Expectation-Minimization (EM)
Voici le déroulement de l’algorithme :
Pour i=1,...,k
Choisir une valeur
au hasard de
𝜇𝑖 , 𝜎𝑖 , Π𝑖
Tant que
l’algorithme
n’a pas
convergé
On estime que l’on a convergé lorsque
𝑞∈𝑄 𝑝 𝑞 ∈ 𝑧𝑖 𝑄(𝑞)) n’évolue plus
Calcul de l’espérance de la vraisemblance en fonction des
observations (Q) et des éléments calculés à la phase précédent
Pour chaque i=1,...,k
calculer 𝜇𝑖 , 𝜎𝑖 , Π𝑖
Maximisation de
la vraisemblance
trouvée à l’étape
précédente
Pour chaque 𝑞 ∈ 𝑄
et pour chaque i=1,...,k
calculer 𝑝 𝑞 ∈ 𝑧𝑖 𝑄(𝑞))
Mélange de gaussiennes
Résultat
L’algorithme trouve
𝜇1 = 119,47 𝜎1 = 19,96
𝜇2 = 169,49 𝜎2 = 06,99
𝜇3 = 189,48 𝜎3 = 04,02
Π1 = 0,80
Π2 = 0,12
Π3 = 0,08
La vérité terrain était
𝜇1 = 120
𝜎1 = 20
𝜇2 = 170
𝜎2 = 07
𝜇3 = 190
𝜎3 = 04
Π1 = 0,80
Π2 = 0,12
Π3 = 0,08
Mélange de gaussiennes
Résultat
On peut attribuer à chaque pixel une valeur selon
la gaussienne à laquelle il est le plus probable
qu’il appartienne.
Pour chaque pixel q, on cherche
argmax 𝑝 𝑞 ∈ 𝑧𝑖 𝑄(𝑞))
𝑖
et on attribue à chaque pixel q la valeur 𝜇𝑖
Le résultat n’est pas parfait, mais avec un filtre
médian, on peut l’améliorer...
Méthodes par histogramme
Conclusion
Conclusion
Conclusion sur les méthodes par histogrammes
Les méthodes par histogrammes ont l’avantage d’être simples à mettre en
œuvre.
Cependant, elles ne prennent pas en compte une information d’importance :
la disposition spatiale des pixels.
Leurs résultats sont donc très limités car, au final, on finit toujours par
effectuer un seuil de l’image en fonction d’un paramètre calculé
dynamiquement...
Ce chapitre a été l’occasion de découvrir quelques principes de
segmentation, ainsi que de se familiariser avec un certain formalisme
mathématiques.
Nous verrons à l’avenir des méthodes plus puissantes pour segmenter une