编码 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.
中查看
希望这对您有所帮助。
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.
中查看希望这对您有所帮助。