簡體   English   中英

減去兩個直方圖

[英]Subtract two histograms

當您減去兩個不同圖像的像素分布(圖像為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是不一樣的。

我想知道是否有另一種優雅的方法可以做到這一點。

謝謝。

您可以在np.histogram()調用中顯式定義bins 如果您為兩個調用將它們設置為相同的值,則您的代碼將起作用。

如果您的值介於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個具有相同邊界的垃圾箱,並且現在簡單的區別才有意義(代碼未經測試,但您知道了)。

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM