Ejemplo n.º 1
0
def crop_ROI_data_by_label(imgs, labs, outputdir, lab_id,zscore=False):
    # 裁剪数据
    crop_img_dir=outputdir+"/crop/img"
    mkdir_if_not_exist(crop_img_dir)
    crop_lab_dir=outputdir+"/crop/lab"
    mkdir_if_not_exist(crop_lab_dir)
    crop_img_lab(imgs, labs, crop_img_dir, crop_lab_dir, lab_id)

    #rot数据
    imgs=sort_glob(crop_img_dir+"/*.nii.gz")
    labs=sort_glob(crop_lab_dir+"/*.nii.gz")
    rot_img_dir=outputdir+"/rot/img/"
    mkdir_if_not_exist(rot_img_dir)
    rot_lab_dir=outputdir+"/rot/lab/"
    mkdir_if_not_exist(rot_lab_dir)
    rotate_img_to_same_direction(imgs,labs,rot_img_dir,rot_lab_dir)

    #resize数据
    imgs=sort_glob(rot_img_dir+"/*.nii.gz")
    labs=sort_glob(rot_lab_dir+"/*.nii.gz")
    rez_img_dir=outputdir+"/rez/img/"
    mkdir_if_not_exist(rez_img_dir)
    rez_lab_dir=outputdir+"/rez/lab/"
    mkdir_if_not_exist(rez_lab_dir)
    resize_img_lab(imgs,labs,rez_img_dir,rez_lab_dir,zscore)
Ejemplo n.º 2
0
def prepare_unsupervised_reg_data(args):
    if not os.path.exists(args.dataset_dir):
        mk_or_cleardir(args.dataset_dir)
        types=parse_arg_list(args.mode)
        for t in types:
            imgs=sort_glob("../../dataset/%s/%s-image/*.nii.gz" % (args.task,t))
            labs=sort_glob("../../dataset/%s/%s-label/*.nii.gz" % (args.task,t))
            crop_ROI_data_by_label(imgs, labs, args.dataset_dir + "/%s/"%(t), args.component)
Ejemplo n.º 3
0
def prepare_crossvalidation_reg_data(args):
    if not os.path.exists(args.dataset_dir):
        mk_or_cleardir(args.dataset_dir)
        imgs=sort_glob("../../dataset/%s/%s-image/*.nii.gz" % (args.task,args.Tatlas))
        labs=sort_glob("../../dataset/%s/%s-label/*.nii.gz" % (args.task,args.Tatlas))
        crop_ROI_data_by_label(imgs, labs, args.dataset_dir + "/atlas/", args.component)
        #####
        imgs=sort_glob("../../dataset/%s/%s-image/*.nii.gz" % (args.task,args.Ttarget))
        labs=sort_glob("../../dataset/%s/%s-label/*.nii.gz" % (args.task,args.Ttarget))
        crop_ROI_data_by_label(imgs, labs, args.dataset_dir + "/target/", args.component)
Ejemplo n.º 4
0
    def get_file(self):
        if self.is_train==False:
            sample_dir=self.data_samples[self.index]
            self.index=(self.index+1)%self.len
        else:
            sample_dir = self.data_samples[np.random.randint(len(self.data_samples))]

        atlases_imgs=(sort_glob(sample_dir + "/*mv_img*.nii.gz"))
        atlases_labs=(sort_glob(sample_dir + "/*mv_lab*.nii.gz"))
        fix_imgs=(sort_glob(sample_dir + "/*fix_img*.nii.gz"))
        fix_labs=(sort_glob(sample_dir + "/*fix_lab*.nii.gz"))
        return fix_imgs,fix_labs,atlases_imgs,atlases_labs
