什么是 openCV features2D 中的“查询”和“训练”

What is `query` and `train` in openCV features2D

本文关键字:查询 训练 中的 openCV features2D 什么      更新时间:2023-10-16

features2D类的任何地方,我都能看到术语querytrain。例如,matchestrainIdxqueryIdxMatcherstrain()方法。

我知道英语中单词trainquery的定义,但我无法理解此属性或方法的含义。

附言我明白,这是一个非常愚蠢的问题,但也许是因为英语不是我的母语。

为了完成sansuiso的回答,我想选择这些名称的原因应该是在某些应用程序中,我们事先获得了一组图像(训练图像),例如在您的办公室内拍摄的10张图像。可以提取特征并计算这些图像的特征描述符。在运行时,系统会向系统提供图像以查询经过训练的数据库。因此,查询图像引用此图像。我真的不喜欢他们命名这些参数的方式。如果您有一对立体图像并且想要匹配特征,这些名称没有意义,但您必须选择一个约定,例如始终将左图像称为查询图像,将右图像称为训练图像。我获得了计算机视觉博士学位,OpenCV中的一些命名约定对我来说似乎真的很混乱/愚蠢。因此,如果您发现这些令人困惑或愚蠢,那么您并不孤单。

  • train:此函数构建分类器内部状态以使其可操作。例如,考虑训练 SVM,或从参考数据构建 kd 树。也许你很困惑,因为这一步在文献中通常被称为学习

  • query是找到一组点的最近邻的操作,并且通过扩展,它也指您想要最近邻的整组点。回想一下,您可以在同一个函数调用中请求 1 个点的邻居或整个点(通过在矩阵中堆叠特征点)。

  • trainIdxqueryIdx分别引用/查询集中品脱的索引,即您向匹配器询问最近的点(存储在trainIdx位置)到其他某个点(存储在queryIdx位置)。当然,trainIdx在函数调用之后是已知的。如果点存储在矩阵中,则索引将为所考虑要素的线。

我以一种非常幼稚但有用的方式理解"查询"和"训练":"train":对数据或图像进行预处理以获得数据库"query":将在我们之前训练的数据库中查询的输入数据或图像。希望它也对你有帮助。