角点 检测

来源:互联网 发布:数据集成平台方案 编辑:程序博客网 时间:2024/04/29 03:49

点检测的一份非常详细的教程:

http://www.cim.mcgill.ca/~dparks/CornerDetector/index.htm

在上述教程中涉及到了Harris角点检测的推导以及各种角点检测方法的比较,非常值得一看。这里只是简单的整理一下,用白话说明一下Harris角点检测算法的步骤:

1. 计算图像的方向导数,分别保存为两个数组Ix以及Iy,这里可以使用任何方法,比较正统的是使用Gaussian函数,因为在Harris角点检测的推导过程中默认是采用了Gaussian函数作为其计算图像偏导数的方法。当然使用简单的Prewitt或者Sobel算子也没有关系。

2. 为每一个点计算局部自相关矩阵 u(x,y) = [Ix(x,y)^2*W Iy(x,y)Ix(x,y)*W;Ix(x,y)Iy(x,y)*W Iy(x,y)^2*W];这里*W代表以x,y为中心与高斯模板W做卷积,而这个模板的大小则需要你自己指定。

3. 如果这个u的两个特征值都很小,则说明这个区域是个平坦区域。如果u的某个特征值一个大一个小,则是线,如果两个都很大,那么就说明这是个角点。Harris提供了另一个公式来获取这个点是否是角点的一个评价:corness = det(u) - k*trace(u)^2;

这个corness就代表了角点值,其中k是你自己取的一个固定的变量,典型的为[0.04,0.06]之间。当然在求取了每个点的corness以后,最好再做一个极大值抑制,这样的效果比直接设置一个阀值要好。

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/prleader/archive/2009/02/23/3930571.aspx