【算法应用】基于鲸鱼优化算法求解OTSU多阈值图像分割问题

目录

    • 1.鲸鱼优化算法WOA 原理
    • 2.OTSU多阈值图像分割模型
    • 3.结果展示
    • 4.参考文献
    • 5.代码获取


1.鲸鱼优化算法WOA 原理

SCI二区|鲸鱼优化算法(WOA)原理及实现

2.OTSU多阈值图像分割模型

Otsu 算法(最大类间方差法)设灰度图像有 L L L 个灰度级,各灰度级对应像素点个数为 n i n_i ni,总的像素点个数为 N N N,则灰度值为 i i i 的像素点的概率如下公式所示:

p i = n i N p_i = \frac{n_i}{N} pi=Nni

设灰度级 K K K 把像素点分为前景像素点和背景像素点两类,则两类像素点灰度值概率及两类像素点的平均灰度值分别由下面式子给出:
ω 0 = ∑ i = 0 K p i ω 1 = ∑ i = K + 1 L − 1 p i = 1 − ω 0 u 0 = ∑ i = 0 K i p i ω 0 u 1 = ∑ i = K + 1 L − 1 i p i ω 1 \omega_0 = \sum_{i=0}^{K} p_i\\ \omega_1 = \sum_{i=K+1}^{L-1} p_i = 1 - \omega_0\\ u_0 = \frac{\sum_{i=0}^{K} ip_i}{\omega_0}\\ u_1 = \frac{\sum_{i=K+1}^{L-1} ip_i}{\omega_1} ω0=i=0Kpiω1=i=K+1L1pi=1ω0u0=ω0i=0Kipiu1=ω1i=K+1L1ipi
整个图像像素点的平均灰度值为:
u = ∑ i = 0 L − 1 i p i = ω 0 u 0 + ω 1 u 1 u = \sum_{i=0}^{L-1} ip_i = \omega_0 u_0 + \omega_1 u_1 u=i=0L1ipi=ω0u0+ω1u1

则类间方差为:

σ = ω 0 ( u 0 − u ) 2 + ω 1 ( u 1 − u ) 2 = ω 0 ω 1 ( u 1 − u 0 ) 2 \sigma = \omega_0 (u_0 - u)^2 + \omega_1 (u_1 - u)^2 = \omega_0 \omega_1 (u_1 - u_0)^2 σ=ω0(u0u)2+ω1(u1u)2=ω0ω1(u1u0)2

由灰度值 K K K 扩展到多阈值时,使用一组给定的阈值 [ t 1 , t 2 , ⋯ , t n ] [t_1, t_2, \cdots, t_n] [t1,t2,,tn] ( 0 ≤ t 1 ≤ t 2 ≤ ⋯ ≤ t n ) (0 \leq t_1 \leq t_2 \leq \cdots \leq t_n) (0t1t2tn),将图像分割为 n + 1 n+1 n+1 个区域,每一区域的灰度均值和对应的概率值可表示为:
u 0 = ∑ i = 0 t 1 i p i ω 0 , ω 0 = ∑ i = 0 t 1 p i u 1 = ∑ i = t 1 + 1 t 2 i p i ω 1 , ω 1 = ∑ i = t 1 + 1 t 2 p i . . . u n = ∑ i = t n + 1 L − 1 i p i ω n , ω n = ∑ i = t n + 1 L − 1 p i u_0 = \frac{\sum_{i=0}^{t_1} i p_i}{\omega_0}, \quad \omega_0 = \sum_{i=0}^{t_1} p_i\\ u_1 = \frac{\sum_{i=t_1+1}^{t_2} i p_i}{\omega_1}, \quad \omega_1 = \sum_{i=t_1+1}^{t_2} p_i\\ ... \\u_n = \frac{\sum_{i=t_n+1}^{L-1} i p_i}{\omega_n}, \quad \omega_n = \sum_{i=t_n+1}^{L-1} p_i u0=ω0i=0t1ipi,ω0=i=0t1piu1=ω1i=t1+1t2ipi,ω1=i=t1+1t2pi...un=ωni=tn+1L1ipi,ωn=i=tn+1L1pi

