在 OpenCV4Android 中,我使用了 DENSE 特征检测器,它在图像上放置了一个点网格。接下来,我想计算这些关键点的描述符。为此,我尝试使用 ORB 描述符提取器。
mDetector = FeatureDetector.create(FeatureDetector.DENSE);
mExtractor = DescriptorExtractor.create(DescriptorExtractor.ORB);
MatOfKeyPoint pointsmat0 = new MatOfKeyPoint();
Mat descriptors0 = new Mat();
mDetector.detect(image0, pointsmat0);
mExtractor.compute(image0, pointsmat0, descriptors0);
现在,当输出时pointsmat0.total
,descriptors0.rows()
这些数量应该相等,因为描述符提取器应该删除无法计算描述符的关键点。然而,这种情况并非如此。
我得到:
pointsmat0.total() around 10000
descrpitors0.rows() around 8000
我试过使用简要描述符提取器,但这有同样的问题。所以,DENSE+ORB / DENSE+BRIEF 就有这个问题。
当我使用 ORB+ORB 运行此示例时,关键点的数量等于描述符的数量(两者均为 500)。所以,问题是:哪个描述符提取器可以与 DENSE 一起使用?