Bascially вы должны сначала сделать:Почему KeyPoint «детектор» и «экстрактор» различны?
SurfFeatureDetector surf(400);
surf.detect(image1, keypoints1);
, а затем:
surfDesc.compute(image1, keypoints1, descriptors1);
Почему обнаружить и вычи являются 2 разные операции?
Выполнение вычислений после обнаружения не создает петли избыточности?
Я обнаружил, что .compute
является самым дорогим в моем приложении.
.detect
делается в 0.2secs
.compute
принимает ~ 1сек. Есть ли способ ускорить .compute
?
HMM это интересно! знаете ли вы каким-либо способом вычислить его быстрее? Мой профиль показывает, что '.compute' - это часть, которая занимает больше времени, чем другая. – dynamic
Это зависит от потребностей вашего приложения, но вы должны попробовать BRIEF дескриптор. Они предназначены для более быстрого вычисления, чем SURF, и очень похожи. Если вы действительно хотите использовать SURF, вы можете выбрать меньшее количество точек в своем изображении или с помощью фильтрации с помощью пространственного ограничения? – Eric
Да, я думал, что (выберите менее ключевую точку). Вы бы отфильтровали вектор ключевой точки после ее вычисления (с помощью '.detect') или предварительно выбранного нескольких ключевых точек? (возможно, с hessian threshold?) – dynamic