低分辨率图像的特征检测器和描述符

我正在使用低分辨率(VGA)和jpg压缩的图像序列,以便在移动机器人上进行可视化导航.目前我正在使用SURF来检测关键点并从图像中提取描述符,并使用FLANN来跟踪它们.我在每张图像上获得4000-5000个特征,并且在应用RANSAC(通常减少20%的匹配数量)之前,每对连续图像通常会产生350-450个匹配

我正在努力增加比赛的数量(和质量).我尝试过另外两个探测器:SIFT和ORB. SIFT显着增加了功能的数量(总体上跟踪功能的35%),但速度要慢得多. ORB提取的功能大致与SURF一样多,但匹配性能更差(在最佳情况下约为100次匹配).我在ORB的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中的任何参数吗?

编辑:

我发布了一些相当简单的序列图片来跟踪.这些图片是我给他们的特征检测器方法.它们已被预处理以消除一些噪音(通过cv :: bilateralFilter())

Image 2 http://oi61.tinypic.com/vertrk.jpg

最佳答案 在许多情况下,基于
Pyramidal Lucas Kanade光流的方法是一个不错的选择.该方法有一些限制,例如照明的巨大变化.如果使用21×21或大于跟踪器的大窗口应该对噪声更加鲁棒.您可以从最喜欢的SIFT,SURF,FAST或GFT特征检测器获取要跟踪的功能,或者将它们初始化为常规采样网格.这为您提供了场景中常规样本运动信息的优势.

点赞