1979-A threshold selection method from gray-level histograms

1 论文简介

《A threshold selection method from gray-level histograms》是由日本学者大津于 1979 年发表在 IEEE TRANSACTIONS ON SYSTEMS 上的一篇论文。该论文提出了一种基于图像灰度直方图的阈值化方法,计算简单,且不受图像亮度和对比度的影响,被称为阈值分割领域的最佳算法之一。以下称 Otsu 法。

2 算法原理

假设原始图像的最大灰度级为 L L L,第 i i i 级的像素数用 n i n_i ni 表示,那么原始图像的总像素数 N N N 计算如下:
N = n 1 + n 2 + . . . + n i + . . . + n L (1) {N=n_1+n_2+...+n_i+...+n_L} \tag{1} N=n1+n2+...+ni+...+nL(1)
归一化直方图 p i p_i pi 表示如下:
p i = n i / N , p i ≥ 0 , ∑ i = 1 L p i = 1 (2) {p_i=n_i/N},{\quad \quad} p_i \geq 0,{\sum_{i=1}^Lp_i=1} \tag{2} pi=ni/N,pi0,i=1Lpi=1(2)
现假设通过 k k k 级阈值将直方图分为 C 0 C_0 C0 C 1 C_1 C1 两类(目标和背景),则 C 0 C_0 C0 C 1 C_1 C1 的累积概率、均值分别为:
ω 0 = ∑ i = 1 k p i (3) \omega_0={\sum_{i=1}^{k}p_i} \tag{3} ω0=i=1kpi(3) ω 1 = ∑ i = k + 1 L p i (4) \omega_1={\sum_{i=k+1}^{L}p_i} \tag{4} ω1=i=k+1Lpi(4) μ 0 = ∑ i = 1 k i p i / ω 0 (5) \mu_0={\sum_{i=1}^{k}ip_i/{\omega_0}} \tag{5} μ0=i=1kipi/ω0(5) μ 1 = ∑ i = k + 1 L i p i / ω 1 (6) \mu_1={\sum_{i=k+1}^{L}ip_i/{\omega_1}} \tag{6} μ1=i=k+1Lipi/ω1(6)
k k k 级阈值下的类间方差 σ B \sigma_B σB 为:
σ B = ω 0 ω 1 ( μ 1 − μ 0 ) 2 (7) \sigma_B={\omega_0}{\omega_1}{\left({\mu_1}-{\mu_0}\right)}^2 \tag{7} σB=ω0ω1(μ1μ0)2(7)
最佳阈值 k ∗ k^* k 计算如下:
σ B ( k ∗ ) = max ⁡ 1 ≤ k < L σ B ( k ) (8) {\sigma_B\left(k^*\right)}={\max_{1{\leq}k<L}}{\sigma_B\left(k\right)} \tag{8} σB(k)=1k<LmaxσB(k)(8)
值得注意的是,该方法非常容易拓展至多阈值的情形。

3 实验结果

在这里插入图片描述

4 参考文献

[1] Otsu N. A threshold selection method from gray-level histograms[J]. IEEE transactions on systems, man, and cybernetics, 1979, 9(1): 62-66.

5 代码链接

代码

相关推荐

  1. xtu 1279 Dual Prime

    2024-01-20 01:20:01       353 阅读
  2. 1971 - 大小写转换

    2024-01-20 01:20:01       50 阅读
  3. 题目 1971: 外出旅游

    2024-01-20 01:20:01       41 阅读
  4. Atcoder ABC179

    2024-01-20 01:20:01       54 阅读
  5. KY199 查找

    2024-01-20 01:20:01       44 阅读
  6. 179. 最大数

    2024-01-20 01:20:01       43 阅读
  7. 197.上升的温度

    2024-01-20 01:20:01       25 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-20 01:20:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-20 01:20:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-20 01:20:01       87 阅读
  4. Python语言-面向对象

    2024-01-20 01:20:01       96 阅读

热门阅读

  1. 后端使用response.reset()导致出现跨域问题

    2024-01-20 01:20:01       55 阅读
  2. 理解pytorch系列:布尔索引是怎么实现的

    2024-01-20 01:20:01       56 阅读
  3. C++从零开始的打怪升级之路(day12)

    2024-01-20 01:20:01       58 阅读
  4. DOS命令

    DOS命令

    2024-01-20 01:20:01      56 阅读
  5. linux下boost编译arm版本

    2024-01-20 01:20:01       54 阅读
  6. 记自动化测试发现的一个因表空间不足引发的BUG

    2024-01-20 01:20:01       50 阅读
  7. 前端架构和业务场景面试题(本人真实面试题)

    2024-01-20 01:20:01       49 阅读