Harris角点检测算子
来源:互联网 发布:赵奕欢怎么变胖了知乎 编辑:程序博客网 时间:2024/06/02 19:39
1.Moravec角点检测算子
Moravec角点检测算子的思想其实特别简单,在图像上取一个W*W的“滑动窗口”,不断的移动这个窗口并检测窗口中的像素变化情况E。像素变化情况E可简单分为以下三种:A 如果在窗口中的图像是什么平坦的,那么E的变化不大。B 如果在窗口中的图像是一条边,那么在沿这条边滑动时E变化不大,而在沿垂直于这条边的方向滑动窗口时,E的变化会很大。 C 如果在窗口中的图像是一个角点时,窗口沿任何方向移动E的值都会发生很大变化。
上图就是对Moravec算子的形象描述。用数学语言来表示的话就是:
其中(x,y)就表示四个移动方向(1,0)(1,1)(0,1)(-1,1),E就是像素的变化值。Moravec算子对四个方向进行加权求和来确定变化的大小,然和设定阈值,来确定到底是边还是角点。
2.Harris角点检测算子
Harris角点检测算子实质上就是对Moravec算子的改良和优化。在原文中,作者提出了三点Moravec算子的缺陷并且给出了改良方法:
1. Moravec算子对方向的依赖性太强,在上文中我们可以看到,Moravec算子实际上只是移动了四个45度角的离散方向,真正优秀的检测算子应该能考虑到各个现象的移动变化情况。为此,作者采用微分的思想(这里不清楚的话可以复习下高数中的全微分):
其中:
所以E就可以表示为:
2.由于Moravec算子采用的是方形的windows,因此的E的响应比较容易受到干扰,Harris采用了一个较为平滑的窗口——高斯函数:
3.Moravec算子对边缘响应过于灵敏。为此,Harris提出了对E进行变形:
对,没错,变成了二次型,果然是大牛,更牛的还在后面!其中,
用α,β表示矩阵M的特征值,这样会产生三种情况:A 如果α,β都很小,说明高斯windows中的图像接近平坦。 B 如果一个大一个小,则表示检测到边。 C 如果α,β都很大,那么表示检测到了角点。
α,β是什么?α,β就是椭圆的长短轴的度量,什么?椭圆哪里来?椭圆就是那个二次型函数来的!下图的意思我就不详细讲解了,相信大家能懂。
有人又要问了,你怎么知道我检测到α,β算大还是算小?对此天才哈里斯定义了一个角点响应函数:
其中(这些都是线性代数里的知识):
我们惊喜的发现,R为正值是,检测到的是角点,R为负时检测到的是边,R很小时检测到的是平坦区域。至于他怎么想出来的,我就不得而知了......
Harris角点检测算法有诸多优点:A 旋转不变性,椭圆转过一定角度但是其形状保持不变(特征值保持不变)
B 对于图像灰度的仿射变化具有部分的不变性,由于仅仅使用了图像的一介导数,对于图像灰度平移变化不变;对于图像灰度尺度变化不变
当然Harris也有许多不完善的地方:A 它对尺度很敏感,不具备几何尺度不变性。
B 提取的角点是像素级的。以至于后来又有许多牛人提出了更多更完善的检测算子,且听下回分解!
- Harris角点检测算子
- Harris角点检测算子
- Harris角点检测算子
- Moravec角点检测算子和Harris角点检测算子
- 角点检测算子(Harris, KLT, SIFT)
- 角点检测算子(Harris, KLT, SIFT,SUSAN)
- Moravec角点检测算子
- 角点检测算子的代码描述
- Moravec + Forstner 角点检测算子
- 强角点检测算子的Pascal实现代码
- forstner算子和Moravec角点检测算子
- 图像局部特征点检测算子综述
- OpenCV Harris 角点检测子
- 利用Harris检测子进行角点特征检测
- 利用Harris检测子进行角点特征检测
- 图像局部特征(二)--Harris角点检测子
- 【局部图像描述子】Harris角点检测器
- Harris角点检测: Harris Corner Detector
- ThinkPHP 利用.htaccess文件的 Rewrite 规则隐藏URL中的 index.php
- IT人士运动方式选择建议
- hadoop集群安装与配置--sqoop安装
- 关与线程中全局变量调用问题
- LCD背光控制的实现(PWM应用)(2)
- Harris角点检测算子
- JavaScript视频教程(内含课件)
- 软件工程
- 使用空格的代替码
- 【论文笔记】2013-6-16看到的三篇缓冲区溢出论文的笔记
- 如何在github上发起一个pull request
- VS2008 打开VS2010 项目
- myEclipse启动时不出现选择工作空间的解决方法
- HDU 1116 Play on Words 并查集