1. Opencv中的KeyPoint类介绍

KeyPoint类的构造函数如下:

KeyPoint();

KeyPoint(Point2f   _pt, float _size, float _angle=-1, float _response=0, int _octave=0, int _class_id=-1);

KeyPoint(float x, float y, float _size, float _angle=-1, float _response=0, int _octave=0, int _class_id=-1);

主要用来存储找到的特征点, 其包含的信息为, 特征点的坐标(包括横坐标x, 纵坐标y), 特征点的尺寸,或者也叫尺度, 特征点的角度或者朝向, 特征点的响应, 以及对应的层级; 这里重点说一下尺度, 响应,和层级;

  • 特征点的尺度scale,或尺寸size

主要与特征点提取时算子的窗口大小有关; 比如SURF特征提取时 ,如果使用的是11*11的Hessian Operator, 那么这个特征点对应的size就是11/2, 也就是half the length of the approximated Hessian operator;

或者再以FAST特征为例, 在FAST特征的实际提取过程中,opencv的源码如下:

keypoints.push_back(KeyPoint((float)j, (float)(i-1), 7.f, -1, (float)score));

也就是最后返回的特征点们 对应的size都固定为7.f; 猜想这里的特征提取的patch默认为7;

但是在ORBSLAM中在提取特征完成之后,有下面的操作:

const int nkps = keypoints.size();
for (int i = 0; i < nkps; i++) {keypoints[i].pt.x += minBorderX;keypoints[i].pt.y += minBorderY;keypoints[i].octave = level;keypoints[i].size = scaledPatchSize;
}

每个特征点的size设置为'''PATCH_SIZE*mScaleFactor[level]''', 也就是如果该特征点在原图层,即金字塔的第0层被提取, 那么其size为PatchSize = 31, 但是如果在金字塔的第一层为PatchSIze*1.2 = 30*1.2 =36; 个人感觉, 每个特征的默认模式不同, 好在这个size在后续的代码中也没有进一步使用;

  • 特征点的层级octave

这个在特征中很好理解, 该数字代表了其所属的金字塔层级, 原图像中提取的特征点octave为0, 第一层octave为1; 以此类推. 这个值用于在面获取该点的置信度;

2. 特征点的响应 response

response具体指代什么, opencv的官网解释如下:

Response: keypoint detector response on the keypoint (that is, strength of the keypoint)

翻译来讲, 就是特征点检测器 在该特征点的 响应; 比较模糊, 这里想以moravec角点检测来说一说响应response, 有不对的地方还欢迎指正; 之所以以moravec为例是因为个人觉得这个特征提供了一个最基础的模板, 且很好理解; 关于moravec特征点的讲解可以参考 这里;

以下面的图像区域, 举例来说3x3窗口的角点检测步骤:

绿色的窗口为原窗口, 中心点即为(x,y) , 这里I(x,y) = 51; 角点检测的本质为检测像素的变化; 对于Harris角点, 最基本的计算点的兴趣值的公式为:

其中为窗口函数, 为坐标(x,y)处的像素值; 则表示了图像的变化程度;

Moravec角点在计算时, 需要计算四个方向, 也就是该点在0度方向, 45度方向, 90度方向,和135度方向, 这个四个方向的图像变化程度;

对应需要计算的值即为  ;

最终的响应函数为

个人理解对应到response的值,也就是该R函数计算出来的值, 如果这个值大于一个阈值, 那么这个点便可以称作为特征点, 表示四个方向变化都很剧烈, 称之为角点;

3. Harri角点简单介绍response;

Harri角点在Moravec角点的基础上, 修改了原本的窗口函数,  角点检测函数, 以及最后的响应函数;

想要进一步了解FAST角点的response的,可以参考 这里, 对opencv中FAST角点提取做了比较详细的解释, 关键步骤在CornerScore() 函数中, 当前点的得分, 最为特征点的响应值;

参考:

SO上的提问及回答

