大津算法ostu

news2024/11/24 20:54:16

大津算法是一种自适应图像二值化方法。

它以最大化类内距离或最小化类间距离为优化目标,将图像从某一亮度阈值分为前景/背景。

其基本原理示意图如下:
在这里插入图片描述

1.前言

为了深入介绍此算法,先说明一些背景知识。

1.1 数据可分性

在这里插入图片描述
数据可分性通常使用类间及类内距离来评判,即类间距离越大,类内距离越小,数据越容易进行分类/聚类。

1.1 类间方差、类内方差及全局方差

设一数据集 { x i ; i = 1 , 2 , . . . , N } \{x_i;i=1,2,...,N\} {xi;i=1,2,...,N},将其分为 c c c 类,第 j j j 类个数为 n j n_j nj,记为:

{ x i j ; j = 1 , 2 , . . . , c , i = 1 , 2 , . . . , n j } \qquad\qquad\qquad {\{x_i^j;j=1,2,...,c,i=1,2,...,n_j\}} {xij;j=1,2,...,ci=1,2,...,nj}

  • 所有数据均值 m = 1 N ∑ i = 1 N x i \qquad m=\cfrac{1}{N}\sum\limits_{i=1}^Nx_i m=N1i=1Nxi

  • j j j 类数据均值 m j = 1 n j ∑ i = 1 n j x i \quad m_j=\cfrac{1}{n_j}\sum\limits_{i=1}^{n_j}x_i mj=nj1i=1njxi

  • 类内方差
    S W j = 1 n j ∑ i = 1 n j ( x i j − m j ) ( x i j − m j ) T \qquad\qquad\qquad\quad S_W^j=\cfrac{1}{n_j}\sum\limits_{i=1}^{n_j}(x_i^j-m_j)(x_i^j-m_j)^T SWj=nj1i=1nj(xijmj)(xijmj)T

  • 总的类内方差
    S W = ∑ i = 1 c n j N ⋅ S W j \qquad\qquad\qquad\quad S_W=\sum\limits_{i=1}^{c}\cfrac{n_j}{N}\cdot S_W^j SW=i=1cNnjSWj

  • 类间方差
    S B = ∑ j = 1 c n j N ( m j − m ) ( m j − m ) T \qquad\qquad\qquad\quad S_B=\sum\limits_{j=1}^{c}\cfrac{n_j}{N}(m_j-m)(m_j-m)^T SB=j=1cNnj(mjm)(mjm)T

  • 全局方差
    S T = 1 N ∑ i = 1 N ( x j − m ) ( x j − m ) T \qquad\qquad\qquad\quad S_T=\cfrac{1}{N}\sum\limits_{i=1}^{N}(x_j-m)(x_j-m)^T ST=N1i=1N(xjm)(xjm)T

    可见,对于同一组数据,其全局方差为一常数。

1.2 三种方差之间的关系

S T = S W + S B \qquad\qquad\qquad\quad S_T=S_W+S_B ST=SW+SB

证明见参考文献[2]。

1.3 评判数据可分性metric

其中一种方法是Calinski-Harabasz Index

在这里插入图片描述
B k B_k Bk W k W_k Wk1.1中的 S B S_B SB, S W S_W SW

sklearn中有相应的实现:

from sklearn import metrics
metrics.calinski_harabasz_score(X, labels)

2. OSTU算法

1.2可知,对于同一组数据,全局方差为一常数,则最大化类间方差等价于最小化类内方差。

因此对于图像二值化,优化目标可设为最大化前景/背景两类之间的方差。

这里直接列出 wiki Otsu中的方法:

在这里插入图片描述

在这里插入图片描述

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

  • 具体算法:
    1) 计算图像直方图,统计每一个亮度水平 i = 0 , 1 , . . . , L i=0,1,...,L i=0,1,...,L 的比例 p i p_i pi
    2) for t = 1 , . . . , L t=1,...,L t=1,...,L,分别计算类间方差 σ b 2 ( t ) \sigma_b^2(t) σb2(t)
    3)二值化亮度阈值设为 最大 σ b 2 ( t ) \sigma_b^2(t) σb2(t)对应的t值。