整个图像像素点的平均灰度值为:
u = ∑ i = 0 L − 1 i p i u = \sum_{i=0}^{L-1} i p_i u=i=0L1ipi

此时,图像的类间方差可表示为: σ = ω 0 ( u 0 − u ) 2 + ω 1 ( u 1 − u ) 2 + ⋯ + ω n ( u n − u ) 2 \sigma = \omega_0 (u_0 - u)^2 + \omega_1 (u_1 - u)^2 + \cdots + \omega_n (u_n - u)^2 σ=ω0(u0u)2+ω1(u1u)2++ωn(unu)2
使上述最大值的一组阈值即为所求的阈值。

3.结果展示

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.参考文献

[1] Ma G, Yue X. An improved whale optimization algorithm based on multilevel threshold image segmentation using the Otsu method[J]. Engineering Applications of Artificial Intelligence, 2022, 113: 104960.

5.代码获取

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

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

相关文章

项目升级Sass版本或升级Element Plus版本遇到的问题

项目升级Sass版本或升级Element Plus版本遇到的问题 如果项目有需求需要用到高版本的Element Plus组件,则需要升级相对应的sass版本,Element 文档中有提示,2.8.5及以后得版本,sass最低支持的版本为1.79.0,所升级sass、…

数据结构 树1

目录 前言 一,树的引论 二,二叉树 三,二叉树的详细理解 四,二叉搜索树 五,二分法与二叉搜索树的效率 六,二叉搜索树的实现 七,查找最大值和最小值 指针传递 vs 传引用 为什么指针按值传递不会修…

利用metaGPT多智能体框架实现智能体-1

