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
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