2

我正在尝试在 opencv 2.4.4 的 flann 中使用本地敏感散列算法。这是我的代码

Ptr<IplImage> cluster_image = cvLoadImage("C:\\Users\\Administrator\\Pictures\\1.jpg");
vector<KeyPoint> cluster_keypoint;
Mat des;

description_detect(cluster_image,cluster_keypoint,des,SIFT_DESCRIPTION);
//My function to extract the sift feature from image.
//Descriptions are stored at variable des.

flann::Index my_index(des, flann::LshIndexParams(10, 10, 2));

当运行此代码通过 lsh 算法构建 flann 的索引时。代码断言

“Opencv 错误,不支持的格式或格式组合类型 = 5”

我检查 miniflann.cpp 中的代码。似乎 flann 中的局部敏感散列算法仅与 CV_8U Mat 类型兼容,除了由 sift 生成的 CV_32F。

但是,从 ORB、Brief、BRISK、FREAK 检测到的其他二进制描述符可以产生 CV_8U Mat 类型。

所以我的问题是:局部敏感散列算法是否只与opencv中的二进制描述符兼容?

4

1 回答 1

4

是的:散列函数仅针对二进制描述符(即可以表示为 的数组的描述符unsigned char)实现。

有关详细信息,请参阅此答案:Binary features and Locality Sensitive Hashing (LSH)

于 2013-03-07T08:24:28.397 回答