当前位置:   article > 正文

一文搞定opencv中常见的关键点检测算法(附代码)_opencv 寻找特征点算法

opencv 寻找特征点算法

作者:K.Fire | 来源:计算机视觉工坊

前言

角点时图像中存在物体边缘角落位置的点或者一些特殊位置的点,角点检测(Corner Detection)是计算机视觉系统中获取图像特征的一种方法,是运动检测、图像匹配、视频跟踪、三维重建和目标识别的基础。

本篇文章将介绍opencv中常用的几种角点检测方法的原理和基于C++的实现。


一、Harris角点检测

Harris角点原理:设置一个矩形框,将这个矩形框放置在图像中,将矩形框内像素进行求和,然后移动矩形框,当相邻两次求和得到的值差别较大时,判定矩形框内存在Harris角点。

通常出现的位置:直线的端点处、直线的交点处、直线的拐点处

但是如果按照上述检测原理检测,会很麻烦,很难确定矩形框移动的方向和当框内出现角点时,角点的具体位置。

因此,在程序中一般是用以下方式进行检测:1.定义Harris角点检测函数为:

其中I(x,y)为(x,y)位置的像素值,w(x,y)为矩形框的权重矩阵,定义这个矩阵的原因是:当矩形框内检测到可能存在角点时,权重矩阵中权重更大的位置更有可能是角点。2.将上述公式表示为矩阵形式:

其中M为梯度协方差矩阵,表示为以下公式:

3.然后使用Harris角点评价函数判断矩形框内是否存在角点:

其中det是矩阵的行列式,k是一个自定义的常数,tr是矩阵的迹。使用上述方式计算起来计算消耗比较大,因此换用以下方式进行评价:

其中λ是梯度协方差矩阵M的特

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/560507
推荐阅读
相关标签
  

闽ICP备14008679号