【问题标题】:How to blend properly when stitching images in matlab?在matlab中拼接图像时如何正确混合?
【发布时间】:2014-05-13 17:27:45
【问题描述】:

我正在尝试在 matlab 中拼接图像,但得到难看的重叠线。如何正确混合图像?目前我正在使用下面的代码,但它混合了太多(特别是建筑窗户与鬼影混合,黑色建筑也是如此)。

%Tx - how much to move picture by x, Ty - by y (homography)
cropX = size(imcyl2, 2); %second image x size
xdimfirst = size(imcyl1, 2); %first image x size
ydimfirst = size(imcyl1, 1); %first image y size
xoverlap = xdimfirst - Tx;
newImg = imcyl1;
for y = 1:size(imcyl2, 1)
   for x = 1:cropX
       if ((Tx+x) > 0 && (Ty+y) >0)
       % if we are in the overlap region, then we need to blend.
               scale1 = (xoverlap - x) / xoverlap;
               scale2 = x / xoverlap;
               r = scale1 * imcyl1(Ty + y, Tx + x, 1) + scale2 * imcyl2(y, x, 1);
               g = scale1 * imcyl1(Ty + y, Tx + x, 2) + scale2 * imcyl2(y, x, 2);
               b = scale1 * imcyl1(Ty + y, Tx + x, 3) + scale2 * imcyl2(y, x, 3);
               newImg(Ty + y, Tx + x, :) = [r g b];
         end
    end
end

【问题讨论】:

  • 图像中的伪影是由于您的全景图略微未对齐。它们不是由于您的混合代码。这是在重叠图像之间创建线性加权混合。即使在没有混合的顶部图像中,在黑色建筑物的未对齐顶部和另一座大型建筑物上略微未对齐的十字架上,您也可以看到这种未对齐。也许您需要对图像进行一些捆绑调整,以全局优化这些小错误。
  • 我想我只是希望混合区域离线大约 10px,也许它会对我有所帮助。现在它正在混合所有重叠区域
  • 这将减少除边界之外的模糊,并且由于对齐错误,您仍然会看到伪影。更好的是改进对齐方式。

标签: matlab overlap blending panoramas image-stitching


【解决方案1】:

首先尝试使用最好的相机技术(三脚架和旋转云台等)。更好的数据 = 更好的结果。

我的下一个最佳选择是逐渐减少混合。比如:

blendfactor = dist_to_border^2;

或者一些指数的东西。 如果这是一次性的事情,我会选择像 gimp 这样的摄影软件。如果严重的话,可以尝试通过pattern search来估计其他帧的像素位置。

【讨论】:

    【解决方案2】:

    如果您仍在解决这个问题,我相信您需要做的是重叠图像之间的颜色校正步骤。例如,最左侧图像的蓝天和左侧第二个图像应该具有相同的蓝色值。显然,它们不是由于角落处的相机渐晕。通过确保两个蓝色值彼此相距较近,您将获得更好的混合效果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-29
      • 1970-01-01
      • 2015-01-22
      • 1970-01-01
      • 2020-07-10
      相关资源
      最近更新 更多