图像分割 K-means聚类分割算法

K-means算法是经典的基于划分的聚类方法

基本思想是以空间中的k个点为中心进行聚类,对最靠近它们的对象归类,类别数为k。不断迭代,逐次更新各聚类中心的值,直至得到最好的聚类结果。

各聚类本身尽可能的紧凑,而各聚类之间尽可能的分开。该算法的最大优势在于简洁和快速,算法的关键在于预测可能分类的数量以及初始中心和距离公式的选择。

图像分割即把图像分割成若干不相交的区域,实质是像素的聚类过程,是图像处理的一种方法。这里利用opencv2实现k-means

cv2.kmeans(data, K, bestLabels, criteria, attempts, flags)

首先先进行导入所需的库和包,cv2中包含了我们需要调用的api

对灰度图像进行分割

定义一个名为seg_kmeans_gray的函数,用于实现K均值聚类图像分割。

图片读取:

img = cv2.imread('test.jpg', cv2.IMREAD_GRAYSCALE) plt.subplot(231), plt.imshow(img, 'gray'), plt.title('input')

使用cv2.imread函数读取图片,并将其转换为灰度图像。cv2.IMREAD_GRAYSCALE表示以灰度模式读取图片。plt.subplot和plt.imshow函数用于显示原始图像。

图像展平:

img_flat = img.reshape((img.shape[0] * img.shape[1], 1))img_flat = np.float32(img_flat)

使用img.reshape函数将图像展平为一维数组,以便进行聚类。img.shape[0] * img.shape[1]表示图像的像素总数,1表示将图像转换为一维数组。np.float32将数组转换为浮点数类型,以便进行K均值聚类。

迭代参数及初始化:

criteria = (cv2.TERM_CRITERIA_EPS + cv2.TermCriteria_MAX_ITER, 30, 0.4)flags = cv2.KMEANS_RANDOM_CENTERS

定义一个迭代参数criteria,用于控制K均值聚类的终止条件。cv2.TERM_CRITERIA_EPS + cv2.TermCriteria_MAX_ITER表示当聚类中心的变化小于0.6时停止迭代。30表示最大迭代次数。0.6表示聚类中心的变化阈值。

定义一个随机中心标志flags,用于指定K均值聚类的初始化方法。cv2.KMEANS_RANDOM_CENTERS表示随机选择聚类中心。

进行聚类:

compactness, labels, centers = cv2.kmeans(img_flat, k, None, criteria, 15, flags)

使用cv2.kmeans函数对图像进行K均值聚类。img_flat表示展平后的图像一维数组,k表示聚类数量,None表示返回的标签数组,criteria表示迭代参数,15表示随机采样次数,flags表示随机中心标志。

以下是完整代码截图:

代码执行结果:

对彩色图像进行聚类

同样的导入图片:

img = cv2.imread('test.png', cv2.IMREAD_COLOR)plt.subplot(231), plt.imshow(img), plt.title('input')

变换图像通道bgr->rgb:

b, g, r = cv2.split(img)
img = cv2.merge([r, g, b])

使用cv2.imread函数读取图片,并将其转换为灰度图像。cv2.IMREAD_COLOR表示以彩色模式读取图片。plt.subplot和plt.imshow函数用于显示原始图像。

3个通道展平:

img_flat = img.reshape((img.shape[0] * img.shape[1], 3))
img_flat = np.float32(img_flat)

将图像的BGR通道转换为RGB通道。cv2.split函数将图像拆分为三个通道,然后使用cv2.merge函数将它们重新组合为RGB图像。将图像展平为一维数组,img.reshape函数将图像展平为一维数组,img.shape[0] * img.shape[1]表示图像的像素总数,3表示将图像转换为一维数组。np.float32将数组转换为浮点数类型,以便进行K均值聚类。

迭代参数及初始化:

criteria = (cv2.TERM_CRITERIA_EPS + cv2.TermCriteria_MAX_ITER, 30, 0.6)

定义一个迭代参数criteria,用于控制K均值聚类的终止条件。cv2.TERM_CRITERIA_EPS + cv2.TermCriteria_MAX_ITER表示当聚类中心的变化小于0.6时停止迭代。30表示最大迭代次数。0.6表示聚类中心的变化阈值。