1.metaGPT简介 MetaGPT 是一个基于大语言模型(如 GPT-4)的多智能体协作框架,旨在通过模拟人类团队的工作模式,让多个 AI 智能体分工合作,共同完成复杂的任务。它通过赋予不同智能体特定的角色(如产品经理、…

嵌入式系统|DMA和SPI

文章目录 DMA(直接内存访问)DMA底层原理1. 关键组件2. 工作机制3. DMA传输模式 SPI(串行外设接口)SPI的基本原理SPI连接示例 DMA与SPI的共同作用 DMA(直接内存访问) 类型:DMA是一种数据传输接口…

【MySQL】--- 复合查询 内外连接

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏: MySQL 🏠 基本查询回顾 假设有以下表结构: 查询工资高于500或岗位为MANAGER的雇员,同时还要满足他们的姓名首字母为…

2 MapReduce

2 MapReduce 1. MapReduce 介绍1.1 MapReduce 设计构思 2. MapReduce 编程规范3. Mapper以及Reducer抽象类介绍1.Mapper抽象类的基本介绍2.Reducer抽象类基本介绍 4. WordCount示例编写5. MapReduce程序运行模式6. MapReduce的运行机制详解6.1 MapTask 工作机制6.2 ReduceTask …

【memgpt】letta 课程6: 多agent编排

Lab 6: Multi-Agent Orchestration 多代理协作 letta 是作为一个服务存在的,app通过restful api 通信 多智能体之间如何协调与沟通? 相互发送消息共享内存块,让代理同步到不同的服务的内存块

cmd命令行无法进入D:盘怎么办

我找到了一个方法就是 增加一个/d cd /d d: 如下图,我不仅可以进入d盘符下,还可以访问盘符下的文件夹

【机器学习】自定义数据集 ,使用朴素贝叶斯对其进行分类

一、贝叶斯原理 贝叶斯算法是基于贝叶斯公式的,其公式为: 其中叫做先验概率,叫做条件概率,叫做观察概率,叫做后验概率,也是我们求解的结果,通过比较后验概率的大小,将后验概率最大的…

2025年人工智能技术:Prompt与Agent的发展趋势与机遇

文章目录 一、Prompt与Agent的定义与区别(一)定义(二)区别二、2025年Prompt与Agent的应用场景(一)Prompt的应用场景(二)Agent的应用场景三、2025年Prompt与Agent的适合群体(一)Prompt适合的群体(二)Agent适合的群体四、2025年Prompt与Agent的发展机遇(一)Prompt的…

2025_1_31 C语言中关于数组和指针

1.数组作为指针传递 数组作为指针传递可以: 加一个数减一个数两个指针相减自增自减 int main() {int arr[] { 1,2,3,4,5,6,7,8,9 };printf("%d\n", arr[0] 2);printf("%d\n", arr[2] - 2);printf("%d\n", arr[0] arr[2]);int* …

Baklib推动企业知识管理创新与效率提升的全面探讨

内容概要 在当今数字化转型的背景下,有效的知识管理显得尤为重要。知识是企业的核心资产,而传统的管理方式往往无法充分发挥这些知识的价值。因此,企业亟需一种高效、灵活的解决方案来应对这一挑战。Baklib作为一款先进的企业级知识管理平台…

JAVA实战开源项目:网上购物商城(Vue+SpringBoot) 附源码

本文项目编号 T 041 ,文末自助获取源码 \color{red}{T041,文末自助获取源码} T041,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析5.4 用例设计 六、核…

访问CMOS RAM

实验内容、程序清单及运行结果 访问CMOS RAM(课本实验14) 代码如下: assume cs:code data segment time db yy/mm/dd hh:mm:ss$ ;int 21h 显示字符串,要求以$结尾 table db 9,8,7,4,2,0 ;各时间量的存放单元 data ends cod…

Visual Studio使用GitHub Copilot提高.NET开发工作效率

GitHub Copilot介绍 GitHub Copilot 是一款 AI 编码助手,可帮助你更快、更省力地编写代码,从而将更多精力集中在问题解决和协作上。 GitHub Copilot Free包含哪些功能? 每月 2000 代码补全,帮助开发者快速完成代码编写。 每月 …

socket实现HTTP请求,参考HttpURLConnection源码解析

背景 有台服务器,网卡绑定有2个ip地址,分别为: A:192.168.111.201 B:192.168.111.202 在这台服务器请求目标地址 C:192.168.111.203 时必须使用B作为源地址才能访问目标地址C,在这台服务器默认…

Spring Boot 日志:项目的“行车记录仪”

一、什么是Spring Boot日志 (一)日志引入 在正式介绍日志之前,我们先来看看上篇文章中(Spring Boot 配置文件)中的验证码功能的一个代码片段: 这是一段校验用户输入的验证码是否正确的后端代码&#xff0c…

Go学习:Go语言中if、switch、for语句与其他编程语言中相应语句的格式区别

Go语言中的流程控制语句逻辑结构与其他编程语言类似,格式有些不同。Go语言的流程控制中,包括if、switch、for、range、goto等语句,没有while循环。 1. if 语句 语法格式: (1)单分支: if 条件语句…

想品客老师的第九天:原型和继承

原型与继承前置看这里 原型 原型都了解了,但是不是所有对象都有对象原型 let obj1 {}console.log(obj1)let obj2 Object.create(null, {name: {value: 荷叶饭}})console.log(obj2) obj2为什么没有对象原型?obj2是完全的数据字典对象,没有…

SpringBoot--基本使用(配置、整合SpringMVC、Druid、Mybatis、基础特性)

这里写目录标题 一.介绍1.为什么依赖不需要写版本?2.启动器(Starter)是何方神圣?3.SpringBootApplication注解的功效?4.启动源码5.如何学好SpringBoot 二.SpringBoot3配置文件2.1属性配置文件使用2.2 YAML配置文件使用2.3 YAML配置文件使用2.…