opencv c++ ORB 词袋

opencv c++ ORB Bag Of Words

阅读 this paper 以及许多 answers.opencv 问题后,我想知道是否有 ORB 词袋的代码示例?我只能找到 SURFSIFT 个示例。

遗憾的是,没有将词袋与二进制描述符(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);