Ejemplo n.º 5
0
 def __init__(self,args,type):
     self.args = args
     if type=='train':
         self.data_samples = sort_glob(self.args.dataset_dir + "/train_fusion_atlas_target/*/")
         self.is_train=True
     elif type=='validate':
         self.data_samples = sort_glob(self.args.dataset_dir + "/atlas_target/*/")
         self.is_train=False
     # elif type == 'test':
     #     self.data_samples = sort_glob(self.args.dataset_dir + "/test/*/")
     #     self.is_train = False
     else:
         print('unsupport type')
         exit('-999')
     self.index=0
     self.len=len(self.data_samples)
Ejemplo n.º 6
0
def post_process(args):
    base_ref_dir = args.dataset_dir + "/test_target/"
    # target_dir=args.test_dir
    #测试
    # target_dir=args.dataset_dir+"/test_target/rez/lab/"
    target_dirs = sort_glob(args.test_dir + "/atlas_wise/*")
    for target_dir in target_dirs:
        paste_lab_to_ori_space(args, base_ref_dir, target_dir)
Ejemplo n.º 7
0
def generator_ROI_data(args,type='MMWHS'):
    ####
    imgs=sort_glob("../../dataset/%s/%s-image/*.nii.gz" % (type,args.Tatlas))
    labs=sort_glob("../../dataset/%s/%s-label/*.nii.gz" % (type,args.Tatlas))
    crop_ROI_data_by_label(imgs[:20], labs[:20], args.dataset_dir + "/train_atlas/", args.component)

    # imgs=sort_glob("../../dataset/MMWHS/" + "/%s-image/*.nii.gz" % (args.Tatlas))
    # labs=sort_glob("../../dataset/MMWHS/" + "/%s-label/*.nii.gz" % (args.Tatlas))
    # prepare_data(imgs[12:16],labs[12:16],args.dataset_dir+"/train_fuse_atlas/",args.component)

    # imgs=sort_glob("../../dataset/MMWHS/" + "/%s-image/*.nii.gz" % (args.Tatlas))
    # labs=sort_glob("../../dataset/MMWHS/" + "/%s-label/*.nii.gz" % (args.Tatlas))
    # prepare_data(imgs[16:],labs[16:],args.dataset_dir+"/test_fuse_atlas/",args.component)

    #####
    imgs=sort_glob("../../dataset/%s/%s-image/*.nii.gz" % (type,args.Ttarget))
    labs=sort_glob("../../dataset/%s/%s-label/*.nii.gz" % (type,args.Ttarget))
    crop_ROI_data_by_label(imgs[:20], labs[:20], args.dataset_dir + "/train_target/", args.component)
Ejemplo n.º 8
0
 def __init__(self, args, is_train):
     self.args = args
     self.is_train = is_train
     self.img_mv = sort_glob('{}/*.*'.format(args.dataset_dir +
                                             '/train_atlas/rez/img'))
     self.lab_mv = sort_glob('{}/*.*'.format(args.dataset_dir +
                                             '/train_atlas/rez/lab'))
     self.img_fix = sort_glob('{}/*.*'.format(args.dataset_dir +
                                              '/test_target/rez/img'))
     self.lab_fix = sort_glob('{}/*.*'.format(args.dataset_dir +
                                              '/test_target/rez/lab'))
     if len(self.img_mv) != len(self.lab_mv):
         print("error,number of image and lab not equal")
         exit(-900)
     self.num = len(self.img_mv)
     self.nb_pairs = len(self.img_fix) * len(self.img_mv)
     self.index = 0
     self.len_mv = len(self.img_mv)
     self.len_fix = len(self.img_fix)
Ejemplo n.º 9
0
def generator_ROI_mask(args):

    labs=sort_glob("../../dataset/MMWHS/" + "/%s-test-label/*.nii.gz" % (args.Ttarget))
    for p_lab in labs:
        lab = sitk.ReadImage(p_lab)
        bbox = get_bounding_box_by_id(sitk.GetArrayFromImage(lab), padding=10,id=None)
        # sitk.RegionOfInterest(lab,)
        # crop_lab = crop_by_bbox(lab, bbox)
        array_lab=sitk.GetArrayFromImage(lab)
        array_lab[0:,0:,0:]=0
        array_lab[bbox[0].start:bbox[0].stop + 1, bbox[1].start:bbox[1].stop + 1,bbox[2].start:bbox[2].stop + 1 ]=1
        sitk_write_lab(array_lab,parameter_img=lab,dir='../../dataset/MMWHS'+"/%s-label-test_ROI/"%(args.Ttarget),name=get_name_wo_suffix(p_lab))
