visual-c++ - 阿尔法混合去除图像中的接缝

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

我拼接了两张图片,但在最终图片中有一条可见的接缝。我正在尝试使用 Alpha 混合 来移除该接缝。我知道使用 cvAddweight() 函数应用 Alpha 混合,但在此函数参数是两个图像,alpha, beta , gamma 和目标。我正在服用 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);

我的最终图像是 enter image description here

最佳答案

我必须承认,我不认为 alpha 混合是您的答案。由于照明/曝光的差异,似乎存在。 Alpha 混合本质上是一种通过对两个图像的颜色进行加权平均来使一个图像透过另一个图像可见的方法。您的右侧和左侧图像以黑色为后盾。如果您只是简单地进行 alpha 混合,那么您实际上是在用黑色背景对图像进行加权。由此产生的效果只会使两个图像变暗。

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

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

关于visual-c++ - 阿尔法混合去除图像中的接缝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10801851/

相关文章:

optimization - 如何判断PNG24转换成PNG8的时候是无损的?

c++ - 如何在 STL 容器中存储模板化异构对象

c# - 亚像素精度的图像处理

python - 图像去噪 - 对图像矩阵的每个元素执行任务

c++ - 使用更大的 ArUco 标记提高姿势的准确性

c++ - 将亮度更改为区域外的像素

opencv - 摄像机旋转和跟踪平移?

c++ - VS.NET C++ 2010 中智能感知和编译器的区别

visual-studio - 我可以使用 #pragma 链接到单个 obj 文件吗?

C++\IronPython 集成示例代码?