Emmanuel Caruyer
2020-2021, L3 SIF (ENS Rennes, Université de Rennes 1)
Dans le cours précédent, nous avons tenté de résoudre le problème de la segmentation en utilisant une technique de regroupement des couleurs en \(k\) classes à l’aide de l’algorithme des \(k\) moyennes, et avons exploré une méthode de détection des contours basée sur le filtre de Canny. Nous poursuivons dans ce cours en cherchant à relier et unifier ces deux principes.
Segmentation par la méthode des k-moyennes
Détection des contours par filtre de Canny (TP5)
Rappel : le problème de la segmentation consiste à trouver une partition du support de l’image \[ \Omega = \bigcup_{i=1\ldots k} \mathcal S_i, \qquad \mathcal{S}_i \cap \mathcal{S}_j = \emptyset \text{ pour }i\neq j \] où \(k\) est le nombre de classes dans l’image.
De façon équivalente, on cherche un étiquetage \(u: \Omega \rightarrow \{1 \ldots k \}\) qui attribue une étiquette (ou label en anglais) à chaque pixel du support de l’image, correspondant aux objets présents dans l’image \(f\).
Dans un cadre probabiliste, on cherche à modéliser la probabilité d’un étiquetage \(u\) pour une image \(f\) (une observation) donnée. On note \(P(u|f)\) cette probabilité, l’objectif est de trouver l’étiquetage qui maximimse cette probabilité \[ \hat{u}_\mathrm{map} = \arg\max_u P(u|f). \] On appelle \(\hat{u}_\mathrm{map}\) l’estimateur du maximum a posteriori.
En général, il est difficile de modéliser \(P(u|f)\) directement, on utilise pour cela le théorème de Bayes : \[ P(u|f) = \frac{P(f|u) P(u)}{P(f)}. \] Pour une observation \(f\) donnée, maximiser \(P(u|f)\) revient donc à maximiser \(P(f|u) P(u)\), ou de façon équivalente en passant au \(\log\) à minimiser \[ V(u|f) = -\log P(f|u) - \log P(u). \]
Dans la dernière équation, on peut voir le premier terme comme une mesure de la fidélité aux données, alors que le second terme représente un a priori sur la solution que l’on cherche, par exemple sur sa régularité. On va voir en détails ces deux parties du modèle.
On peut supposer que conditionnellement à l’étiquetage \(u\), les observations d’un pixel à l’autre sont indépendantes : \[ P(f|u) = \prod_{p\in\Omega}P(f[p]|u). \] Par ailleurs, l’observation (la valeur de l’intensité au pixel \(p\)) ne dépend que de la classe de ce pixel : \[ P(f[p]|u) = P(f[p] | u[p]), \] il reste à modéliser cette probabilité.
De façon simple, on peut supposer que la distribution des intensités (ou des couleurs) à l’intérieur de chaque classe \(i\) suit une loi gaussienne de moyenne \(\mu_i\) et de variance \(\sigma_i^2\). Ces paramètres peuvent être donnés par l’utilisateur, l’utilisateur peut par exemple fournir l’étiquetage d’une partie de chacun des objets (voir Figure), dont on peut déduire une estimation de \(\mu_i\) et de \(\sigma_i^2\).