编码Otsu方法的概念问题 - skimage.filters.thresholding.threshold_otsu

时间:2017-12-08 14:32:30

标签: python scikit-image image-thresholding

Otsu的方法执行二进制图像阈值处理,包括最大化通过在给定阈值处分割图像而创建的两个子类(前景/背景)之间的方差。在数学上,这表示为:

variance12 = weight1 * (mean1 - meanT)**2 + weight2 * (mean2 - meanT)**2

(meanT是图像直方图的总体平均值)。但是,我无法理解如何在threshold_otsu中的scikit-image函数中实现这一点,该函数将其写为:

variance12 = weight1 * weight2 * (mean1 - mean2)**2

虽然权重和均值的定义在这个函数中略有不同,但我看不出这两个公式是如何相同的 - 即使它们给出了相同的答案。有人会关心澄清吗?

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

通过使用权重和平均值T的定义,您可以证明这两种配方是相同的。

meanT = weight1*mean1 + weight2*mean2  (1)
weight1 + weight2 = 1                  (2)

如果您在第一个公式中插入(1),最终会得到类似这样的内容

[(mean1-mean2)**2]*[weight1*weight2**2] + [(mean1-mean2)**2]*[weight2*weight1**2]

如果您考虑并使用(2),您将获得结果。

完整的证明如下,可以在Otsu's original paper here中查看定义。

希望这会有所帮助。 Proof of Otsu threshold formula