文献:Multispectral Snapshot Image Registration Using Learned Cross Spectral Disparity Estimation and a Deep Guided Occlusion Reconstruction Network代码:https://github.com/FAU-LMS/MSIR
1 为什么多光谱需要校准?
因为多光谱的多个波段的采集是分开的,不是同一个镜头采集,所以采集的多个图像之间存在偏差,这个就需要校准。

这里说明下,作者每次采集的是9通道的多光谱图像,然后是以中间粉色的镜头为基准,对其他镜头的图像校准。
2 具体有哪些校准?
1)镜头(相机)校准(tools\Calibration.py)
消除镜头的畸变(让直线还是直线)。
若相机硬件变动(如镜头更换、位置移动、高度变换),需重新校准;定期(如每 3 个月)复检,修正环境因素(如温度)导致的参数漂移。
校准方法:棋盘格,角点计算,计算1次

2)视差估计(disparity)
不同视角中同一物体像素之间的距离称为视差,取决于相机阵列与物体之间的深度。
现实场景是有深度(Depth) 的。当一个物体靠近相机时,不同波段的滤光片由于物理位置的微小错位(Baseline),会从稍微不同的角度观察物体。
这种“稍微不同的角度”在近距离拍摄时会造成像素级的错位。如果不计算视差,直接用固定的校准参数去配准,你会发现近处的物体对不齐,远处的能对齐,或者反之。
假设波段 A 和 波段 B 之间存在物理距离 B ,则根据几何光学公式:
视差(模型预测值):
只要物距 Z发生变化,视差 d 就会随之变化。固定的校准参数无法应对变化的 Z 。
校准和视差估计的区别:

校准是“给相机校准坐标系”,视差是“给图像做动态微调”。两者缺一不可,可用下式表示:
最终对齐映射=静态校准参数(固定偏移)+动态视差补偿(随物体深度变化)
3)扭曲与遮挡检测(warp)
扭曲:
在该文献中,“扭曲”通常指的是反向映射。模型预测出视差图后,需要根据这些位移矢量重新排列像素。
假设参考通道为Iref,目标通道为Itar。视差图d(x,y)告诉我们:参考通道中坐标(x,y) 处的点,在目标通道中的对应坐标是 (x+d,y)。
为了生成对齐后的通道Ialigned采用反向查找:这里要注意:视差值往往不是整数(例如位移了 5.4 个像素):
- 解决方法:代码中使用双线性插值(Bilinear Interpolation)。
- 作用:通过周围四个像素的加权平均,计算出非整数位置的亮度值。这保证了光谱数据在几何变换后的平滑性,避免了锯齿(Aliasing)现象。
遮挡:
- 采样空洞:当视差发生突变(例如从近处物体过渡到远处背景)时,由于像素被向不同方向拉伸,对齐后的图像会出现“裂缝”。
- 物理遮挡(The Shadow Problem):某些区域在波段 A 的视角下可见,但在波段 B 的视角下被前景挡住了。在对齐后的数据立方体中,这些位置实际上是缺失真实光谱信息的。
当图像被扭曲对齐后,由于视角差异,必然会出现遮挡区域。
以下方式标记遮挡掩模(Occlusion Mask):
- 范围检查 (Boundary Check):检查重采样坐标 (x+d,y) 是否超出了原始图像的边界。
- 反向一致性检查(Forward-Backward Consistency):计算从 A 到 B 的视差,再计算从 B 到 A 的视差。如果两者不匹配,说明该点处于遮挡区。
- 几何冲突判定:在扭曲过程中,如果多个像素被映射到同一个目标位置,或者某些位置没有像素映射过来,则标记为遮挡。
扭曲解决了 “准不准” 的问题:确保多光谱曲线是从同一个物理点提取的。
遮挡检测 (Detection) 解决了 “信不信” 的问题:识别出哪些数据是不可信的噪声。
如果没有精确的遮挡检测,修复网络就会尝试在错误的信息上进行模糊处理,导致多光谱图像在物体边缘出现严重的颜色混叠(Color Bleeding)
下图展示的是分层遮挡检测的流程(对应文档中 “遮挡检测” 环节),核心是通过“视差分层 + 逐层标记” 识别图像中的遮挡区域,以下是各元素的含义和流程解释:

