Quelqu'un pourrait-il m'aider à comprendre comment fonctionne réellement la segmentation Mean Shift?
Voici une matrice 8x8 que je viens de créer
103 103 103 103 103 103 106 104
103 147 147 153 147 156 153 104
107 153 153 153 153 153 153 107
103 153 147 96 98 153 153 104
107 156 153 97 96 147 153 107
103 153 153 147 156 153 153 101
103 156 153 147 147 153 153 104
103 103 107 104 103 106 103 107
En utilisant la matrice ci-dessus, est-il possible d'expliquer comment la segmentation par décalage moyen séparerait les 3 différents niveaux de nombres?
Réponses:
Les bases d'abord:
La segmentation Mean Shift est une technique d'homogénéisation locale très utile pour amortir les différences d'ombrage ou de tonalité dans des objets localisés. Un exemple vaut mieux que plusieurs mots:
Action: remplace chaque pixel par la moyenne des pixels dans un voisinage range-r et dont la valeur est à une distance d.
Le décalage moyen prend généralement 3 entrées:
Veuillez noter que l'algorithme n'est pas bien défini aux frontières, donc différentes implémentations vous donneront des résultats différents là-bas.
Je ne discuterai PAS des détails mathématiques sanglants ici, car ils sont impossibles à montrer sans une notation mathématique appropriée, non disponible dans StackOverflow, et aussi parce qu'ils peuvent être trouvés à partir de bonnes sources ailleurs .
Regardons le centre de votre matrice:
Avec des choix raisonnables de rayon et de distance, les quatre pixels centraux auront la valeur 97 (leur moyenne) et seront différents des pixels adjacents.
Calculons-le dans Mathematica . Au lieu d'afficher les chiffres réels, nous afficherons un code couleur, il est donc plus facile de comprendre ce qui se passe:
Le code couleur de votre matrice est:
Ensuite, nous prenons un décalage moyen raisonnable:
Et nous obtenons:
Où tous les éléments centraux sont égaux (à 97, BTW).
Vous pouvez itérer plusieurs fois avec Mean Shift, en essayant d'obtenir une coloration plus homogène. Après quelques itérations, vous arrivez à une configuration non isotrope stable:
À ce stade, il devrait être clair que vous ne pouvez pas sélectionner le nombre de «couleurs» que vous obtenez après l'application de Mean Shift. Alors, montrons comment faire, car c'est la deuxième partie de votre question.
Ce dont vous avez besoin pour pouvoir définir le nombre de clusters de sortie à l'avance est quelque chose comme le clustering Kmeans .
Il fonctionne de cette façon pour votre matrice:
Ou:
Ce qui est très similaire à notre résultat précédent, mais comme vous pouvez le voir, nous n'avons plus que trois niveaux de sortie.
HTH!
la source
Une segmentation Mean-Shift fonctionne comme ceci:
Les données d'image sont converties en espace de fonctionnalités
Dans votre cas, vous n'avez que des valeurs d'intensité, donc l'espace des fonctionnalités ne sera qu'unidimensionnel. (Vous pourriez calculer certaines caractéristiques de texture, par exemple, puis votre espace d'entités serait bidimensionnel - et vous segmenteriez en fonction de l'intensité et de la texture)
Les fenêtres de recherche sont réparties sur l'espace des fonctionnalités
Le nombre de fenêtres, la taille de la fenêtre et les emplacements initiaux sont arbitraires pour cet exemple - quelque chose qui peut être ajusté en fonction des applications spécifiques
Itérations de décalage moyen:
1.) Les MOYENNES des échantillons de données dans chaque fenêtre sont calculées
2.) Les fenêtres sont décalées vers les emplacements égaux à leurs moyennes précédemment calculées
Les étapes 1.) et 2.) sont répétées jusqu'à la convergence, c'est-à-dire que toutes les fenêtres se sont installées sur les emplacements finaux
Les fenêtres qui se retrouvent aux mêmes emplacements sont fusionnées
Les données sont regroupées en fonction des traversées de fenêtres
... Par exemple, toutes les données qui ont été traversées par des fenêtres qui se sont terminées, par exemple, à l'emplacement «2», formeront un cluster associé à cet emplacement.
Ainsi, cette segmentation produira (par coïncidence) trois groupes. L'affichage de ces groupes dans le format d'image d'origine peut ressembler à la dernière image de la réponse de Bélisaire . Le choix de différentes tailles de fenêtre et emplacements initiaux peut produire des résultats différents.
la source