104 votes

Segmentation d’images en utilisant Shift signifie a expliqué

Pourrait quelqu'un s’il vous plaît m’aider à comprendre comment la segmentation signifie Maj fonctionne réellement ?

Voici une matrice de 8 x 8 que je viens de faire jusqu'à

À l’aide de la matrice ci-dessus est-il possible d’expliquer comment segmentation signifie Maj séparerait les 3 niveaux différents de nombres ?

200voto

belisarius Points 45827

D'abord les bases:

Le Décalage de la valeur Moyenne de la segmentation est une homogénéisation de la technique qui est très utile pour l'amortissement de l'ombrage ou de la tonalité des différences dans les objets localisés. Un exemple vaut mieux que de longues explications:

enter image description here

Action:remplace chaque pixel par la moyenne des pixels dans une plage de-r de quartier et dont la valeur est à l'intérieur d'une distance d.

Le Décalage de la valeur Moyenne dure habituellement de 3 entrées:

  1. Une fonction de distance pour mesurer les distances entre les pixels. Habituellement, la distance Euclidienne, mais tout autre bien définie fonction de distance pourrait être utilisé. Le Manhattan La Distance est un autre choix utile parfois.
  2. Un rayon. Tous les pixels à l'intérieur de ce rayon (mesurée selon la distance au-dessus de) seront comptabilisées pour le calcul.
  3. Une valeur de différence. De tous les pixels à l'intérieur de rayon r, nous permettra de ne prendre que ceux dont les valeurs sont à l'intérieur de cette différence pour le calcul de la moyenne

Veuillez noter que l'algorithme n'est pas bien défini à l'intérieur des frontières, de sorte que les différentes implémentations de vous donner des résultats différents.

Je ne vais PAS discuter de la sanglante mathématique de détails ici, car il est impossible de les montrer sans notation mathématique, ne sont pas disponibles dans StackOverflow, et aussi parce qu'ils peuvent être trouvés à partir de bonnes sources ailleurs.

Regardons le centre de votre matrice:

153  153  153  153 
147  96   98   153 
153  97   96   147   
153  153  147  156  

Avec des choix raisonnables pour le rayon et la distance, les quatre centre de pixels obtenez la valeur de 97 (leur moyenne) et sera différent de la pixels adjacents.

Nous allons calculer dans Mathematica. Au lieu de montrer la réalité des chiffres, nous allons afficher un code de couleur, de sorte qu'il est plus facile de comprendre ce qui se passe:

Le codage de la couleur de votre matrice est:

enter image description here

Puis nous prenons un raisonnable de Décalage:

MeanShiftFilter[a, 3, 3]

Et nous obtenons:

enter image description here

Où tous les centrer les éléments sont égaux (à 97, BTW).

Vous pouvez itérer plusieurs fois avec un Décalage Moyen, en essayant d'obtenir une coloration homogène. Après quelques itérations, vous arrivez à un stable non-isotrope de configuration:

enter image description here

À ce moment, il devrait être clair que vous ne pouvez pas sélectionner le nombre de "couleurs", vous obtenez après l'application de Décalage. Donc, nous allons montrer comment le faire, parce que c'est la deuxième partie de votre question.

Ce dont vous avez besoin pour être en mesure de définir le nombre de sortie des grappes à l'avance est quelque chose comme Kmeans de clustering.

Il fonctionne de cette façon pour votre matrice:

b = ClusteringComponents[a, 3]

{{1, 1, 1, 1, 1, 1, 1, 1}, 
 {1, 2, 2, 3, 2, 3, 3, 1}, 
 {1, 3, 3, 3, 3, 3, 3, 1}, 
 {1, 3, 2, 1, 1, 3, 3, 1}, 
 {1, 3, 3, 1, 1, 2, 3, 1}, 
 {1, 3, 3, 2, 3, 3, 3, 1}, 
 {1, 3, 3, 2, 2, 3, 3, 1}, 
 {1, 1, 1, 1, 1, 1, 1, 1}}  

Ou:

enter image description here

Ce qui est très similaire à nos résultats précédents, mais comme vous pouvez le voir, maintenant, nous n'avons que trois niveaux de sortie.

HTH!

161voto

mlai Points 768

Un Moyen de Décalage de la segmentation fonctionne quelque chose comme ceci:

Les données de l'image est convertie en fonction de l'espace feature space

Dans votre cas, tout ce que vous avez sont les valeurs d'intensité, de sorte que l'espace de la fonctionnalité ne seront qu'une seule dimension. (Vous pouvez calculer certaines caractéristiques de texture, par exemple, et puis votre espace de fonction serait de deux dimensions – et vous seriez segmentation basée sur l'intensité et de la texture)

Recherche de windows sont réparties sur la fonctionnalité de l'espace enter image description here

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 affiné en fonction des applications spécifiques

Mean-Shift itérations:

1.) Les Moyens des échantillons de données à l'intérieur de chaque fenêtre sont calculées enter image description here

2.) Les fenêtres sont Décalés vers l'emplacement correspondant à leur précédemment calculés moyens enter image description here

Les étapes 1.) et 2.) sont répétées jusqu'à la convergence, c'est à dire toutes les fenêtres sont installées sur les lieux définitifs enter image description here

Les fenêtres qui se retrouvent sur les mêmes emplacements sont fusionnés enter image description here

Les données sont regroupés en fonction de la fenêtre traversals enter image description here

... par exemple, toutes les données qui a été traversé par windows qui a fini par, disons, à la position "2", va former un cluster associé à cet emplacement.

Donc, cette segmentation va (coïncidence) produire des trois groupes. La visualisation de ces groupes à l'origine, le format d'image devrait ressembler à quelque chose comme la dernière photo de bélisaire réponse. Le choix de différentes tailles de fenêtre et emplacements initiaux peuvent produire des résultats différents.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X