亚像素级角点检测的位置在摄像机标定、跟踪并重建摄像机的轨迹,或者重建被跟踪目标的三维结构时,是一个基本的测测量值。
将所求得的角点位置精确到亚像素级精度 。一个向量和与其正交的向量的点积为0,角点则满足一下情况:

其中,(a)点p附近的图像是均匀的,其梯度为0;(b)边缘的梯度与沿边缘方向的q-p向量正交。在图中的两种情况下,p点梯度与q-p向量的点积均为0。
      假设起始角点q在实际亚像素级角点的附近。检测所有的q-p向量。若点p位于一个均匀的区域,则点p处的梯度为0。若q-p向量的方向与边缘的方向一致,则此边缘上p点处的梯度与q-p向量正交,在这两种情况下,p点处的梯度与q-p向量的点积为0。我们可以在p点周围找到很多组梯度以及相关的向量q-p,令其点集为0,然后可以通过求解方程组,方程组的解即为角点q的亚像素级精度的位置,也就是精确的角点位置。

cornerSubPix()函数:寻找亚像素角点 (不是整数类型的位置,而是更精确的点类型位置)

void cornerSubPix(InputArray image, InputoutputArray corners,Size winSize, Size zeroZone, TermCriteria criteria)

参数1,InputArray类型的image,输入图像。

参数2,InputOutputArray类型的corners,提供输入角点的初始坐标和精确的输出坐标。

vector<Point2f> 类型

参数3,Size类型的winSize,搜索窗口的一半尺寸。若winSize = Size(5, 5),

表示使用(5 * 2 + 1) × (5 * 2 + 1) = 11 × 11大小的搜索窗口。

参数4,Size类型的zeroZone,表示死区的一半尺寸。而死区为不对搜索区的中央位置做

求和运算的区域,用来避免自相关矩阵出现的某些可能的奇异性。

值为(-1, -1)表示没有死区

参数5,TermCriteria类型的criteria,求角点的迭代过程的终止条件。即角点位置的确定,

要么迭代数大于某个设定值,或者是精确度达到某个设定值。criteria可以是最大迭代

数目,或者是设定的精确度,也可以是它们的组合。

TermCriteri迭代标注类的构造函数

TermCriteria(int type, int maxCount, double epsilon);

参数1,int类型的type,枚举为TermCriteria::Type类型,终止标准的类型

枚举 描述
COUNT 1 要计算的最大迭代次数或则元素数
MAX_ITER 1 要计算的最大迭代次数或则元素数
EPS 2 迭代算法停止时所需的精度或者参数变化

参数2,int类型的maxCount,最大迭代次数/元素数;

参数3double类型的epsilon,所需的精度。

TermCriteria criteria = TermCriteria(TermCriteria::EPS + TermCriteria::MAX_ITER, 40, 0.001);

可以自己制作角点检测的函数,需要用到cornerMinEigenVal函数和 minMaxLoc函数。最后的特征点选取,判断条件要根据自己的情况编辑。如果对特征点,角点的精度要求更高,可以用cornerSubPix函数将角点定位到子像素。

