首页 > 解决方案 > 减去两个直方图

问题描述

当您减去两个不同图像的像素分布(图像采用二维数组格式)时,我试图找到留下的残差。

我正在尝试做类似下面的事情

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是不一样的。

我想知道是否有另一种优雅的方式来做到这一点。

谢谢。

标签: pythonnumpyhistogram

解决方案


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,现在简单的区别是有意义的(代码没有经过测试,但你明白了)。


推荐阅读