一、Hariss 角点检测算法
1.Hariss 角点检测算法基础知识
特征点检测广泛应用到目标匹配、目标跟踪、三维重建等应用中,在进行目标建模时会对图像进行目标特征的提取,常用的有颜色、角点、特征点、轮廓、纹理等特征。现在开始讲解常用的特征点检测,其中Harris角点检测是特征点检测的基础,提出了应用邻近像素点灰度差值概念,从而进行判断是否为角点、边缘、平滑区域。Harris角点检测原理是利用移动的窗口在图像中计算灰度变化值,其中关键流程包括转化为灰度图像、计算差分图像、高斯平滑、计算局部极值、确认角点。
2.Hariss 角点检测算法原理
角点原理来源于人对角点的感性判断,即图像在各个方向灰度有明显变化。算法的核心是利用局部窗口在图像上进行移动判断灰度发生较大的变化。如果窗口内图像的灰度没有发生变化,那么窗口内就不存在角点;如果窗口在某一个方向移动时,窗口内图像的灰度发生了较大的变化,而在另一些方向上没有发生变化,那么,窗口内的图像可能就是一条直线的线段。
3.Hariss 角点检测算法数学表达
对于角点的检测,harris依据一下直观判断:角点应该在窗口的各个方向都有变化,而边界会在某个方向基本不变,而平坦区域在各个方向变化都小。因此我们要衡量在某个方向上的变化大小,定义
其中,w(x,y)是窗口函数;向量[u, v]表示某个方向,以及在该方向上的位移。由以上公式可知,E(u,v)表示在某个方向上图像灰度的变化。我们首先要研究在那个方向上,灰度变化最大(即令E(u,v)最大)。求解这个问题,我们通过泰勒展开公式二元公式为:
记上式最后的结果为▲,则我们可以得到:
这时我们知道找两个特征值中较大的对应的特征方向就是变化较大的方向。
直观上考虑:
, 都小:区域平坦
边界
且都大:角点
基于以上原理,我们定义:
R小,说明两个特征值都小,对应区域平坦;
R<0,说明,对应边界;
R大,说明且都大,对应角点。
所以可以用R>阈值作为条件判断是否是角点。
4.Hariss 角点检测算法相关opencv函数解释
关键命令是:cv2.cornerHarris(src, blocksize, ksize, k [, dst [, borderType ]]) -> dst
参数如下:
ksize:Sobel的孔径参数(aperture parameter),也就是Sobel核的半径,如1、3、5、7
k:R公式中的k,默认取0.04
blocksize:窗口大小,以下实验中取2
二、实验部分
1)对纹理平坦的图像做角点检测