《opencv学习笔记》-- 亚像素角点检测相关推荐

  1. OpenCV——Harris、Shi Tomas、自定义、亚像素角点检测

    在图像处理和与计算机视觉领域,兴趣点(interest points),或称作关键点(keypoints).特征点(feature points) 被大量用于解决物体识别,图像识别.图像匹配.视觉跟踪 ...

  2. OpenCV亚像素角点检测

    前言 我在做围棋盘的的四个角点检测时,试了几种角点检测,用来得到棋盘四个角的初始点,试了几种角点检测的方法,但在我所使用的环境下,亚像素的角点检测得到的结果比较理想. 代码 //亚像素角点检测 voi ...

  3. cv::cornerSubPix()亚像素角点检测

    转自https://blog.csdn.net/guduruyu/article/details/69537083 cv::goodFeaturesToTrack()提取到的角点只能达到像素级别,在很 ...

  4. OpenCV 学习笔记-day13 像素值统计 统计计算最大最小值,平均值和标准差 (minMaxLoc()和meanStdDev()函数的使用)

    OpenCV 学习笔记 day13 像素值统计 函数 minMaxLoc(); 最大值最小值统计 meanStdDev();平均值和标准方差统计 代码 day13 像素值统计 函数 minMaxLoc ...

  5. opencv学习笔记之像素处理

    文章目录 前言 一.多通道的分离合并 多通道分离函数split() 多通道合并函数merge() 二.图像像素统计 计算图像的平均值和标准差 前言 记录opencv有关像素操作的一些函数和功能 一.多 ...

  6. OpenCV入门学习笔记之Harris角点检测与SIFT特征匹配算法

    1. 写在前面 这篇文章整理两个图像处理中非常重要的算法,一个是Harris角点检测算法,另一个是SIFT特征匹配算法,这两个算法本质上还是去找图像里面的关键特征点,帮助我们后续更好的理解图像以及做各 ...

  7. 【机器视觉学习笔记】Harris 角点检测算法(C++)

    目录 原理 算法步骤 优缺点 源码 效果 原图 输出 平台:Windows 10 20H2 Visual Studio 2015 OpenCV 4.5.3 本文摘自2.Harris角点检测算法 -- ...

  8. 【opencv学习】【Harris角点检测】

    下面看代码: import cv2 import numpy as np# 1.cv2.cornerHarris(img, blocksize, kszie, k) # 找出图像中的角点 # 参数说明 ...

  9. OpenCV开发笔记(六十二):红胖子8分钟带你深入了解亚像素角点检测(图文并茂+浅显易懂+程序源码)

    若该文为原创文章,未经允许不得转载 原博主博客地址:https://blog.csdn.net/qq21497936 原博主博客导航:https://blog.csdn.net/qq21497936/ ...

最新文章

  1. Linux的su命令,sudo命令和限制root远程登录
  2. 百度搜索,你画了好大一张饼,你还打算欺骗多少人呢?有图为证
  3. 机器学习——深度学习之卷积神经网络(CNN)——LeNet卷积神经网络结构
  4. 基于Tablestore Tunnel的数据复制实战
  5. iOS11最新隐私信息访问列表
  6. 信息学奥赛一本通(2056:【例3.7】最大的数)
  7. (工具)政企版WPS-没广告弹窗超简洁
  8. Java编程练习题2
  9. vivo Y51的USB调试模式在哪里,开启vivo Y51USB调试模式的教程
  10. 《英雄无敌3》的一个独立的扩展版-英雄无敌3死亡阴影下载
  11. 100多个常用 API 接口整理大全
  12. Android轻松实现日期选择器、生日选择器、自定义起始时间
  13. 如何确定一个期刊是不是EI?
  14. C++的字符串输入方式
  15. vue组件加载完成之后执行方法_vuejs页面加载完成后执行函数
  16. 在自动UNDO管理情况下,如何手工增加undo段
  17. violinplot如何看懂_如何看懂电工图纸
  18. 广播、组播 socket编程
  19. 焊接件技术要求怎么写_不锈钢焊接技术要求怎么写哇?
  20. android安卓音乐播放器课程代码9.5.2

热门文章

  1. 不要再让我们听到抽胆黑熊的哭泣
  2. 黑马就业班(02.JavaWeb+项目实战\04.XML)——XML
  3. Python:实现gamma recursive伽玛递归算法(附完整源码)
  4. nagios 服务端与客户端监控安装与详细配置,各配置文件详解
  5. [生而为人] 《送别》李叔同
  6. mysql 给表添加唯一约束、联合唯一约束,指定唯一约束的名字
  7. 无锡有哪些高中有计算机专业,无锡19所重点高中大盘点!
  8. Nacos服务注册与配置中心
  9. http://www.dewen.net.cn/q/17095/SQL:用一条SQL语句统计出符合条件的内容
  10. 移动安全--17--Android系统安全(上)