opencv - 在 OpenCV 图像拼接中混合伪影

我正在使用 OpenCV 来混合一组预变形图像。作为输入,我有一些 4 channel 图像(*.png 或 *.tif),我可以从中提取一个 bgr 图像和一个带有与图像(白色)和背景(黑色)相关的区域的 alpha 蒙版。 image 和 mask 都是 Blender 模块的输入 cv::detail::Blender::blend .

当我使用羽毛(alpha)混合时,结果还可以,但是,我想避免重影效果。当我使用多波段时,图像边缘会出现一些伪影:



该问题与提出的 here 类似。 ,并解决了here .问题是,如果解决方案是创建一个二进制掩码(我已经从 alpha channel 中提取),它对我不起作用。如果我在两个图像之间的重叠处添加填充,它会从背景中获取像素,并且会使结果更加困惑。

我想这可能与 pyrUp 函数有关。和 pyrDown ,因为创建高斯和拉普拉斯金字塔的模糊可能应用于整个图像,而不仅仅是正 alpha 区域。无论如何,我不知道如何使用这些功能解决问题,也找不到另一个有效的解决方案。

当我使用另一种多分辨率混合实现时,它可以完美运行,但是,我对集成 OpenCV 的多波段实现非常感兴趣。知道如何解决这个问题吗?

最佳答案

问题已在此处报告并解决:

http://answers.opencv.org/question/89028/blending-artifacts-in-opencv-image-stitching/

https://stackoverflow.com/questions/35735241/

相关文章:

image - 不是JPEG文件:开头为0x0a 0x4c错误

opencv - 在 Opencv 中处理相机流,使用 FFMPEG 将其推送到 RTMP(NGIN

python - 延时图像的亮度/直方图归一化

android - 在OCR之后从Android中的图像检测字体颜色

android - 使用ORB和RANSAC的OpenCV中用于Android关键点匹配和阈值的性能

python - 从二进制字符串加载OpenCV图像

python - 从笔记本中提取文本

opencv - 拼接细节中相机参数调整失败问题

java - OpenCV Java RGB还是HSV?

opencv - 如何将Emgu::CV::Mat转换为OpenCV cv::Mat,反之亦然?