有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何比较两个图像边缘描述符?

嗨,我对图像检索完全陌生,我目前正在实现一个功能,从数据库中检索最匹配中心图像的图像。我通过jfeaturelib库选择了两个描述符,这两个是颜色直方图和Mpeg7Edege描述符。 对于RGB颜色直方图,我在这个论坛上发现,如果你想比较其中的两个,你只需要对每个点的欧几里德距离进行平均,就像这样

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;
}

这是否也适用于Mpeg7Edge直方图?我还想知道这个直方图是否总是返回相同数量的特征,与图像大小无关,因为我用两张图像尝试了它,在这两种情况下,它都返回160个特征


共 (1) 个答案

  1. # 1 楼答案

    抱歉,作为JFeatureLib的作者,我没有注意到这里的问题(就在邮件列表上)。 当然,你可以对这些向量使用欧几里得距离。对于更高维向量(10 +或20 +),您可能需要考虑cosine dist,因为它通常提供更好的结果。但这可能只是在应用程序中进行测试。 是的,直方图应该总是产生相同数量的维度