智能优化算法应用:基于灰狼算法的Otsu图像多阈值分割-附代码
智能优化算法应用:基于灰狼算法的Otsu图像多阈值分割-附代码
文章目录
- 智能优化算法应用:基于灰狼算法的Otsu图像多阈值分割-附代码
- 1.Otsu阈值分割法原理
- 2.基于灰狼优化(GWO)的多阈值分割
- 3.算法结果:
- 4.参考文献:
- 5.Matlab代码:
摘要:Otsu 方法是应用最广泛的图像分割法之一,该方法也叫最大类间方法阈值分割法,选择分割阈值的标准是图像的类间方差达到最大或者类内方差最小。Otsu 阈值分割法可以从单阈值扩展到多级阈值分割,多阈值分割图像时采用多个不同的阈值将图像分割为多个不同的区域或目标。将智能算法应用于多阈值的寻找,能大大加快算法的速度。
1.Otsu阈值分割法原理
Otsu 阈值分割法是日本学者 Otsu 提出来的。假设图像大小为 M×NM × NM×N,图像灰度级范围为[0,L-1][0,L - 1][0,L-1],nin_ini为图像灰度级 iii 的像素点数,灰度级 iii 出现的概率为:pi=ni/(M×N)p_i = n_i /(M × N)pi=ni/(M×N);对于单阈值分割,图像被分割为两类,灰度级为[0,T][0,T][0,T]的像素点归为 C0C_0C0 类,灰度级为[T+1,L-1][T + 1,L - 1][T+1,L-1]的像素点为 C1C_1C1 类。设 P0(T)、P1(T)P_0 (T)、P_1 (T)P0(T)、P1(T) 分别表示C0C_0C0 类和 C1C_1C1 类的出现的概率;u0(T),u1(T)u_0 (T),u_1 (T)u0(T),u1(T) 表示 C0C_0C0 类和 C1C_1C1 类的平均灰度级。则有:
P0(T)=∑i=0Tpi(1)P_0(T)=\sum_{i=0}^{T}p_i\tag{1} P0(T)=i=0∑Tpi(1)
P1(T)=∑i=T+1L−1pi=1−P0(T)(2)P_1(T)=\sum_{i=T+1}^{L-1}p_i = 1 - P_0(T)\tag{2} P1(T)=i=T+1∑L−1pi=1−P0(T)(2)
u0(T)=∑i=0T(ipiP0(T))(3)u_0(T)=\sum_{i=0}^T(i\frac {p_i}{P_0(T)})\tag{3} u0(T)=i=0∑T(iP0(T)pi)(3)
u1(T)=∑i=T+1L−1(ipiP1(T))(4)u_1(T)=\sum_{i=T+1}^{L-1}(i\frac {p_i}{P_1(T)})\tag{4} u1(T)=i=T+1∑L−1(iP1(T)pi)(4)
图像的平均灰度级表示为:
u=∑i=1Lipi=P0(T)u0(T)+P1(T)u1(T)(5)u = \sum_{i=1}^{L}ip_i=P_0(T)u_0(T)+P_1(T)u_1(T)\tag{5} u=i=1∑Lipi=P0(T)u0(T)+P1(T)u1(T)(5)
图像的类间方差δb2(T)\delta_b^2(T)δb2(T)表示为:
δb2(T)=P0(T)(u0(T)−u)2+P1(T)(u1(T)−u)2(6)\delta_b^2(T)=P_0(T)(u_0(T) -u)^2+P_1(T)(u_1(T)-u)^2\tag{6} δb2(T)=P0(T)(u0(T)−u)2+P1(T)(u1(T)−u)2(6)
图像的类内方差 δw2(T)\delta_w^2(T)δw2(T) 表示为
δw2(T)=P0(T)u02(T)+P1(T)u12(T)(7)\delta_w^2(T)=P_0(T)u_0^2(T)+P_1(T)u_1^2(T)\tag{7} δw2(T)=P0(T)u02(T)+P1(T)u12(T)(7)
当类间方差达到最大时该灰度级为最优分割阈值,即Otsu 阈值:
T∗=argmax(l≤T<L){δb2(T)}(8)T^* = argmax_{(l\leq T<L)} \{\delta_b^2(T) \}\tag{8} T∗=argmax(l≤T<L){δb2(T)}(8)
或者当类内方差达到最小时对应的阈值为最优分割阈值:
T∗=argmin(l≤T<L){δw2(T)}(9)T^* = argmin_{(l\leq T<L)} \{\delta_w^2(T) \}\tag{9} T∗=argmin(l≤T<L){δw2(T)}(9)
单阈值 Otsu 分割法可以扩展到多级阈值分割法。假设有n−1n-1n−1个阈值T1,T2,...,Tn−1T_1,T_2,...,T_{n-1}T1,T2,...,Tn−1 将图像分为nnn类,表示为C0={0,1,...,T1},....,Cn={Tn−1+1,Tn−1+2,...,L−1}C_0=\{0,1,...,T_1\},....,C_n=\{T_{n-1}+1,T_{n-1}+2,...,L-1\}C0={0,1,...,T1},....,Cn={Tn−1+1,Tn−1+2,...,L−1},各类出现的概率分别表示为P0,P1,...,Pn−1P_0,P_1,...,P_{n-1}P0,P1,...,Pn−1,方差表示为δ02,δ12,...,δn−12\delta_0^2,\delta_1^2,...,\delta_{n-1}^2δ02,δ12,...,δn−12,均值为u0,u1,...,un−1u_0,u_1,...,u_{n-1}u0,u1,...,un−1。
则有:
Pk=∑i=TkTk+1−1pi(10)P_k = \sum_{i=T_k}^{T_{k+1}-1}p_i\tag{10} Pk=i=Tk∑Tk+1−1pi(10)
uk=1PkPk∑i=TkTk+1−1ipi(11)u_k=\frac{1}{P_k}P_k\sum_{i=T_k}^{T_{k+1}-1}ip_i\tag{11} uk=Pk1Pki=Tk∑Tk+1−1ipi(11)
δk2=∑i=TkTk+1−1(i−uk)2piPk(12)\delta_k^2=\sum_{i=T_k}^{T_{k+1}-1}(i-u_k)^2\frac{p_i}{P_k}\tag{12} δk2=i=Tk∑Tk+1−1(i−uk)2Pkpi(12)
其中k=0,1,…,n−1;T0=0,Tn=Lk = 0,1,…,n-1;T_0 = 0,T_n = Lk=0,1,…,n−1;T0=0,Tn=L。则图像的类间方差表示为:
δb2=∑i=0n−1Piδi2(13)\delta_b^2=\sum_{i=0}^{n-1}P_i\delta_i^2\tag{13} δb2=i=0∑n−1Piδi2(13)
多级最优分割阈值:
{T1∗,T2∗,...,Tn−1∗}=argmax(l≤T<L){δb2}(14)\{T_1^*,T_2^*,...,T_{n-1}^*\} =argmax_{(l\leq T<L)} \{\delta_b^2 \} \tag{14} {T1∗,T2∗,...,Tn−1∗}=argmax(l≤T<L){δb2}(14)
或者:
{T1∗,T2∗,...,Tn−1∗}=argmin(l≤T<L){δw2}(15)\{T_1^*,T_2^*,...,T_{n-1}^*\} =argmin_{(l\leq T<L)} \{\delta_w^2 \} \tag{15} {T1∗,T2∗,...,Tn−1∗}=argmin(l≤T<L){δw2}(15)
2.基于灰狼优化(GWO)的多阈值分割
由上述Otsu阈值分割法的原理可知,要得到最终的阈值,需要去寻找阈值,使得类间方差值最大或类内方差值最小。于是可以利用智能优化算法进行阈值的寻优,使得获得最佳阈值。
于是优化的适应度函数就是:
fun{T1∗,T2∗,...,Tn−1∗}=argmax(l≤T<L){δb2}(14)fun\{T_1^*,T_2^*,...,T_{n-1}^*\} =argmax_{(l\leq T<L)} \{\delta_b^2 \} \tag{14} fun{T1∗,T2∗,...,Tn−1∗}=argmax(l≤T<L){δb2}(14)
设置阈值分割的个数,寻优边界为0到255(因为图像的像素值范围为0-255),设置相应的灰狼算法参数(灰狼算法具体原理及代码参照我之前写灰狼算法原理:https://blog.csdn.net/u011835903/article/details/107716390)。
3.算法结果:
以lena图像为例:
单阈值结果:
3阈值结果:
4阈值结果:
4.参考文献:
[1]袁小翠,黄志开,马永力,刘宝玲.Otsu阈值分割法特点及其应用分析[J].南昌工程学院学报,2019,38(01):85-90+97.
5.Matlab代码:
基于穷举法的二维Otsu图像阈值分割
基于灰狼算法的二维Otsu图像阈值分割
麻雀算法优化的otsu多阈值分割
粒子群算法优化的otsu多阈值分割
灰狼算法优化的otsu多阈值分割
人工蜂群算法优化的otsu多阈值分割
鲸鱼算法优化的otsu多阈值分割
萤火虫算法优化的otsu多阈值分割
布谷鸟算法优化的otsu多阈值分割
海鸥算法优化的otsu多阈值分割
鸡群算法优化的otsu多阈值分割
花授粉算法优化的otsu多阈值分割
头脑风暴算法优化的otsu多阈值分割
蝗虫算法优化的otsu多阈值分割
鸟群算法优化的otsu多阈值分割
基于差分进化的otsu多阈值分割
基于遗传算法的otsu多阈值分割
个人资料介绍
智能优化算法应用:基于灰狼算法的Otsu图像多阈值分割-附代码相关推荐
- 【优化求解】基于灰狼算法GWO求解最优目标matlab代码
1 简介 Mirjalili 等人提出了一种新的群体智能算法---灰狼优化算法(GWO),并通过多个基准测试函数进行测试,从结果上验证了该算法的可行性,通过对比,GWO 算法已被证明在算法对函数求解精 ...
- 【优化求解】基于灰狼算法求解多目标问题matlab代码
1 简介 灰狼群体具有严格的社会支配等级且其等级划分呈金字塔形式,在捕捉猎物时,灰狼是通过相交流共享的体制来模拟的.其他智能算法类似的是,每一个可能解都由每头灰狼的位置来对应.种群的发展需要不断地更新 ...
- C++ opencv基于OTSU图像多阈值分割
vector<double> sub(vector<int> A, vector<double> B) //减法 {vector<double> C;C ...
- 【优化求解】基于布谷鸟算法结合灰狼算法求解最优目标matlab代码
1 简介 布谷鸟搜索(Cuckoo Search, CS)算法是 2009 年 Xin-She Yang 与 Susash Deb 提出的一种新型的启发算法[61].算法灵感来源于一些布谷鸟种属(Cu ...
- 路径规划算法:基于灰狼优化(GWO)的路径规划算法- 附代码
路径规划算法:基于灰狼优化(GWO)的路径规划算法- 附代码 文章目录 路径规划算法:基于灰狼优化(GWO)的路径规划算法- 附代码 1.算法原理 1.1 环境设定 1.2 约束条件 1.3 适应度函 ...
- 【回归预测-LSTM预测】基于灰狼算法优化LSTM实现数据回归预测附Matlab代码
1 内容介绍 一种基于灰狼算法优化LSTM的网络流量预测方法,属于网络流量预测领域,该方法包括以下步骤:对第一网络流量数据集进行极差标准化处理,得到第二网络流量数据集,并划分为训练集和测试集,并确定灰 ...
- 基于灰狼算法优化的lssvm回归预测-附代码
基于灰狼算法优化的lssvm回归预测 - 附代码 文章目录 基于灰狼算法优化的lssvm回归预测 - 附代码 1.数据集 2.lssvm模型 3.基于灰狼算法优化的LSSVM 4.测试结果 5.Mat ...
- 基于灰狼算法优化的Elman神经网络数据预测
基于灰狼算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于灰狼算法优化的Elman神经网络数据预测 - 附代码 1.Elman 神经网络结构 2.Elman 神经用络学习过程 3.电力负 ...
- 基于灰狼算法优化支持向量机的数据分类算法及其MATLAB实现-附代码
基于灰狼算法优化支持向量机的数据分类算法及其MATLAB实现-附代码 文章目录 基于灰狼算法优化支持向量机的数据分类算法及其MATLAB实现-附代码 1 GWO-SVM 模型 1.1 灰狼优化器GWO ...
- 基于灰狼算法优化概率神经网络PNN的分类预测-附代码
基于灰狼算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于灰狼算法优化概率神经网络PNN的分类预测 - 附代码 1.PNN网络概述 2.变压器故障诊街系统相关背景 2.1 模型建立 3. ...
最新文章
- Unity(1)控制反转
- springboot集成swagger2,以及swagger-ui.html访问404的问题解决:拦截器造成的
- aspose将datatable导出excel 比自己拼好的多 Bug少-。.net
- 中yeti不能加载_将 PQ 查询加载到 Excel 中进行分析的三种常用的方式
- Spring Boot –现代Java应用程序的基础
- 数据分析工具篇——数据读写
- 打造优秀B端产品需求分析流程要点
- C++ 之父讨厌比特币
- 获取设备和 App 信息
- 循环链表--约瑟夫问题
- 深入浅出InfoPath——如何在项目中引用GAC中的dll文件
- 步进电机怎么选型?步进电机驱动器选型要怎么选?
- 发那科机器人override指令_上海发那科(FANUC)机器人有限公司内部教材 -
- 计算机桌面常见故障,电脑常见故障问题以及解决办法
- IE新功能:十大特色IE插件(转)
- 李想:“做正确的事,不做容易的事”
- html中如何做背景渐变,html如何设置背景径向渐变
- 大数据基础课18 数据中台:用大数据赋能业务
- 微信公众号开发模式几点介绍
- 微软中国CEO梁念坚 : Windows Phone有四大优点
热门文章
- JSP之jstl标签库
- FISCO BCOS(二)———配置及使用控制台
- 保姆级别mysql 基础练习题
- nginx linux脚本,控制 nginx shell脚本语言
- suse linux 11 下载地址,suse11.2正式版下载地址(cd,dvd,net)
- 本地差分隐私 随机响应_大数据时代下的隐私保护(二)
- java跳跳球代码,README.md
- 基于guava的重试组件Guava-Retryer
- Java中对象的直接赋值、浅拷贝及深拷贝的理解和应用场景及其实现方式
- Neo4j如何对大量数据-(千万节点及以上数据)进行加载入库