【发布时间】:2022-06-10 16:57:46
【问题描述】:
我在科学论文中看到过几次人们提到图像直方图的总和,然后在参考源代码中他们使用 python sum() 函数而不是 openCV 的 calcHistogram 输出。当然这只是等于图像的面积,并且仅将图像的宽度和高度相乘可能在计算上更有效?
示例:
def clip_histogram_(self, hists, threshold = 10.0):
all_sum = sum(hists)
threshold_value = all_sum / len(hists) * threshold
...
这里的直方图只是一个长度为 255 的数组,索引代表颜色,代表整数是该颜色的频率。
除非 Python 用他们的 sum 函数做一些魔法,否则这不是一种有效的做事方式吗?
【问题讨论】:
-
“当然这正好等于图像的面积”——根本不是。你为什么这么认为 ? (公式计算(类似于)平均像素值,这与图像大小无关)
-
直方图是根据每个位置的像素强度计算的。面积只是图像的高度和宽度的乘积与像素强度无关。两个相同大小/面积的图像可以有不同的直方图表示
-
@berak:完全可以。您与直方图质心混淆了。
-
我将函数的第二行作为一些上下文包含在内,我在这里特指
sum函数等于图像的宽度*高度。现在,@YvesDaoust 的回答是最有意义的。图像中的每个像素都会增加一个 bin,因此只能得出所有 bin 的总和等于像素总数。
标签: python opencv image-processing