cv::KeyPoint中response的介绍相关推荐

  1. 【OpenCV3】cv::Mat中的数据按行列写入txt文件中

    在使用opencv进行图像处理的过程中,经常会涉及到将文件中的数据读入到cv::Mat中,或者将cv::Mat中的数据写入到txt文件中. 下面就介绍一种我常用的将cv::Mat中的数据写入到txt文 ...

  2. 【OpenCV3】cv::Mat中最值和均值的求解

    我们知道cv::Mat是OpenCV2和OpenCV3中最基本的数据结构,不仅可以作为图像数据的容器,也可以作为其他类型数据的容器.那么,我们在使用cv::Mat进行数据的处理时,会经常面临求解其最值 ...

  3. Opencv中的ROI介绍

    Opencv中的ROI介绍 (2013-03-27 13:36:26) 转载▼   分类: 模式识别         ROI(Region of Interest)是指图像中的一个矩形区域,可能你后续 ...

  4. java中Cookie详细介绍

    Cookie是由服务器端生成,发送给User-Agent(一般是浏览器),浏览器会将Cookie的key/value保存到某个目录下的文本文件内,下次请求同一网站时就发送该Cookie给服务器(前提是 ...

  5. Action 中 Response already committed 解决办法

    2019独角兽企业重金招聘Python工程师标准>>> 在一个roundtrip中response只能被发出一次,在一些验证码.文件下载中通过httpServletResponse. ...

  6. HTML中Css详细介绍

    HTML中Css详细介绍 一.样式表的作用 1.Css样式表,层叠样式表 2.类似于人类的衣服,网页的衣服 3.作用:美化网页 4.优势: 1.内容与表现分离,便于维护 2.样式丰富,页面布局灵活 3 ...

  7. Linux下使用ls查看文件颜色全部为白色的解决方法,以及Linux中文件颜色介绍

    1 解决ls查看文件爱呢颜色为白色 方法一: 1.修改~/.bashrc文件,添加如下内容 alias ls='ls --color=auto' 2.source一下,让修改配置生效 source ~ ...

  8. 【opencv】4.初始化Mat的方式、访问cv::Mat中的某个元素

    可以参考:https://www.cnblogs.com/guoben/p/12728390.html 方法1: cv::Mat img_1 = cv::Mat::zeros(cv::Size(col ...

  9. TF:tensorflow框架中常用函数介绍—tf.Variable()和tf.get_variable()用法及其区别

    TF:tensorflow框架中常用函数介绍-tf.Variable()和tf.get_variable()用法及其区别 目录 tensorflow框架 tensorflow.Variable()函数 ...

最新文章

  1. leetcode 136. Single Number
  2. Collection集合--ArrayList源码读后感总结
  3. distcc源码研究三
  4. python3.7.2安装与配置_python3.7.0 安装与配置
  5. vue在html中写style,vue开发之style(六)(CSS页面布局之样式、背景、文字)
  6. jquery ajax缓存问题解决方法小结
  7. Hibernate3动态条件查询
  8. 火星上网不是梦,国际空间站开测星际互联网DTN服务
  9. Helen人脸数据集生成人脸分割
  10. HTB_Dancing 靶机之 smb 协议简介
  11. C语言如何作用于unity,在Unity 3D中使用C进行车轮转向#
  12. linux中ctrl+c、ctrl+z、ctrl+d、ctrl+l快捷键的使用
  13. android emmc测试软件,鉴别EMMC/UFS如此简单!小工具一键识别闪存
  14. Android多语言切换(兼容安卓9、10)
  15. session过期时间设置
  16. js使用页面打印window.print() 记录,并进行缩放打印
  17. 用 NetworkX + Gephi + Nebula Graph 分析<权力的游戏>人物关系(上篇)
  18. 微信小程序电商项目源代码开放连载二三事
  19. 北京大学计算机系丁万东,第八届北京大学程序设计大赛圆满落幕 陈瑜希等同学获冠军...
  20. python VTK(二十二) ----图形基本操作 封闭性检测漏洞填充

热门文章

  1. bzoj 1007: [HNOI2008]水平可见直线
  2. matlab2c使用c++实现matlab函数系列教程-tanh函数
  3. MC-GAN:Multi-Content GAN for Few-Shot Font Style Transfer
  4. question1 赋值运算操作符
  5. getAttribute、setAttribute、removeAttribute
  6. httplib模块,测试cdn节点文件同步
  7. candence 知识积累3
  8. photoshop菜鸟实用入门(2)----常用的一些快捷操作
  9. [转载] pandas入门:Series、DataFrame、Index基本操作都有了!
  10. [转载] python将图片进行base64编码, 解码