合并3个带(r,g,b)图像,相移到1 rgb图像

时间:2015-12-22 21:40:36

标签: opencv image-processing gis qgis

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

问题是,由于3镜头在物理上是分开的,因此它们拍摄的图像不对齐。因此,当我在软件包QGIS中使用命令qdal_merge时,结果看起来很奇怪。我可能还需要调整r,g,b的重量。我将原始的r,g,b图像和我使用qgis生成的输出放在dropbox folder中。

是否有现成的开源工具来进行对齐和合并?如果没有,我怎么能用opencv做?

1 个答案:

答案 0 :(得分:0)

使用像平方距离和(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图像的偏移量w.r.t. blue图片,重新缩放偏移并应用它。进行这种递归多尺度对齐的好处是减少了计算时间并提高了对齐精度(您不知道搜索解决方案(1)的对齐偏移的最佳窗口大小,因此这将更好地工作)。重复此方法以计算greenblue通道的对齐方式,然后将最终结果合并为(1)。
  3. 由于这个问题在计算摄影课程的作业中很常见,我不打算分享任何代码。然而,我已经实现了这两种方法,并对您提供的图像进行了实验。我不知道哪个输入图像是红色的,所以我有两个结果(重新调整以减小文件大小):

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

    RGB result if red:1, green:2, blue:3

    如果IMG_0290_3.tif为红色,IMG_0290_2.tif为绿色且IMG_0290_1.tif为蓝色(这对我来说更合适):<​​/ p>

    RGB result if red:3, green:2, blue:1