【问题标题】:Image similarity (histogram matching/euclidean distance)图像相似度(直方图匹配/欧式距离)
【发布时间】:2014-03-03 16:37:34
【问题描述】:

我已经搜索了好几天,但我似乎不知道从哪里开始。我正在尝试通过颜色将基本图像与其他 10 个图像进行比较,并且我必须在不使用 opencv 函数的情况下使用欧几里得或直方图匹配。我只尝试过欧几里得距离。我想要做的是获取 image1 和 image2 中每个像素的距离。我显示了距离,我得到了非常高的值。我的代码中可能有什么问题?请帮忙。 :)

for(p=0;p<height;p++) // row 
{

    for(p2=0;p2<inputHeight;p2++) // row 
    {                       
        for(u2=0;u2<inputWidth;u2++) // col 
        { 
            r2 = inputData[p2*inputStep+u2*inputChannels+2]; 
            g2 = inputData[p2*inputStep+u2*inputChannels+1]; 
            b2 = inputData[p2*inputStep+u2*inputChannels+0];     
        } 
    }                               
    for(p=0;p<height;p++) // row 
    {
        for(u=0;u<width;u++) // col 
        { 
            r = data[p*step+u*channels+2]; 
            g = data[p*step+u*channels+1]; 
            b = data[p*step+u*channels+0];     
        }
    }

    euclidean=(euclidean+sqrt(pow(b2-b,2) + pow(g2-g, 2) + pow(r2-r,2))); 
}

【问题讨论】:

    标签: opencv histogram rgb


    【解决方案1】:

    当您将所有像素的欧几里得距离相加时,您的程序往往会获得非常高的价值:

    euclidean=(euclidean+sqrt(pow(b2-b,2) + pow(g2-g, 2) + pow(r2-r,2))); 
    

    我建议你这样做:

    1. 计算图像的颜色直方图(矢量特征)。

    2. 计算这些直方图之间的相关系数作为图像的差异。

    【讨论】:

      猜你喜欢
      • 2018-04-20
      • 1970-01-01
      • 2013-08-14
      • 2016-01-01
      • 2020-12-14
      • 1970-01-01
      • 1970-01-01
      • 2014-02-20
      • 1970-01-01
      相关资源
      最近更新 更多