图像处理--角点检测(Harris以及其他算法研究)
2013-11-06 09:43
274 查看
转载自:http://www.cnblogs.com/blue-lg/archive/2011/12/17/2291139.html
环境:Windows xp+MATLAB 2010b
提及角点检测,就不能忘了最经典的Harris角点检测算法,下面就主要介绍下Harris算法及其matlab实现。
算法介绍:
1)通常情况下,可以将区域内的点分为3类,a.平坦的点,b.边缘上的点,c.角点。
2)若对于这3类点分别求取Ix,Iy,很显然,a类点的Ix和Iy都很小,b类点则是Ix和Iy有一个稍大一个稍小,而角点c则是两个值都很大。所以根据这种性质,可以区分出角点来。
【
求解Ix,Iy的过程说明:
利用单方向上(横轴&纵轴),点与周围点的差分来计算,有两种方法,
一是,取3x3邻域计算,通常取
Ix子模板: Iy子模板:
-1 0 1 -1 -1 -1
-1 0 1 0 0 0
-1 0 1 1 1 1
先对图像矩阵上每一点分别求取其Ix,Iy乘积后叠加的值,记为Ix(m,n),Iy(m,n).(其中,m,n分别为原矩阵的大小)
二是,直接只采用横轴和纵轴上的点计算差分。
】
3)考虑到图像一般情况下的噪声影响,采用高斯滤波去除噪声点。
4)计算角点的准则函数R(即用一个值来判断该点来衡量这个点是否是角点),并标记角点(R(i,j)>0.01*Rmax,且R(i,j)为3x3邻域局部最大值)。
M = [Ix2(i,j) Ixy(i,j);Ixy(i,j) Iy2(i,j)];
R(i,j) = det(M)-k*(trace(M))^2; % 计算R
【可以通过改变准则函数的计算来改进harris算法,上式中的k一般取0.04~0.06】
原图来自http://zh.wikipedia.org/wiki/%E8%A7%92%E6%A3%80%E6%B5%8B
检测后:
为了验证harris算子的旋转不变性,将原图旋转30度,见下
关于角点检测的其他算法:
1).susan算法
利用面积,如下:
如下图所示为SUSAN圆形模板与物体的5种几何位置关系,对于图像中非纹理区域的任一点,在以它为中心的模板窗中存在一块亮度与其相同的区域,这块区域即为SUSAN的USAN区域。USAN区域包含了图像结构的重要信息,
由图可知,当模板中心像素点位于区域内部时,USAN的面积最大,
当该像素点位于区域边界时,则面积为最大的一半,
当该像素点为角点时,USAN区域面积约为最大的1/4。
SUSAN根据不同位置时USAN区域的面积来考察当前像素点为区域内部点、边缘点或角点。
值得注意的是,关于计算usan面积,在圆邻域中,当像素点与某一点的灰度差小于某一阈值(通常取十分之一的极值(最大值-最小值))时,则认为该点在usan内。
2) CSS角点检测
通过canny算子计算出图像的edge,然后对edge进行表示成:
Γ (u)=[X(u,δ),Y(u,δ)](x(u,δ)表示高斯滤波后的横坐标,...)
对曲线上的点计算曲率,
选择曲率局部极大值点作为候选值点,当点同时满足下面两个条件时,认为该点为角点:
a.大于阈值T;
b.至少大于两侧相邻的点曲率极小值的两倍。
【对于canny提取出的曲线的填补(曲线可能有断裂),形成T型角点,若得出的角点与T型角点相邻,去掉T型角点】
3)
还有诸多算法,留待以后讨论。
参考:http://walle.sdsmt.edu/faculty/rhoover/teaching/F11/692/Papers/HarrisStephens.pdf
以及F. Mokhtarian and R. Suomela, Robust Image Corner Detection Trough Curvature Scale Space, TPAMI, Vol. 20, No. 12, 1998.
环境:Windows xp+MATLAB 2010b
提及角点检测,就不能忘了最经典的Harris角点检测算法,下面就主要介绍下Harris算法及其matlab实现。
算法介绍:
1)通常情况下,可以将区域内的点分为3类,a.平坦的点,b.边缘上的点,c.角点。
2)若对于这3类点分别求取Ix,Iy,很显然,a类点的Ix和Iy都很小,b类点则是Ix和Iy有一个稍大一个稍小,而角点c则是两个值都很大。所以根据这种性质,可以区分出角点来。
【
求解Ix,Iy的过程说明:
利用单方向上(横轴&纵轴),点与周围点的差分来计算,有两种方法,
一是,取3x3邻域计算,通常取
Ix子模板: Iy子模板:
-1 0 1 -1 -1 -1
-1 0 1 0 0 0
-1 0 1 1 1 1
先对图像矩阵上每一点分别求取其Ix,Iy乘积后叠加的值,记为Ix(m,n),Iy(m,n).(其中,m,n分别为原矩阵的大小)
二是,直接只采用横轴和纵轴上的点计算差分。
】
M = [Ix2(i,j) Ixy(i,j);Ixy(i,j) Iy2(i,j)];
R(i,j) = det(M)-k*(trace(M))^2; % 计算R
【可以通过改变准则函数的计算来改进harris算法,上式中的k一般取0.04~0.06】
原图来自http://zh.wikipedia.org/wiki/%E8%A7%92%E6%A3%80%E6%B5%8B
检测后:
为了验证harris算子的旋转不变性,将原图旋转30度,见下
关于角点检测的其他算法:
1).susan算法
利用面积,如下:
如下图所示为SUSAN圆形模板与物体的5种几何位置关系,对于图像中非纹理区域的任一点,在以它为中心的模板窗中存在一块亮度与其相同的区域,这块区域即为SUSAN的USAN区域。USAN区域包含了图像结构的重要信息,
由图可知,当模板中心像素点位于区域内部时,USAN的面积最大,
当该像素点位于区域边界时,则面积为最大的一半,
当该像素点为角点时,USAN区域面积约为最大的1/4。
SUSAN根据不同位置时USAN区域的面积来考察当前像素点为区域内部点、边缘点或角点。
值得注意的是,关于计算usan面积,在圆邻域中,当像素点与某一点的灰度差小于某一阈值(通常取十分之一的极值(最大值-最小值))时,则认为该点在usan内。
2) CSS角点检测
通过canny算子计算出图像的edge,然后对edge进行表示成:
Γ (u)=[X(u,δ),Y(u,δ)](x(u,δ)表示高斯滤波后的横坐标,...)
对曲线上的点计算曲率,
选择曲率局部极大值点作为候选值点,当点同时满足下面两个条件时,认为该点为角点:
a.大于阈值T;
b.至少大于两侧相邻的点曲率极小值的两倍。
【对于canny提取出的曲线的填补(曲线可能有断裂),形成T型角点,若得出的角点与T型角点相邻,去掉T型角点】
3)
还有诸多算法,留待以后讨论。
参考:http://walle.sdsmt.edu/faculty/rhoover/teaching/F11/692/Papers/HarrisStephens.pdf
以及F. Mokhtarian and R. Suomela, Robust Image Corner Detection Trough Curvature Scale Space, TPAMI, Vol. 20, No. 12, 1998.
相关文章推荐
- 图像处理--角点检测(Harris以及其他算法研究)
- 图像处理--角点检测(Harris以及其他算法研究)
- 图像处理--角点检测(Harris以及其他算法研究)
- 圖像處理--角點檢測(Harris以及其他算法研究)
- 图像处理之Harris角度检测算法
- 图像处理基本思想和算法研究
- C/C++ 图像处理(6)------图像の连通域查找和分别上色算法研究
- 图像处理基本算法(汇总)以及实现
- 运动模糊图像处理(一)----- 模糊角度估计的算法研究及matlab实现
- 优化的对比度增强算法用于有雾图像的清晰化处理(算法效果是我目前看到最为稳定的,且对天空具有天然的免疫力,极力推荐有需要的朋友研究)。
- 图像处理——灰度化、二值化、膨胀算法、腐蚀算法以及开运算和闭运算
- 各种与视频编解码以及视频图像处理的应用相关的新技术,新方法,各种软件开发相关的算法,思想。
- “共轭变换”图像处理算法在FPGA 上实现的研究
- 图像处理之Harris角度检测算法
- 图像处理——灰度化、二值化、膨胀算法、腐蚀算法以及开运算和闭运算
- 图像处理——角点检测(Harris、Shi-Tomasi、亚像素检测)
- 优化的对比度增强算法用于有雾图像的清晰化处理(算法效果是我目前看到最为稳定的,且对天空具有天然的免疫力,极力推荐有需要的朋友研究)。
- 基于安卓平台的图像处理算法研究
- 图像处理之(24位)BMP旋转以及镜像算法
- 图像处理之其他杂项(一)之MeanShift的目标跟踪算法opencv c++代码 VS2015+opencv3.2