我正在尝试编写一个函数来匹配 ORB 功能。我没有使用默认匹配器(bfmatcher、flann 匹配器),因为我只想将图像中的特定特征与其他图像中的特征进行匹配。
我看到 ORS 描述符是一个二进制数组。
我的问题是如何匹配 2 个特征,即如何找到 2 个描述符之间的汉明距离?
ORB 描述符:
descriptor1 =[34, 200, 96, 158, 75, 208, 158, 230, 151, 85, 192, 131, 40, 142, 54, 64, 75, 251, 147, 195, 78, 11, 62, 245, 49, 32, 154, 59, 21, 28, 52, 222]
descriptor2 =[128, 129, 2, 129, 196, 2, 168, 101, 60, 35, 83, 18, 12, 10, 104, 73, 122, 13, 2, 176, 114, 188, 1, 198, 12, 0, 154, 68, 5, 8, 177, 128]
谢谢。
ORB 描述符只是 32 字节的 uchar Mat。
bruteforce 和 flann 匹配器做了更多的工作,而不仅仅是比较描述符,但如果这就是你现在想要的,那将是一个直接的 norm。 :
Mat descriptor1, descriptor2;
double dist = norm( descriptor1, descriptor2, NORM_HAMMING);
// NORM_HAMMING2 or even NORM_L1 would make sense, too.
// dist is a double, but ofc. you'd only get integer values in this case.
我是一名优秀的程序员,十分优秀!