Ejemplo n.º 10
0
    def __init__(self, args, type):
        self.args = args
        validation_size=5
        mode=parse_arg_list(args.mode)
        if type == 'train':
            self.is_train = True
            self.img_mv = sort_glob('{}/*.*'.format(args.dataset_dir + '/%s/rez/img'%(mode[0])))
            self.lab_mv = sort_glob('{}/*.*'.format(args.dataset_dir + '/%s/rez/lab'%(mode[0])))
            # 所有的数据

            self.img_fix = sort_glob('{}/*.*'.format(args.dataset_dir + '/%s/rez/img'%(mode[1])))
            self.lab_fix = sort_glob('{}/*.*'.format(args.dataset_dir + '/%s/rez/lab'%(mode[1])))
            if len(self.img_fix) > 0:
                del self.img_fix[(args.fold - 1) * validation_size:(args.fold - 1) * validation_size + validation_size]
                del self.lab_fix[(args.fold - 1) * validation_size:(args.fold - 1) * validation_size + validation_size]
            if len(self.img_mv) > 0:
                del self.img_mv[(args.fold - 1) * validation_size:(args.fold - 1) * validation_size + validation_size]
                del self.lab_mv[(args.fold - 1) * validation_size:(args.fold - 1) * validation_size + validation_size]

        elif type == 'validate':
            self.is_train = False
            self.img_mv = sort_glob('{}/*.*'.format(args.dataset_dir + '/%s/rez/img'%(mode[0])))
            self.lab_mv = sort_glob('{}/*.*'.format(args.dataset_dir + '/%s/rez/lab'%(mode[0])))
            self.img_fix = sort_glob('{}/*.*'.format(args.dataset_dir + '/%s/rez/img'%(mode[1])))
            self.lab_fix = sort_glob('{}/*.*'.format(args.dataset_dir + '/%s/rez/lab'%(mode[1])))
            if len(self.img_fix)>0:
                self.img_fix=[self.img_fix[i] for i in range((args.fold-1)*validation_size,(args.fold-1)*validation_size+validation_size)]
                self.lab_fix=[self.lab_fix[i] for i in range((args.fold-1)*validation_size,(args.fold-1)*validation_size+validation_size)]
            if len(self.img_mv)>0:
                self.img_mv=[self.img_mv[i] for i in range((args.fold-1)*validation_size,(args.fold-1)*validation_size+validation_size)]
                self.lab_mv=[self.lab_mv[i] for i in range((args.fold-1)*validation_size,(args.fold-1)*validation_size+validation_size)]

        else:
            print("not support gen sampler type")
            exit(-900)

        if len(self.img_mv)!=len(self.lab_mv):
            print("error,number of image and lab not equal")
            exit(-900)
        self.num=len(self.img_mv)
        self.nb_pairs=len(self.img_fix)*len(self.img_mv)
        self.len_fix=len(self.img_fix)
        self.len_mv=len(self.img_mv)
        self.index=0
Ejemplo n.º 11
0
def generator_ROI_data_for_3DUnet(args):
    imgs=sort_glob("../../dataset/MMWHS/" + "/%s-image/*.nii.gz" % (args.Ttarget))
    labs=sort_glob("../../dataset/MMWHS/" + "/%s-label/*.nii.gz" % (args.Ttarget))
    crop_ROI_data_by_label(imgs[:12], labs[:12], args.dataset_dir + "/train_target/", args.component)

    imgs=sort_glob("../../dataset/MMWHS/" + "/%s-image/*.nii.gz" % (args.Ttarget))
    labs=sort_glob("../../dataset/MMWHS/" + "/%s-label/*.nii.gz" % (args.Ttarget))
    crop_ROI_data_by_label(imgs[16:], labs[16:], args.dataset_dir + "/validate_target/", args.component)

    imgs=sort_glob("../../dataset/MMWHS/" + "/%s-test-image/*.nii.gz" % (args.Ttarget))
    labs=sort_glob("../../dataset/MMWHS/" + "/%s-test-label/*.nii.gz" % (args.Ttarget))
    crop_ROI_data_by_label(imgs, labs, args.dataset_dir + "/test_target/", args.component)
