Exemple #1
0
def metric_register(pclow, pchigh, do_phasecorr=True, smooth_sigma=1.15, block_size=(128,128), maxregshift=0.1, maxregshiftNR=5):
    ops = {
        'num_workers': -1,
        'snr_thresh': 1.25,
        'nonrigid': True,
        'num_workers': -1,
        'block_size': np.array(block_size),
        'maxregshiftNR': np.array(maxregshiftNR),
        'maxregshift': np.array(maxregshift),
        'subpixel': 10,
        'do_phasecorr': do_phasecorr,
        'smooth_sigma': smooth_sigma
        }
    nPC, ops['Ly'], ops['Lx'] = pclow.shape

    X = np.zeros((nPC,3))
    ops = make_blocks(ops)
    for i in range(nPC):
        refImg = pclow[i]
        Img = pchigh[i][np.newaxis, :, :]
        #Img = np.tile(Img, (1,1,1))
        maskMul, maskOffset, cfRefImg = register.prepare_masks(refImg, ops)
        maskMulNR, maskOffsetNR, cfRefImgNR = nonrigid.prepare_masks(refImg, ops)
        refAndMasks = [maskMul, maskOffset, cfRefImg, maskMulNR, maskOffsetNR, cfRefImgNR]
        dwrite, ymax, xmax, cmax, yxnr = register.phasecorr(Img, refAndMasks, ops)
        X[i,1] = np.mean((yxnr[0]**2 + yxnr[1]**2)**.5)
        X[i,0] = np.mean((ymax[0]**2 + xmax[0]**2)**.5)
        X[i,2] = np.amax((yxnr[0]**2 + yxnr[1]**2)**.5)

    return X
Exemple #2
0
def pc_register_worker(inputs):
    ops, refImg, Img = inputs
    maskMul, maskOffset, cfRefImg = register.prepare_masks(refImg, ops)
    maskMulNR, maskOffsetNR, cfRefImgNR = nonrigid.prepare_masks(refImg, ops)
    refAndMasks = [maskMul, maskOffset, cfRefImg, maskMulNR, maskOffsetNR, cfRefImgNR]
    dwrite, ymax, xmax, cmax, yxnr = register.register_and_shift(Img, refAndMasks, ops)
    X = np.zeros((3,))
    X[1] = np.mean((yxnr[0]**2 + yxnr[1]**2)**.5)
    X[0] = np.mean((ymax[0]**2 + xmax[0]**2)**.5)
    X[2] = np.amax((yxnr[0]**2 + yxnr[1]**2)**.5)
    return X