Ejemplo n.º 1
0
def data_generator(config, exams, aug):
    xarray = np.zeros([
        config['batchsize'], config['height'], config['width'],
        config['depth'], config['channel']
    ])
    yarray = np.zeros([config['batchsize'], config['patchheight'], 2])
    bi = 0
    while 1:
        for ei in exams:
            caseloader = CaseLoader(ei)
            # print(caseloader)
            for slicei in caseloader.slices:
                polarstack = caseloader.loadstack(slicei,
                                                  'cart_patch',
                                                  nei=config['depth'] // 2)
                if polarstack is None:
                    # print('skip',caseloader,slicei)
                    continue
                polarcont = caseloader.loadstack(slicei,
                                                 'polar_cont',
                                                 nei=config['depth'] // 2)
                polar_cont_center = polarcont[:, :, config['depth'] // 2]
                xarray[bi] = polarstack[..., None]
                yarray[bi] = polar_cont_center
                bi += 1
                if bi == config['batchsize']:
                    bi = 0
                    if aug == True:
                        for offi in random.sample(range(config['patchheight']),
                                                  config['rottimes']):
                            xarray_off = batch_polar_rot(xarray, offi)
                            yarray_off = batch_polar_rot(yarray, offi)
                            yield (xarray_off, yarray_off)
                    else:
                        yield xarray, yarray
Ejemplo n.º 2
0
def data_generator(config, exams, aug):
    xarray = np.zeros([
        config['batchsize'], config['height'], config['width'],
        config['depth'], config['channel']
    ])
    yarray = np.zeros([config['batchsize'], config['patchheight'], 2])
    bi = 0
    while 1:
        for ei in exams:
            caseloader = CaseLoader(ei)
            #print(caseloader)
            for slicei in caseloader.slices:
                if caseloader.valid_slicei(slicei) == False:
                    continue

                if caseloader.caselist['slices'][slicei]['augpatch'] == []:
                    continue
                    gen_aug_patch(caseloader, slicei)
                    print(caseloader, slicei, 'gen')

                aug_polar_patch_batch = caseloader.load_aug_patch(
                    slicei, 'polar_patch')
                aug_polar_cont_batch = caseloader.load_aug_patch(
                    slicei, 'polar_cont')

                for augi in range(len(aug_polar_patch_batch)):
                    aug_cart_patch = aug_polar_patch_batch[augi]
                    xarray[bi] = aug_polar_patch_batch[augi, :, :, :, None]

                    aug_polar_cont = aug_polar_cont_batch[augi]
                    yarray[bi] = aug_polar_cont_batch[augi]
                    bi += 1
                    if bi == config['batchsize']:
                        bi = 0
                        if aug == True:
                            for offi in random.sample(range(config['height']),
                                                      config['rottimes']):
                                xarray_off = batch_polar_rot(xarray, offi)
                                yarray_off = batch_polar_rot(yarray, offi)
                                yield (xarray_off, yarray_off)
                        else:
                            yield (xarray, yarray)
Ejemplo n.º 3
0
def data_generator(config, exams, aug):
    xarray = np.zeros([
        config['batchsize'], config['height'], config['width'],
        config['depth'], config['channel']
    ])
    yarray = np.zeros([config['batchsize'], config['patchheight'], 2])
    bi = 0
    while 1:
        for ei in exams:
            caseloader = CaseLoader(ei)
            # print(caseloader)
            for slicei in caseloader.slices:
                if caseloader.valid_slicei(slicei) == False:
                    continue

                cartcont = caseloader.load_cart_cont(slicei)
                min_dist_map = caseloader.load_cart_min_dist(slicei)
                dcmstack = caseloader.loadstack(slicei, 'dcm')

                ctx, cty = caseloader.loadct(slicei)

                aug_polar_patch_batch = np.zeros((10, 256, 256, 3))
                aug_polar_cont_batch = np.zeros((10, 256, 2))
                offi = 0
                mi = 0

                while offi < 10 and mi < 50:
                    mi += 1
                    if offi == 0:
                        ofx = 0
                        ofy = 0
                    else:
                        ofx = random.randint(-20, 20)
                        ofy = random.randint(-20, 20)
                    cctx = ofx + ctx
                    ccty = ofy + cty

                    if min_dist_map[256 + ofx, 256 + ofy] < 0.5:
                        if mi > 40:
                            print('mi', mi)
                        # print('mind',min_dist_map[256+ofx,256+ofy])
                        continue

                    # print(ofx,ofy)
                    new_polar_cont_lumen = tocordpolar(cartcont[0], cctx, ccty)
                    new_polar_cont_wall = tocordpolar(cartcont[1], cctx, ccty)
                    aug_polar_cont_batch[offi, :, 0] = new_polar_cont_lumen
                    aug_polar_cont_batch[offi, :, 1] = new_polar_cont_wall

                    new_cart_patch = croppatch(dcmstack, ccty, cctx, 256, 256)
                    new_polar_patch = topolar(new_cart_patch, 256, 256)
                    aug_polar_patch_batch[offi] = new_polar_patch / np.max(
                        new_polar_patch)

                    offi += 1

                # aug_polar_patch_batch = caseloader.load_aug_patch(slicei,'polar_patch')
                # aug_polar_cont_batch = caseloader.load_aug_patch(slicei,'polar_cont')

                for augi in range(len(aug_polar_patch_batch)):
                    xarray[bi] = aug_polar_patch_batch[augi, :, :, :, None]
                    yarray[bi] = aug_polar_cont_batch[augi]
                    bi += 1
                    if bi == config['batchsize']:
                        bi = 0
                        if aug == True:
                            for offi in random.sample(range(config['height']),
                                                      config['rottimes']):
                                xarray_off = batch_polar_rot(xarray, offi)
                                yarray_off = batch_polar_rot(yarray, offi)
                                yield (xarray_off, yarray_off)
                        else:
                            yield (xarray, yarray)