前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >特征提取——局部特征

特征提取——局部特征

作者头像
AomanHao
发布2022-01-14 09:21:08
1.2K0
发布2022-01-14 09:21:08
举报
文章被收录于专栏:ISP图像处理相关

特征提取——局部特征

LOG,HOG,DOG微分算子在近圆的斑点检测方面效果很好

HOG特征

https://blog.csdn.net/coming_is_winter/article/details/72850511 https://blog.csdn.net/zouxy09/article/details/7929348/

代码语言:javascript
复制
总结:Dalal提出的Hog特征提取的过程:把样本图像分割为若干个像素的单元(cell),把梯度方向平均划分为9个区间(bin),在每个单元里面对所有像素的梯度方向在各个方向区间进行直方图统计,得到一个9维的特征向量,每相邻的4个单元构成一个块(block),把一个块内的特征向量联起来得到36维的特征向量,用块对样本图像进行扫描,扫描步长为一个单元。最后将所有块的特征串联起来,就得到了人体的特征。

例如,对于64*128的图像而言,每16*16的像素组成一个cell,每2*2个cell组成一个块,因为每个cell有9个特征,所以每个块内有4*9=36个特征,以8个像素为步长,那么,水平方向将有7个扫描窗口,垂直方向将有15个扫描窗口。也就是说,64*128的图片,总共有36*7*15=3780个特征。

特征总数: 一个cell有9个特征(9个梯度方向),每个特征cell块里有 num*9个特征,步长像素规格:(列像素数-步长)/步长*(行像素数-步长)/步长,
总特征数:(列像素数-步长)/步长*(行像素数-步长)/步长*num*9

LOG特征

代码语言:javascript
复制
图像与某一个二维函数进行卷积运算实际就是求取图像与这一函数的相似性。同理,图像与高斯拉普拉斯函数的卷积实际就是求取图像与高斯拉普拉斯函数的相似性。当图像中的斑点尺寸与高斯拉普拉斯函数的形状趋近一致时,图像的拉普拉斯响应达到最大。

Laplace可以用来检测图像中的局部极值点,但是对噪声敏感,所以在我们对图像进行Laplace卷积之前,我们用一个高斯低通滤波对图像进行卷积,目标是去除图像中的噪声点

代码语言:javascript
复制
先对图像f(x,y)用方差为σ的高斯核进行高斯滤波,去除图像中的噪点。

L(x,y;σ)=f(x,y)∗G(x,y;σ)
G(x,y;σ)高斯核
然后对图像的拉普拉斯图像则为:

∇^2=(∂^2L/∂^x2)+(∂^2L/∂y^2)
而实际上有下面等式:

∇^2[G(x,y)∗f(x,y)]=∇^2[G(x,y)]∗f(x,y)

我们可以先求高斯核的拉普拉斯算子,再对图像进行卷积

使用LoG虽然能较好的检测到图像中的特征点,但是其运算量过大,通常可使用DoG(差分高斯,Difference of Gaussina)来近似计算LoG

Haar特征

Haar特征分为三类:边缘特征、线性特征、中心特征和对角线特征,组合成特征模板。特征模板内有白色和黑色两种矩形,并定义该模板的特征值为<h3>白色矩形像素和减去黑色矩形像素和</h3>

Haar-like特征

https://blog.csdn.net/zouxy09/article/details/7929570

代码语言:javascript
复制
积分图就是只遍历一次图像就可以求出图像中所有区域像素和的快速算法,大大的提高了图像特征值计算的效率。

       积分图主要的思想是将图像从起点开始到各个点所形成的矩形区域像素之和作为一个数组的元素保存在内存中,当要计算某个区域的像素和时可以直接索引数组的元素,不用重新计算这个区域的像素和,从而加快了计算(这有个相应的称呼,叫做动态规划算法)。积分图能够在多种尺度下,使用相同的时间(常数时间)来计算不同的特征,因此大大提高了检测速度。

       我们来看看它是怎么做到的。

       积分图是一种能够描述全局信息的矩阵表示方法。积分图的构造方式是位置(i,j)处的值ii(i,j)是原图像(i,j)左上角方向所有像素的和:

归一化图像

代码语言:javascript
复制
i¯(x,y)=(i(x,y)−μ)/cσ
公式中i¯(x,y)表示归一化之后的图像,而i(x,y)表示原始的图像,其中μ表示图像的均值,而σ表示图像的标准差
σ2=(1/N)∑x2−μ2   2是平方

SIFT特征

SIFT的全称是Scale Invariant Feature Transform,尺度不变特征变换(物体怎么转,人都能识别)。SIFT特征对旋转、尺度缩放、亮度变化等保持不变性,是一种非常稳定的局部特征。

有4个主要步骤

  1. 尺度空间的极值检测 搜索所有尺度空间上的图像,通过高斯微分函数来识别潜在的对尺度和选择不变的兴趣点。
代码语言:javascript
复制
$L(x,y,σ)=G(x,y,σ)∗I(x,y)$

为了有效的在尺度空间检测到稳定的关键点,提出了高斯差分尺度空间(DOG scale-space)。利用不同尺度的高斯差分核与图像卷积生成。构造高斯差分尺度空间(DOG scale-space): 

$D(x,y,σ)=(G(x,y,kσ)−G(x,y,σ))∗I(x,y)=L(x,y,kσ)−L(x,y,σ)$

σ 是尺度坐标。σ大小决定图像的平滑程度,大尺度对应图像的概貌特征,小尺度对应图像的细节特征。大的σ值对应粗糙尺度(低分辨率),反之,对应精细尺度(高分辨率)。