1. 顶部 “Disp. D”:视差分层基准
顶部的彩色条代表视差图的分层:视差(Disparity)是 “像素位置偏移量”,数值越大代表物体离相机越近(前景),数值越小代表物体越远(背景);图中把视差分为 3 层:0(蓝色,远 / 背景)、1(青色,中景)、2(黄色,近 / 前景)。
2. 下方 “Itt. 1/2/3”:分层处理的迭代步骤
每一行代表一层视差的处理过程(从前景到背景逐层处理),每行包含 3 个元素:
- L:当前处理的视差层(对应顶部的视差区间);
- W:该层视差对应的像素区域(在图像中的位置);
- O:该层标记出的遮挡区域(被前景挡住的背景像素)。
- 步骤 1:处理前景层(Itt. 1,视差层L²)先处理视差最大的前景层(黄色L²),确定其在图像中的区域W²;此时背景层还未处理,所以O²(该层的遮挡区域)为空。
- 步骤 2:处理中景层(Itt. 2,视差层L¹)处理视差中层(青色L¹),确定其区域W¹;对比前景层W²的区域:如果W¹的部分区域被W²覆盖→这部分就是 “被前景遮挡的中景像素”,标记为O¹(红色箭头指向的区域)。
- 步骤 3:处理背景层(Itt. 3,视差层L⁰)处理视差最小的背景层(蓝色L⁰),确定其区域W⁰;对比前景层W²和中景层W¹的区域:W⁰中被W²/W¹覆盖的部分→标记为O⁰(红色箭头指向的区域)。
4)重建(reconstruction)
重建的目标不是简单的修补,而是在保持光谱精确度的前提下恢复空间纹理。
引导图像 (Guide Image):通常选用空间分辨率最高、噪声最低的参考通道(如中心波段或全色波段)。
输入组合:网络同时接收“带空洞的对齐图”、“遮挡掩模(Mask)”和“引导图像”。
重建 (Reconstruction) 解决了“全不全”的问题:利用深度学习的跨波段推断能力,将缺失的“黑洞”补全为高质量的多光谱数据。
3 训练集和测试集
训练集主要使用了两个经典的多光谱数据库:
- CAVE Dataset: 包含 32 个场景,每个场景有 31 个光谱通道(400nm - 700nm),涵盖了日常生活中的各种物体。
- KAIST Dataset: 提供了更高分辨率和更丰富场景的多光谱图像。
为了让合成数据接近真实相机的拍摄效果,作者对基础数据进行了以下处理(伪光谱模拟):
- 视差模拟 (Parallax Simulation):如果数据集包含深度图,则根据预设的基线(Baseline)计算视差;若无深度图,则生成随机的平滑位移场。
- 几何形变 (Geometric Distortion):随机加入旋转(Rotation)和尺度缩放(Scaling),模拟传感器安装误差。
- 镜头畸变 (Lens Distortion):应用径向畸变模型,使图像边缘产生弯曲。
- 光谱下采样 (Spectral Resampling):根据目标相机的光谱响应曲线(QE),将原始的 31 抽样波段重采样为目标波段。
真值 (Ground Truth) 的定义:
真值标签:
- 视差 GT:生成模拟数据时记录的精确像素位移矩阵。
- 重建 GT:原始的、未经形变处理的、完美对齐的高质量多光谱图像。
测试集:
- 使用实验室自研的快照式多光谱相机拍摄。包含复杂的环境光、物体深度突变(强视差区域)以及真实的传感器噪声。
- 评价方式:由于没有 GT,主要通过视觉观察边缘是否有色散、光谱曲线是否连续,以及在具体任务(如植被分类)中的表现来评估。