【问题标题】:OpenCV calcHist function.OpenCV calcHist 函数。
【发布时间】:2015-05-05 15:33:54
【问题描述】:

我正在使用 calcHist 函数来计算图像的颜色直方图。我正在开发一个简单的图像匹配应用程序,我正在尝试使用颜色直方图作为图像描述符来查找相似的图像。

这是定义:

void calcHist(const Mat* images, int nimages, const int* channels, InputArray mask, OutputArray hist, int dims, const int* histSize, const float** ranges, bool uniform=true, bool accumulate=false )

我的问题是关于 dims 参数。 这是来自 OpenCV 文档:

dims – 直方图维度必须为正且不大于 大于 CV_MAX_DIMS(在当前 OpenCV 版本中等于 32)。

这可能是一个虚拟问题,但是如果我将 dims 设置为 1 或 3,结果之间有什么区别?如果我设置 dims=1 我只得到图像中单个通道的直方图,还是表示一维向量中所有通道的直方图?

【问题讨论】:

    标签: c++ opencv image-processing


    【解决方案1】:

    示例:4x4 HS(V) 图片:

    色调通道:

    1   170 33  14
    15  133 33  7
    122 90  100 142
    1   170 33  14
    

    饱和通道:

    25  33  33  45
    25  55  255  255
    25  33  255  255
    10  55  255  255
    

    现在假设每个通道有 3 个直方图 BINS:

    HA = [0..60]
    HB = [60..120]
    HC = [120..180] 
     for H channel
    
    SA = [0..80]
    SB = [80..160]
    SC = [160..255] 
     for S channel
    

    现在的区别:

    dim = 1 将为每个通道制作一维直方图:

    #HA = 9
    #HB = 2
    #HC = 5
    

    #SA = 10
    #SB = 0
    #SC = 6
    

    如果你使用 dim = 2,你会得到通道间直方图:

    -  HA HB HC
    SA  5  1  4  
    SB  0  0  0
    SC  4  1  1
    

    这是更详细的信息。

    希望这是您问题的答案。

    【讨论】:

      【解决方案2】:

      dims 参数用于指示您感兴趣的功能的数量。 “强度”可以为 1,“渐变、方向”等可以为 1。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-11
        • 2016-03-17
        • 2013-02-19
        • 1970-01-01
        • 2018-10-31
        • 2012-12-25
        • 1970-01-01
        • 2019-04-16
        相关资源
        最近更新 更多