角点检测算子(Harris, KLT, SIFT,SUSAN)

来源:互联网 发布:idc虚拟主机源码 编辑:程序博客网 时间:2024/05/19 20:37

角点检测:

       角点:最直观的印象就是在水平、竖直两个方向上变化均较大的点,即Ix、Iy都较大 。
        边缘:仅在水平、或者仅在竖直方向有较大的变化量,即Ix和Iy只有其一较大。
        平坦地区:在水平、竖直方向的变化量均较小,即Ix、Iy都较小。

 

一:Harris角点检测

        用 Harris 算法进行检测,有三点不足:(1)不具有尺度不变性;(2)提取的角点是像素级的;(3)算法检测时间较长,实时应用效果较差。

        Harris 算子是一种有效的点特征提取算子,其优点总结起来有: ①计算简单:Harris 算子中只用到灰度的一阶差分以及滤波,操作简单。②提取的点特征均匀而且合理:Harris算子对图像中的每个点都计算其兴趣值,然后在邻域中选择最优点。实验表明,在纹理信息丰富的区域,Harris 算子可以提取出大量有用的特征点,而在纹理信息少的区域,提取的特征点则较少。③稳定:Harris算子的计算公式中只涉及到一阶导数,因此对图像旋转、灰度变化、噪声影响和视点变换不敏感,它也是比较稳定的一种点特征提取算子。

        Harris 算子的局限性有:①它对尺度很敏感,不具有尺度不变性。②提取的角点是像素级的。

  

二:KLT角点检测

        KLT角点检测方法最初是用于满足Lucas-Kanade光流法选择合适特征点的需求,Lucas-Kanade光流法是通过先在前后两帧图像里分别建立一个固定大小窗口,然后找到让两个窗口间像素强度差的平方和最小的位移。然后将窗口内像素的移动近似为这样的位移向量,然后实际上,一方面像素移动并不会那么简单,另一方面窗口内像素并不都是同样的移动方式,因为这样的近似必然会带来误差。而现在的问题就是如何去选择合适的窗口,或者特征点,从而获得最为精确的跟踪。KLT角点检测方法就是为了选择一个适合跟踪的特征点,它认为一个好的特征点的定义应当就是能被好的跟踪。

 


三:SIFT角点检测

        尺度不变特征变换(Scale-invariantfeature transform),主要特点在于其多尺度信息描述,能够有效描述缩放,并且对 图像旋转、亮度、仿射变换、视角变化具有很好的适应性。

SIFT算法还具有如下一些特点:

1. 信息量丰富,即使少数的几个物体也可以产生大量的SIFT特征向量;

2. 特征区分度大,适用于在海量特征数据库中进行快速、准确的匹配;

3. 速度快,加速的SIFT算法可以达到实时。

        算法首先要理解多尺度(多个分辨率)的概念,也就是我们常说的图像金字塔可以简单理解为图像的降采样,一般降采样过程分为两步:一是图像模糊,二是隔行采样。

        右侧是我们常说的高斯金字塔,所谓高斯金字塔在于上一级图像通过下一级图像进行高斯滤波得到,英文Octave是音乐上一个八度的意思,这里引申为一组分辨率相同的图像,一个Octave组采用了不同的高斯函数进行滤波,因此其模糊程度不一样,不同组的图像具有不同的分辨率(按照1/2降采样得到)。


        SIFT算法本质在于提取图像关键点,也就是在不同尺度空间下具有方向信息的局部极值点。(这些点不会因光照条件的改变而消失,比如角点、边缘点、暗区域的亮点以及亮区域的暗点)

        SIFT算法可以描述为以下步骤:

1.构建尺度空间

    根据高斯滤波处理输入图像,得到高斯金字塔,并建立如上图所示的高斯差分金字塔(DOG);

2.极值点检测

    候选点P与同一尺度,上下相邻两尺度空间内相邻的 26 个像素点进行比较,以确保在图像空间和尺度空间都检测到局部极值;

3.关键点筛选

    选取在不同尺度(或者叫分辨率)下同时存在的极值点,称之为匹配点,匹配点不会因为尺度变化而消失。


四:SUSAN角点检测

        SUSAN是基于像素领域包含若干元素的近似圆形模板,对每个像素基于该模板领域的图像灰度计算角点响应函数(CRF),如果大于某阈值且为局部极大值,则认为该点为角点。角点的精度与圆形模板大小无关,圆形模板越大,检测的角点数越多,则计算量也越大。

        SUSAN角点检测可以参考OpenCV代码,其检测效果如下:


3 0