进行聚类:

compactness, labels, centers = cv2.kmeans(img_flat, k, None, criteria, 15, flags)

img_flat表示展平后的图像一维数组,k表示聚类数量,None表示返回的标签数组,criteria表示迭代参数,15表示随机采样次数,flags表示随机中心标志。

以下是完整代码截图:

函数代码执行结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/355669.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

elementUI的el-table自定义表头

<el-table-column label"昨日仪表里程(KM)" align"left" min-width"190" :render-header"(h, obj) > renderHeader(h, obj, 参数)" > <template slot-scope"scope"> <span>{{ scope.row.firstStartMil…

【C++】类的六个默认成员函数

文章目录 类的六个默认成员函数一、构造函数二、析构函数三、拷贝构造函数四、赋值运算符重载五、const成员六、取地址及const取地址操作符重载 类的六个默认成员函数 如果一个类中什么成员都没有&#xff0c;称为空类。空类中真的什么都没有吗&#xff1f;并不是&#xff0c;…

Mysql之不使用部署在k8s集群的Mysql而是选择单独部署的Mysql的原因

测试准备&#xff1a; 线程组&#xff1a;并发数100&#xff0c;持续时间2min 两个请求&#xff1a;使用k8s集群中的mysql的wordpress对应端口30011 使用单独部署的mysql的wordpress的对应端口为30022 访问同一个博客 测试结果&#xff1a; 汇总报告&#xff1a; 响应时间图&…

《C++ Primer》导学系列:第 7 章 - 类

7.1 定义抽象数据类型 7.1.1 类的基本概念 在C中&#xff0c;类是用户定义的类型&#xff0c;提供了一种将数据和操作这些数据的函数&#xff08;成员函数&#xff09;组合在一起的方法。类定义了对象的属性和行为&#xff0c;通过实例化类来创建对象。 7.1.2 定义类 定义类…

实战!如何从零搭建10万级 QPS 大流量、高并发优惠券系统--图文解析

实战&#xff01;如何从零搭建10万级 QPS 大流量、高并发优惠券系统–图文解析 原文链接&#xff1a;https://juejin.cn/post/7087824893831544845 原文作者&#xff1a;字节跳动技术团队 需求背景 需要设计、开发一个能够支持十万级 QPS 的优惠券系统 什么是QPS? Queri…

永臻股份即将登陆上交所:业绩高增长,两大投资亮点备受看好

《港湾商业观察》王璐 冲刺上交所主板的永臻科技股份有限公司(以下简称&#xff0c;永臻股份)即将迎来挂牌上市的光荣时刻。 对于这家知名的光伏铝边框核心供应商而言&#xff0c;永臻股份的上市前景也普遍被市场所看好。 日前&#xff0c;永臻股份披露了招股意向书&#xf…

windows下的 GammaRay安装和使用教程

GammaRay功能&#xff1a; 可用于查看运行时的程序对象状态信息以及事件队列 安装步骤&#xff1a; 1.官网下载地址&#xff1a; GammaRay下载地址 下载对应的qt版本适配版本 2.解压包gammaray-2.11.2.zip 解压后新建一个build目录为接下来的编译做准备 3.打开Install.txt 看…

ru俄罗斯域名如何申请SSL证书?

我们日常看到的都是com这种国际域名比较普遍&#xff0c;尤其是主流网站&#xff0c;主要原因考虑的其通用性&#xff0c;那么对于地方性的域名大家很少看到&#xff0c;比如俄罗斯国家域名.ru大家还是有些陌生的&#xff0c;但要说中国.CN域名那你就很熟悉了。 有用户在申请过…

好用的便签是什么 电脑桌面上好用的便签

作为一名文字工作者&#xff0c;我经常需要在繁杂的思绪中捕捉灵感&#xff0c;记录下那些一闪而过的想法。在寻找一款适合电脑桌面的便签应用时&#xff0c;我偶然发现了敬业签便签软件简直是为我量身定制的&#xff0c;它不仅界面简洁&#xff0c;操作便捷&#xff0c;更重要…

eclipse中svn从分支合并到主干及冲突解决

1、将分支先commit&#xff0c;然后再update&#xff0c;然后再clean一下&#xff0c;将项目多余的target都清理掉。 2、将branches切换到trunk 3、工程上右键-》Team-》合并&#xff08;或Merge&#xff09; 4、默认选项&#xff0c;点击Next 5、有未提交的改动&#xff0c;…

利用Java easyExcel库实现高效Excel数据处理

在Java应用程序中&#xff0c;处理Excel文件是一项常见任务&#xff0c;尤其是在需要读取、写入或分析大量数据时。easyExcel是一个基于Java的高性能Excel处理库&#xff0c;它提供了简洁的API和优化的性能&#xff0c;以简化Excel文件的处理。本文将指导您如何使用easyExcel库…

fastadmin配合定时任务

一个系统单纯到linux本身的定时任务&#xff0c;是很不方便的&#xff0c;需要结合起来使用定时任务 - 便捷的后台定时任务管理 – 基于ThinkPHP和Bootstrap的极速后台开发框架 1.安装插件 2.配置宝塔定时任务 3.自己用工具生成规则即可:Cron - 在线Cron表达式生成器

error: ‘CV_YUV2BGR_UYVY‘ was not declared in this scope

遇到这个问题时&#xff0c;按照如下修改可解决问题。 //cv::cvtColor(yuvImg, rgbImg, CV_YUV2BGR_UYVY);cv::cvtColor(yuvImg, rgbImg, cv::COLOR_YUV2RGB_UYVY);

ssl证书90天过期?保姆级教程——使用acme.sh实现证书的自动续期

腾讯云相关文档相关参考-有的点不准确 前言 最近https到期了&#xff0c;想着手动更新一下https证书&#xff0c;结果发现证书现在的有效期只有90天&#xff0c;于是想找到一个自动更新证书的工具&#xff0c;发现了acme.sh&#xff0c;但是网上的文章质量参差不齐&#xff0…

SpringBoot的迭代史,SpringBoot和Spring和Java和Maven和Gradle版本兼容介绍

文章目录 系统环境要求&#xff1a;Spring Boot 3.1.xSpring Boot 3.0.xSpring Boot 2.7.xSpring Boot 2.6.xSpring Boot 2.5.xSpring Boot 2.4.xSpring Boot 2.3.xSpring Boot 2.2.xSpring Boot 2.1.xSpring Boot 2.0.xSpring Boot 1.5.xSpring Boot 1.4.xSpring Boot 1.3.xSp…

SVN 报错Error: Unable to connect to a repository at URL解决方法

1. 报错背景&#xff1a; 使用ssh 用svn拉取仓库代码时&#xff0c;出现如下报错&#xff1a; Can’t create session: Unable to connect to a repository at URL svn://127.0.0.1 …. Can’t connect to host ‘127.0.0.1’: Connection refused at C:/Program Files/Git/mi…

LeetCode118.杨辉三角 | LeetCode119.杨辉三角Ⅱ

LeetCode刷题记录 文章目录 &#x1f4dc;杨辉三角Ⅰ⌨C代码 &#x1f4dc;杨辉三角Ⅱ⌨C代码 &#x1f4dc;杨辉三角Ⅰ 给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 示例1 输入…

人工智能导论 题目

目录 1.人工神经网络参数个数的计算 2.卷积神经网络卷积和池化的计算 知识表示 命题 谓词 谓词公式 1.连接词 2.量词 3.量词的辖域 逻辑等价式 范式 推理规则 全程量词和存在量词之间的关系 产生式 产生式系统 3.命题/谓词逻辑证明 1.​ ​2. 3. 4. 5. 6. …

功能测试 之 单模块测试----添加会员

1.需求分析 点击【添加会员】按钮后&#xff0c;页面跳转至添加会员详细页面。 说明&#xff1a; 会员昵称&#xff1a;必填&#xff0c;长度在20个字符&#xff08;除去空格&#xff09;以内&#xff0c;&#xff08;会员昵称&#xff09;可以重复&#xff1b;登录密码&#x…

WACV2024论文3D相关速览48篇

WACV2024 3D相关论文阅读 Paper1 Self-Supervised Edge Detection Reconstruction for Topology-Informed 3D Axon Segmentation and Centerline Detection 摘要小结: 许多基于机器学习的轴突追踪方法依赖于带有分割标签的图像数据集。这需要领域专家的手动标注&#xff0c;既…