【问题标题】:Is the sum of an images histogram not just the area of the image?图像直方图的总和不仅仅是图像的面积吗?
【发布时间】: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


【解决方案1】:

如果变量hists 确实包含图像的直方图,那么你是对的,这些 bin 总和就是图像大小。

该函数似乎没有接收到图像,因此这是获取该尺寸的另一种方法。


尽管执行这种低效操作似乎很浪费,但与计算直方图本身的时间相比,它的成本通常可以忽略不计。

【讨论】:

    猜你喜欢
    • 2015-06-13
    • 2018-08-10
    • 2021-02-11
    • 1970-01-01
    • 1970-01-01
    • 2014-04-10
    • 1970-01-01
    • 2012-08-21
    • 1970-01-01
    相关资源
    最近更新 更多