gpt4 book ai didi

opencv - OpenCV中的描述符匹配器训练器中使用的算法

转载 作者:行者123 更新时间:2023-12-02 16:41:12 25 4
gpt4 key购买 nike

下面的代码段显示了训练对象识别中使用的描述符匹配器的基础。

detector = cv.FeatureDetector('ORB');
extractor = cv.DescriptorExtractor('ORB');
matcher = cv.DescriptorMatcher('BruteForce-Hamming')

for(i=1 to N)
{
detector(i) = detector.detect(image(i));
descriptor(i) = extractor.compute(image(i),detector(i));
matcher.add(descriptor(i));

}
matcher.train();

该代码在语法上不正确,但是我想知道 train()matcher函数在这里如何工作。

最佳答案

matcher.train();因为Bruteforce匹配器的实现是无效的,没有索引或未构建KD树,所以匹配根据识别为描述符的两个关键点之间的汉明距离进行。如果您使用基于FLANN的匹配器,则方法matcher.train();构建索引,这些索引用于匹配关键点。如果要为应用程序使用基于FLANN的匹配器,则以下是将基于FLANN的匹配与二进制描述符(ORB,FREAK,BRISK)一起使用的语法。

  // paramerters for LSH index
//LshIndexParams(int table_number, int key_size, int multi_probe_level);
FlannBasedMatcher matcher(new flann::LshIndexParams(20,10,2));

如果您的训练集中的描述符数量少于(即小于100000),则建议使用bruteforce匹配器,因为如果您使用基于FLANN的匹配,则大多数时间将浪费在构建和检索索引上,因此应用程序性能将下降坠落

关于opencv - OpenCV中的描述符匹配器训练器中使用的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21371213/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com