局部特征——Harris角点

1. 角点

        如果从一面很大的空墙中选择一个点,那么很难在随后的视频帧中跟踪到这个点了,因为墙上所有点都是一样的或相似的,相反,如果选择独一无二或接近独一无二的点,那么再找到这点的几率就非常大。 那么什么点可以被认为是独一无二呢,我们认为一个在两个正交方向上都有明显导数的点更倾向于是独一无二的。许多可跟踪的特征点都被称为角点。

       从直观上讲,角点是一类含有足够信息且能从当前帧和下一帧中都能提取出来的点。

       最普遍使用的角点定义是由Harris提出来的,定义的基础是图像灰度强度的二阶导数矩阵。Harris角点检测过程如下:

       Harris角点检测基本思想:从图像局部的小窗口观察图像特征,如果窗口向任意方向的移动都导致图像灰度的明显变化,那么窗口中有角点。

                      局部特征——Harris角点_第1张图片

      将图像窗口平移[u,v]产生灰度变化E(u,v) 

                   

     其中,w(x,y) = 

                            局部特征——Harris角点_第2张图片
                            

                      

     于是对于局部微小的移动量 [u,v],可以近似得到下面的表达:  

                                    局部特征——Harris角点_第3张图片   

     其中M是 2×2 矩阵,可由图像的导数求得:

                                   

     窗口移动导致的图像变化:实对称矩阵M的特征值分析

          求出二维矩阵的两个特征值,两个特征值满足什么条件时该点可以被认为是角点呢,根据角点的定义可以得到图1。

                                     局部特征——Harris角点_第4张图片

                             

        定义corner response,如下:

                                   局部特征——Harris角点_第5张图片

                                    (k – empirical constant, k = 0.04-0.06)

        那么R 值满足什么条件,可以判断该点为角点呢,根据图1得到图2的判定条件:

                                              局部特征——Harris角点_第6张图片

  

     Harris角点检测算法:

              1. 求出每个像素点的自相关矩阵,得到两个特征值;

              2. 根据特征值计算出R,对角点响应函数R进行阈值处理,获取R > theshold 的点;

              3. 局部极大值R对应的点即可认为是角点。

    Harris角点的性质:

             1. 具有旋转不变性;

             2. 对于图像灰度的仿射变化具有部分的不变性;

             3. 对于图像几何尺度变化不具有不变性。部分的不变

2. 角点检测OpenCV实现

       OpenCV中定义了 cornerHarris 函数,可以结合 convertScaleAbs 函数,通过阈值取角点。

       函数cvGoodFeaturesToTrack()也可以进行角点检测,该函数采用的是Shi和Tomasi提出的方法。Shi和Tomasi发现,当两个特征值中较小的一个大于最小阈值,则会得到强角点。在很多情况下,Shi-Tomasi算法可以得到比使用Harris方法更好的结果。

      cvGoodFeaturesToTrack()先利用sobel算子计算二阶导数,再计算特征值,然后返回满足易于跟踪的定义的一系列点。

补充:

      局部特征——Harris角点_第7张图片


Reference:

 [1] C.Harris, M.Stephens. “A Combined Corner and Edge Detector”. Proc. of 4th Alvey Vision Conference, 1988

 [2] 图像特征点提取PPT http://wenku.baidu.com/view/f61bc369561252d380eb6ef0.html

 [3]《学习OpenCV》


另外推荐一篇关于角点写的比较好的blog:  http://blog.csdn.net/xiaowei_cqu/article/details/7805206

你可能感兴趣的:(CV)