1、定义

最大类间方差法是由日本学者大津(Nobuyuki Otsu)于1979年提出的,是一种自适应的阈值确定的方法,又叫大津法,简称OTSU。它是按图像的灰度特性,将图像分成背景和目标两部分,或者说,是寻找一个阈值为 TTT,将图像的颜色分为 1,2.....K和K+1.....2561,2.....K和K+1.....2561,2.....K和K+1.....256 两部分。

如何确定这个阈值 TTT?算法分类的原理是让背景和目标之间的类间方差最大,因为背景和目标之间的类间方差越大,说明构成图像的2部分的差别越大,错分的可能性越小。

2、公式推导

设图像包含 LLL 个灰度等级,灰度值为 iii 的像素点的个数为 NiN_iNi​,像素点的总个数为:
N=N0+N1+...+NL−1N=N_0 + N_1 + ... + N_{L-1} N=N0​+N1​+...+NL−1​
则灰度值为 iii 的像素点的概率为:
Pi=NiNP_i = \frac{N_i}{N} Pi​=NNi​​
由期望公式可得,图像的灰度均值为:
uT=∑i=0L−1iPiu_T = \sum_{i=0}^{L-1}iP_i uT​=i=0∑L−1​iPi​
按照图像的灰度特性,使用阈值 TTT 将图像分为目标 c0c_0c0​ 和背景 c1c_1c1​ 两类,则 w0(T)w_0(T)w0​(T) 和 w1(T)w_1(T)w1​(T) 分别表示阈值为 TTT 时,c0c_0c0​ 和 c1c_1c1​ 发生的概率,即:
w0(T)=∑i=0TPiw1(T)=1−w0(T)w_0(T) = \sum_{i=0}^{T}P_i\\ w_1(T) = 1 - w_0(T) w0​(T)=i=0∑T​Pi​w1​(T)=1−w0​(T)
c0c_0c0​ 和 c1c_1c1​ 的均值为:
u0(T)=∑i=0TiPiW0(T)u1(T)=uT−∑i=0TiPiw1(T)u_0(T) = \frac{\sum_{i=0}^{T}iP_i}{W_0(T)} \\ u_1(T) = \frac{u_T - \sum_{i=0}^{T}iP_i}{w_1(T)} u0​(T)=W0​(T)∑i=0T​iPi​​u1​(T)=w1​(T)uT​−∑i=0T​iPi​​
σ2(T)σ^2(T)σ2(T) 表示直方图中阈值为 TTT 的类间方差,定义为:
σB2(T)=w0(T)[u0(T)−uT]2+w1(T)[u1(T)−uT]2σ^2_B(T) = w_0(T)[u_0(T) - u_T]^2 + w_1(T)[u_1(T) - u_T]^2 σB2​(T)=w0​(T)[u0​(T)−uT​]2+w1​(T)[u1​(T)−uT​]2
最优阈值定义为类间方差最大时对应的T值,即:
σB2(T∗)=max⁡0≤T≤L−1{σB2(T)}σ^2_B(T^*) = \max \limits_{0 \leq T \leq L-1}\{σ^2_B(T)\} σB2​(T∗)=0≤T≤L−1max​{σB2​(T)}

3、代码实现

import cv2
import numpy as np
from matplotlib import pyplot as pltimage = cv2.imread(".\image\image1.png")                # 读取图片
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)          # 色彩空间转换函数plt.subplot(1,3,1)
plt.imshow(image, "gray")
plt.title("source image")
plt.xticks([]), plt.yticks([])plt.subplot(1,3,2)
plt.hist(image.ravel(), 256)                            # 绘制直方图
plt.title("Histogram")
plt.xticks([])
plt.yticks([])ret1, th1 = cv2.threshold(gray, 0, 255, cv2.THRESH_OTSU)  #方法选择为THRESH_OTSU
print(f'使用 OTSU 方法得到的阈值为 : {ret1}')plt.subplot(1,3,3)
plt.imshow(th1, "gray")
plt.title("OTSU,threshold is " + str(ret1)), plt.xticks([]), plt.yticks([])
plt.show()

4、结果展示

