python灰度图k-means聚类
时间: 2023-08-30 19:05:16 浏览: 105
下面是一个基于Python的灰度图K-Means聚类的示例代码:
```python
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from skimage import io, color
# 读入灰度图像
img = io.imread('gray_image.jpg')
# 将灰度图转化为二维数组
rows = img.shape[0]
cols = img.shape[1]
img_data = img.reshape(rows * cols, 1)
# 聚类
kmeans = KMeans(n_clusters=4)
kmeans.fit(img_data)
# 重构图像
compressed_img = np.zeros((rows, cols))
label_idx = 0
for i in range(rows):
for j in range(cols):
compressed_img[i][j] = kmeans.labels_[label_idx]
label_idx += 1
# 绘制图像
plt.figure(figsize=(8, 4))
plt.subplot(121)
plt.imshow(img, cmap='gray')
plt.axis('off')
plt.title('Original Image')
plt.subplot(122)
plt.imshow(compressed_img, cmap='gray')
plt.axis('off')
plt.title('Compressed Image')
plt.show()
```
首先,我们使用 `skimage` 库中的 `io` 模块读入灰度图像,并将其转化为二维数组。然后,我们使用 `sklearn` 库中的 `KMeans` 模块进行聚类,将图像像素分为4个簇。接着,我们将聚类结果重构为二维图像,并使用 `matplotlib` 库进行绘制。
需要注意的是,在这个示例代码中,我们使用了一张名为 `gray_image.jpg` 的灰度图像作为示例输入。你需要将示例代码中的文件名改为你自己的输入图像文件名。
阅读全文