如何OpenCV的ORB特征检测器的工作?检测器、特征、工作、OpenCV

2023-09-11 07:32:40 作者:我爱你的不爱

我想用ORB特征检测,并提取实现基于特征的比对算法。 到目前为止,我使用ORB来自OpenCV的类 ORB的球体;  宝珠(gray_image,垫(​​),features.keypoints,features.descriptors); 并使用来自OpenCV中knnMatch功能 matcher.knnMatch缡(features1.descriptors,features2.descriptors,pair_matches,2); 从那以后,我想找到使用findHomography功能的单应,不过这个功能需要至少4图像特征之间的匹配,以及大多数的图像我测试我得到了不到4。

I want to implement a feature-based alignment algorithm using the ORB feature detector and extractor. So far, I extracted the features using ORB class from OpenCV ORB orb; orb(gray_image,Mat(),features.keypoints,features.descriptors); and matched them using the knnMatch function from openCV matcher.knnMatch(features1.descriptors, features2.descriptors, pair_matches,2); After that I am trying to find a homography using findHomography function, but this function needs at least 4 matches between the image features, and on most of the images i tested I got less than 4.

有没有人使用这个功能吗?有没有关于它的任何文件,或有关从OpenCV的(ORB的构造函数参数的意思)?在ORB类

Has anybody used this feature? Is there any documentation about it, or about the ORB class from OpenCV(the meaning of the ORB constructor parameters)?

P.S。这是我的第一个问题。我不能发布超过2链接。对于OpenCV的文件用这。

P.S. This is my first question. and I can't post more than 2 links. For opencv documentation use this.

推荐答案

更​​新:现在的是的OpenCV的文档,在这里:   http://opencv.itseez.com/modules/features2d/doc/feature_detection_and_description.html#orb

UPDATE: Now it is in the OpenCV documentation, here: http://opencv.itseez.com/modules/features2d/doc/feature_detection_and_description.html#orb

该算法的详细说明这里找到:http://www.willowgarage.com/sites/default/files/orb_final.pdf

A detailed description of the algorithm is found here: http://www.willowgarage.com/sites/default/files/orb_final.pdf

这不是在OpenCV的文件中提到,但实际上OpenCV的:

It is not mentioned in OpenCV documentation but actually OpenCV has:

两种类型的描述符:

浮动描述: SIFT SURF float descriptors: SIFT SURF ORB 简介

和相应的匹配:

浮法描述: FlannBased 暴力破解&LT; L2&LT;浮动&GT; &GT; 暴力破解&LT; SL2&LT;浮动&GT; &GT; //自2.3.1 暴力破解&LT; L1&LT;浮动&GT; &GT; for float descriptors: FlannBased BruteForce<L2<float> > BruteForce<SL2<float> > //since 2.3.1 BruteForce<L1<float> > 暴力破解&LT;海明&GT; 暴力破解&LT; HammingLUT&GT; FlannBased 与LSH索引//自2.4.0 BruteForce<Hamming> BruteForce<HammingLUT> FlannBased with LSH index //since 2.4.0

所以,你需要修改code使用例如暴力破解&LT;海明&GT; 匹配的ORB描述。它可以使用的L2或L1距离匹配UCHAR描述符,但结果将是不正确的,findHomography返回不能令人满意的结果。

So you need to modify your code to use for example BruteForce<Hamming> matcher for ORB descriptors. It is possible to use L2 or L1 distance for matching uchar descriptors but results will be incorrect and findHomography returns unsatisfactory results.