【问题标题】:Alpha Blending to remove seam in an imageAlpha Blending 去除图像中的接缝
【发布时间】:2013-01-09 07:50:49
【问题描述】:

我已经缝合了两个图像,但在最终图像中有一个可见的接缝。我正在尝试使用 Alpha 混合 来移除该接缝。我知道使用 cvAddweight() 函数应用 Alpha 混合,但在此函数参数是两个图像,alphabetagamma 和目的地。我正在服用gamma=0alpha=0.6beta=0.4。作为我的代码的最后一部分,我的两个输入源图像和目标图像是什么->

IplImage* WarpImg = cvCreateImage
(cvSize(T1Img->width*2, T1Img->height*2), T1Img->depth, T1Img- >nChannels); 
cvWarpPerspective(T1Img, WarpImg, &mxH);
cvSetImageROI(WarpImg, cvRect(0, 0, T2Img->width, T2Img->height));
cvCopy(T2Img, WarpImg);
cvResetImageROI(WarpImg);
cvNamedWindow("WarpImg Img",1);
cvShowImage("WarpImg Img", WarpImg);
cvSaveImage("save.jpg",WarpImg);

我的最终图片是

【问题讨论】:

  • 您似乎没有获得正确的扭曲矩阵,请看前面的桌子,在右边的图像中桌子已经完成,在左边的图像中出现瓶子悬垂在地板上。我认为您应该研究获得扭曲矩阵 mxH 的方法。
  • @Chris 好的。我会检查一下,但现在我主要关心的是去除接缝。无论如何,谢谢。

标签: visual-c++ image-processing opencv computer-vision


【解决方案1】:

我不得不承认,我不认为 alpha blending 是你的答案。由于照明/曝光的差异,似乎存在。 Alpha 混合是一种通过将两个图像颜色加权平均来使一个图像通过另一个图像可见的方法。您的左右图像以黑色为背景。如果您只是简单地进行 alpha 混合,那么您实际上将使用黑色背景对图像进行加权。最终的效果将只是使两个图像变暗。

2 种潜在的其他方法可能是在外观上查看两张图像的平均颜色,然后将其中一张向上或向下调整 50% 的亮度差异,将另一张调整为另外 50%(一个向上另一个下降,50% 使得整体亮度跳跃只有 50% 的差异)。

另一个可能会使用更复杂的图像直方图技术,您可以尝试将一侧图像的直方图扩大或缩小到另一侧,并对齐它们,并通过新的直方图。

【讨论】:

    【解决方案2】:

    金字塔/多波段混​​合应该为您的场景做得足够好。尝试混合:http://enblend.sourceforge.net

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-10
      • 2014-12-22
      • 1970-01-01
      • 1970-01-01
      • 2021-02-10
      • 2014-11-28
      • 1970-01-01
      相关资源
      最近更新 更多