参考文献

[1] Otsu Thresholding — Mathematical Secrets behind Image Binarization
[2] 现代模式识别,孙即祥
[3] https://scikit-learn.org/stable/modules/clustering.html#calinski-harabasz-index
[4] wiki Otsu

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

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

相关文章

【视频解读】动手学深度学习V2_01课程介绍

1.概述 这门课程主要介绍深度学习经典和最新模型。从最简单、最老的80年代的Lenet,讲到计算机视觉比较流行的Resnet,以及经典的时序模型LSTM以及最近比较流行的BERT。当然我们在讲深度学习时,我们离不开机器学习,机器学习的很多基础知识是我们需要的&…

关于OLED屏的笔记

OLED即有机发光管(Organic Light-Emitting Diode,OLED)。OLED显示技术具有自发光、广视角、几乎无穷高的对比度、较低功耗、极高反应速度、可用于绕曲性面板、使用温度范围广、构造及制程简单等有点,被认为是下一代的平面显示屏新兴应用技术。 OLED显示和传统的LCD显…

英文论文(sci)解读复现【NO.6】ASFF-YOLOv5:基于多尺度特征融合的无人机图像道路交通多元检测方法

此前出了目标检测算法改进专栏,但是对于应用于什么场景,需要什么改进方法对应与自己的应用场景有效果,并且多少改进点能发什么水平的文章,为解决大家的困惑,此系列文章旨在给大家解读发表高水平学术期刊中的 SCI论文&a…

Xceed Ultimate Suite 22.3 Crack

Xceed Ultimate Suite 22.3 Crack  Xceed Ultimate Suite是最完整的包括所有用户的工具,并设置所有Xceed和计算机连接以生成书面数据。Xceed Ultimate Suite还为用户提供了140多个预先编写的比较。 Xceed Ultimate Suite公司的功能和特点: -包括.NET在内…

Linux shell脚本 扩展补充示例

