当您减去两个不同图像的像素分布(图像为2D阵列格式)时,我正在尝试查找残留的残差。
我正在尝试执行以下操作
import numpy as np
hist1, bins1 = np.histogram(img1, bins=100)
hist2, bins2 = np.histogram(img2, bins=100)
residual = hist1 - hist2
但是,在我上面的方法中,问题在于两个图像的最大和最小值都不同,并且当您执行hist1-hist2
时,hist1-hist2
中每个元素的单独bin值都不相同。>
我想知道是否还有另一种优雅的方式做到这一点。
谢谢。
答案 0 :(得分:1)
您可以在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个具有相同边界的垃圾箱,并且现在简单的区别才有意义(代码未经测试,但您知道了)。
答案 1 :(得分:1)
import numpy as np
nbins = 100
#minimum value element wise from both arrays
min = np.minimum(img1, img2)
#maximum value element wise from both arrays
max = np.maximum(img1, img2)
#histogram is build with fixed min and max values
hist1, _ = numpy.histogram(img1,range=(min,max), bins=nbins)
hist2, _ = numpy.histogram(img2,range=(min,max), bins=nbins)
#makes sense to have only positive values
diff = np.absolute(hist1 - hist2)