news 2026/7/6 16:38:04

从 Harris 到 SIFT#

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从 Harris 到 SIFT#

在上一篇中,我们详细介绍了 Harris 角点探测,其首次系统性地用结构张量来描述局部特征。
但其终究只是一个“原始基座”,一个很明显的问题是:

无人机从不同高度拍摄同一片农田,或者用不同分辨率传感器对同一区域成像时,同一个角点为什么就检测不到了?

这就是 Harris 最核心的问题:没有尺度不变性。
Harris 的窗口大小是固定的,比如 7×7。当我们把图像放大,原来 7×7 窗口里的细节就变了:一个角点在原图里看是角点,放大后可能变成了平滑的边缘,或者变成了更复杂的纹理。
尺度变了,特征就变了。

除此之外,Harris 还有另一个问题:

Harris 能告诉你"这里有个角点",但说不出来"这个角点长什么样",因此也就没法在另一张图像中找到同一个角点。

换句话说,它只有检测器,没有描述子,而拼接算法的核心步骤之一就是跨图像匹配同一特征。

因此,在 Harris 诞生后的十几年里,计算机视觉领域一直在寻找一种更好的局部特征,于是,而 1999 年 Lowe 提出了SIFT(Scale-Invariant Feature Transform)。其核心贡献在于:

它同时解决了"尺度不变性"和"特征描述"两个问题,并且对旋转、光照、仿射变化都有很强的鲁棒性。

2004 年,其正式发表定稿版论文 Distinctive Image Features from Scale-Invariant Keypoints,即使在今天 DL 方法盛行的背景下,SIFT 在图像拼接、SLAM、三维重建等领域依然被广泛使用。

2. 尺度空间理论(Scale Space Theory)#

展开 SIFT 具体步骤前的一个基础问题是:

"尺度不变"这件事到底怎么做到的?

直观上,一个物体在不同尺度下看起来是不同的。远处的树是一个轮廓,近处的树能看到每一片叶子。
以此出发,问题就是:

能不能构造一种表示方法,让同一个特征在不同尺度下都能被稳定识别?

这就引出了尺度空间理论,其核心想法很简单:

引入一个连续参数 (尺度参数),通过逐渐模糊图像,模拟出"从近到远、从细节到轮廓"的视觉变化过程。

模糊的程度由 控制: 越小,保留的细节越多; 越大,图像越模糊,只剩大尺度结构。

而实现这一模糊过程最常用的工具还是上一篇里见过的高斯卷积

其中:

概括来说:高斯核是唯一能保证"尺度空间生成"的线性核。列举几个它的重要性质:

  1. 半群性质:先用 模糊,再用 模糊,等价于直接用 模糊。这保证了不同尺度的变换可以叠加。
  2. 非增局部极值:高斯模糊不会产生新的局部极值,只会消除已有的极值。这保证了"特征随尺度变化而消失"是单调的,不会凭空冒出新特征。
  3. 各向同性:高斯核是圆对称的,不会引入方向偏好。

但其实本质上还是加权平均,来看一个例子:对于当前中心点 和偏移点 的权重比例:

代几个值如下:

含义
几乎只有中心像素参与计算
邻近区域开始产生影响
更大范围像素参与平均
远处像素与中心像素影响接近

显然, 随着 增大,中心权重不断下降,说明像素值不再主要由自身决定,而是越来越多地受到周围更大范围像素的影响,因此图像会变得越来越模糊。


总结来说就是:

随着 增大,高斯核的权重分布会逐渐变得平坦。更大范围内的像素都会参与平均,从而逐步“抹平”图像细节,只保留较大的结构轮廓。

这样,我们就能模拟出一个特征在不同分辨率,不同距离下的视觉效果。
尺度空间理论还有更多细节,之后遇到再展开。

3. 从 Harris 的角点到 SIFT 的尺度特征#

现在我们知道了尺度空间的概念,那一个很容易得到的想法就是:

Harris 已经能检测角点了,SIFT 是不是直接把 Harris 搬到尺度空间里,对同一张图的多个尺度空间内检测到的角点进行分析处理来获得尺度不变性?

实际上,这种思路确实存在,例如后来的 Harris-Laplace ,就是在多尺度下运行 Harris 检测器,但其更像是一种“遍历”,并没有较根本地解决尺度不变性问题。

展开来说,由于不进行尺度空间的相关操作,Harris 输出实际上只是特征点坐标:。
而一个角点无论尺度如何变化,Harris 都可能给出较强响应。

那么问题来了:

哪一个尺度才是真正对应这个结构的尺度?或者说哪个尺度才是描述这个角点的最优尺度?

就像拍照时调整镜头焦距一样。焦距太近时,只能看到树叶的纹理;焦距太远时,整棵树又缩成一个轮廓。只有在某个合适的观察尺度下,目标结构才会呈现出最稳定、最容易识别的形态。

因此,为了真正获得尺度不变性,SIFT 的思路是这样的:

找到某个局部结构最自然、最稳定的观察尺度。只有确定了这个尺度,后续才能在与尺度相匹配的邻域内构造特征描述,从而实现不同分辨率图像之间的稳定匹配。

最终,SIFT 在这一环节的输出变成了:。
这里的 不是人为指定的参数,而是需要由算法自动发现的特征属性。是特征最稳定的尺度。


现在就到了下一个问题:

如何在尺度空间中,自动找到每个局部结构对应的最佳尺度 ?

4. 高斯差分 DoG#

