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

Conceptual issue with coding Otsu's method - skimage.filters.thresholding.threshold_otsu

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

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

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

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

虽然权重和均值的定义在此函数中略有不同,但我看不出这两个公式有何相同之处 - 尽管它们给出了相同的答案。有人愿意澄清一下吗?

感谢您的帮助。

您可以使用权重和 meanT 的定义来证明这两个公式相同。

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.

中查看

希望这对您有所帮助。