Image Registration
了解图像配准如何通过特征或强度匹配、几何变换和验证来对齐图像,应用于卫星变化检测、医学成像和计算机视觉。
图像配准是将两张或多张图像对齐的过程,使场景中的同一位置对应相同坐标。想象一下,将六月拍摄的卫星图像叠加到一月拍摄的图像上:如果相机角度或位置发生了变化,道路看起来可能会移动,尽管它实际上并未移动。配准会在计算机视觉系统比较图像或合并图像信息之前,校正这种几何错位。
图像配准的工作原理#
配准工作流会指定一张图像作为固定图像,用于定义目标坐标系;另一张则作为移动图像,需要与固定图像对齐。系统会估计空间变换,然后对移动图像重新采样,即计算图像在新位置上的像素值。对齐结果可以通过叠加图像来检查:稳定的结构应当彼此重合,而真实变化仍应清晰可见。ImageJ 配准概览展示了对应点、变换和对齐图像之间的关系。
估计变换有两种常见方法。基于特征的配准会在两张图像中识别角点等显著位置,并匹配代表同一地点的点。随后,它会根据这些对应点拟合变换,并尽可能剔除错误匹配;OpenCV 的特征匹配和单应性指南展示了这一过程。基于强度的配准则会调整变换,以提高图像像素值之间的相似度度量。这个度量和称为优化器的搜索过程,是基于强度的配准工作流的核心。
选择变换#
合适的变换取决于图像为何存在差异。平移可以处理简单的水平或垂直位移。刚性变换还允许旋转,同时保持距离不变。仿射配准还可以处理缩放和倾斜,但它会对整张图像应用同一个变换。当匹配场景近似平面时,投影变换(也称为单应性)可以处理透视差异。MathWorks 对几何变换类型的说明通过直观示例展示了这些类型之间的区别。
某些场景需要可变形配准,允许不同区域以不同幅度移动,例如不同扫描中的解剖结构发生形变时。这种灵活性可以改善局部对齐,但不合理的形变可能会掩盖真实差异。因此,SimpleITK 的配准框架等医学图像工具会明确指定变换、相似度度量、优化器和插值方法。
配准与相关视觉任务#
配准关注的是共享坐标系,而不仅仅是视觉上的相似。图像匹配会查找对应的视觉内容,并可能提供配准所需的点对;配准则更进一步,估计并应用空间对齐。关键点可以用作这些对应点,不过,对于对齐静止背景而言,移动的人或车辆上的点通常不是理想的锚点。
同样,光流会估计连续帧之间的表观运动。如scikit-image 的光流配准示例所示,光流的运动估计可以帮助配准帧,但光流本身并不能保证对齐准确。目标跟踪的目标不同:它要持续保持目标随时间变化的身份。跟踪器可能会利用背景运动估计,避免将相机运动误认为目标运动。
在 AI 应用中的重要性#
在卫星变化检测中,分析人员可能会比较间隔数月拍摄的农田图像,以识别新开垦的区域。在变化检测模型进行比较之前,配准会将田地、道路和边界放置在相同的像素位置。否则,田地边界的偏移可能会被误认为土地覆盖变化。对齐后仍需谨慎处理季节、光照或传感器类型的差异。这是卫星图像分析中常见的问题。
在医学图像分析中,临床医生可能会比较患者不同就诊时的扫描结果,以评估病灶是否发生变化。对齐扫描图像后,更容易比较相同的解剖区域,或将图像输入分割模型。由于解剖结构可能发生形变,且不同成像方法可能产生不同的亮度模式,良好的配准必须保留具有临床意义的差异,而不是强行让所有区域看起来一样。
实用配准与验证#
从能够合理解释错位的最简单变换开始。确认图像之间有足够的可见内容,考虑分辨率差异,并在多个位置检查对齐情况,而不只是检查匹配度最高的位置。如果后续需要将预测结果或标注映射回原始图像,请保存估计出的变换。OpenCV 的几何变换指南介绍了图像变形如何放置经过变换的像素。
下面这个自包含示例使用scikit-image 相位相关工作流来估计平移。使用 pip install scikit-image scipy 安装其依赖项。
import numpy as np
from scipy.ndimage import shift
from skimage import data
from skimage.io import imsave
from skimage.registration import phase_cross_correlation
# 创建一张参考图像,并生成同一图像的平移副本。
fixed = data.camera()
moving = np.roll(fixed, shift=(12, -8), axis=(0, 1))
# 估计将移动图像与固定图像对齐所需的位移。
estimated_shift, _, _ = phase_cross_correlation(fixed, moving)
aligned = shift(moving, estimated_shift, order=0, mode="grid-wrap")
imsave("registered.png", aligned)
print(estimated_shift)打印出的数值表示校正量,而 registered.png 显示对齐后的图像。这是一个仅处理平移的示例,不涉及旋转、形变或来自不同传感器的图像。在移动相机的视频处理流水线中,Ultralytics YOLO 跟踪是一个相关应用:其相机运动补偿会估计帧间变换,以帮助保持被跟踪目标位置的一致性。该跟踪器操作用于跨帧关联目标,而不是生成通用的配准图像。









