我正在尝试使用OpenCV和C ++实现功能/对象跟踪应用程序。目前我正在使用goodFeaturesToTrack
函数从我的第一帧创建我的特征向量。从那里,我将它传递给calcOpticalFlowPyrLk
方法,以通过后续帧跟踪点。
这种方法非常快,但不稳定,不能缩放或旋转不变。特征倾向于一起漂移以及迷失并锁定在场景中的另一个角落。我一直在阅读很多关于FREAK的内容,它似乎是一个很有吸引力的选择。希望它能解决我的稳定性问题以及规模和旋转不变性。
在尝试寻找有关实现FREAK功能提取器的一些帮助时,我遇到了this这让我抱有希望,但正如您可能已经注意到的那样,该文件处于脱机状态!我很好奇是否有人可能保存了这个例子,或者对于我可以在哪里寻找可以学习和学习的替代源代码有任何建议?
答案 0 :(得分:2)
OpenCV在this link有一个展示FREAK的示例。 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.