Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image 如何比较两种颜色直方图_Image_Compare_Histogram_Hsv - Fatal编程技术网

Image 如何比较两种颜色直方图

Image 如何比较两种颜色直方图,image,compare,histogram,hsv,Image,Compare,Histogram,Hsv,我使用映射结构来存储文件名到其HSV颜色直方图的映射。此映射中有100个元素作为图像数据库。如果现在有一个图像,并且我已经获得了输入图像的直方图,我如何进行比较 我知道一种叫做“二次距离”的方法,但我不懂。一种简单的方法是使用如下距离计算器: double dist(vector<double> *histogram1, vector<double> *histogram2) { double result = 0.0; for (vector<do

我使用
映射
结构来存储文件名到其HSV颜色直方图的映射。此映射中有100个元素作为图像数据库。如果现在有一个图像,并且我已经获得了输入图像的直方图,我如何进行比较


我知道一种叫做“二次距离”的方法,但我不懂。一种简单的方法是使用如下距离计算器:

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;
}
double dist(向量*historogram1,向量*historogram2){
双结果=0.0;
对于(vector::iterator val1=historogram1->begin(),val2=historogram2->begin();
val1end();
val1++,val2++){
结果+=(*val1-*val2)*(*val1-*val2);
}
结果=sqrt(结果);
返回结果;
}
然后确定哪个直方图的距离最小。请注意,这是为您准备的
仅用于演示目的,您必须添加向量大小检查等。

您熟悉线性代数吗?在大学里学过,但已经四年了…@llmoSimple and full,我将尝试一下…谢谢。为什么这里使用sqrt func?@llmoeuro如果您将两个直方图视为n维点(在数学意义上),此函数使用广义毕达哥拉斯定理给出它们的欧氏距离,
sqrt()
是其中的一部分。如果你只需要找到距离最小的一个,你不需要它,因为如果
sqrt(a)
那么
a