python - 减去两个直方图
问题描述
当您减去两个不同图像的像素分布(图像采用二维数组格式)时,我试图找到留下的残差。
我正在尝试做类似下面的事情
import numpy as np
hist1, bins1 = np.histogram(img1, bins=100)
hist2, bins2 = np.histogram(img2, bins=100)
residual = hist1 - hist2
然而,在我上面的方法中,问题是两个图像都有不同的最大值和最小值,并且当你做hist1-hist2
每个元素的单个 bin 值时hist1-hist2
是不一样的。
我想知道是否有另一种优雅的方式来做到这一点。
谢谢。
解决方案
bins
您可以在np.histogram()
调用中显式定义。如果您将它们设置为两个调用的相同值,那么您的代码将起作用。
如果您的值介于 0 和 255 之间,您可以执行以下操作:
import numpy as np
hist1, bins1 = np.histogram(img1, bins=np.linspace(0, 255, 100))
hist2, bins2 = np.histogram(img2, bins=np.linspace(0, 255, 100))
residual = hist1 - hist2
这样你就有了 100 个边界相同的 bin,现在简单的区别是有意义的(代码没有经过测试,但你明白了)。