You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

技术问询:已完成浣熊面部灰度图像5段分割,新手求指导

浣熊面部灰度图像5段灰度分割实现

哇,作为新手能完成这个灰度分割任务真的很厉害!我帮你把代码补全并整理好,方便你查看和运行:

完整实现代码

import numpy as np
from sklearn import cluster
import scipy as sp
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans

# 加载浣熊面部灰度图像
face = sp.misc.face(gray=True)
# 设置灰度段数量
n_clusters = 5
np.random.seed(0)

# 将图像数据重塑为KMeans需要的格式
X = face.reshape((-1, 1))
# 初始化并训练KMeans模型
k_Means = cluster.KMeans(n_clusters=n_clusters, n_init=4)
k_Means.fit(X)

# 获取聚类后的标签,并生成分割后的图像数据
labels = k_Means.labels_
segmented_image = k_Means.cluster_centers_[labels].reshape(face.shape)

# 可视化原图和分割后的图像
plt.figure(figsize=(8, 3.5))
# 显示原图
plt.subplot(121)
plt.imshow(face, cmap=plt.cm.gray)
plt.title("原图")
plt.axis('off')

# 显示分割后的图像
plt.subplot(122)
plt.imshow(segmented_image, cmap=plt.cm.gray)
plt.title(f"{n_clusters}段灰度分割图")
plt.axis('off')

plt.tight_layout()
plt.show()

关键步骤说明

  • 首先用sp.misc.face(gray=True)加载内置的浣熊灰度图像,省去了自己找数据集的麻烦
  • 把二维的图像数组重塑成(-1,1)的一维数组,这是KMeans算法要求的输入格式(每个样本是一个特征值,也就是灰度值)
  • 初始化KMeans模型时设置n_init=4,是为了多次初始化聚类中心,避免陷入局部最优解
  • 聚类完成后,用每个聚类的中心灰度值替换对应位置的原始灰度值,再重塑回图像的二维形状,就得到了分割后的灰度图像
  • 最后通过子图对比展示原图和分割效果,关闭坐标轴让图像展示更干净

内容的提问来源于stack exchange,提问作者dan_karan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:39:16