2013-07-05 2 views
2

Я пытаюсь реализовать приложение отслеживания свойств/объектов с помощью OpenCV и C++. В настоящее время я использую функцию goodFeaturesToTrack для создания моего вектор-функции из моего первого кадра. Оттуда я передаю его методу calcOpticalFlowPyrLk для отслеживания точек через последующие кадры.Имея трудное время найти какие-либо учебники/примеры для экстрактора функции FREAK

Этот метод довольно быстрый, но неустойчивый, а не масштаб или инвариант вращения. Особенности имеют тенденцию дрейфовать вместе, а также заблудиться и закрепить на другом углу сцены. Я много читал о FREAK, и это кажется привлекательным вариантом. Надеюсь, он установит мою проблему стабильности, а также станет инвариантом масштаба и вращения.

При попытке найти какую-то помощь по внедрению экстрактора функции FREAK я столкнулся с this, который получил мои надежды, но, как вы, наверное, заметили, файл находится в автономном режиме! Мне было просто любопытно, может ли кто-нибудь сохранить этот пример или какие-либо предложения относительно того, где я могу найти альтернативный исходный код, с которым я могу учиться и учиться?

+0

По ссылке вы предоставили, ИГРА только дескриптор. Это означает, что вы можете использовать любой пример opencv для сопоставления изображений и заменить дескриптор FREAK. – William

ответ

2

В OpenCV есть образец, демонстрирующий FREAK по адресу this link. FREAK - это экстрактор функций, как и любой другой, и предоставляет один и тот же интерфейс. FREAK не обнаруживает функции, поэтому вы должны использовать другой метод (например, cv::goodFeaturesToTrack()) для обнаружения интересующих вас объектов.

Резюме этого образца заключается в следующем:

cv::Mat image; //This is the image 
std::vector<cv::KeyPoint> keypoints; // This comes from your feature detector of choice 

cv::Mat descriptors; 
cv::FREAK freak; 
freak.compute(image, keypoints, descriptors); 
// Now "descriptors" contains descriptor data for the input keypoints.