对于一幅图像I,建立其在不同尺度(scale)的图像,后面每个采样都是原图的1/4倍。

每个点都要与邻域的点,上下相邻尺度的点做比较(9+8+9)26个点作比较(以确保在尺度空间和二维图像空间都检测到极值点)。一个点如果在DOG尺度空间本层以及上下两层的26个领域中是最大或最小值时,就认为该点是图像在该尺度下的一个特征点
  1. 特征点定位 在每个候选的位置上,通过一个拟合精细模型来确定位置尺度,关键点的选取依据他们的稳定程度。
代码语言:javascript
复制
拟和三维二次函数以精确确定关键点的位置和尺度,同时去除低对比度的关键点和不稳定的边缘响应点(因为DoG算子会产生较强的边缘响应),以增强匹配稳定性、提高抗噪声能力

用Harris Corner检测 参考文章

  1. 特征方向赋值 基于图像局部的梯度方向,分配给每个关键点位置一个或多个方向,后续的所有操作都是对于关键点的方向、尺度和位置进行变换,从而提供这些特征的不变性。
代码语言:javascript
复制
每个特征点计算一个方向,依照这个方向做进一步的计算, *利用关键点邻域像素的梯度方向分布特性为每个关键点指定方向参数,使算子具备旋转不变性。

m(x,y)=(L(x+1,y)−L(x−1,y))2+(L(x,y+1)−L(x,y−1))2

√θ(x,y)=atan2(L(x,y+1)−L(x,y−1)L(x+1,y)−L(x−1,y)

每个关键点有三个信息:位置、所处尺度、方向。由此可以确定一个SIFT特征区域。

  1. 特征点描述 在每个特征点周围的邻域内,在选定的尺度上测量图像的局部梯度,这些梯度被变换成一种表示,这种表示允许比较大的局部形状的变形和光照变换。

高斯函数是唯一可行的尺度空间核

尺度空间

多分辨率图像金字塔:

代码语言:javascript
复制
1. 对原始图像进行平滑
2. 对处理后的图像进行降采样(通常是水平、垂直方向的1/2)降采样后得到一系列不断尺寸缩小的图像。显然,一个传统的金字塔中,每一层的图像是其上一层图像长、高的各一半。多分辨率的图像金字塔虽然生成简单,但其本质是降采样,图像的局部特征则难以保持,也就是无法保持特征的尺度不变性。

高斯尺度空间:

代码语言:javascript
复制
图像的模糊程度来模拟人在距离物体由远到近时物体在视网膜上成像过程,距离物体越近其尺寸越大图像也越模糊,这就是高斯尺度空间,使用不同的参数模糊图像(分辨率不变)

图像和高斯函数进行卷积运算,图像模糊,使用不同的“高斯核”可得到不同模糊程度的图像

L(x,y,σ)=G(x,y,σ)∗I(x,y)

其中G(x,y,σ)是高斯核函数
G(x,y,σ)=(1/2Πσ^2)e^((x^2+y^2)/(2σ^2))

构建尺度空间的目的是为了检测出在不同的尺度下都存在的特征点,而检测特征点较好的算子是Δ^2G(高斯拉普拉斯,LoG)

DoG特征

使用LoG虽然能较好的检测到图像中的特征点,但是其运算量过大,通常可使用DoG(差分高斯,Difference of Gaussina)来近似计算LoG。

DOG可以看作为LOG的一个近似,但是它比LOG的效率更高。 设k为相邻两个高斯尺度空间的比例因子,则DoG的定义:

代码语言:javascript
复制
D(x,y,σ)=[G(x,y,kσ)−G(x,y,σ)]∗I(x,y)=L(x,y,kσ)−L(x,y,σ)

L(x,y,σ) 是图像的高斯尺度空间 将相邻的两个高斯空间的图像相减就得到了DoG的响应图像

Harris角点特征提取

<font color=red>Harris角点检测是一种基于图像灰度的一阶导数矩阵检测方法。检测器的主要思想是局部自相似性/自相关性,即在某个局部窗口内图像块与在各个方向微小移动后的窗口内图像块的相似性。</font>

1、角点可以是两个边缘的角点;

  1. 角点是邻域内具有两个主方向的特征点;
代码语言:javascript
复制
人眼对角点的识别通常是在一个局部的小区域或小窗口完成的。如果在各个方向上移动这个特征的小窗口,窗口内区域的灰度发生了较大的变化,那么就认为在窗口内遇到了角点。如果这个特定的窗口在图像各个方向上移动时,窗口内图像的灰度没有发生变化,那么窗口内就不存在角点;如果窗口在某一个方向移动时,窗口内图像的灰度发生了较大的变化,而在另一些方向上没有发生变化,那么,窗口内的图像可能就是一条直线的线段。

x^{y^z}=(1+{\rm e}^x)^{-2xy^w}

sqrt()

结论:1、增大α的值,将减小角点响应值R,降低角点检测的灵性,减少被检测角点的数量;减小α值,将增大角点响应值R,增加角点检测的灵敏性,增加被检测角点的数量。

  1. Harris角点检测算子对亮度和对比度的变化不敏感
  2. Harris角点检测算子具有旋转不变性
  3. Harris角点检测算子不具有尺度不变性
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018 年 07 月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • HOG特征
  • LOG特征
  • Haar特征
  • Haar-like特征
  • SIFT特征
  • 尺度空间
  • DoG特征
  • Harris角点特征提取
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档