返回

Otsu 阈值分割

Otsu Thresholding
第三章 / 简单背景方法
参数面板

拖动候选阈值 T,观察它如何把灰度分成两类,以及类间方差何时达到最大。

96
当前候选 T=96,历史最佳 T=96,最终 Otsu 最佳 T=128
窗口定位辅助操作
用方向键或下方 4 个按钮移动当前窗口;也可以直接点击原图或结果图跳转。
97 / 256
方向
Otsu 的核心不是“神奇自动阈值”,而是逐个测试候选 T

页面主线固定为:给一个候选阈值 T,把灰度分成两类,计算这两类被拉开的程度,再记录当前扫描到的历史最大值。学生看到的不是最后答案先出现,而是 T 如何一步步被筛出来。

最佳 T = 128
左右方向键调 T,向上/向下每次跨 10 个灰度级
97 / 256
灰度直方图与阈值扫描
红线是当前候选 T,绿线是扫描到当前为止的历史最佳 T。
当前 T=96
1. 当前对象:候选阈值 T
正在测试
T = 96

当前只看这一个候选 T,它会把灰度直方图切成左侧背景类和右侧前景类。

2. 当前证据:两类统计量
背景类灰度 ≤ T
ω0=0.301
μ0=69.1
前景类灰度 > T
ω1=0.699
μ1=149.7

证据不是“看起来像不像分开了”,而是看这两类的均值差和各自像素占比共同决定的类间方差。

3. 当前结果:类间方差与历史最大值
当前 σ² = 1368.23
历史最大 T = 96
历史最大 σ² = 1368.23

扫描结束后,历史最大值对应的 T 就是 Otsu 阈值。

当前候选 T 的一条代入链
先按 T 分成两类
C0:gT,C1:g>T
当前 T=96,背景类共有 1232 个像素,前景类共有 2864 个像素。
再计算类间方差
σb2=ω0ω1(μ0-μ1)2
这里的 σ² 越大,说明两类被分得越开。ω0 = wB / total,ω1 = wF / total,为标准 Otsu 概率权重形式。
当前结果
σb2=1368.23
当前候选 T 刚刚刷新了历史最大值。
当前候选 T 在结果图里写回了什么
当前候选阈值 T=96 把灰度大于 T 的像素写成白色,其余写成黑色。当前结果图中白色像素约 2873 个,占 70.1%。
如果切到“直接查看最佳 T”,结果图会改用 Otsu 最终选出的最佳阈值 T=128,用于和当前候选 T 做直观对比。
公式代入
怎么读直方图

红线表示当前候选 T,绿色提示表示扫描到当前位置为止的历史最大 T。Otsu 不是直接找“最高的灰度柱”,而是找“让两类分开程度最大”的分界线。