如何比较两种颜色直方图

时间:2012-07-04 05:52:27

标签: image compare histogram hsv

我使用map<CString, vector<double>>结构来存储文件名到其HSV颜色直方图的映射。此地图中有100个元素作为图像DB。如果现在是图像,我得到了输入图像的直方图,我该如何进行比较?

我知道一种叫做“二次距离”的方法,但我不明白。

1 个答案:

答案 0 :(得分:1)

一种简单的方法是使用这样的距离计算器:

double dist(vector<double> *histogram1, vector<double> *histogram2) {
    double result = 0.0;
    for (vector<double>::iterator val1=histogram1->begin(), val2=histogram2->begin();
         val1<histogram1->end();
         val1++, val2++) {
        result += (*val1 - *val2) * (*val1 - *val2);
    }
    result = sqrt(result);
    return result;
}

然后确定哪个直方图具有最小距离。请注意,这是为了 仅用于演示目的,您必须添加矢量大小检查等。