平均两幅带掩码的图像

Averaging of two images with mask

我有两张这样的图片:

我创建了两个蒙版,显示了每个图像在场景中的位置。

我创建了显示两个图像交集的蒙版。

我用 cv::bitwise_and(mask_left, mask_right, mask_intersection);

我想将两张图片加在一起。 mask_intersection 的像素是白色的,我想在两个图像上使用像素的平均值。这是结果,我只是将一张图片添加到另一张图片上。问题是锐利的边界,我想通过仅在 mask_intersection.

上对两个图像进行平均来解决这个问题

我不知道如何用最简单的方法解决这个问题。

您正在寻找的过程称为 blending,您可以使用 cv::addWeighted() 来实现它,然后只需将结果乘以掩码以切断您不需要的图像区域不想混合。

为了对蒙版相交的两个图像进行平均,您可以使用 copyTo

假设您有 maskIntersectionimage1image2finalImage,代码将类似于:

((image1 + image2) * 0.5).copyTo(finalImage, maskIntersection)

尽管这回答了您对两幅图像求平均的问题,但我认为它不会提供很好的结果。将两个图像混合在一起通常是一个更复杂的过程。查看 this class 以快速了解所需内容。