特征检测

Posted 司马_羽鹤

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了特征检测相关的知识,希望对你有一定的参考价值。

计算机视觉课堂笔记

包括边缘检测和特征点检测两个部分

边缘检测部分

what--边缘的定义

why--提取边缘的意义

how--提取边缘的方法

 

what

边缘是图像中亮度突然变化的区域;

图像灰度构成的曲面上的陡峭区域;

像素灰度存在阶跃变化或屋脊状变化的像素的集合。

分类:有梯状,脊状,条状

why

边缘可以表达物体的特征;

边缘特征对于图像的变化(几何变化,灰度变化,光照方向变化)不敏感;

可以为检测物体提供有用信息;

是对图像进行预处理的过程。

how

1.使用微分滤波器

在一阶中叫梯度算子(prewitt,sobel),二阶微分滤波器叫做LoG算子,LoG=高斯平滑+拉普拉斯二阶微分,相当于先将高斯算子进行求取二阶导数再与图像进行卷积。

补充:关于卷积的一个定理,卷积的偏导数等于偏导数的卷积,即

***2.canny算子

参考:J.Canny, "A Computational Approach to Edge Detection",IEEE Trans. on PAMI, 8(6),1986.

算法主要步骤:

梯度计算==》非极大值抑制==》双阈值提取边缘点

2.1梯度计算:

先做高斯平滑

分别对x,y两个方向求取一阶微分

最后求取幅值和相位角

2.2非极大值抑制

对梯度幅值图像M ,仅保留梯度方向上的极大值点。

解释:对M中的每个点进行逐一排查,如果在该点的梯度方向上(包括反方向)是极大值,就保留该点的梯度值,如果不是就把梯度置零。(如果做一个简化的话就是只考虑四个方向的梯度值进行比较)

通常得到的结果为单像素宽度的线。

2.3双阈值检测

对上述处理结果中的候选点使用阈值进行二值化处理。这里的关键点在于使用了两个相差较大的阈值分别进行二值化处理(经验值low=0.4*high),低阈值会有更大的误检率,高阈值则估计的更加保守一点,然后以高阈值的图形为基础,在低阈值的候选点范围内进行搜索,如果能链接到下一个高阈值片段则将候选值取入,如果不能链接的候选点则舍弃。

 

特征点提取

角点检测 介绍两种,Harris和SIFT

1.Harris

参考:C.Harris, M. Stephens. "A Combined Corner and Edge Detector". Proc of 4th Alvey Vision Conference, 1988.

Harris 对角点的定义:窗口向任意方向的移动都导致图像灰度的明显变化

根据这种思想我们要求取微小变化对窗口内像素点灰度值变化的大小

w(x,y)是窗口函数,自定,可以是0-1窗口,也可以用高斯窗口。

经过计算化简可得:

近似于一种椭圆的形式,两个主轴的大小代表了在该方向的变化快慢,这里的主轴是指M的特征值,这里的M为:

得到,两个特征值大小与该点是否为角点的关系:

由于在古老的年代里求取特征值并不是很容易,所以Harris给出了一个用行列式和迹表示的角点响应函数R:

使得角点检测问题转化为对R进行阈值处理提取R的极大值的过程。

 

Harris 角点的一些性质

对图像灰度的平移变换具有不变性,但是对于灰度的等比例放缩会有一定的敏感性;对几何尺度的变化也没有太好的适应性。

 

2 SIFT

参见:http://www.cnblogs.com/simayuhe/p/5295956.html

截图来源:http://vision.ia.ac.cn/zh/teaching/index.html

以上是关于特征检测的主要内容,如果未能解决你的问题,请参考以下文章

图像边缘检测基于matlab灰度图像的积累加权边缘检测含Matlab源码 2010期

图像处理 : 边缘检测

边缘检测

OpenCV基础(11)基于OpenCV的边缘检测

图像处理常用边缘检测算子总结(转)

Python图像锐化及边缘检测(RobertsPrewittSobelLapllacianCannyLOG)