Visual c++ Alpha混合以移除图像中的接缝

Visual c++ Alpha混合以移除图像中的接缝,visual-c++,image-processing,opencv,computer-vision,Visual C++,Image Processing,Opencv,Computer Vision,我已经缝合了两个图像,但在最后的图像中有一个可见的接缝。我正在尝试使用Alpha混合删除该接缝。我知道Alpha混合是使用cvAddweight()函数应用的,但在这个函数中,函数参数是两个图像,Alpha,beta,gamma和Destination。我正在服用gamma=0,alpha=0.6,beta=0.4。作为代码的最后一部分,我的两个输入源图像和目标图像将是什么 IplImage* WarpImg = cvCreateImage (cvSize(T1Img->width*2,

我已经缝合了两个图像,但在最后的图像中有一个可见的接缝。我正在尝试使用Alpha混合删除该接缝。我知道Alpha混合是使用
cvAddweight()
函数应用的,但在这个函数中,函数参数是两个图像,Alphabetagamma和Destination。我正在服用
gamma=0
alpha=0.6
beta=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);

我的最后一张照片是

我必须承认,我不认为阿尔法混合是你的答案。由于光照/曝光的差异,似乎存在差异。Alpha混合是一种通过加权平均两幅图像的颜色使一幅图像通过另一幅图像可见的方法。您的右侧和左侧图像以黑色为背景。如果你只是简单的alpha混合,那么你基本上要用黑色背景来加权你的图像。结果就是两幅图像都变暗了

2潜在的其他方法可能是在屏幕上查看两幅图像的平均颜色,将其中一幅图像的亮度差向上或向下调整50%,将另一幅图像的亮度差向上或向下调整50%(一幅图像向上调整,另一幅图像向下调整,50%的图像使整体亮度跳变为亮度差的50%)


另一个可能会使用更复杂的图像直方图技术,您可以尝试将一侧图像的直方图扩大或缩小到另一侧,并对齐它们,然后通过新的直方图重新调整颜色(在本例中为灰度)。

我必须承认,我不认为alpha混合是您的答案。由于光照/曝光的差异,似乎存在差异。Alpha混合是一种通过加权平均两幅图像的颜色使一幅图像通过另一幅图像可见的方法。您的右侧和左侧图像以黑色为背景。如果你只是简单的alpha混合,那么你基本上要用黑色背景来加权你的图像。结果就是两幅图像都变暗了

2潜在的其他方法可能是在屏幕上查看两幅图像的平均颜色,将其中一幅图像的亮度差向上或向下调整50%,将另一幅图像的亮度差向上或向下调整50%(一幅图像向上调整,另一幅图像向下调整,50%的图像使整体亮度跳变为亮度差的50%)


另一种可能会使用更复杂的图像直方图技术,您可以尝试将一侧图像的直方图加宽或缩小到另一侧,并将其对齐,然后通过新的直方图重新调整颜色(在本例中为灰度)。

金字塔/多波段混合应该可以很好地满足您的场景。试试enblend:

金字塔/多波段混合应该可以很好地满足您的场景。试试enblend:

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