我们已经知道:尺度不变性的关键在于找到局部结构最稳定的观察尺度。

现在同样对比来看:

Harris 本来就能检测特征点,为什么不直接用 Harris 在尺度空间里的最大响应值作为最佳尺度?

问题出在 Harris 所依赖的本质信息上,简单来说就是:最大相应值并不代表最优尺度,二者的语义不是对应的。

回顾结构张量:

其中:

全部来自图像的一阶导数,代表亮度变化有多剧烈。检测的是梯度能量聚集的位置。
如果尺度变化,那么 和 都会变化。最终响应值 也会变化。
问题是,这个变化没有一个统一规律。即使在多个尺度下运行 Harris 并选取响应最大的结果,也不能保证找到结构真正对应的最佳尺度。

因此,我们需要一个具有明确尺度意义响应的检测器。

4.1 高斯拉普拉斯 LoG#

理论证明,高斯拉普拉斯(Laplacian of Gaussian,LoG)恰好具备这样的性质,其过程如下:
首先对图像进行我们上面提到的高斯平滑:

然后计算拉普拉斯算子,即在各坐标方向的二阶偏导和

合起来就是:

这是比较理论的步骤,实际计算中,会先对高斯函数求二阶导得到 LoG 核后截断,只对原图像做一次卷积得到响应值:

两者等价,而在真正应用时,还会加入一步尺度归一化

这是因为二阶导天然会随着尺度增大而衰减,例如比如同一个位置:

尺度LoG
50
20
5

即使结构完全一样,响应也会因为模糊越来越强而变小,这样我们根本没法比较不同尺度。
尺度空间理论证明:对于 阶导数,应乘 进行归一化。

这便是 LoG 在理论上的完整步骤,现在再来看看原理。

4.2 为什么 LoG 响应峰值对应最优尺度?#

LoG 本质上是对高斯平滑后的图像计算二阶导数,而二阶导数描述的并不是亮度大小,而是图像灰度变化本身的变化速度,也就是曲率
因此 LoG 本质上是在找灰度变化最剧烈的局部特征,现在再联系到尺度:

假设图像中存在一个亮圆斑,我们现在在其中心使用一个很小的 LoG:

按照惯例,其对应检测器尺寸为:

如果这个亮斑的尺寸很大,那么检测器只能看到局部区域,看不到亮斑边缘,此时检测器内部几乎全是亮区域,中心与周围差异不大。因此响应很弱:

继续增大尺度:

LoG 检测器同样变大,开始覆盖整个圆斑结构。
而 LoG 核具有典型的“墨西哥帽”结构:中心权重为正,外围环形区域权重为负

此时中心正权重区域恰好覆盖亮斑主体。得到大量正贡献。
而外围负权重区域落在边缘背景,尺度合适的情况下,背景接近 0,负贡献就会很小。此时 达到极大值。

而如果尺度继续增大,外围负环就会开始覆盖大量亮区域和背景,正负贡献互相抵消,响应就会开始下降。
因此同一个位置就会在不同尺度下出现不同响应:

尺度LoG响应
18
225
365
4120
595
660
720

因此,LoG 值其实反应的是在当前尺度下,目标与背景之间的对比结构是否最明显。

这里很容易有这一个问题:

LoG 好像只是不断换一个更大的检测器去扫描图像,那为什么不直接遍历检测器尺寸,反而要依靠 呢?

但这其实是搞错了主角,截断 LoG 的尺寸只是因为高斯核在 外无限接近 0,我们真正是在遍历 ,在不同的模糊程度下,去找到这个位置的局部结构和背景对比最明显的尺度。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/6 16:36:58

Android备份提取器深度调优:实战性能优化配置指南

Android备份提取器深度调优:实战性能优化配置指南 【免费下载链接】android-backup-extractor Android backup extractor 项目地址: https://gitcode.com/gh_mirrors/an/android-backup-extractor Android备份提取器(Android-backup-extractor&am…

作者头像 李华
网站建设 2026/7/6 16:35:38

告别存档锁:用开源工具解放你的艾尔登法环游戏体验

告别存档锁:用开源工具解放你的艾尔登法环游戏体验 【免费下载链接】ER-Save-Editor Elden Ring Save Editor. Compatible with PC and Playstation saves. 项目地址: https://gitcode.com/GitHub_Trending/er/ER-Save-Editor 还记得那个令人沮丧的瞬间吗&am…

作者头像 李华
网站建设 2026/7/6 16:32:04

终极GTA V游戏增强解决方案:YimMenu完整使用指南

终极GTA V游戏增强解决方案:YimMenu完整使用指南 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/YimMenu …

作者头像 李华
网站建设 2026/7/6 16:27:01

快速集成RxjavaRetrofitDemo:3步实现豆瓣电影API请求功能

快速集成RxjavaRetrofitDemo:3步实现豆瓣电影API请求功能 【免费下载链接】RxjavaRetrofitDemo A demo show how to use Retrofit with Rxjava 项目地址: https://gitcode.com/gh_mirrors/rx/RxjavaRetrofitDemo 想要在Android应用中快速实现网络请求功能吗&…

作者头像 李华
网站建设 2026/7/6 16:26:19

C/S架构中自签名证书的完整实践指南:从原理到部署

1. 项目概述:为什么C/S架构需要自签名证书?在开发一个内部使用的客户端/服务器(C/S)应用时,比如一个公司内部的监控系统、一个跨部门的数据同步工具,或者一个尚未对外发布的软件更新服务,我们常…

作者头像 李华