Ejemplo n.º 12
0
def paste_lab_to_ori_space(args, base_ref_dir, target_dir):
    print("processing:" + os.path.dirname(target_dir))
    base_dir = (target_dir)
    refs = sort_glob(base_ref_dir + "/rot/img/*.nii.gz")
    tgts = sort_glob(target_dir + "/*label.nii.gz")
    output_dir_de_rez = base_dir + "_deRez"
    de_resize(refs, tgts, output_dir_de_rez)
    refs = sort_glob(base_ref_dir + "/crop/img/*.nii.gz")
    tgts = sort_glob(output_dir_de_rez + "/*.nii.gz")
    output_dir_de_rot = base_dir + "_deRot"
    de_rotate(refs, tgts, output_dir_de_rot)
    refs = sort_glob("../../dataset/MMWHS/%s-test-image" % (args.Ttarget) +
                     "/*.nii.gz")
    tgts = sort_glob(output_dir_de_rot + "/*.nii.gz")
    output_dir_de_crop = base_dir + "_deCrop"
    de_crop(refs, tgts, output_dir_de_crop, args.component)
Ejemplo n.º 13
0
    def __init__(self,args,type):
        self.args=args

        if type=='train':
            self.is_train=True
            self.img_mv = sort_glob('{}/*.*'.format(args.dataset_dir + '/train_atlas/rez/img'))
            self.lab_mv = sort_glob('{}/*.*'.format(args.dataset_dir +'/train_atlas/rez/lab' ))
            #所有的数据
            self.img_fix = sort_glob('{}/*.*'.format(args.dataset_dir + '/train_target/rez/img'))
            self.lab_fix = sort_glob('{}/*.*'.format(args.dataset_dir + '/train_target/rez/lab'))

            del self.img_mv[(args.fold-1)*5:(args.fold-1)*5+5]
            del self.lab_mv[(args.fold-1)*5:(args.fold-1)*5+5]
            del self.img_fix[(args.fold-1)*5:(args.fold-1)*5+5]
            del self.lab_fix[(args.fold-1)*5:(args.fold-1)*5+5]
            #for similarity
            del self.img_mv[-4:]
            del self.lab_mv[-4:]
            del self.img_fix[-4:]
            del self.lab_fix[-4:]

        elif type == 'validate':
            self.is_train = False
            self.img_mv = sort_glob('{}/*.*'.format(args.dataset_dir + '/train_atlas/rez/img'))
            self.lab_mv = sort_glob('{}/*.*'.format(args.dataset_dir +'/train_atlas/rez/lab' ))
            #所有的数据
            self.img_fix = sort_glob('{}/*.*'.format(args.dataset_dir + '/train_target/rez/img'))
            self.lab_fix = sort_glob('{}/*.*'.format(args.dataset_dir + '/train_target/rez/lab'))

            #validation
            del self.img_mv[(args.fold-1)*5:(args.fold-1)*5+5]
            del self.lab_mv[(args.fold-1)*5:(args.fold-1)*5+5]
            del self.img_mv[-4:]
            del self.lab_mv[-4:]

            self.img_fix = [self.img_fix[i] for i in range((args.fold - 1) * 5, (args.fold - 1) * 5 + 5)]
            self.lab_fix = [self.lab_fix[i] for i in range((args.fold - 1) * 5, (args.fold - 1) * 5 + 5)]

        elif type == 'gen_fusion_train':
            self.is_train = True
            self.img_mv = sort_glob('{}/*.*'.format(args.dataset_dir + '/train_atlas/rez/img'))
            self.lab_mv = sort_glob('{}/*.*'.format(args.dataset_dir +'/train_atlas/rez/lab' ))
            #所有的数据
            self.img_fix = sort_glob('{}/*.*'.format(args.dataset_dir + '/train_target/rez/img'))
            self.lab_fix = sort_glob('{}/*.*'.format(args.dataset_dir + '/train_target/rez/lab'))

            del self.img_mv[(args.fold-1)*5:(args.fold-1)*5+5]
            del self.lab_mv[(args.fold-1)*5:(args.fold-1)*5+5]
            del self.img_fix[(args.fold-1)*5:(args.fold-1)*5+5]
            del self.lab_fix[(args.fold-1)*5:(args.fold-1)*5+5]

        else:
            print("not support gen sampler type")
            exit(-900)

        if len(self.img_mv)!=len(self.lab_mv):
            print("error,number of image and lab not equal")
            exit(-900)
        self.num=len(self.img_mv)
        self.nb_pairs=len(self.img_fix)*len(self.img_mv)
        self.len_fix=len(self.img_fix)
        self.len_mv=len(self.img_mv)
        self.index=0
