Android- HOG 描述符距离

Android- HOG descriptors distance

我想使用 OpenCV 在 android 应用程序中比较 2 个 HOG 描述符。我发现在计算两个类型为 MatOfFloat 的向量之间的欧几里德距离时遇到了困难。你有没有可以帮助我的代码示例。

计算HOG描述符的函数是mHOGDescriptor.compute(imgMat, descriptors, winStride, padding, locations);这个函数的输出是他的类型是 MatOfFloat 的描述符。一旦我找到 2 个图像的 HOG 描述符,我想计算它与我发现问题的确切位置之间的欧几里德距离。

我尝试了这段代码,但它不起作用:

for(int i=0; i<imgMat.rows();i++)
{ 
    for(int j=0; j<imgMat.cols();j++)
    { 
        distance1=(int) (distance1+(mDescriptors1.get(i, j)-mDescriptors2.get(i, j)));
    }
}

我发现你的代码有两个问题:

  1. 欧氏距离的公式不正确
  2. 您在每次迭代时转换为 int。这不是一个好主意,因为描述符的值是浮点数且小于 1(它由归一化直方图组成),因此您将距离四舍五入为零。

试试下面的代码:

distance=0;
for(int i=0; i<imgMat.rows();i++)
{ 
    for(int j=0; j<imgMat.cols();j++)
    {
        distance+=(mDescriptors1.get(i, j)[0]-mDescriptors2.get(i, j)[0])*(mDescriptors1.get(i, j)[0]-mDescriptors2.get(i, j)[0]);
    }
}