自适应阈值分割(最大类间分割法 + OTSU)相关推荐

  1. 图像分割 - 阈值处理 - 最大类间方差法(OTSU)

    目录 1. OTSU 介绍 2. 代码实现 1. OTSU 介绍 OTSU 大津法,也是最大类间方差算法 OTSU 算法的思想通过不同的阈值K,将图像的分为两个区域,一个是灰度值 0 <= k ...

  2. 基于OTSU最大类间方差法的ROI分割、提取图像中的形状特征--面积、周长、离心率、zernike矩

    分享一下最近学习的图像分类方面知识,整体的思路如下(之前的汇报ppt里截的) 把这个过程拆分几个部分共同学习一下吧 1.Otsu法原理 最大类间方差法OTSU是一种自适应的全局阈值确定的方法,根据灰度 ...

  3. 数字图像处理实验(六)|图像分割{阈值分割、直方图法、OTUS最大类间方差法(edge、im2dw、imfilter、imresize)、迭代阈值法、点检测}(附matlab实验代码和截图)

    文章目录 一.实验目的 二.实验原理 (一) 阈值分割 1. 直方图法 2.OTSU法(最大类间方差法)确定阈值 3. 迭代阈值法 4. 点检测 (二)边缘检测 三.实验内容 (一)阈值分割 1. 直 ...

  4. 【机器视觉学习笔记】大津法/Otsu最大类间方差法 最佳阈值处理(C++)

    目录 概念 C++源码 OtsuThreshold 主函数 效果 完整源码 平台:Windows 10 20H2 Visual Studio 2015 OpenCV 4.5.3 本文所用源码修改自C+ ...

  5. OTSU算法(也称最大类间差法,有时也称之为大津算法)

    在图像处理应用中二值化操作是一个很常用的处理方式,例如零器件图片的处理.文本图片和验证码图片中字符的提取.车牌识别中的字符分割,以及视频图像中的运动目标检测中的前景分割,等等. 较为常用的图像二值化方 ...

  6. 最大类间方差法(大津法OTSU)原理

    算法介绍 最大类间方差法是1979年由日本学者大津提出的,是一种自适应阈值确定的方法,又叫大津法,简称OTSU,是一种基于全局的二值化算法,它是根据图像的灰度特性,将图像分为前景和背景两个部分.当取最 ...

  7. Ostu最大类间方差法的C++实现

    一.Ostu的原理 最大类间方差法是由日本学者大津(Nobuyuki Ostu)在1979年提出的,该方法根据计算公式自动计算分割单域值,是一种根据灰度图像自动计算阈值的方法.它按照灰度图像的灰度值等 ...

  8. 图像二值化----otsu(最大类间方差法、大津算法)(二)

    转自:http://blog.stevenwang.name/ostu-threshold-56002.html OTSU算法也称最大类间差法,有时也称之为大津算法,被认为是图像分割中阈值选取的最佳算 ...

  9. CUDA精进之路(五):图像处理——OTSU二值算法(最大类间方差法、大津法)

    引言 最近在做医疗设备相关的项目,故在项目中大量用到了各类图像分割的算法,为了在图像中分割出特定目标,用到的算法可以有很多,比如阈值分割,多通道分割,边缘分割以及一些前沿的组合分割.而对大多数图像来说 ...

最新文章

  1. 气象gis 解决方案_杜邦可持续解决方案全方位智能化应急管理系统解决方案
  2. 阿里云朱照远:AI打开新视界 8K时代已来!
  3. 20165310java_blog_week6
  4. rh php56 php,在全球范围内提供RHSCL PHP的最佳方法
  5. mcem r语言代码_R语言阈值自回归模型(TAR)代码示例
  6. 建立局域网计算机应安装,两台电脑如何建立局域网
  7. Xcode给应用签名的设置
  8. win10微软图标点击无反应_Win10任务栏系统图标点击无反应的解决方法
  9. vs 2017 查看dll源代码
  10. 50款PS完美汉化插件一键安装,win+mac
  11. (最小割求最小割集)poweroj2883病毒侵染
  12. ArrayList类的基本使用,完成案例随机不重复点名的程序
  13. 安装软件提示重启计算机,安装西门子软件时提示重启电脑的解决办法
  14. 【金猿产品展】EasyTwin——国产自研数字孪生融合渲染引擎
  15. 类和对象,属性和方法
  16. XtraReport报表入库单数字转中文大写数字
  17. oracle智能便携投影机,智能投影 篇四:天猫精灵投影仪上手体验,小巧便携+内置电池,李佳琦带货推荐...
  18. hdoj 4417 Super Mario 【树状数组 + 思维】
  19. AcWing 188. 武士风度的牛 BFS 水题
  20. 使用容量时间证明和类Casper确定性装置带来快速确定和抗长程攻击

热门文章

  1. [ATF][Power]ARMv8 arm trust firmware
  2. shell卸载 simatic_Siemens Simatic WinCC v7.5 SP1 (x64)ISO 授权安装教程
  3. 蓝桥杯官网python组基础练习-基础1-5
  4. 互联互通社区祝大家中秋节快乐!
  5. java开发ria是指什么_Java RIA Demo
  6. 为VMwareESXi添加驱动
  7. 【ELK报错】Alias [.kibana] has more than one indices associated with it [[.kibana_1, .kibana_2]]
  8. Java 防SQL注入方法
  9. 学科网自动下载的开发方法
  10. mysql8.0如何授权_MySQL8.0 创建用户及授权