通过变量切片、获取变量长度、产生随机数、合并字符串 最后生成随机密码 变量切片、获取变量长度 [xuexue ~]$ a1234567890 [xuexue ~]$ echo $a [xuexue ~]$ echo ${a} [xuexue ~]$ echo ${#a} #获取变量长度 [xuexue ~]$ echo ${a:3:3} #切片,第4个开始获取三个…

力扣题库刷题笔记646-最长数对链

1、题目如下: 2、题解思路代码实现: 本题算是到目前为止,代码能读懂,但是思路并不能完全理解的代码(大概能理解,但是无法完全描述,不看题解不能做出),涉及到贪心和排序。…

07_Uboot顶层Makefile分析_make xxx_defconfig

目录 make xxx_defconfig 过程 Makefile.build 脚本分析 scripts_basic 目标对应的命令 %config 目标对应的命令 make xxx_defconfig 过程 在编译uboot之前要使用"make xxx_defconfig"命令来配置uboot,那么这个配置过程是如何运行的呢?在顶层Makefile中有如下代…

C++类模板

类模板和函数模板语法相似&#xff0c;在声明模板template后面加类&#xff0c;此类称为类模板. 类模板作用&#xff1a; 建立一个通用类&#xff0c;类中的成员 数据类型可以不具体制定&#xff0c;用一个虚拟的类型来代表。 语法&#xff1a; template<typename T> …

深入解析PyTorch中的模型定义:原理、代码示例及应用

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️ &#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…

【基础算法】大数运算问题

&#x1f339;作者:云小逸 &#x1f4dd;个人主页:云小逸的主页 &#x1f4dd;Github:云小逸的Github &#x1f91f;motto:要敢于一个人默默的面对自己&#xff0c;强大自己才是核心。不要等到什么都没有了&#xff0c;才下定决心去做。种一颗树&#xff0c;最好的时间是十年前…

Python高光谱遥感数据处理与机器学习(最新的技术突破讲解和复现代码)

将高光谱技术与Python编程工具结合起来&#xff0c;聚焦高频技术难点&#xff0c;明确开发要点&#xff0c;快速复现高光谱数据处理和分析过程&#xff0c;并对每一行代码进行解析&#xff0c;对学习到的理论和方法进行高效反馈。实践篇&#xff0c;通过高光谱矿物识别&#xf…

了解这个项目进度跟踪管理工具,轻松掌握项目进度

白天开会晚上干活的PM和战场上的将军没有区别&#xff0c;产品研发如同组团杀敌&#xff0c;团队配合最为重要。Zoho Projects项目管理工具&#xff0c;适用于各种规模和需求的公司。 一、需求管理 在项目中&#xff0c;我们使用它Zoho收集整理各方反馈&#xff0c;快速处理工单…

自媒体达人养成计划(ChatGPT+new bing)

本节课我们来探索如何使用GPT帮助我们成为自媒体达人&#xff0c;快速赚到一个小目标&#xff01;在此之前&#xff0c;我们需要先做些准备工作~ 首先是平台选取&#xff0c;写文章第一件事就是要保证内容的有效性和准确性&#xff0c;不然就成为营销号了嘛&#xff0c;所以我…

5---最长回文字串

给你一个字符串 s&#xff0c;找到 s 中最长的回文子串。 如果字符串的反序与原始字符串相同&#xff0c;则该字符串称为回文字符串。 示例 1&#xff1a; 输入&#xff1a;s “babad” 输出&#xff1a;“bab” 解释&#xff1a;“aba” 同样是符合题意的答案。 示例 2&…

改进沙猫群优化算法(ISCSO)-附代码

改进沙猫群优化算法(ISCSO) 文章目录 改进沙猫群优化算法(ISCSO)1.沙猫群优化算法2. 改进沙猫群优化算法2.1 混沌映射初始化2.2 引入互利共生策略2.3 引入莱维飞行策略 3.实验结果4.参考文献5.Matlab代码6.Python代码 摘要&#xff1a;对沙猫群优化算法进行改进。在改进的沙猫群…

Vue.js 教程---菜鸟教程

文章目录 Vue.js 教程Vue.js 安装Vue.js 起步Vue.js 模板语法插值指令用户输入过滤器缩写 Vue.js 条件语句Vue.js 循环语句Vue.js 计算属性Vue.js 监听属性Vue.js样式绑定 Vue.js 教程 本教程主要介绍了 Vue2.x 版本的使用 第一个实例&#xff1a; <body> <div id&…

Linux 信号学习

Linux 信号学习 信号量的基本概念信号产生的条件信号如何被处理信号的异步特质 信号的分类可靠信号/不可靠信号实时信号/非实时信号 常见信号与默认行为信号处理signal() 函数sigaction()函数 向进程发送信号kill() 函数raise() 函数 alarm()和pause()函数alarm() 定时函数paus…

玩转传感器----理解时序和数据采集(DHT11)

该文章以DHT11模块进行分析 目录 1.模块复位&#xff08;时序图&#xff09; 2.DHT11的应答信号 3.读取1bit数值&#xff08;比较高电平的时间是否大于40us&#xff09; 4.读取一个字节 5.把读取的字节放入单片机 6. 寄存器设置IO口方向 1.模块复位&#xff08;时序图&a…

22.Java多线程

Java多线程 一、进程和线程 进程是程序的一次动态执行过程&#xff0c;它需要经历从代码加载&#xff0c;代码执行到执行完毕的一个完整的过程&#xff0c;这个过程也是进程本身从产生&#xff0c;发展到最终消亡的过程。多进程操作系统能同时达运行多个进程&#xff08;程序…

使用Python接口自动化测试post请求和get请求,获取请求返回值

目录 引言 请求接口为Post时&#xff0c;传参方法 获取接口请求响应数据 引言 我们在做python接口自动化测试时&#xff0c;接口的请求方法有get,post等&#xff1b;get和post请求传参&#xff0c;和获取接口响应数据的方法&#xff1b; 请求接口为Post时&#xff0c;传参方法…