Я работаю с изображениями с низким разрешением (VGA) и jpg-сжатыми изображениями для визуальной навигации на мобильном роботе. В настоящий момент я использую SURF для обнаружения ключевых точек и извлечения дескрипторов из изображений, а FLANN - для их отслеживания. Я получаю 4000-5000 функций на изображение, и обычно 350-450 совпадений производятся на пару последовательных изображений, прежде чем применять RANSAC (что обычно уменьшает 20% количество совпадений)Функциональный детектор и дескриптор изображений с низким разрешением
Я пытаюсь увеличить число (и качество) матчей. Я пробовал два других детектора: SIFT и ORB. SIFT заметно увеличивает количество функций (на 35% больше отслеживаемых функций, в целом), но он намного медленнее. ORB извлекает примерно столько же функций, сколько SURF, но сопоставительная производительность намного беднее (~ 100 совпадений, в лучшем случае). Моя реализация в OpenCV ОРБ является:
cv::ORB orb = cv::ORB(10000, 1.2f, 8, 31);
orb(frame->img, cv::Mat(), im_keypoints, frame->descriptors);
frame->descriptors.convertTo(frame->descriptors, CV_32F); //so that is the same type as m_dists
И тогда, когда соответствующие:
cv::Mat m_indices(descriptors1.rows, 2, CV_32S);
cv::Mat m_dists(descriptors1.rows, 2, CV_32F);
cv::flann::Index flann_index(descriptors2, cv::flann::KDTreeIndexParams(6));
flann_index.knnSearch(descriptors1, m_indices, m_dists, 2, cv::flann::SearchParams(64));
Что такое лучший детектор особенность и экстрактор при работе с низким разрешением и зашумленных изображений? Должен ли я изменять какой-либо параметр в FLANN в зависимости от используемого детектора функции?
EDIT:
я выкладываю несколько фотографий довольно легко последовательности для отслеживания. Изображения - это то, что я даю им методам детектирования признаков. Они были предварительно обработаны, чтобы устранить шум (посредством cv::bilateralFilter()
)
Image 2 http://oi61.tinypic.com/vertrk.jpg
Можете ли вы загрузить несколько примеров изображений? Кроме того, есть много поворота от кадра к кадру? – GilLevi
Я разместил две ссылки на мои изображения. Когда я их загрузил, я понял, что я работаю с изображениями с серой шкалой, поэтому я исправил его в своем коде и соответствующим образом отредактировал свой вопрос. В этой последовательности нет вращения вообще, хотя я могу получить до 20 градусов вращения вокруг вертикальной оси. – capstain
OK, BRIEF более точен, чем другие двоичные дескрипторы в ситуациях без вращения. Я бы попробовал его вместо орба. – GilLevi