https://blog.csdn.net/u010821666/article/details/52883580
Opencv中KeyPoint类中的默认构造函数如下:
CV_WRAP KeyPoint() : pt(0,0), size(0), angle(-1), response(0), octave(0), class_id(-1) {}
现分析各项属性
pt(x,y):关键点的点坐标;
size():该关键点邻域直径大小;
angle:角度,表示关键点的方向,值为[零,三百六十),负值表示不使用。
response:响应强度,网络上有如下解释:
1)”The response, by which the strongest keypoints have been selected.”
2)”Responseis indeed an indicator of “how good” (roughly speaking, in terms of corner-ness) a point is. The higher, the better. The strongest keypoints means the ones that are the best.“
octacv:从哪一层金字塔得到的此关键点。
class_id:当要对图片进行分类时,用class_id对每个关键点进行区分,默认为-1。
https://blog.csdn.net/linsk/article/details/76838878
你可以看到,每个关键点都有一个cv :: Point2f成员,这只是告诉我们它位于哪里。size告诉我们关于关键点周围的区域,无论是在某种程度上都包含关键点存在的确定,或者在这个关键点的描述符中扮演一个角色。Angle仅对某些关键点有意义,许多关键点实现旋转对称,而不是在最严格的意义上实际上是不变的,而是通过在比较两个描述符时可以考虑某种自然方向(这不是一个复杂的想法,如果你正在看铅笔的两个图像,旋转显然很重要,但是如果你想比较它们,你可以在进行比较之前以相同的方向轻松地将它们形象化)。
response可以用于更强烈地响应一个关键点的探测器。在某些情况下,这可以被解释为该特征实际存在的概率。Octave被用来当在图像金字塔中找到关键点时,在这些情况下,重要的是知道哪个标尺是关键点,因为在大多数情况下,我们希望在新图像中以相同或相似的比例找到匹配。最后,关于类ID,在构造关键点数据库时,使用class_id来区分与一个对象相关联的关键点和与另一个对象相关联的关键点(当我们在“摘要”关键点匹配类别中讨论关键点匹配接口时,我们将返回到这一点: cv :: DescriptorMatcher)。
cv :: KeyPoint对象有两个构造函数,它们基本相同;其唯一的区别是您可以设置关键点的位置与两个浮点数或单个cv :: Point2f对象。 其实呢,除非你正在编写自己的关键点查找器,你不会倾向于使用这些功能。如果您正在使用库中可用的检测,描述符构造和比较功能,通常您甚至不会看到关键点对象。