OpenCV学习入门(三):kmeans原理及代码

cv-3.聚类算法的示例应用 聚类算法使用 原图 kmeans 官方文档:https://docs.opencv.org/3.0-beta/modules/core/doc/clustering.html 查找聚类的中心,并对聚类周围的输入样本进行分组。 实现了一种k-means算法,该算法可找到cluster_count集群的中心,并在集群周围对输入样本进行分组。作为输出,包含存储在样本矩阵行中的样...... 阅读详情

Kmeans是一种非监督的聚类方法,是最常用的聚类技术之一。kmeans尝试找到数据的自然类别,通过用户设定的类别个数K,它可以快速的找到“好的”类别中心,“好的”意味着聚类中心位于数据的自然中心。

(一)算法步骤

Kmeans算法一般步骤如下:

1、输入样本数据集合和用户指定的类别数K。

2、分配类别初始化中心点的位置(随机或指定)。

3、将每个样本点放入离它最近的聚类中心所在的集合。

4、移动聚类中心点到它所在集合的中心。

5、转到第3步,直到满足给定的收敛条件。

下图展示了kmeans到底是怎么工作的:


图1.(a)随机设置聚类中心然后将数据样本聚到离它最近的中心(b)将初始中心移动到新聚类集合所在中心(c)数据样本点根据最近邻规则重新聚到类别中心(d)聚类中心再次移到它所在新类别的中心

(二)Kmeans优缺点

Kmeans有以下几个优点:

1、是解决聚类问题的一种经典算法,算法简单、快速。

2、对处理大数据集,该算法是相对可伸缩的和高效率的,因为它的复杂度是线性的,大约是O(nkt),其中n是所有样本的数目,k是簇的数目,t是迭代的次数。通常k<<n。

3、该算法是收敛的(不会无限迭代下去)。

4、算法尝试找出使平方误差函数值最小的k个划分。当簇是密集的、球状或团状的,而簇与簇之间区别明显时,它的聚类效果很好。

opencv KMeans 图像分割实例 文章目录一、原理二、函数原型三、代码实例四、运行结果 一、原理 (1)随机选择两个中心点; (2)计算每个点到这两个中心点的距离,最近的分成一类(连接起来); (3)重新计算中心点(平均值计算),计算新的中心点到久的中心点的差值如果小于输入的值,就说明中心的位置发生了变化,,那么到(2)步重新计算中心点到每个点的距离,开始下一次循环; (4)执行多个迭代之后,满足收敛时,得到最终的分类。 如下图:... 阅读详情

相关推荐

OpenCV学习笔记(1):Kmeans聚类

一提到聚类算法,必然首先会想到的是kmeans聚类,因为它的名气实在太大了。既然这样,OpenCV中这个函数也自然必不可少了。这节内容主要是讲讲OpenCV中kmeans函数的使用方法。   开发环境:OpenCV2.4.8+

ts_zxc的专栏 8754

K-means算法的C++及OpenCV实现 点云

K-means是一种常用的聚类算法,可以将数据集分为不同的簇。在本文中,我们将使用C++语言和OpenCV库来实现K-means算法,并将其应用于点云数据。通过以上步骤,我们实现了K-means算法的C++及OpenCV版本,并将其应用于点云数据。你可以根据自己的需求修改代码,并尝试使用不同的数据集进行实验。最后,根据聚类结果,我们根据每个数据点所属的聚类中心,为其分配相应的颜色。首先,我们需要明确K-means算法的基本步骤。的矩阵,其中N是数据点的总数。然后,我们定义了停止条件,并使用。

AuSwift的博客 346

OpenCV-Python实战(13)——OpenCV与机器学习的碰撞

机器学习是人工智能的子集,它为计算机以及其它具有计算能力的系统提供自动预测或决策的能力,诸如虚拟助理、车牌识别系统、智能推荐系统等机器学习应用程序给我们的日常生活带来了便捷的体验。机器学习的蓬勃发展,得益于以下三个关键因素:1) 海量数据集;2) 算法的快速发展;3) 计算机硬件的发展。在本文中,我们将学习 OpenCV 提供的常见机器学习算法和技术,用于解决计算机视觉项目中的实际问题,例如分类和回归问题。

盼小辉丶的博客 2万+

opencv的kmeans算法

🏆本文收录于专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家!持续更新中,up!up!up!!

**My Coding Family** 1050

Ubuntu 20.04 系统备份和还原

