人工智能——“kmeans实现图片分割”(Python实现)

(2)边缘分割:对图像边缘进行检测,即检测图像中灰度值发生跳变的地方,则为一片

区域的边缘。

(3)直方图法:对图像的颜色建立直方图,而直方图的波峰波谷能够表示一块区域的颜

色值的范围,来达到分割的目的。

(4)特定理论:基于 聚类分析 、小波变换等理论完成图像分割。

3 案例实现


3.1 案例

目标 :利用 K-means 聚类算法对图像像素点颜色进行聚类实现简单的图像分割

输出 :同一聚类中的点使用相同颜色标记,不同聚类颜色不同

本实例中的数据可以是任意大小的图片,为了使效果更佳直观,可以采用区分度比较明显的图片。本次案例以下图为例:

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是二分KMeans实现图片分割Python代码: ```python import numpy as np from PIL import Image def load_image(path): img = Image.open(path) return np.array(img) def save_image(array, path): img = Image.fromarray(array) img.save(path) def distance(x, y): return np.sqrt(np.sum((x-y)**2)) def kmeans(points, k, max_iter=100): centers = points[np.random.choice(range(len(points)), k, replace=False)] for _ in range(max_iter): clusters = [[] for _ in range(k)] for point in points: distances = [distance(point, center) for center in centers] cluster = np.argmin(distances) clusters[cluster].append(point) new_centers = [] for i in range(k): new_center = np.mean(clusters[i], axis=0) new_centers.append(new_center) if np.allclose(centers, new_centers): break centers = new_centers return centers, clusters def binary_kmeans(image_path, k=2): image = load_image(image_path) points = np.reshape(image, (-1, 3)) centers, clusters = kmeans(points, k) labels = np.zeros(len(points), dtype=int) for i, cluster in enumerate(clusters): for point in cluster: labels[np.where((points == point).all(axis=1))] = i segmented_image = np.reshape(labels, (image.shape[0], image.shape[1])) return segmented_image if __name__ == '__main__': segmented_image = binary_kmeans('image.jpg', k=2) save_image(segmented_image, 'segmented_image.png') ``` 其中,`load_image`函数将图片读入为numpy数组,`save_image`函数将numpy数组保存为图片。`distance`函数计算两个点之间的欧氏距离。`kmeans`函数执行kmeans算法,返回聚类中心和每个点所属的聚类。`binary_kmeans`函数对图片进行二分kmeans分割,返回分割后的二值图像

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值