4

在 OpenCV 2.4.3 的参考手册中KeyPoint::class_id被描述为“对象 ID,可用于通过它们所属的对象来聚集关键点”。

由于我对“关键点”缺乏足够的了解,我无法理解class_id.

我的另一个问题是,通过使用特征检测器、描述符和匹配器,我们可以检测训练图像中查询对象的匹配关键点。但是如何在训练图像中分割出查询对象。我们可以使用grabcut或分水岭算法吗?如果是,如何?

任何一个问题的答案都会有所帮助。

提前致谢...

4

2 回答 2

5

class_id实践中,成员字段可用于存储您认为对每个关键点有用的任何信息。正如文档所说,您可以存储例如检测到的对象的 id。

例如,您有一张图像,从中提取关键点(例如,使用 SURF),使用这些特征运行一些对象检测器,结果是每个输入特征现在都包含在class_id相应对象的 id 中,或者如果它们是 -1不依附于任何物体。我实际上不知道该字段是否由某些 OpenCV 函数填充,还是仅供您使用。

关于您的第二个问题,匹配特征可能不足以分割您的对象,因为特征可以位于对象内部,因此您无法获得有关轮廓的任何信息。不过,如果您有关于该对象的更多信息,这是一个很好的起点。例如,如果您知道您的对象是平面的(墙上的海报),您可以使用特征匹配来计算输入图像和训练图像之间的单应性。这会给你一个大纲。或者,例如,大量紧密匹配的特征可能是对象存在的指示。从那,你可以尝试一些其他的颜色分割,边缘匹配等。

于 2013-07-31T23:55:43.470 回答
0

我找到了一些关于class_id关键点的简短描述。

OpenCV 说:

class_id是对象 ID,可用于通过它们所属的对象对关键点进行聚类。

这是链接。

希望这会有所帮助。

于 2015-11-30T21:16:31.533 回答