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}')