[PYTHON] Segmentation d'image avec scikit-image et scikit-learn

L'objectif de cet article est d'expérimenter l'algorithme de division d'image par clustering. Visons le caméraman. (Tous fonctionnent sur ipython --pylab.)

from skimage import data,io
image=data.camera()
io.imshow(image)

camera_original.png

La cible de clustering est chaque pixel. Lorsque le nombre de données est n et le nombre de dimensions est d, une matrice n × d doit être créée afin d'utiliser l'algorithme de clustering. Puisque la cible est chaque pixel cette fois, créez d'abord une matrice 262144 × 1 avec n = 512 × 512 = 262144 et d = 1.

X=image.reshape((-1,1))

Vous êtes maintenant prêt. Let's cluster. Utilisez le clustering Mean-Shift. Le regroupement par décalage moyen est considéré comme approprié pour la division d'image car il n'est pas nécessaire de déterminer le nombre de clusters à l'avance. Ceci est déjà implémenté dans scicit-learn. Comme c'est pratique ... Il y a quelques paramètres, mais je vais essayer de respecter les références.

from sklearn.cluster import MeanShift,estimate_bandwidth
bandwidth=estimate_bandwidth(X,quantile=0.2,n_samples=500)
ms=MeanShift(bandwidth=bandwidth,bin_seeding=True)
ms.fit(X)

Ceci termine la mise en cluster. Voyons le résultat.

segmented_image=ms.labels_
segmented_image.shape=image.shape
imshow(segmented_image)
#matshow(segmented_image)

camera_segmented.png

Regardons également le nombre de clusters.

print len(unique(ms.labels_))
3

Le caméraman a été divisé en trois parties. Des données de réponse correctes sont nécessaires pour évaluer si cela est bon ou mauvais, mais est-ce quelque part? Les performances du clustering Mean-Shift dépendent en grande partie de la bande passante. Cette fois, sklearn avait une fonction pour estimer la bande passante, alors j'ai essayé de l'utiliser, mais je ne peux rien dire car je n'ai pas vu ce que je fais à l'intérieur. Pour le moment, je suis heureux d'avoir pu expérimenter la division d'image en utilisant la série scicit.

Merci beaucoup.

Les références

Recommended Posts

Segmentation d'image avec scikit-image et scikit-learn
[Python] Traitement d'image avec scicit-image
Segmentation et regroupement de photos avec DBSCAN
Segmentation d'image avec CaDIS: un ensemble de données sur la cataracte
Isomap avec Scikit-learn
DBSCAN avec scikit-learn
Clustering avec scikit-learn (1)
Clustering avec scikit-learn (2)
PCA avec Scikit-learn
kmeans ++ avec scikit-learn
Générer et publier des données d'image factice avec Django
Validation croisée avec scikit-learn
Traitement d'image avec MyHDL
Remarques sur le traitement d'images HDR et RAW avec Python
Reconnaissance d'image avec keras
Rendre les indicateurs de performance plus visibles avec PyTorch et scikit-learn
SVM multi-classes avec scikit-learn
Clustering avec scikit-learn + DBSCAN
Analyse d'images par apprentissage profond à partir de Kaggle et Keras
Apprentissage automatique facile avec scikit-learn et flask ✕ Application Web
Apprentissage Scikit-Learn avec la chimioinfomatique
Capture d'image / comparaison de la vitesse OpenCV avec et sans GPU
Segmentation d'image à l'aide de U-net
Traitement d'image avec Python
POSTER l'image avec json et la recevoir avec flask
DBSCAN (clustering) avec scikit-learn
L'apprentissage automatique pratique avec Scikit-Learn et TensorFlow-TensorFlow a abandonné -
Avec et sans WSGI
Installez scikit.learn avec pip
Calculer tf-idf avec scikit-learn
Traitement d'image avec PIL
Classification d'images avec un réseau de neurones auto-fabriqué par Keras et PyTorch
Créez un environnement d'apprentissage automatique scikit-learn avec VirtualBox et Ubuntu
Exploration Web, scraping Web, acquisition de caractères et sauvegarde d'image avec python
[Jouons avec Python] Traitement d'image en monochrome et points
Créez un environnement GPU avec GCP et l'image officielle de Kaggle (docker)
Avec moi, cp et sous-processus
Téléchargement d'image avec l'API Flickr
Traitement d'image avec Python (partie 2)
Programmation avec Python et Tkinter
Chiffrement et déchiffrement avec Python
Lire les coordonnées de l'image avec Python-matplotlib
Python et matériel - Utilisation de RS232C avec Python -
Édition d'image avec python OpenCV
Réseau de neurones avec Python (scikit-learn)
Téléchargement d'images et personnalisation avec django-ckeditor
Tri des fichiers image avec Python (2)
Tri des fichiers image avec Python (3)
100 coups sur le traitement d'image !! (001 --010) Soigneusement et soigneusement
Traitement parallèle avec Parallel de scikit-learn
Créer une visionneuse d'images avec Tkinter
Traitement d'image avec Python (partie 1)
Tweet avec image en Python
Tri des fichiers image avec Python
Traitement d'image avec Python (3)
Génération de légende d'image avec Chainer
[Python] Régression linéaire avec scicit-learn
Obtenez des fonctionnalités d'image avec OpenCV
Super résolution avec SRGAN et ESRGAN
Group_by avec sqlalchemy et sum