当前位置: 首页 > news >正文

RootSIFT:改动最小,收益最大#

IFT 在得到描述子以后,会进行 L2 归一化:

这样可以减弱整体亮度变化带来的影响。

但研究者发现,仅使用 L2 归一化仍然存在一个问题:
假设某个方向上的梯度特别强,欧氏距离会更多关注最大的那个数值,80 与 79 的差异往往比 3 与 1 的差异更加影响最终距离。
但对于局部特征来说,那些较小的梯度方向,同样可能包含着重要的信息。

于是,RootSIFT 把最后一步改成了少见的 L1 归一化后再开平方:

整个改动,就只有这一行公式,但它在多个公开数据集上,都获得了约 10%~20% 的匹配精度提升。

其逻辑可以这么理解:

RootSIFT 会削弱那些特别大的梯度响应,让原本较弱的方向拥有更多的话语权,这样,描述子的各个维度能够更加均衡地参与匹配。

最终,RootSIFT 几乎不增加任何额外计算,却能够显著提升匹配效果,因此被认为是"性价比最高"的 SIFT 改进之一,在许多工程实践中已经成为默认配置。

3.2 PCA-SIFT:更精简的描述子#

除了提高精度,还有另一部分研究者提出了一个问题:

128 维描述子中是否存在冗余?

还是图像数据的偏置:相邻方向之间、相邻网格之间,本身就存在较强相关性。
因此,128 维之间并不是完全独立的,能不能把这些重复的信息压缩掉?

04 年,论文 PCA-SIFT: A More Distinctive Representation for Local Image Descriptors 提出了PCA-SIFT,显然,其关键技术是我们之前展开过的 PCA。

但其改进了 PCA 的使用思路,做法是这样的:

对大量训练图像提取 SIFT 描述子组成矩阵进行 PCA,取最终结果中固定维度的主成分组成投影矩阵,对之后新的描述子直接使用该投影矩阵降维。

这么做是因为如果两张图各自 PCA,那么同一个点投影以后就在不同坐标系,描述子无法比较,所以必须都用同一个 PCA。

直观来看这样不仅减少了存储空间,也提高了匹配速度。
但由于 PCA 投影矩阵需要提前训练,让其泛用性较低:自然图像训练得到的投影矩阵,未必适用于遥感图像;可见光训练得到的模型,也未必适用于高光谱图像。

因此,PCA-SIFT 虽然理论出色,但实际应用远没有 RootSIFT 广泛。

3.3 GLOH:重新设计描述子#

此外,还有一部分工作,则没有选择修改归一化方式,也没有选择降维,而是重新设计描述子的空间结构。

其中比较具有代表性的是 05 年的论文 **A Performance Evaluation of Local Descriptors 提出的GLOH(Gradient Location and Orientation Histogram),其采用极坐标划分同心圆后统计方向的方式生成描述子:

这种结构更加符合图像中局部区域的几何分布,因此理论上能够表达更多空间信息。

但这也意味着更复杂的计算,而且最终GLOH 仍然需要利用 PCA 再次降到 128 维。
虽然实验结果表明,它的描述能力略优于 SIFT,但是提升并不算明显,而实现复杂度却增加了不少。
因此,这类方法更多还是停留在学术研究中。

4. 第三条路线:让 SIFT 适应更多场景#

经过前面的改进,SIFT 的速度越来越快,描述子也越来越成熟。

但在不断实验中,研究者们发现 SIFT 还存在一点局限:它的不变性其实是有限的,当两张图像之间存在较大的拍摄角度变化,比如无人机俯视拍摄或者手持相机斜拍建筑时,SIFT 的匹配性能会明显下降。

因为这些情况下,同一个物体在图像中的形状已经发生了明显拉伸。
这种变化已经不再是简单的旋转或缩放,而属于仿射变换(Affine Transformation)的范畴了:

一种介于刚体变换(只允许平移和旋转,保持长度与角度)和更一般的投影变换之间的几何模型,能够很好地描述许多实际拍摄场景中的局部形变,是计算机视觉中应用最广泛的变换模型之一。

而对这类情况的处理思路其实我们已经见过很多次了:

既然 SIFT 无法直接适应这种变化,那就想办法主动"制造"这些变化让模型提前适应。

ASIFT,就是这一思路下具有代表性的工作。

4.1 ASIFT:模拟仿射变换#

09 年,论文 ASIFT: A New Framework for Fully Affine Invariant Image Comparison 提出了ASIFT,相比上面各种改进,它的思路显得非常简单,连 SIFT 本身都几乎没有修改,它只是增加了一步:

http://www.jsqmd.com/news/1133797/

相关文章:

  • iOS平台JUnit测试实战:J2ObjC跨平台测试框架原理与配置指南
  • 基于Docker与Kubernetes的WebdriverIO自动化测试环境容器化实践
  • 手机号码定位神器:3分钟快速查询归属地完整指南
  • Wireshark+Fiddler手机抓包全攻略:从环境搭建到HTTPS解密与深度分析
  • PointPillars 3D检测实战:KITTI数据集训练与评估,mAP达73.3%(附PyTorch代码)
  • 【复现】基于改进扩散模型的高海拔地区新能源高波动出力场景生成方法(Python代码实现)
  • AI模型测试:从确定性断言到统计判定的工程实践
  • 图文验证码系统设计:从原理到Spring Boot + Redis实战实现
  • 【操作系统】磁盘调度算法(FCFS/SSTF/SCAN/C-SCAN)
  • 语法全对,物理全错:2026年最危险的AI幻觉,正在污染你的仿真库
  • Android应用安全加固实战:代码混淆、资源加密、SO加固与完整性校验
  • Unity游戏汉化终极指南:XUnity Auto Translator让你畅玩全球游戏
  • GPT-5.5新特性对开源搜索引擎有什么冲击?GPT-5.5新特性对开源搜索引擎的冲击与机遇
  • 从CNN到Transformer:五大神经网络架构的本质与选型指南
  • Python爬虫如何绕过TLS指纹检测?curl_cffi实战指南
  • 基于智普清言与LangChain构建私有化AI知识库:从架构设计到部署实践
  • 基于MCP协议为AI编程助手集成逆向分析能力:从静态反编译到动态Hook的完整实践
  • 有个人似乎想要破解我的VIP功能?-----软件故障
  • iOS 17+隐私合规实战:从Reachability案例解析PrivacyInfo.xcprivacy配置
  • 微信小程序真机网络请求失败(600001)排查指南:从域名配置到抓包实战
  • Java安全随机数生成:从Random漏洞到SecureRandom实战
  • 寄生感知共质心布局生成:集成布线优化的 3 步单元电容尺寸最小化方法
  • 终极Unity游戏汉化指南:XUnity Auto Translator让你轻松玩转外语游戏
  • VOT挑战赛 EAO 指标详解:从数学公式到Python代码实现5步拆解
  • 【复现】配电网对分布式电源和电动汽车的承载力评估及提升方法综述(Matlab代码实现)
  • Cerast 智能:可查找域名暴露路径与配置错误,支持子字符串搜索
  • WebPack与JQuery安全检测:从打包到拆包的前端攻防实战
  • 开源热力图实战:基于OWA的用户点击行为可视化与深度分析
  • 【复现】新型电力系统下多分布式电源接入配电网承载力评估方法研究(Matlab代码实现)
  • 终极英雄联盟辅助神器:Seraphine智能战绩查询与自动化工具完整指南