基于蜣螂算法优化Kmeans图像分割-附代码

news2024/9/23 1:23:50

基于蜣螂优化Kmeans图像分割算法 - 附代码

文章目录

  • 基于蜣螂优化Kmeans图像分割算法 - 附代码
    • 1.Kmeans原理
    • 2.基于蜣螂算法的Kmeans聚类
    • 3.算法实验结果
    • 4.Matlab代码

摘要:基于蜣螂优化Kmeans图像分割算法。

1.Kmeans原理

K-Means算法是一种无监督分类算法,假设有无标签数据集:
X = [ x 1 , x 2 , . . . , x n ] (1) X = [x_1,x_2,...,x_n] \tag{1} X=[x1,x2,...,xn](1)
该算法的任务是将数据集聚类成 k k k C = C 1 , C 2 , . . . , C k C = C_1,C2,...,C_k C=C1,C2,...,Ck,最小化损失函数为:
E = ∑ i = 1 k ∑ x ∈ C i ∣ ∣ x − u i ∣ ∣ 2 (2) E = \sum_{i=1}^k\sum_{x\in C_i}||x-u_i||^2 \tag{2} E=i=1kxCi∣∣xui2(2)
其中 u i u_i ui为簇的中心点:
u i = 1 ∣ C i ∣ ∑ x ∈ C i x (3) u_i = \frac{1}{|C_i|}\sum_{x\in C_i}x \tag{3} ui=Ci1xCix(3)
要找到以上问题的最优解需要遍历所有可能的簇划分,K-Mmeans算法使用贪心策略求得一个近似解,具体步骤如下:

1.在样本中随机选取 k k k个样本点充当各个簇的中心点 { u 1 , u 2 , . . . , u k } \{u_1,u_2,...,u_k\} {u1,u2,...,uk}

2.计算所有样本点与各个簇中心之间的距离 d i s t ( x i , u j ) dist(x_i,u_j) dist(xi,uj),然后把样本点划入最近的簇中 x i ∈ u n e a r e s t x_i \in u_{nearest} xiunearest

3.根据簇中已有的样本点,重新计算簇中心
u i = 1 ∣ C i ∣ ∑ x ∈ C i x u_i = \frac{1}{|C_i|}\sum_{x\in C_i}x ui=Ci1xCix

4.重复2、3

K-means算法得到的聚类结果严重依赖与初始簇中心的选择,如果初始簇中心选择不好,就会陷入局部最优解.因此初始簇中心的选择非常重要。本文利用蜣螂优化算法对初始簇中心进行优化,改进其容易陷入局部最优的特点。

2.基于蜣螂算法的Kmeans聚类

蜣螂算法的具体原理参考博客:https://blog.csdn.net/u011835903/article/details/128280084

适应度函数:利用蜣螂算法改进kmeans时,以聚类中心作为蜣螂算法的优化变量,适应度函数设计如下:
f i t n e s s = ∑ i = 1 k ∑ x ∈ C i ∣ ∣ x − u i ∣ ∣ 2 fitness = \sum_{i=1}^k\sum_{x\in C_i}||x-u_i||^2 fitness=i=1kxCi∣∣xui2
该适应度函数与kmeans的最小损失函数一致。

算法的具体流程如下:

1.随机抽样待分类数据点,作为蜣螂聚类候选点。

2.利用蜣螂算法搜索最小损失的的聚类点。

3.将这些聚类点作为kmeans算法的初始聚类点。

4.利用kmeans获得最终的聚类点。

3.算法实验结果

将基于蜣螂优化的Kmeans算法用于图像的分割实验。对于图像,选取10%的像素点作为聚类候选点。

对于彩色图像的聚类效果如下图所示:

在这里插入图片描述

收敛曲线:

在这里插入图片描述

4.Matlab代码

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

蚂蚁感冒---第五届蓝桥杯真题

