一、算法分类
1. 基于特征的方法(Feature-based)
-
经典特征: SIFT、SURF、ORB、AKAZE/KAZE、BRISK
-
深度学习 特征: SuperPoint、SuperGlue、LoFTR、LightGlue、RoMa
-
匹配与估计: FLANN/暴力匹配 → RANSAC → 单应矩阵/基础矩阵
基于特征的方法核心思想是: 不把整张图片交给算法,而是找出图像中的代表性的特征,独一无二的角点或者斑点,再根据这些点的周围生成一个描述子,最后使用这些描述子进行匹配,识别或者三维重建。
SIFT(尺度不变特征变换,1999)------> SURF(opencv编译不好用,但是比SIFT快3-5倍)------>ORB (定向FAST与旋转BRIEF,常常用于slam,参考:https://zhuanlan.zhihu.com/p/1972439177409831202,最主要步骤:1.特征点检测,2.为每个关键点生成二进制描述符,3.Hamming距离匹配描述符,4.使用RANSAC算法剔除误匹配,但是不具有尺度不变性) ------> AKAZE/KAZE(日文"风"之意,用的不多) ------>BRISK (二进制鲁棒不变可缩放关键点,2011),定位是"比SIFT快很多,比ORB更鲁棒的二进制特征"。
SuperPoint(2017,全卷积网络,将特征点检测和描述子生成两大任务统一到一个模型中)------>SuperGlue(2020,开创性地解决了"如何智能地匹配点"的问题,将强大的Transformer注意力机制用于特征匹配)------> LoFTR (半稠密匹配网络,完全跳过了特征点检测步骤,直接在两幅图像的像素级特征上进行匹配) ------> LightGlue(轻量级的SuperGlue) ------> RoMa(Robust Dense Feature Matching,2024,融合了来自预训练基础模型DINOv2的稳健特征与专门设计的卷积网络精细特征 ,逐个像素点匹配。要求非常高的使用这个。)
SuperGlue参考:CVPR 2020, https://github.com/magicleap/SuperGluePretrainedNetwork
LightGlue参考,2023:https://github.com/cvg/LightGlue 视频对齐和图像对齐非常快而且很好用。
RoMa参考,2024:https://github.com/Parskatt/RoMa
匹配的方法:
FLANN/暴力匹配(最简单直接的方法。对于第一张图的每个特征点,计算它与第二张图所有特征点之间的距离(如欧氏距离),取最近的一个作为匹配点。优点是准确(全局最优),缺点是计算量大,图片特征点多时会很慢。)
→ RANSAC (随机抽样一致性算法,相较于最小二乘法拟合错误的离群点,剔除错误匹配,得到一组可靠的内点(不断收集)匹配 )
→ 单应矩阵/基础矩阵(理解成两个平面的投影变换矩阵)
2. 基于区域的方法(Area-based)
这个是基于区域,也就是像素强度的图像对齐方法,不依赖特征点,直接利用图像的灰度/颜色/统计信息来估计集合变换。
-
归一化互相关 (NCC)
-
相位相关 (Phase Correlation)
-
互信息 (Mutual Information) --- 多模态首选
-
ECC (Enhanced Correlation Coefficient)
归一化互相关 (NCC),用一个模板窗口再目标图像上滑动,计算窗口和模板的"相似度",相似度用相关系数度量。
本质上是计算两个窗口的像素值的余弦相似度。(对线性光照变化鲁棒,计算相对简单,但是对于旋转,缩放。非均匀光照敏感)
相位相关:利用傅里叶变换,根据傅里叶的平移特性,两幅图像如果存在平移,那么他们的互功率谱的相位差就是一个线性斜坡,其逆傅里叶变化就会形成峰值。(光照变化和噪声,以及部分遮挡非常鲁棒,对于形变效果差)
互信息 : 衡量两幅图像统计相关性,不依赖于像素值之间的线性关系,而是看一张图像能提供多少关于另一张图像的信息量。
ecc : 可以看作NCC的迭代增强版。ECC直接最大化一种相关性系数(类似于NCC,但针对图像整体而非滑动窗口),并且支持仿射或透视变换的估计。
3. 密集/直接法(Dense/Direct)
-
经典光流: Lucas-Kanade、Farnebäck、Inverse Compositional
-
深度学习光流: RAFT、FlowNet、PWC-Net、GMFlow、FlowFormer、SEA-RAFT
-
DIC(数字图像相关)--- 亚像素精度
4. 深度学习方法
-
STN、VoxelMorph、TransMorph
-
DUSt3R、CroCo、UniMatch
5. 变换模型
|----------------|-----|--------------|
| 变换类型 | 自由度 | 适用场景 |
| 平移 Translation | 2 | 纯平移对齐 |
| 相似 Similarity | 4 | 旋转 + 均匀缩放 |
| 仿射 Affine | 6 | 旋转 + 缩放 + 剪切 |
| 透视 Homography | 8 | 视点变化 |
| 弹性 Deformable | N | 医学 / 形变物体 |
二、应用场景
-
摄影: 全景拼接、HDR、超分辨率、夜景模式
-
视频: 电子防抖、超分、插帧、全景视频
-
医学: 多模态配准、纵向对比、图谱映射、手术导航
-
遥感: 卫星拼接、变化检测、多光谱配准、INSAR
-
自动驾驶: SLAM、多传感器融合、目标跟踪、BEV
-
工业: AOI检测、质量检验、机器人引导
-
文档: 扫描矫正、OCR、印章比对
-
科研: 显微镜拼接、免疫组化、细胞追踪、冷冻电镜
-
AR / VR: 人脸特征点、虚拟试穿、AR定位、3D重建
三、场景选型速查
|-------------|-----------------------------|
| 场景 | 推荐算法 |
| 手机全景 / HDR | 特征匹配 + Homography |
| 视频稳定 | FAST/光流 + 仿射/相似 |
| CT-MRI 配准 | 互信息 + B-spline / VoxelMorph |
| 卫星变化检测 | SIFT + 多项式变换 |
| SLAM / 自动驾驶 | ORB-SLAM / 直接法 + 光流 |
| 文档扫描 | ORB + Homography |
| 冷冻电镜 | 相位相关 / 互相关 |
| 工业 AOI | 模板匹配 / 互相关 |
| 人脸 AR | Face Landmark + 仿射 |
| 低纹理/重复纹理 | LoFTR |
| 多模态图像 | 互信息 / 深度学习 |
| 大视差 | SuperGlue / RoMa |