opencv c ++ ORB Bag Of Words

После прочтения Эта бумага, а также многие answers.opencv вопросы, мне было интересно, есть ли какие-либо примеры кода в ORB Bag Of Words? Я мог только найти SURF или же SIFT Примеры.

2

Решение

К сожалению, нет примера использования Bag-Of-Words с двоичными дескрипторами (BRIEF, ORB, БРИСК, ФРИК). В любом случае, бумага, которую вы показали, объясняет, как вы можете это сделать. Для традиционных дескрипторов (SIFT, SURF) используется метод кластеризации k-средних, потому что словарь генерируется из набора реально значимых дескрипторов. Однако, чтобы получить бинарный словарь, метод k-средних не идеален, поскольку среднее значение не определено в двоичном пространстве, тогда вы можете использовать метод k-большинства.

5

Другие решения

Самый простой способ кластеризации бинарных функций в 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);
1

По вопросам рекламы [email protected]