Shi-Tomasi角点检测
一、算法基本原理和步骤
(1)原理
shi-Tomasi 算法是Harris 算法的改进。Harris 算法最原始的定义是将矩阵 M 的行列式值与 M 的迹相减,再将差值同预先给定的阈值进行比较。后来Shi 和Tomasi 提出改进的方法,若两个特征值中较小的一个大于最小阈值,则会得到强角点。
(2)算法步骤
二、代码实现
(1)goodFeatureTrack()函数原型:
void goodFeaturesToTrack( InputArray image, OutputArray corners,int maxCorners, double qualityLevel, double minDistance,InputArray mask=noArray(), int blockSize=3,
bool useHarrisDetector=false, double k=0.04 );
(2)参数说明:
image:输入图像,8-位或浮点32-比特,单通道
corners:输出参数,检测到的角点
corner_count:输出参数,检测到的角点数目
quality_level:最大最小特征值的乘法因子。定义可接受图像角点的最小质量因子
min_distance:限制因子。得到的角点的最小距离;使用 Euclidian 距离
mask
ROI:感兴趣区域。函数在ROI中计算角点,如果 mask 为 NULL,则选择整个图像
block_size: 是计算导数的自相关矩阵时指定点的领域,采用小窗口计算的结果比单点(也就是block_size为1)计算的结果要好
useHarrisDetector:当use_harris的值为非0,则函数使用Harris的角点定义;若为0,则使用Shi-Tomasi的定义
K:用于设置Hessian自相关矩阵即对Hessian行列式的相对权重的权重系数
(3)代码实现:
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
#include<iostream>
using namespace cv;
using namespace std;int max_cornerNum;
void on_change(int,void*){Mat image=imread("12.jpg");Mat imageGray;cvtColor(image,imageGray,CV_BGR2GRAY );Mat copyImage;copyImage=image.clone();//goodFeaturesToTrack函数参数设置vector<Point2f> corner;double qualityLevel = 0.01;double minDistance = 10;int blockSize = 3;bool useHarrisDetector = false;double k = 0.04;//调用函数goodFeaturesToTrackgoodFeaturesToTrack(imageGray,corner,max_cornerNum,qualityLevel,minDistance,Mat(),blockSize,useHarrisDetector,k);//画图cout<<"** Number of corners detected: "<<corner.size()<<endl;int r = 4;for( int i = 0; i < corner.size(); i++ ){ circle( copyImage, corner[i], r, Scalar(0,0,255));}//显示图像imshow( "Detector image", copyImage );}int main(){max_cornerNum=23;namedWindow("Detector image",0);createTrackbar("cornerNum","Detector image",&max_cornerNum,120,on_change);waitKey(0);return 0;
}
结果:
Shi-Tomasi角点检测相关推荐
- OpenCV——Harris、Shi Tomas、自定义、亚像素角点检测
在图像处理和与计算机视觉领域,兴趣点(interest points),或称作关键点(keypoints).特征点(feature points) 被大量用于解决物体识别,图像识别.图像匹配.视觉跟踪 ...
- OpenCV Shi-Tomasi角点检测
Shi-Tomasi算法是对Harris角点检测算法的改进,一般会比Harris算法得到更好的角点.Harris 算法的角点响应函数是将矩阵 M 的行列式值与 M 的迹相减,利用差值判断是否为角点.后 ...
- opencv角点检测学习总结
学习opencv 角点检测 如果一个点在两个正交方向上都有明显的导数,则我们认为此点更倾向于是独一无二的,所以许多可跟踪的特征点都是角点. 一下为角点检测中用到的一些函数 cvGoodFeatures ...
- OpenCV之feature2d 模块. 2D特征框架(1)Harris 角点检测子 Shi-Tomasi角点检测子 定制化创建角点检测子 亚像素级的角点检测 特征点检测
Harris 角点检测子 目标 本教程中我们将涉及: 有哪些特征?它们有什么用? 使用函数 cornerHarris 通过 Harris-Stephens方法检测角点. 理论 有哪些特征? 在计算机视 ...
- 角点检测:Harris角点及Shi-Tomasi角点检测
角点 特征检测与匹配是Computer Vision 应用总重要的一部分,这需要寻找图像之间的特征建立对应关系.点,也就是图像中的特殊位置,是很常用的一类特征,点的局部特征也可以叫做"关键特 ...
- 【OpenCV3】角点检测——cv::goodFeaturesToTrack()与cv::cornerSubPix()详解
一提到角点检测,最常用的方法莫过于Harris角点检测,opencv中也提供了Harris角点检测的接口,即cv::cornerHarris(),但是Harris角点检测存在很多缺陷(如角点是像素级别 ...
- 角点检测--基于梯度的方法(Moravec角点检测、Harris角点检测、Shi-Tomasi角点检测)
Moravec Detector Moravec角点检测是第一个提出兴趣点(interest points)的Paper.它的主要思想是:以每个像素为中心,有一个固定的滑动窗口.该方法计算并在八个方向 ...
- 特征提取与检测(一)---Harris与Shi-Tomasi角点检测原理
一.Harris角点检测原理 1. 何为角点? 下面有两幅不同视角的图像,通过找出对应的角点进行匹配. 我们可以直观的概括下角点所具有的特征: >轮廓之间的交点: >对于同一场景,即使视角 ...
- 图像局部特征(二)--Harris角点检测子
一.角点定义 有定义角点的几段话: 1.角点检测(Corner Detection)是计算机视觉系统中用来获得图像特征的一种方法,广泛应用于运动检测.图像匹配.视频跟踪.三维建模和目标识别等领域 ...
- OpenCV角点检测: Harris算子, ShiTomasi算子
角点检测 角点的特征检测与匹配是Computer Vision 应用总重要的一部分,这需要寻找图像之间的特征建立对应关系.点,也就是图像中的特殊位置,是很常用的一类特征,点的局部特征也可以叫做&quo ...
最新文章
- 【Android RTMP】x264 编码器初始化及设置 ( 获取 x264 编码参数 | 编码规格 | 码率 | 帧率 | B帧个数 | 关键帧间隔 | 关键帧解码数据 SPS PPS )
- 开源库的使用方法以及libjpeg的移植详解
- python数据分析工资_python3对拉勾数据进行可视化分析的方法详解
- SpringBoot v2.2.6版本遇到的坑------Thymeleaf的sec:authorize标签无效
- Vs code自动生成Doxygen格式注释
- 混合编程黑科技:跨语言编程问题迎刃而解的3个要点
- 数据分析——朴素贝叶斯原理示意图
- 103. 二叉树的锯齿形层次遍历
- YAML 学习笔记 .yml
- 西安建筑科技大学安德学院计算机专业,【图片】【安德学院】身在建大,志在四方【西安建筑科技大学吧】_百度贴吧...
- canvas需要gpu_【前端冷知识】你了解Canvas的渲染上下文吗?
- 对生信与计算生物的一点认识[转载]
- Cookie、Session、Token、RefreshToken
- 第四篇:在MVPArms中报错error: cannot find symbol class DaggerXXXComponent的问题
- windows服务启动tomcat内存溢出问题解决方案
- SQL获取两个日期之间的天数
- 软件项目工作量估算方法解析
- CloudSim4.0 Learning(1)
- Web前端知识CSS(清浮动的方法、CSS精灵图、滑动门)
- 【资源共享】好用的视觉软件Adaptive Vision Studio