【发布时间】:2016-06-19 19:34:00
【问题描述】:
我一直在尝试混合两个图像。我目前采用的方法是,我获取两个图像的重叠区域的坐标,并且仅对于重叠区域,我在添加之前与 0.5 的硬编码 alpha 混合。所以基本上我只是从两个图像的重叠区域中取出每个像素值的一半,然后添加它们。这并没有给我一个完美的融合,因为 alpha 值被硬编码为 0.5。这是 3 张图像混合的结果:
如您所见,从一张图像到另一张图像的过渡仍然可见。如何获得可以消除这种可见过渡的完美 alpha 值?还是没有这样的事情,我采取了错误的方法?
这是我目前进行混合的方式:
for i in range(3):
base_img_warp[overlap_coords[0], overlap_coords[1], i] = base_img_warp[overlap_coords[0], overlap_coords[1],i]*0.5
next_img_warp[overlap_coords[0], overlap_coords[1], i] = next_img_warp[overlap_coords[0], overlap_coords[1],i]*0.5
final_img = cv2.add(base_img_warp, next_img_warp)
如果有人想试一试,这里有两张扭曲的图像,以及它们重叠区域的蒙版:http://imgur.com/a/9pOsQ
【问题讨论】:
-
源图像似乎与背景预乘。你能展示一下你目前使用的公式吗?
-
@K3N,我已经编辑并添加了一些代码。让我知道这是否有帮助。
-
您能否提供 3 个单独的扭曲图像以及重叠坐标?这将允许人们验证不同的方法。
-
@Miki 当然,这里有 2 张扭曲的图像,以及它们重叠区域的掩码:imgur.com/a/9pOsQ
-
也许你会从我的回答中得到一些启发:stackoverflow.com/questions/22315904/…
标签: python opencv image-processing computer-vision alphablending