я ищу k
ближайшие соседи n
SURF дескрипторы. Я вычисляю ближайших соседей, создавая cv::flann::index
объект на матрице дескриптора.
cv::flann::Index index(desc,cv::flann::KDTreeIndexParams(4));//cv::Mat desc: holds all the descriptors
index.knnSearch(centralDescriptor,indicesNN,distsNN,10);
После этого я должен сравнить возвращенное расстояние каждого ближайшего соседа с размером центральной характерной точки. Теперь проблема в том, что размер центральной характерной точки сохраняется в соответствующем cv::KeyPoint
и единица cv::KeyPoint::size
это пиксели, где в качестве расстояний все плавающие точки и меньше нуля.
Вопрос: Как мне преобразовать расстояние, возвращаемое cv::flann::knnSearch
в пиксели или преобразовать cv::KeyPoint::size
в единицу расстояния?
Прошу прощения за плохую формулировку вопроса, мой английский не очень хорош.
Ты не можешь.
cv :: flann :: knnSearch возвращает расстояние в пространстве SURF, другими словами, это сходство между патчами изображений (то есть этот угол больше похож на этот, чем на этот объект). А расстояние между точками просто пиксельное расстояние (например, используйте линейку на мониторе — для расстояния в дюймах).