局部图像特征

一、检测边缘
从下图可以发现,边缘就是图像像素发生剧烈变化的地方,通过对图像求导找极值(极大值或极小值),就可以找到边缘。
在这里插入图片描述在这里插入图片描述现实很残酷啊,获得的图像可能含有噪声,于是有了下图,有了噪声求到的结果出现了无数多个极值,干扰我们获取边缘,有了噪声就去噪呗,使用高斯核先平滑再求导(二步),这个操作可以被(一步代替)将图像与高斯核的求导滤波器直接卷积。
在这里插入图片描述在这里插入图片描述高斯滤波的导数的相貌,那我们是不是可以认为高斯导数滤波可以帮我们找出边缘呢?!不同方向的高斯导数找到不同方向的边缘(图像对不同的滤波的产生的强烈响应位置不同),而且高斯导数中不同的sigma,对获取边缘的效果有很大的差异,平滑程度会影响梯度幅值,sigma越大,形成的边缘越明显。我们越容易找边缘。
在这里插入图片描述在这里插入图片描述在这里插入图片描述如何确定边缘?(基本的认知:边缘点的梯度方向和边缘方向互相垂直)
通用的思想!
通过找同一梯度方向上最大(梯度是正的,所以只要极大值)的极值点来确定边缘点(体现了非极大值抑制),在确定了一个极大值点后,下一个极值点可能在垂直于当前极值点的梯度方向上,不断地迭代吧,最终找到的边缘点可以确定边缘。
左图利用了线性插值进行非极大值抑制,右图利用确定的边缘点寻找下一个边缘点。
在这里插入图片描述
结合具体算法!
canny边缘检测流程:
1.图像与高斯导数滤波做卷积(xy两个方向,计算幅值和方向)
2.非极大值抑制
3.双阈值检测,设定两个阈值,将边缘点分为强边缘点、弱边缘点、舍弃的边缘点。
4.抑制孤立的弱边缘点,查看弱边缘点及其周围8个像素点是否含有强边缘点,若有则保留该弱边缘点,形成边缘。

二、检测角点(获取具有辨别力的patch,角点的存在使得patch内像素值变化很大)
通过求矩阵M的特征值判别像素点是角点、边缘点、flat点。(计算Ix和Iy,也是利用高斯导数滤波),两个特征值都很大则是角点,有一个远大于另一个特征值则是边缘点,两个特征值都很小则是flat 点。
在这里插入图片描述在这里插入图片描述为了更简单的检测各种点,把上式表达利用一个公式转化为一个数值,响应值大于0则是角点、小于0则是边缘点、绝对值很小是flat 点:
在这里插入图片描述在这里插入图片描述角点检测流程:
1.计算所有像素点的响应值R(上述公式)
2.对像素点进行非极大值抑制(响应值与周围8个相比)

三、HOG特征描述子(为patch建立特征描述)
基本单位:cell,计算cell的梯度方向直方图。
多个cell 的梯度方向直方图拼接成block的梯度方向直方图,称为HOG特征描述子。

基本流程:
1.灰度化
2.采用Gamma校正法对输入图像进行颜色空间的标准化
3.计算梯度大小和方向
4.设定直方图的bin个数(通常为9),确定cell大小后计算cell的梯度方向直方图
5.根据block和cell关系,确定block的梯度方向直方图并做归一化,即确定了特征描述子。

四、SIFT
分为两步:提取关键点、描述关键点
在这里插入图片描述1.尺度空间的极值检测
尺度空间所包含的寓意:图像尺寸大小、图像的模糊程度。
建立尺度空间是为了检测出在不同尺度下都存在的特征点!
如何检测特征点?可以用LOG算子,但计算量较大,SIFT用差分高斯(DOG)近似代替LOG找特征点。
图像金字塔->高斯金字塔->差分金字塔,比较某一像素点与同尺度和相邻尺度26个像素点值的大小,大于(或小于)所有的像素点就是特征点。
2.计算主方向
在尺度图像上计算特征点及其邻域的梯度赋值和方向,生成梯度方向直方图,寻找主方向(最大赋值对应的是主方向)。
3,构建特征点描述
校准主方向
对于特征点确定一个窗口大小,划分窗口为多个子窗口,每个子窗口计算一个梯度方向直方图,拼接多个子窗口的梯度直方图得到特征点描述。
归一化处理

猜你喜欢

转载自blog.csdn.net/m0_37937932/article/details/85543659