Ejemplo n.º 14
0
    image_array = cv2.cvtColor(image_array, cv2.COLOR_GRAY2BGR)
    contours, hierarchy = cv2.findContours(gt_array, cv2.RETR_TREE,
                                           cv2.CHAIN_APPROX_TC89_L1)
    contours2, hierarchy2 = cv2.findContours(pred_array, cv2.RETR_TREE,
                                             cv2.CHAIN_APPROX_TC89_L1)

    cv2.drawContours(image_array, contours, -1, (0, 0, 255), 1)
    cv2.drawContours(image_array, contours2, -1, (255, 0, 0), 1)
    image_array = np.flip(image_array, 0)
    # image_array=cv2.resize(image_array,(256,256),cv2.INTER_LANCZOS4)
    cv2.imshow("liver_contour", image_array)
    cv2.waitKey()
    out_path = os.path.join(
        os.path.dirname(pred_label),
        "%s-%d.png" % (os.path.basename(pred_label), slice))
    cv2.imwrite(out_path, image_array)


'''


'''
if __name__ == '__main__':
    pred_labels = sort_glob(
        r'E:\homework\cmmas-tmi\img\registration\ct-mr-1\*' +
        "\*label*.nii.gz")
    target_label = r"E:\homework\cmmas-tmi\img\registration\ct-mr-1\8_mr_target_label.nii.gz"
    target_img = r"E:\homework\cmmas-tmi\img\registration\ct-mr-1\8_mr_target_image.nii.gz"
    for lab in pred_labels:
        drawContour(target_img, target_label, lab)
