什么是 openCV features2D 中的“查询”和“训练”
What is `query` and `train` in openCV features2D
features2D
类的任何地方,我都能看到术语query
和train
。例如,matches
有trainIdx
和queryIdx
,Matchers
有train()
方法。
我知道英语中单词train
和query
的定义,但我无法理解此属性或方法的含义。
附言我明白,这是一个非常愚蠢的问题,但也许是因为英语不是我的母语。
为了完成sansuiso的回答,我想选择这些名称的原因应该是在某些应用程序中,我们事先获得了一组图像(训练图像),例如在您的办公室内拍摄的10张图像。可以提取特征并计算这些图像的特征描述符。在运行时,系统会向系统提供图像以查询经过训练的数据库。因此,查询图像引用此图像。我真的不喜欢他们命名这些参数的方式。如果您有一对立体图像并且想要匹配特征,这些名称没有意义,但您必须选择一个约定,例如始终将左图像称为查询图像,将右图像称为训练图像。我获得了计算机视觉博士学位,OpenCV中的一些命名约定对我来说似乎真的很混乱/愚蠢。因此,如果您发现这些令人困惑或愚蠢,那么您并不孤单。
-
train
:此函数构建分类器内部状态以使其可操作。例如,考虑训练 SVM,或从参考数据构建 kd 树。也许你很困惑,因为这一步在文献中通常被称为学习。 -
query
是找到一组点的最近邻的操作,并且通过扩展,它也指您想要最近邻的整组点。回想一下,您可以在同一个函数调用中请求 1 个点的邻居或整个点(通过在矩阵中堆叠特征点)。 -
trainIdx
和queryIdx
分别引用/查询集中品脱的索引,即您向匹配器询问最近的点(存储在trainIdx
位置)到其他某个点(存储在queryIdx
位置)。当然,trainIdx
在函数调用之后是已知的。如果点存储在矩阵中,则索引将为所考虑要素的线。
我以一种非常幼稚但有用的方式理解"查询"和"训练":"train":对数据或图像进行预处理以获得数据库"query":将在我们之前训练的数据库中查询的输入数据或图像。希望它也对你有帮助。
- Mongodb c++驱动程序:如何查询元素的数组
- 查询SQLite数据库中的日期
- 如何在ArangoDb AQL查询中指定数据库
- Qt SQLite没有查询或参数计数不匹配
- 如何使用c++在VS 2019上运行SQL查询
- 从返回的顶点缓冲区查询顶点结构
- 以非特权用户身份查询 NTFS 特殊文件的元数据?
- C/C++ - 查询平台相关的换行符(用于内存映射文件)
- 如何将经过训练的机器学习模型保存在python中并将其加载到C++中进行预测?
- 查询 NFS 上的提升进程间::file_lock
- Qt JSON – 从子项查询
- 在 c++ 中解决段树以外的范围查询的有效方法是什么?
- 无法从 Win10 中的 IDirectDraw7 查询 IDirect3D7
- 如何查询以确定我的 MacOS/X 应用程序是否处于应用程序午睡模式?
- 在子数组中查找多个查询的不同(唯一)值的数量
- 训练 NN 以计算 atan2(y, x)
- DNS 查询格式标头结构中的小字节序问题
- QSql查询行受影响的结果
- C++库相关查询
- 什么是 openCV features2D 中的“查询”和“训练”