예제 #1
0
def crop_image(inlist, outlist, mod):
    ##mod=intersect or union
    ##img_list, the r, g, b stacked files
    img0 = Image(inlist[0])
    img1 = Image(inlist[1])
    img2 = Image(inlist[2])
    if mod=="intersect":
        ind_zero = ((img0.data <=1.0) | (img1.data <=1.0) | (img2.data <=1.0))
    elif mod == "union":
        ind_zero = ((img0.data <=1.0) & (img1.data <=1.0) & (img2.data <=1.0))
    else:
        ind_zero = (img0.data <=1.0)
        
    ind_rows = np.all(ind_zero, axis=0)
    ind_cols = np.all(ind_zero, axis=1)
    x_ind_to_rm = np.where(ind_cols==True)[0]
    y_ind_to_rm = np.where(ind_rows==True)[0]
    
    tmp = img0.data[:,[y for y in range(img0.data.shape[1]) if y not in y_ind_to_rm]]
    img0.data = tmp[[x for x in range(img0.data.shape[0]) if x not in x_ind_to_rm],:]
    img0.write_to(outlist[0])
    tmp = img1.data[:,[y for y in range(img1.data.shape[1]) if y not in y_ind_to_rm]]
    img1.data = tmp[[x for x in range(img1.data.shape[0]) if x not in x_ind_to_rm],:]
    img1.write_to(outlist[1])
    tmp = img2.data[:,[y for y in range(img2.data.shape[1]) if y not in y_ind_to_rm]]
    img2.data = tmp[[x for x in range(img2.data.shape[0]) if x not in x_ind_to_rm],:]
    img2.write_to(outlist[2])
    return