コード例 #1
0
H = None
shift = None
tar_4_corners_xy = None
ref_4_corners_xy = None
homoMat = np.load('image/save_H.npy')
shiftMat = np.load('image/save_Shift.npy')
ref_4_corners_xy = np.load('image/save_ref_4_corners_xy.npy')
tar_4_corners_xy = np.load('image/save_tar_4_corners_xy.npy')
warp_tar_img = cv2.imread('image/warped_target.png')
warp_ref_img = cv2.imread('image/warped_reference.png')
seam_mask = cv2.imread('image/seam_mask.png', cv2.IMREAD_GRAYSCALE)
mask = Mask(warp_tar_img, warp_ref_img)
ref_region_mask = cv2.imread('image/result_from_reference.png',
                             cv2.IMREAD_GRAYSCALE)
tar_region_mask = cv2.bitwise_and(cv2.bitwise_not(ref_region_mask), mask.tar)
mask.tar_result = tar_region_mask
mask.ref_result = ref_region_mask

CB = CBlender(warp_tar_img, warp_ref_img, seam_mask, tar_4_corners_xy,
              ref_4_corners_xy, homoMat, shiftMat, mask)
devided_tar_nonoverlap_mask, devided_tar_edge_mask = CB.split_tar_nonoverlap_area_and_edge(
    ref_4_corners_xy, tar_4_corners_xy, shiftMat, homoMat)

refered_pixel_coordi_lst = np.vstack( (\
    np.array( np.nonzero(seam_mask) ).T, \
    np.array( np.where(devided_tar_edge_mask==255) ).T, \
    np.array( np.where(devided_tar_edge_mask==127) ).T \
    ))
fuck_this_shit = CB.blend_color(refered_pixel_coordi_lst,
                                np.bitwise_and(CB.mask.overlap,
                                               CB.mask.tar_result),
def main():
    '''
    Initialization
    '''
    start = time.time()

    tar_4_corners_xy = None
    ref_4_corners_xy = None
    homoMat = np.load('image/save_H.npy')
    shiftMat = np.load('image/save_Shift.npy')
    ref_4_corners_xy = np.load('image/save_ref_4_corners_xy.npy')
    tar_4_corners_xy = np.load('image/save_tar_4_corners_xy.npy')
    warp_tar_img = cv2.imread('image/warped_target.png')
    warp_ref_img = cv2.imread('image/warped_reference.png')
    seam_mask = cv2.imread('image/seam_mask.png', cv2.IMREAD_GRAYSCALE)

    mask = Mask(warp_tar_img, warp_ref_img)
    ref_region_mask = cv2.imread('image/result_from_reference.png',
                                 cv2.IMREAD_GRAYSCALE)
    tar_region_mask = cv2.bitwise_and(cv2.bitwise_not(ref_region_mask),
                                      mask.tar)

    mask.tar_result = tar_region_mask
    mask.ref_result = ref_region_mask
    '''
    Blend color
    '''

    CB = CBlender(warp_tar_img, warp_ref_img, seam_mask, tar_4_corners_xy,
                  ref_4_corners_xy, homoMat, shiftMat, mask)

    devided_tar_nonoverlap_mask, devided_tar_edge_mask = CB.split_tar_nonoverlap_area_and_edge(
        ref_4_corners_xy, tar_4_corners_xy, shiftMat, homoMat)
    devided_tar_edge_mask_1 = np.copy(devided_tar_edge_mask)
    devided_tar_edge_mask_1[devided_tar_edge_mask_1 == 127] = 0
    devided_tar_edge_mask_2 = np.copy(devided_tar_edge_mask)
    devided_tar_edge_mask_2[devided_tar_edge_mask_1 == 255] = 0

    # refered_pixel_coordi_lst = np.vstack( (\
    #     np.array( np.nonzero(seam_mask) ).T, \
    #     np.array( np.where(devided_tar_edge_mask==255) ).T, \
    #     np.array( np.where(devided_tar_edge_mask==127) ).T \
    #     ))

    slic = MaskedSLIC(warp_tar_img,
                      np.bitwise_and(mask.tar_result, mask.overlap),
                      region_size=20,
                      compactness=5)

    seam_superpixel_idx_lst = np.array([
        idx for idx, (rows, cols) in enumerate(slic.labels_position)
        if np.sum(seam_mask[rows, cols]) > 0
    ])
    tar_edge_1_superpixel_idx_lst = np.array([
        idx for idx, (rows, cols) in enumerate(slic.labels_position)
        if np.sum(devided_tar_edge_mask_1[rows, cols]) > 0
    ])
    tar_edge_2_superpixel_idx_lst = np.array([
        idx for idx, (rows, cols) in enumerate(slic.labels_position)
        if np.sum(devided_tar_edge_mask_2[rows, cols]) > 0
    ])

    refered_idx_lst = np.hstack(
        (seam_superpixel_idx_lst, tar_edge_1_superpixel_idx_lst,
         tar_edge_2_superpixel_idx_lst))

    refered_pixel_coordi_lst = np.array([
        (rows[len(rows) // 2], cols[len(rows) // 2])
        for idx, (rows, cols) in enumerate(slic.labels_position)
        if (idx != 0) and (np.isin(idx, refered_idx_lst))
    ])
    fuck_this_shit = CB.blend_color(refered_pixel_coordi_lst,
                                    np.bitwise_and(CB.mask.overlap,
                                                   CB.mask.tar_result),
                                    sigma1=0.3,
                                    sigma2=0.2)

    cv2.imwrite('overlap_blending_only.png', fuck_this_shit)

    CB.ref_img = fuck_this_shit

    refered_pixel_coordi_lst = np.array([
        (rows[len(rows) // 2], cols[len(rows) // 2])
        for idx, (rows, cols) in enumerate(slic.labels_position)
        if (idx != 0) and (np.isin(idx, tar_edge_1_superpixel_idx_lst))
    ])
    mask = np.zeros(devided_tar_nonoverlap_mask.shape)
    mask[devided_tar_nonoverlap_mask == 255] = 255
    fuck_this_shit = CB.blend_color(refered_pixel_coordi_lst,
                                    mask,
                                    sigma1=0.1,
                                    sigma2=0.05)
    cv2.imwrite('nonoverlap_blending_only1.png', fuck_this_shit)
    CB.ref_img = fuck_this_shit
    refered_pixel_coordi_lst = np.array([
        (rows[len(rows) // 2], cols[len(rows) // 2])
        for idx, (rows, cols) in enumerate(slic.labels_position)
        if (idx != 0) and (np.isin(idx, tar_edge_2_superpixel_idx_lst))
    ])
    mask = np.zeros(devided_tar_nonoverlap_mask.shape)
    mask[devided_tar_nonoverlap_mask == 127] = 255
    fuck_this_shit = CB.blend_color(refered_pixel_coordi_lst,
                                    mask,
                                    sigma1=0.1,
                                    sigma2=0.05)
    cv2.imwrite('nonoverlap_blending_only2.png', fuck_this_shit)
    for idx in tar_edge_2_superpixel_idx_lst:
        fuck_this_shit[slic.labels_position[idx][0],
                       slic.labels_position[idx][1]] = np.random.randint(
                           0, 255, 3)
    cv2.imwrite('araara.png', fuck_this_shit)

    warp_ref_img[slic.contour_mask > 0] = (0, 255, 0)
    warp_tar_img[slic.contour_mask > 0] = (0, 255, 0)
    cv2.imwrite('target_image_slic.png', warp_ref_img)
    cv2.imwrite('reference_image_slic.png', warp_tar_img)

    print(f'time: {time.time() - start}')