最近大家Ubuntu开发环境,经常出现搭着搭着系统就挂了,于是开始琢磨了Ubuntu系统的备份和还原,以备不时之需,Linux环境搭建实在是有点太细,好多情况下,就算曾经搭建过一遍,再次搭建有些包还是忘了安装,做好备份是十分必要的。 经过了一番研究,Ubuntu备份有很多方式:根目录tar、dd、Systemback(1.0版本已经不维护了,2.0版本收费)等等,最终决定使用 —— Timesift, 因为方便一些。 文章参考:小马虎的救星——Timeshift Timeshift Timeshift,是L

Z_Paper的博客 2万+

微信小程序音视频通话(for硬件)授权与设备注册实战指南

本文详细介绍了微信小程序音视频通话(for硬件)组件的开发实践,涵盖授权流程、设备注册与VoIP插件集成。重点解析了如何通过服务端获取snTicket实现用户授权,确保硬件设备与微信端的音视频通话安全可靠,适用于智能门禁、话机等物联网场景。

u6v7w8x的博客 945

1panel面板实战:Docker容器存储路径迁移与优化指南

本文详细介绍了在1panel面板中迁移Docker容器存储路径的完整流程与优化方法。针对系统盘空间不足的常见问题,通过停服务、搬数据、改配置三个核心步骤,指导用户安全地将Docker数据目录迁移至更大容量的独立分区,并提供了迁移后的深度管理技巧与常见避坑指南,帮助用户优化服务器存储资源。

ol789012的博客 865

储能电站 BMS 与车载动力电池 BMS 核心差异:工况、保护策略、控制逻辑对比

储能电站BMS与车载动力电池BMS虽同名,实为针对不同赛道量身定制的产品。简单地将车载BMS方案套用于储能,或将储能BMS思路用于车载,都可能带来性能、安全或成本上的严重问题。在选择和设计BMS时,必须回归其应用场景的本质需求储能BMS是**“资产管理者”**,精打细算,追求在长达十余年的服役期内稳定、高效地创造收益。车载BMS是**“性能与安全卫士”**,反应敏捷,确保在车辆全生命周期内动力澎湃且万无一失。

小帽子的博客 423

android 9.0Settings休眠时间项(屏幕超时)添加永不休眠功能

在9.0的系统产品开发中,系统中默认息屏时间为1分钟,可以通过在Setting中的息屏时间选项设置对应的息屏时间,但是在开发平板类的产品中,需要实现永不休眠的功能,所以需要在Settings中的息屏时间中添加永不休眠时间这一项来实现这个功能,接下来看息屏时间的相关功能,来添加这个功能

安卓兼职framework和app工程师的博客 2056

人像美肤 人体美型 CVPR 2022 ABPN

人像美肤 CVPR 2022 ABPN

jacke121的专栏 841

零基础入门simulink仿真建模--通信领域的编码与纠错技术--基于Simulink的CRC校验算法仿真建模示例

CRC是一种广泛应用于数字网络和存储设备中的错误检测码。它的基本原理是利用除法运算来产生固定长度的校验位,这些校验位被附加到原始数据之后发送出去。接收端收到数据后,重新计算校验值并与接收到的校验值进行比较,如果两者相同,则认为数据没有错误;否则,表示数据可能已被损坏。发送端:随机比特生成模块 + CRC生成模块。信道:模拟数据传输过程中的潜在错误(可选)。接收端:CRC校验模块 + 错误指示模块。通过本指南,我们介绍了如何基于Simulink搭建一个简单的CRC校验系统模型,并进行了仿真分析。

amy_mhd的博客 729

假期搞定!2026国社科申报AI全攻略指南:从选题到创新,7大核心要点手把手教你!

最后给大家推荐的400多所高校教师都在用的AI平台——高级学术版专业应用平台,集成了国际主流学术应用,以及ChatGPT、Claude、Gemini、Grok等Al大模型的高级版本平台,还有,可以辅助大家高效完成科研和学术写作任务,当然撰写硕博论文,课题、职称论文、国社科、国自然基金本子也是手拿把掐。你的任务是:用高度凝练的方式说明在(某一明确国家战略 / 政策方向,如:中国式现代化、共同富裕、基层治理现代化、数字中国、文化强国、国家安全等)背景下,我究竟要研究一个什么“具体而可操作的问题”。

智能AI让学术科研更容易 624

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

上一篇: OpenCV学习入门(二):Image Watch神器
下一篇: OpenCV学习入门(四):RNG 伪随机问题
计算机视觉life
博客等级 码龄12年 4344粉丝 209原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值