opencv c++ ORB 词袋
opencv c++ ORB Bag Of Words
阅读 this paper 以及许多 answers.opencv
问题后,我想知道是否有 ORB 词袋的代码示例?我只能找到 SURF
或 SIFT
个示例。
遗憾的是,没有将词袋与二进制描述符(BRIEF、ORB、BRISK、FREAK)结合使用的示例。无论哪种方式,您展示的论文都解释了如何做到这一点。对于传统描述符(SIFT、SURF),使用 k 均值聚类技术,因为词汇表是从一组实值描述符生成的。但是要得到二元词汇,k-means方法并不理想,因为mean在二元中没有定义space,那么可以使用k-majority方法
在 OpenCV 中对二进制特征进行聚类的最简单方法是使用具有汉明距离的 FLANN。据我所知,不存在示例,因为它需要首先修复 OpenCv 的汉明距离函数 [1].
中的错误。
这是我的代码,其中 cvhack::Hamming<uchar>
是一个错误修复的汉明距离。
cvflann::KMeansIndexParams params;
cv::Mat centres = cv::Mat::zeros(dictionarySize, features.cols, CV_32F);
int count = cv::flann::hierarchicalClustering<uchar,cvhack::Hamming<uchar>>(features,centres,params);
阅读 this paper 以及许多 answers.opencv
问题后,我想知道是否有 ORB 词袋的代码示例?我只能找到 SURF
或 SIFT
个示例。
遗憾的是,没有将词袋与二进制描述符(BRIEF、ORB、BRISK、FREAK)结合使用的示例。无论哪种方式,您展示的论文都解释了如何做到这一点。对于传统描述符(SIFT、SURF),使用 k 均值聚类技术,因为词汇表是从一组实值描述符生成的。但是要得到二元词汇,k-means方法并不理想,因为mean在二元中没有定义space,那么可以使用k-majority方法
在 OpenCV 中对二进制特征进行聚类的最简单方法是使用具有汉明距离的 FLANN。据我所知,不存在示例,因为它需要首先修复 OpenCv 的汉明距离函数 [1].
中的错误。
这是我的代码,其中 cvhack::Hamming<uchar>
是一个错误修复的汉明距离。
cvflann::KMeansIndexParams params;
cv::Mat centres = cv::Mat::zeros(dictionarySize, features.cols, CV_32F);
int count = cv::flann::hierarchicalClustering<uchar,cvhack::Hamming<uchar>>(features,centres,params);