赞
踩
作者:K.Fire | 来源:计算机视觉工坊
角点时图像中存在物体边缘角落位置的点或者一些特殊位置的点,角点检测(Corner Detection)是计算机视觉系统中获取图像特征的一种方法,是运动检测、图像匹配、视频跟踪、三维重建和目标识别的基础。
本篇文章将介绍opencv中常用的几种角点检测方法的原理和基于C++的实现。
Harris角点原理:设置一个矩形框,将这个矩形框放置在图像中,将矩形框内像素进行求和,然后移动矩形框,当相邻两次求和得到的值差别较大时,判定矩形框内存在Harris角点。
通常出现的位置:直线的端点处、直线的交点处、直线的拐点处。
但是如果按照上述检测原理检测,会很麻烦,很难确定矩形框移动的方向和当框内出现角点时,角点的具体位置。
因此,在程序中一般是用以下方式进行检测:1.定义Harris角点检测函数为:
其中I(x,y)为(x,y)位置的像素值,w(x,y)为矩形框的权重矩阵,定义这个矩阵的原因是:当矩形框内检测到可能存在角点时,权重矩阵中权重更大的位置更有可能是角点。2.将上述公式表示为矩阵形式:
其中M为梯度协方差矩阵,表示为以下公式:
3.然后使用Harris角点评价函数判断矩形框内是否存在角点:
其中det是矩阵的行列式,k是一个自定义的常数,tr是矩阵的迹。使用上述方式计算起来计算消耗比较大,因此换用以下方式进行评价:
其中λ是梯度协方差矩阵M的特
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。