如何摆脱混合图像引起的黑线?

问题描述 投票:0回答:0

我最近参与了一个需要将多个图像混合在一起的项目。我成功地完成了所有必要的步骤并成功地混合了图像。但是,我注意到当我混合图像时,每张最终图像的边界上都会出现黑线,表明每张图像的放置位置。您可以在以下链接中看到带有这些伪像的最终图像示例:

final image

即使快速浏览图像,这些伪影也很明显。

这是我混合图像的代码:

def normalize_piece(img):
    return cv2.normalize(img.astype('float'), None, 0.0, 1.0, cv2.NORM_MINMAX)


def blend_pieces(piece1, piece2, transformation_matrix, width, height):
    piece1_norm = normalize_piece(piece1)
    piece2_norm = normalize_piece(piece2)

    piece1_warped = cv2.warpPerspective(src=piece1_norm, M=transformation_matrix, dsize=(width, height))

    black_rgb_pixel = np.zeros(3)
    mask_left = np.all(piece1_warped != black_rgb_pixel, axis=-1)
    mask_right = np.all(piece2_norm != black_rgb_pixel, axis=-1)

    mask_overlap = mask_left & mask_right
    mask_left_only = mask_left & ~mask_right
    mask_right_only = mask_right & ~mask_left

    piece1_warped[mask_left_only] = piece1_warped[mask_left_only]
    piece1_warped[mask_right_only] = piece2_norm[mask_right_only]
    piece1_warped[mask_overlap] = (piece1_warped[mask_overlap] + piece2_norm[mask_overlap]) / 2

    return piece1_warped
python opencv image-processing computer-vision blending
© www.soinside.com 2019 - 2024. All rights reserved.