切换示例场景、阈值来源和输出类型;当前像素只看灰度值、阈值线和二值化结果之间的判断链。
由直方图类间方差最大化得到。
当需要从灰度图中把目标区域和背景区域分开时,只凭人工指定阈值容易受光照和场景变化影响。要先确定阈值 T 从哪里来,再确定每个像素与 T 比较后按什么规则写入结果。
常用办法是人工拖动固定阈值;也可以让 OTSU 根据直方图<TeachingTerm term="类间方差" explanation="类间方差衡量按某个阈值分开后,前景类和背景类均值差异的大小;OTSU 选择让它最大的阈值。" />自动选 T,或者用 Kittler 按梯度加权估计前景与背景的分界。阈值确定后,再用 BINARY、TRUNC、TOZERO 等输出规则生成结果图。
拖动阈值滑杆或切换阈值方法,观察直方图中的阈值线位置和结果图中的前景面积、边界如何一起变化;再切换输出类型,比较同一阈值下不同写入规则的区别。
蓝色柱表示灰度直方图,橙色曲线表示 OTSU 在每个候选阈值处的类间方差。红线为当前方法得到的阈值。
OpenCV 的 `threshold_type` 包含两类信息:一类是输出规则,例如 BINARY、TRUNC、TOZERO;另一类是自动选阈值标志,例如 OTSU。 “阈值方法”表示 的来源,“输出类型”表示同一个 代入后每个像素如何写入结果图。
固定阈值由滑杆给定;OTSU 由直方图类间方差最大化得到;Kittler 由梯度加权灰度平均得到。
输出类型不重新计算阈值,只规定 与 比较后写入 0、最大值、阈值或原灰度。
下列结果均来自当前灰度图。三种阈值来源使用相同的 BINARY 输出规则,因此差异只来自阈值 的选择方式。
固定阈值适合验证阈值线移动对分割结果的直接影响,但对光照和场景变化敏感。
OTSU 适合直方图具有较明显双峰的图像;当真实图像灰度分布复杂时,阈值仍可能只得到粗分割。
Kittler 使用梯度信息强调边界附近灰度,对边缘清晰的目标更敏感,但对噪声和纹理同样敏感。