Hướng dẫn hierarchical clustering image segmentation python - phân đoạn hình ảnh phân cụm phân cấp python

Tính toán phân đoạn của hình ảnh 2D với phân cụm phân cấp Ward. Việc phân cụm bị hạn chế về mặt không gian để mỗi vùng được phân đoạn là một mảnh.

Hướng dẫn hierarchical clustering image segmentation python - phân đoạn hình ảnh phân cụm phân cấp python

Đầu ra tập lệnh::

Compute structured hierarchical clustering...
Elapsed time:  7.05330491066
Number of pixels:  65536
Number of clusters:  15

Mã nguồn Python: Plot_lena_ward_Segmentation.py plot_lena_ward_segmentation.py

# Author : Vincent Michel, 2010
#          Alexandre Gramfort, 2011
# License: BSD 3 clause

print(__doc__)

import time as time
import numpy as np
import scipy as sp
import matplotlib.pyplot as plt
from sklearn.feature_extraction.image import grid_to_graph
from sklearn.cluster import AgglomerativeClustering

###############################################################################
# Generate data
lena = sp.misc.lena()
# Downsample the image by a factor of 4
lena = lena[::2, ::2] + lena[1::2, ::2] + lena[::2, 1::2] + lena[1::2, 1::2]
X = np.reshape(lena, (-1, 1))

###############################################################################
# Define the structure A of the data. Pixels connected to their neighbors.
connectivity = grid_to_graph(*lena.shape)

###############################################################################
# Compute clustering
print("Compute structured hierarchical clustering...")
st = time.time()
n_clusters = 15  # number of regions
ward = AgglomerativeClustering(n_clusters=n_clusters,
        linkage='ward', connectivity=connectivity).fit(X)
label = np.reshape(ward.labels_, lena.shape)
print("Elapsed time: ", time.time() - st)
print("Number of pixels: ", label.size)
print("Number of clusters: ", np.unique(label).size)

###############################################################################
# Plot the results on an image
plt.figure(figsize=(5, 5))
plt.imshow(lena, cmap=plt.cm.gray)
for l in range(n_clusters):
    plt.contour(label == l, contours=1,
                colors=[plt.cm.spectral(l / float(n_clusters)), ])
plt.xticks(())
plt.yticks(())
plt.show()

Tổng thời gian chạy của ví dụ: 7,59 giây (0 phút 7,59 giây) 7.59 seconds ( 0 minutes 7.59 seconds)

Chúng ta có thể sử dụng phân cụm để thực hiện phân đoạn hình ảnh không?

Trừu tượng. Phân đoạn hình ảnh là phân loại của một hình ảnh thành các nhóm khác nhau. Nhiều nghiên cứu đã được thực hiện trong lĩnh vực phân đoạn hình ảnh bằng cách sử dụng phân cụm. Có nhiều phương pháp khác nhau và một trong những phương pháp phổ biến nhất là thuật toán phân cụm K-MEANS.Many researches have been done in the area of image segmentation using clustering. There are different methods and one of the most popular methods is k-means clustering algorithm.

Làm thế nào để bạn hình dung phân cụm phân cấp trong Python?

Các bước để thực hiện phân cụm phân cấp..
Bước 1: Đầu tiên, chúng tôi gán tất cả các điểm cho một cụm riêng lẻ:.
Bước 2: Tiếp theo, chúng ta sẽ xem xét khoảng cách nhỏ nhất trong ma trận gần và hợp nhất các điểm với khoảng cách nhỏ nhất.....
Bước 3: Chúng tôi sẽ lặp lại Bước 2 cho đến khi chỉ còn một cụm ..

Điểm bóng có thể được sử dụng để phân cụm phân cấp không?

Đối với một giải pháp phân cụm của bộ dữ liệu, chỉ số hình bóng trung bình của tất cả các điểm dữ liệu gần với +1, giải pháp phân cụm càng tốt.the more the average Silhouette Index of all the data points closer to +1, the better the clustering solution is.

Là phân cụm phân cấp DBSCAN?

DBSCAN là một thuật toán phân cụm dựa trên mật độ hoạt động dựa trên giả định rằng các cụm là các vùng dày đặc trong không gian được phân tách bởi các vùng có mật độ thấp hơn.Nó nhóm các điểm dữ liệu 'dày đặc thành một cụm. that works on the assumption that clusters are dense regions in space separated by regions of lower density. It groups 'densely grouped' data points into a single cluster.