特征提取(理论)[李明磊老师课程]
特征点
特征点由关键点和描述子组成。例如,在一张图像中计算 SIFI 特征点时,是指提取 SIFI 关键点,并计算 SIFI的描述子。
关键点:特征点在该图像中的位置,方向,大小等信息。
描述子:一定维度的特征向量。原则:外观相似的特征应该由相似的描述子,通常通过计算在向量空间上的距离来判定。
本笔记参考南京航空航天大学李明磊老师的课程。
csdn文章(博客数学公式可能会有乱码,更清晰的可以参考csdn)
特征提取(关键点)
性质
特征描述 (描述子)
特征描述是特征提取的后续,被称为描述子(一定维度的特征向量)
(1)唯一性,即不同位置的特征点的描述结果应显著不同,否则在进行特征匹配时,很容易形成匹配歧义;
(2)独立性,即当使用高维向量作为描述子的数学表达时,其特征向量的各个维度间应该保持非相关的独立性,否则可以用降维算法对特征向量进行降维;
(3)稳定性,即在不满光照恒常或刚性结构等预设的假设条件时,描述子仍能够保证获得相似的结果;
(4)不变性,即在不同影像中,同名点对应的特征的描述子能够适应尺度、平移、旋转等变换,反映出相同或相似的数值。
边缘检测算法
梯度和边缘提取是其他特征检测的基础
梯度信息提取
- 微分算子与最优化检测算子:
- 微分适用于连续型
- 差分适用于离散型
图像梯度的模长大小是图像变化的速度。
对于图像的边缘部分,其灰度值变化较大,梯度值也较大,对于图像中比较平滑的部分,其灰度值变化较小,相应的梯度值也较小。
Gx和Gy分别隐含了x和y方向的灰度变化信息,也就隐含了边缘信息。
模长和方向:
空间滤波基础
本质就是卷积:当前的一个像素点与其周围的像素点与窗口(核,算子)进行线性加权处理。
一阶微分和二阶微分对应图像中的信息
纵坐标是亮度值(灰度),横坐标是像素位置
二阶导非零值:图像中灰度急剧发生变化的值
滤波器分类
- 低通滤波
- 平滑图像,去除高频噪声
- 例如 canny 边缘检测中会用高斯滤波
- 高通滤波
- 增强边缘和细节,提取高频分量。
- sobel, laplacian
Roberts 交叉算子
算子就是卷积中的核,与像素点进行线性加权的方式。
Roberts交叉算子是图像处理中用于边缘检测的一种算子,它主要通过两个2x2的卷积核来计算图像的梯度。这些核分别用于检测对角线方向上的边缘。
正负并无关系,因为看的是模长。
核:
计算方式:
边缘强度的计算:
prewitt 算子
具体的计算方式:
sobel 算子
Sobel 算子是在 Prewitt 算子的基础上改进的,在中心系数上使用一个权值2,相比较 Prewitt 算子,Sobel 模板能够较好的抑制(平滑)噪声。
算子核:
拉普拉斯算子
Laplacian 算子的核心在于其能够通过二阶导数来响应图像的边缘,这与一阶导数的 Sobel 或 Prewitt 算子形成对比。
组成:x 方向上的二阶导,y 方向上的二阶导。
canny 边缘检测
简述:
步骤:
- 使用高斯滤波,平滑图像,滤除噪声。
- 利用算子,计算每个像素点的梯度强度与方向。
- 利用 NMS, 消除杂散相应。
- 将当前的梯度强度与正负梯度方向的两个像素比较
- 选择强度最大的,作为边缘点。
- 利用双阈值确定真实与潜在的边缘。
- 设置一个高阈值,一个低阈值
- 高于高阈值,则为强边缘像素,
- 低于低阈值,则舍去
- 在两者之间,则为弱边缘像素。
- 连接分析,一直孤立的弱边缘
查看弱边缘附近的八个像素点,若其中有一个强边缘像素点,则保留。
PPT详解
- 应用:
- 通常用于预处理,比如边缘提取、物体轮廓识别等。
- Canny 边缘检测本身不会检测关键点或生成描述子,更多是提供边缘结构信息。
Canny 边缘检测不直接用于特征点匹配,属于基础图像处理的一部分。
霍夫变换检测直线
基本原理:将图像空间中的直线检测问题转换到参数空间的峰值检测问题。
直线的表现形式:
图像空间(笛卡尔坐标系):图像中由点 (x, y)表示。
参数空间(极坐标系):直线用极坐标方程 ρ=xcosθ+ysinθ表示,其中:
-
ρ:直线到原点的垂直距离。
-
θ:直线与 x 轴正方向的夹角。
推导过程:
-
转换逻辑:
- 在笛卡尔坐标系中,一个点 (x, y)对应于参数空间中的一条曲线(通常是正弦曲线)。
- 笛卡尔坐标系中的一条直线对应参数空间中的一个点。参数空间中的每个点 (ρ,θ) 唯一对应笛卡尔坐标中的一条直线
- 同时在笛卡尔坐标系中,一条直线的不同点,在参数坐标系中,表示为不同直线有一个交点。
所以在检测直线的判定标准:
是投票器+阈值,也就是参数坐标系中交于同一点的直线越多,那么该点越有可能是直线,所以可以设定一个阈值,判断是否为直线。
点特征提取
Harris 角点检测
先验知识 :
特征值:线性空间变换时,特征向量变换的倍数。
特征向量:在线性变换中,特征向量指向变换影响最显著的方向。这些向量只是长度发生变化,方向不变。
[3 blueBrown 线性代数的本质](【熟肉】线性代数的本质 - 10 - 特征向量与特征值_哔哩哔哩_bilibili)
如果特征值越大,对应特征向量的梯度变化越大
定义与方法
假想(便于理解):
一个检测框在一个图片沿着 u,v 方向检测灰度的梯度变化,我们根据梯度变化值来确定是否为角点。
难点:阈值的确定,以及如何去量化梯度值的变化。
量化梯度值的变化:构造了 Harris 矩阵
阈值的确定:
利用特征值与特征向量在线性变化中的含义。
具体流程 :
缺点:
1,光亮和对比度的影响很大
2,尺度不变性。由于近大远小,同一个物体再图片中占到不同的大小,所以可能同一个物体,在不同图像中识别可能是角点,可能也不是角点。
SIFT 特征检测
特点:
克服了尺度缩放与亮度变化以及方向视角变化带来的影响。
流程
- 生成尺度空间-->高斯金字塔
- 用高斯平滑处理图像
- 对图像进行下采样
- 生成高斯差分金字塔
- 空间极值点的定位
- 关键点主方向的确定
- 描述特征符
生成尺度空间-高斯金字塔
先验知识 :
上采样-->细节增加-->高频信息增加
下采样-->尺度增加-->低频信息增加【信息相对不连续】(平滑处理)【信息相对连续】
构建高斯金字塔
两步:
对图像进行高斯平滑(尺度信息具有连续性)
下采样
每组(Octave)都是先高斯平滑再下采样。
纵坐标是高斯平滑的尺度空间因子。越小表示平滑越小,尺度越小,对应细节特征越多。
高斯平滑:
实际就是卷积核。
高斯差分尺度空间
对不同尺度的高斯核进行差分,然后将差分结果和影像结合进行卷积生成高斯差分尺度空间 D (x, y, zou)。
极值点--特征点的定位
上下三层相邻的高斯差分空间尺度的图像,以中间的图像为一个点,观察其周围 8 个,以及上下两层图像的 9 个,进行比较。
利用拟合进行精确定位极值点:
去处对比度低的以及不稳定的边缘影响点:
确定主方向:
梯度方向从 0 度到 360 度,可以按照 36°划分,也可以按照 45°进行划分。
累计每个度数区间的特征点个数,取最多个数的就是主方向
![[Pasted image 20241012164326.png#lcenter|figure1 图像的方向和模长|450]]
计算方式:
特征点描述
以特征点为中心,取16 * 16 的窗口,方向为主方向。在计算特征描述子时,将窗口中的像素旋转到这个方向,使描述子具有旋转不变性。
将 16×16 的窗口划分为 16 个4×4 的子区域,每个小块独立处理。
求取每个像素的梯度模长与方向。
每个 4×4 的小块用一个 8-bin 的方向直方图 来统计梯度方向。
- 将方向角度(0°–360°)划分为 8 个区间(每个区间 45°)。
- 根据像素的梯度方向和模长,对应累加到直方图中。
- 如果像素方向夹角在两个区间之间,则按比例分配。
16 个小块的直方图(每个 4×4 小块有 8 个方向 bin)组合成一个向量:这样一个关键点就可以构成 128 维的 sift 的特征向量。
SURF (Speeded Up Robust Features)
先验知识
SIFT: 使用 DOG(高斯差分)近似 LOG(拉普算子) 建立尺度空间
SURF:使用 Box Filter (盒子滤波器) 近似 LOG
Hessian Matrix 9 (海森矩阵):
高斯滤波构建 Hessian 矩阵
- 对图像进行高斯滤波 G * I,构建 Hessian 矩阵。
- Lxx, Lyy:分别是图像在 x 和 y 方向的二阶导数。
- Lxy=Lyx:是图像在 x 和 y 方向的混合二阶导数。
当Hessian矩阵的判别式取得局部极大值时,判定当前点是比周围邻域内其他点更亮或更暗的点,由此来定位关键点的位置。
- 采用 box filter 替代高斯差分
为什么盒式滤波器会提高运算速度呢?
使用了积分图, 对图像的滤波转化为计算图像上不同区域像素和的加减运算问题。
构建尺度空间
SURF算法不需要通过降采样的方式得到不同尺寸大小的图像建立金字塔,而是借助于盒子滤波和积分图像,不断增大盒子滤波模板,通过积分图快速计算盒子滤波的响应图像。然后在响应图像上采用非极大值抑制,检测不同尺度的特征点。SIFT算法的LoG金字塔和SURF算法的近似DoH金字塔如下图所示:
关键点定位
同 sift 算法
主方向的确定
统计特征点圆形邻域内 Haar 小波特征。以特征点为中心,计算半径为6s(s 为特征点所在的尺度值)的圆形邻域内的点在 x, y 方向上的 Haar 小波响应。
计算出影像在 Harr 小波的 x, y 方向的响应值后,对两个值进行因子为 2 s 的高斯加权。加权后的值分别表示在水平和垂直方向的方向分量。
Harr 特征值反应了灰度的变化情况,主方向就是描述灰度变化特别强烈的方向。
以特征点为中心,张角为 60°的扇形滑动,计算窗口内的 Harr 小波响应值 DX, DY, 的累加。在所有的向量中最长的,即为该特征点的方向。
特征描述
在特征点的一个方向区域内进行,大小 20* 20 s.也是划分为 4* 4 的小块,每个小块是 5* 5s,
统计每个子块内的像素点 Haar 模板沿主方向和垂直方向上的相响应,并统计响应值。
对不同模式图像下的描述子:
下图是用SURF进行特征点匹配的实验结果
Fast(不具有尺度不变性和方向不变性)
方法
若某像素与附近邻域内足够多的像素点相差较大,则为像素点。
步骤
- 海选
- 筛选
- [I] 对于海选的改进:
- [&] step 1:
- [*] step 2:
- [!] step 3:
- 当有连续的 N 个像素值,大于或小于这个阈值时,则为候选点。
- 根据 N 的不同,可以分为 FAST 9 ,12,16
- [#] 采用 NMS, 利用点 p 与他 16 个像素点的绝对偏差的和与其他特征点比较。较小的则会被删除。
ORB
- 尺度不变性:利用图像金字塔解决
- 旋转不变性:可以用质心标定方向解决
- [!] 尺度不变性:
- [!] 旋转不变性: (灰度质心法)
找到图像块的质心
连接图像块的质心与几何中心,得到一个方向向量。这就是特征点的方向。
**几何中心的计算**:
连接质心与几何中心
**方向向量归一化**
BRIEF 特征点描述子
- 作用 :对已经得到的特征点进行描述,是一种二进制编码的描述子,舍弃了利用灰度直方图描述方法,采用二进制,位异或运算。
[!info]
FAST 改善了特征点的速度问题,BRIEF 解决了空间冗余的问题
- 方法:与周围的像素值进行比较,得到的结果是二进制。
-
高斯滤波
-
以特征点为中心,取 S* S 的窗口,随机选取一对点,进行比较像素值,再进行赋值。
- (在这个过程中比较的是 像素值,而如果图像是灰度图,这些像素值就是灰度值。如果是彩色图像,具体是比较 RGB 还是灰度值,要看描述符的具体实现方式。不过通常为了简化计算,会先将彩色图像转换为灰度图,从而直接比较灰度值。)
- (在这个过程中比较的是 像素值,而如果图像是灰度图,这些像素值就是灰度值。如果是彩色图像,具体是比较 RGB 还是灰度值,要看描述符的具体实现方式。不过通常为了简化计算,会先将彩色图像转换为灰度图,从而直接比较灰度值。)
-
在窗口中随机选取N对随机点,重复步骤2的二进制赋值,形成一个二进制编码,这个编码就是对特征点的描述,即特征描述子。(一般N=256)
- 这个特征可以由n位二进制测试向量表示,BRIEF描述子
-
随机特征对的选取
-
改进 BRIEF 描述子(添加旋转不变性)
根据特征点的方向角,构建一个旋转矩阵
N 对采样点
两者相乘,得到改进后的:
特征匹配技术
思路
对原图像和目标图像进行特征点检测,特征点描述,构建特征点集,然后进行特征点匹配,最后进行纠正。
特征匹配技术
- 暴力匹配
- 对左图中的每个特征点,计算他和右图中所有的特征点的相似程度,取相似程度最大的作为匹配点。
- 计算复杂度高,误差大
- 握手匹配
- 在暴力匹配基础上,又从右图向左图计算。
- 快速近似,最近邻匹配
- 最近邻距离与次近邻距离的比小于一定值。
相似性的量化
- 平方差和(SSD)。直接衡量两个图像区域间不相似性的方法,但容易受光照变化的影响。
- SSD 越小,相似性越高。
- 零均值归一化互相关(NCC)
- 为了减轻光照变化对相似性计算的影响,使用 NCC,可以归一化像素值,使其与均值和标准差无关。
- NCC 接近于 1,高度相似
- NCC 接近于-1,表示连个区域高度不相似
- NCC 接近于 0,表示两个区域无关