如何在OpenCV中使用FERN描述符匹配器?它是将某个算法(筛选/浏览)提取的关键点作为输入,还是自己计算所有内容?

编辑:
我正在尝试将其应用于图像数据库

fernmatcher->add(all_images, all_keypoints);
fernmatcher->train();

我使用SURF提取了20个图像,总共不到8MB。内存使用量跃升至2.6GB,培训需要花费时间才能知道需要多长时间。

最佳答案

FERN与其他比赛者没有什么不同。这是使用FERN作为关键点描述符匹配器的示例代码。

int octaves= 3;
int octaveLayers=2;
bool upright=false;
double hessianThreshold=0;
std::vector<KeyPoint> keypoints_1,keypoints_2;
SurfFeatureDetector detector1( hessianThreshold, octaves, octaveLayers, upright );
detector1.detect( image1, keypoints_1 );
detector1.detect( image2, keypoints_2 );
std::vector< DMatch > matches;
FernDescriptorMatcher matcher;
matcher.match(image1,keypoints_1,image2,keypoints_2,matches);
Mat img_matches;
drawMatches( templat_img, keypoints_1,tempimg, keypoints_2,matches,  img_matches,Scalar::all(-1), Scalar::all(-1),vector<char>(), DrawMatchesFlags::NOT_DRAW_SINGLE_POINTS);
imshow( "Fern Matches", img_matches);
waitKey(0);

*但是,我的建议是使用FAST,它比FERN更快,而且FERN可以用于训练具有关键点的图像集,而经过训练的FERN可以像其他所有一样用作分类器。

关于image-processing - FernDescriptorMatch-如何使用?这个怎么运作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10893797/

10-11 12:09