目录 题目链接 题目描述 分析: 代码: y总综合​ 666 题目链接 1211. 蚂蚁感冒 - AcWing题库 题目描述 分析: y总真牛逼,掉头等价于穿过,以第一个点为分界点,分别判断 代码: (自…

Java线程池的创建以及原理

一、为什么要使用线程池 在外面的日常开发中,也使用了不少池化技术,比如线程池、数据库连接池、HTTP连接池等等都是对这个思想的应用。 池化技术的思想主要是为了减少每次获取资源的消耗,提高对资源的利用率。 线程池提供了一种限制和管理资…

centos7系统-kubeadm安装k8s集群(v1.26版本)亲测有效,解决各种坑可供参考

文章目录硬件要求可省略的步骤配置虚拟机ip设置阿里镜像源各服务器初始化配置配置主节点的主机名称配置从节点的主机名称配置各节点的Host文件关闭各节点的防火墙关闭selinux永久禁用各节点的交换分区同步各节点的时间将桥接的IPv4流量传递到iptables的链(三台都执行…

PHP面向对象01:面向对象基础

PHP面向对象01:面向对象基础一、关键字说明二、技术实现1. 定义类2. 类成员三、 访问修饰限定符1. public2. protected3. private4. 空修饰限定符四、类内部对象五、构造和析构1. 构造方法2. 析构方法六、范围解析操作符1. 访问类常量2. 静态成员3. self关键字七、类…

自动驾驶:时钟同步

文章目录 一、自动驾驶时间同步简介二、时间同步需要的服务1、PTP1.1 ptp4l三、UTC转换UNIX时间戳(timestamp)一、自动驾驶时间同步简介 二、时间同步需要的服务 1、PTP ptp4l -i mgbe3_0 -f /etc/automotive-slave.cfg & phc2sys -s mgbe3_0 -O 0

IDEA插件 RestfulTool插件——Restful服务开发辅助工具集

IDEA插件 RestfulTool插件——Restful服务开发辅助工具集 目录IDEA插件 RestfulTool插件——Restful服务开发辅助工具集1.插件介绍2.安装方式3.使用方法1.插件介绍 RestfulTool插件。一套 Restful 服务开发辅助工具集: 提供了一个 Services tree 的显示窗口 双击 …

Linux C/C++ 多线程TCP/UDP服务器 (监控系统状态)

Linux环境中实现并发TCP/IP服务器。多线程在解决方案中提供了并发性。由于并发性,它允许多个客户端同时连接到服务器并与服务器交互。 Linux多线程编程概述 许多应用程序同时处理多项杂务。服务器应用程序处理并发客户端;交互式应用程序通常在处理后台…

80211无线网络架构

无线网络架构物理组件BSS(Basic Service Set)基本服务集BSSID(BSS Identification)ssid(Service Set Identification)ESS(Extended Service Set)扩展服务集物理组件 无线网络包含四…

【C++学习】基础语法(三)

众所周知C语言是面向过程的编程语言,关注的是过程;解决问题前,需要分析求解的步骤,然后编辑函数逐步解决问题。C是基于面向对象的,关注的是对象,将一件事拆分成不同的对象,不同对象间交互解决问…

C++:类与对象

文章目录一.面向过程和面向对象的初步认识二.类1.类的初步认识2.类的定义3.类的访问限定符4.类的作用域5.类的实例化6.类对象模型三.this指针1.什么是this指针2.this指针的特性3.this指针的空指针问题四.浅谈封装五.类的默认成员函数1.构造函数1.1构造函数的概念1.2构造函数的用…

jenkins 安装 -适用于在线安装 后续写个离线安装的

jenkins安装1.下载jenkins2.安装启动3.附件卸载jdk的命令4.配置jenkins一、在jenkins配置文件中配置jdk环境变量二、修改jenkins默认的操作用户1.下载jenkins jenkins官网下载 https://www.jenkins.io/ 点击下载 我是centos系统所以选择centos,点击后按着官方提供…

golang简单实现chatgpt网页聊天

效果如图: 安装openai的sdk: go get github.com/sashabaranov/go-gpt3go代码: main.go package mainimport ("fmt""net/http""os"gogpt "github.com/sashabaranov/go-gpt3" )var client gogpt.N…

高可用 - 02 Keepalived_VRRP工作原理

文章目录Keepalived VS HeartbeatKeepalived的用途VRRP与工作原理物理路由器和虚拟路由器Keepalived VS Heartbeat Keepalived是Linux下一个轻量级的高可用解决方案,它与Heartbeat、RoseHA实现的功能类似,都可以实现服务或者网络的高可用,但…

SmS-Activate一款好用的短信验证码接收工具

前言 有些国外应用在使用应用上的功能时需要注册账号,由于某种不可抗因素,我们的手机号一般不支持注册,接收不到信息验证码,于是我们可以使用SmS-Activate提供的服务,使用$实现我们的需求(大概一次验证1-5…

Python练习系统

用python给自己做个练习系统刷题吧! #免费源码在文末公众号哈# 选择题 def xuanze():global flag2if flag21:def insert():numvar1.get()questionvar2.get()choicevar3.get()answervar4.get()with open(d:\\练习系统\\练习三3.1.pickle,rb) as file:lst1pickle.lo…

golang入门笔记——内存管理和编译器优化

静态分析 静态分析:不执行程序代码,推导程序的行为,分析程序的性质 控制流(control flow):程序的执行流程 数据流(data flow):数据在控制流上的传递 通过分析控制流和…

网络安全应急响应服务方案怎么写?包含哪些阶段?一文带你了解!

文章目录一、服务范围及流程1.1 服务范围1.2 服务流程及内容二、准备阶段2.1 负责人准备内容2.2 技术人员准备内容(一)服务需求界定(二)主机和网络设备安全初始化快照和备份2.3市场人员准备内容(1)预防和预…

全网最新的软件测试/自动化测试必问的面试题合集

1.你为什么选择软件测试行业因为之前有了解软件测试这个行业,觉得他的发展前景很好。2.根据你以前的工作经验描述一下软件开发、测试过程,由那些角色负责,你做什么要有架构师、开发经理、测试经理、程序员、测试员。我在里面主要是负责所分到…

曙光超算平台 如何使用 Tensorboard (乌镇中心)

在E-Shell中执行 1. salloc -p 队列名 -N 1 -n 32 --gresdcu:4 salloc -p wzhdtest -N 1 -n 32 --gresdcu:4 2. ssh 节点名 ssh g01r3n07 3. conda deactivate 4. 查看当前所有模块 module ava compiler 从上图中加载某个dtk模块 module load compiler/dtk/21.10 注&…

第九章 vue 进阶篇 Element Plus 基本使用

Element Plus 基本使用 element-ui 是基于vue 开发的一套ui组件库,提供丰富的网页开发组件,可用快速开发网站,降低前端开发成本 版本 element目前有两个版本 element-ui:基于vue2 element-plus: 基于vue3官网地址 https://elem…