将具有相移的3个波段(r、g、b)图像合并为1个rgb图像



我有一台定制的相机,它包含3个单独的镜头+按三角形排列的滤镜,所以在每次拍摄中我都会得到3个单波段灰度图像(r,g,b)。我想把它们合并成RGB。

问题是,由于3个透镜在物理上是分开的,因此它们捕获的图像没有对齐。因此,当我在软件包QGIS中使用命令qdal_merge时,结果看起来很奇怪。我可能还需要调整r,g,b的重量。我把原始的r、g、b图像和我使用qgis生成的输出放在这个dropbox文件夹中。

是否有现有的开源工具来进行对齐和合并?如果没有,我如何使用opencv?

使用简单的像素强度距离度量(如距离平方和(SSD))组合R、G、B图像是可能的。一个更好的度量是归一化互相关(NCC)(参见维基百科),它首先将图像矩阵归一化为单位向量,并计算这些单位向量的点积(来自2个输入图像)。NCC值越高,两个输入图像的相似性就越大。但是,NCC相似性可能不足以计算两个高分辨率图像的最佳对齐,例如您提供的TIFF图像。因此,应该使用如下所述的下采样方法以较小的尺寸对齐两个输入图像,然后在重新缩放图像时简单地计算偏移。

因此,对于输入图像redgreenblue,有两种方法可以将它们对齐为单个RGB图像:

  1. blue图像作为参考图像,例如,w.r.t.,我们将其对准redgreen图像。现在考虑redblue图像。在特定窗口内,使用NCC相似性度量计算redblue图像的最佳对准偏移,并找到shifted_red图像。对greenblue图像执行相同操作。现在将shifted_redshifted_greenblue图像组合以获得最终的RGB图像
  2. 对于高分辨率图像,请确定scale_count。递归地,在每一步都将图像大小调整一半,计算red图像相对于blue图像的偏移量,重新缩放偏移量并应用它。进行这种递归多尺度对齐的好处是减少了计算时间,提高了对齐精度(你不知道搜索解(1)的对齐偏移量的最佳窗口大小,因此这将更好地工作)。重复此方法计算greenblue通道的对准,然后如(1)所示组合最终结果

由于这个问题在计算摄影课程的作业中很常见,我不打算分享任何代码。然而,我已经实现了这两种方法,并对您提供的图像进行了实验。我不知道哪个输入图像是红色的,所以我有两个结果(重新缩放以减小文件大小):

如果IMG_0290_1.tif为红色,IMG_0290_2.tif为绿色,IMG_0290_3.tif为蓝色:

如果red:1、green:2、blue:3 ,则RGB结果

如果IMG_0290_3.tif是红色,IMG_0290_2.tif是绿色,IMG_0290_1.tif是蓝色(这对我来说更正确):

如果red:3、green:2、blue:1

,则RGB结果

最新更新