Ejemplo n.º 15
0
    def __init__(self, args, type='train_sim'):
        self.args = args
        if type == 'train_sim':
            self.is_train = False
            self.img_mv = sort_glob('{}/*.*'.format(args.dataset_dir +
                                                    '/train_atlas/rez/img'))
            self.lab_mv = sort_glob('{}/*.*'.format(args.dataset_dir +
                                                    '/train_atlas/rez/lab'))
            self.img_fix = sort_glob(
                '{}/*.*'.format(args.dataset_dir +
                                '/train_fuse_target/rez/img'))
            self.lab_fix = sort_glob(
                '{}/*.*'.format(args.dataset_dir +
                                '/train_fuse_target/rez/lab'))
        elif type == 'fusion':
            self.is_train = True
            self.img_mv = sort_glob('{}/*.*'.format(args.dataset_dir +
                                                    '/train_atlas/rez/img'))
            self.lab_mv = sort_glob('{}/*.*'.format(args.dataset_dir +
                                                    '/train_atlas/rez/lab'))
            self.img_fix = sort_glob(
                '{}/*.*'.format(args.dataset_dir +
                                '/train_fuse_target/rez/img'))
            self.lab_fix = sort_glob(
                '{}/*.*'.format(args.dataset_dir +
                                '/train_fuse_target/rez/lab'))
            #训练融合的代码的时候,把fuse和train_target一起放入进去
            # self.img_fix_add = sort_glob('{}/*.*'.format(args.dataset_dir + '/train_target/rez/img'))
            # self.lab_fix_add = sort_glob('{}/*.*'.format(args.dataset_dir + '/train_target/rez/lab'))

            # self.img_fix=self.img_fix+self.img_fix_add
            # self.lab_fix=self.lab_fix+self.lab_fix_add

        elif type == 'test':
            self.is_train = False
            self.img_mv = sort_glob('{}/*.*'.format(args.dataset_dir +
                                                    '/train_atlas/rez/img'))
            self.lab_mv = sort_glob('{}/*.*'.format(args.dataset_dir +
                                                    '/train_atlas/rez/lab'))
            self.img_fix = sort_glob('{}/*.*'.format(args.dataset_dir +
                                                     '/test_target/rez/img'))
            self.lab_fix = sort_glob('{}/*.*'.format(args.dataset_dir +
                                                     '/test_target/rez/lab'))
        elif type == 'validate':
            self.is_train = False
            self.img_mv = sort_glob('{}/*.*'.format(args.dataset_dir +
                                                    '/train_atlas/rez/img'))
            self.lab_mv = sort_glob('{}/*.*'.format(args.dataset_dir +
                                                    '/train_atlas/rez/lab'))
            self.img_fix = sort_glob(
                '{}/*.*'.format(args.dataset_dir + '/validate_target/rez/img'))
            self.lab_fix = sort_glob(
                '{}/*.*'.format(args.dataset_dir + '/validate_target/rez/lab'))
        else:
            print("not support gen sampler type")
            exit(-900)
        if len(self.img_mv) != len(self.lab_mv):
            print("error,number of image and lab not equal")
            exit(-900)
        self.num = len(self.img_mv)
        self.nb_pairs = len(self.img_fix) * len(self.img_mv)
        self.index = 0
        self.len_mv = len(self.img_mv)
        self.len_fix = len(self.img_fix)
Ejemplo n.º 16
0
    for img_dir, lab_dir in zip(image_dirs, lab_dirs):
        # files=sort_glob(img_dir+"\\*")
        img = sitk_read_dico_series(img_dir)
        lab = read_png_seriesV2(lab_dir)
        sitk_write_image(img,
                         dir=output + "//%s-image//" % (type),
                         name=img_dir.split('\\')[-2] + "_%s_image" % (type))
        sitk_write_lab(lab,
                       parameter_img=img,
                       dir=output + "//%s-label//" % (type),
                       name=lab_dir.split('\\')[-2] + "_%s_label" % (type))


if __name__ == "__main__":
    image_dirs = sort_glob(
        'E:\\consistent_workspace\\dataset\\Ori_CHOAS\\CHAOS_Train_Sets\\Train_Sets\\CT\\*\\DICOM_anon'
    )
    lab_dirs = sort_glob(
        'E:\\consistent_workspace\\dataset\\Ori_CHOAS\\CHAOS_Train_Sets\\Train_Sets\\CT\\*\\Ground'
    )
    generate_3dCT(image_dirs, lab_dirs, 'ct')

    image_dirs = sort_glob(
        'E:\\consistent_workspace\\dataset\\Ori_CHOAS\\CHAOS_Train_Sets\\Train_Sets\\MR\\*\\T1DUAL\\DICOM_anon\\InPhase'
    )
    lab_dirs = sort_glob(
        'E:\\consistent_workspace\\dataset\\Ori_CHOAS\\CHAOS_Train_Sets\\Train_Sets\\MR\\*\\T1DUAL\\Ground'
    )
    generate_3dMR(image_dirs, lab_dirs, 't1_in_DUAL_mr')

    image_dirs = sort_glob(