繁体   English   中英

在OpenCV python中使用SeamlessClone会生成带有“ ghost”对象的图像

[英]Using seamlessClone in OpenCV python produces image with “ghost” objects

我试图将一个具有完全紧密的已知蒙版的对象粘贴到图像上,这样应该很容易,但是如果不进行一些后期处理,我会在边界上留下伪影。 我想使用混合技术泊松混合来减少伪像。 它在opencv SeamlessClone中seamlessClone

import cv2
import matplotlib.pyplot as plt
#user provided tight mask array tight_mask of dtype uint8 with only white pixel the ones on the object the others are black (50x50x3)
tight_mask
#object obj to paste a 50x50x3 uint8 in color
obj
#User provided image im which is large 512x512 of a mostly uniform background in colors
im
#two different modes of poisson blending, which give approximately the same result
normal_clone=cv2.seamlessClone(obj, im, mask, center, cv2.NORMAL_CLONE)
mixed_clone=cv2.seamlessClone(obj, im, mask, center, cv2.MIXED_CLONE)
plt.imshow(normal_clone,interpolation="none")
plt.imshow(mixed_clone, interpolation="none")

我只得到粘贴对象非常非常透明的图像。 因此,它们显然融合得很好,但融合得如此之快,以至于像物体的幽灵一样消失。

我想知道我是否是唯一遇到这种问题的人,如果不是,就泊松混合而言有什么替代方案?
我是否必须从头开始重新实现以修改混合因子(甚至可能吗?),还有其他方法吗? 我是否必须在口罩上使用膨胀来减少混合? 之后我可以以某种方式增强对比度吗?

实际上,泊松混合是使用图像中的渐变信息进行粘贴以将其混合到目标图像中。

事实证明,如果蒙版完全绷紧,则将边界渐变人工解释为null。 这就是为什么它完全忽略它并产生幻影的原因。

解决方案是通过使用形态学运算对原始蒙版进行扩张来使用更大的蒙版,因此包括一些背景。

选择所包含的背景颜色时,请务必小心,如果对比度太大,则渐变会太强,并且图像融合得不好。 使用灰色等颜色是一个很好的起点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM