本文要点总结(俩算法的联系与区别)
Harris角点检测与Shi-Tomasi角点检测都是经典的角点特征提取算法,
但两者在API的使用上有出入(详见文中代码或GitHub项目);
Harris角点检测的API,
返回/输出
的是一个与输入图像大小一致的Mat对象
,
这个Mat对象
的每一个坐标(i,j)
都是对应输入图像对应坐标(i,j)
的像素
的响应值R
,
要先将这个Mat对象
归一化,
再循环每一个Mat数据元素
,一 一 跟自己设置的阈值
进行比较,
合格的再认为是角点
并提取
出来,
进行绘制和保存;与
Harris角点
输出不同,shi-tomasi
简单多了,
直接输出一个包含若干个(具体个数通过API形参设置)角点坐标的角点数组
,(其数据类型是MatOfPoint
)
省略了很多步骤;遍历
这个角点数组,
绘制出
每个角点
即可。
引子
前面两章笔记(
图像操作、基本特征检测
)
主要讲述了OpenCV中图像处理模块的主要知识与API使用;本章的笔记记录OpenCV中另外一个重要模块——
feature2d模块
,
该模块的主要功能是检测图像的特征
,
并根据特征进行对象匹配
;首先,关于
图像的特征
,
简单地说,特征就是边缘、角点、纹理
等。本章会笔记
特征提取、检测与匹配
相关的知识与API,
包括角点特征检测、特征点检测、特征描述子提取
,
以及根据特征描述子去匹配、寻找特征对象
。本章知识会涉及较多的数学知识与公式,
我们可以阅读一些与特征提取相关的数学知识
,
比如导数与微分、多项式与高斯公式曲线拟合,三角函数,矩阵的特征值与特征向量的简单计算
等基础数学知识,
以更好地掌握本章知识以及各个API参数意义与用法。
0 角点的定义与作用
基本特征检测
一章中,学习了关于边缘检测
的知识,
在图像边缘
中,有一些特殊的像素点值
得我们特别关注,
那就是图像边缘的角点
,
这些角点更能反映出图像中对象的整体特征
,基于角点周围的像素块生成特征描述子
可以更好地表述图像特征数据
。
本文首先笔记如何提取图像的角点特征。
1 Harris角点检测
关于角点特征提取最经典
的算法之一就是Harris角点检测
。
<