L'objectif est de séparer les objets qui se trouvent regroupés dans des amas, de manière à isoler chaque objet dans une région spécifique.
La séparation se fait à partir de la forme des objets que l'on suppose convexe.
Dans l'exemple proposé, il s'agit d'isoler chaque cellule dans une région individuelle. L'image initiale est une image binaire des objets obtenue par un processus de segmentation préliminaire.
L'image initiale avec les amas. | Le résultat avec les objets individualisés. |
La méthode de séparation fait l'hypothèse que les objets à séparer (ici les cellules) sont convexes. Ils ne possèdent donc qu'un érodé ultime alors que les amas, qui présentent des concavités, en possèdent plusieurs, ce qu'illustrent les exemples ci-dessous :
La séparation nécessite deux étapes :
Les érodés ultimes sont calculés à partir de la fonction de distance aux contours des régions. Ce sont les maxima locaux de la fonction distance. Avant la détection des maxima locaux , il est nécessaire d'appliquer un lissage Gaussien de manière à éroder les plateaux et créer des maxima ponctuels. Le lissage vise aussi à regrouper des maxima très proches. La force du lissage permet de contrôler la distance entre deux maxima.
Finalement, un masquage par l'image binaire d'entrée permet de ne récupérer que les maxima à l'intérieur des objets.
pany2pan input.png input.pan pboundary 8 input.pan tmp1.pan pdistance tmp1.pan tmp2.pan pgaussianfiltering 1.5 tmp2.pan tmp3.pan plocalmaxima 8 tmp3.pan tmp4.pan pbinarization 1 1e30 tmp4.pan tmp5.pan pmask tmp5.pan input.pan tmp6.pan | |
tmp2.pan : L'image de distances aux contours. | |
tmp6.pan : Les maxima locaux superposés à l'image initiale. |
Les maxima locaux trouvés précédemment sont labélisés avec un numéro d'étiquette unique et deviennent les germes du processus de localisation. La localisation des frontières des objets utilise la ligne de partage des eaux. Elle procède par propagation des germes contrôlés par l'inverse de la distance aux contours. L'image de distance est d'abord masquée par l'image binaire des objets de manière à mettre à 0 tous les pixels qui ne font pas partie des objets. Après l'inversion, ces valeurs deviennent très grandes et empêchent une propagation anarchique.
pmask tmp2.pan input.pan tmp7.pan pinverse tmp7.pan tmp8.pan plabeling 8 tmp6.pan tmp9.pan pwatershed tmp9.pan tmp8.pan tmp10.pan pmask tmp10.pan input.pan output.pan | |
tmp9.pan : Les germes. | |
tmp10.pan : Après la ligne de partage des eaux. | |
output.pan : Après le masquage par l'image des objets. |
Uniquement pour des raisons de visualisation des résultats, on va superposer les frontières des zones boisées trouvées à l'image initiale.
psuperimposition 1 input.pan output.pan result.pan ppan2png result.pan output.png | |
result.pan : Le résultat superposé à l'image initiale. |