# read projections prjs = np.load(args.sino) prjs = np.copy(prjs[args.slices[0]:args.slices[1], ...], 'C') / args.imgNorm # add noise to projections np.random.seed(0) if args.N0 > 0: prjs = prjs + np.sqrt( (1 - args.doseRate) / args.doseRate * np.exp(prjs * args.imgNorm) / args.N0) * np.random.normal(size=prjs.shape) / args.imgNorm # In[11]: # mask for network training masks = helper.GetMasks2D(reconNet, [resolution] * refs.shape[0]) # In[12]: def CalcProjectorNorm(reconNet, weight, nIter=20): weight = np.sqrt(weight) x = np.random.random_sample([1, reconNet.nx, reconNet.ny, 1]).astype(np.float32) x = x / np.linalg.norm(x) for i in range(nIter): print(i, end=',', flush=True) fp = reconNet.cDDFanProjection3d(x) * weight projectorNorm = np.linalg.norm(fp)
# read projections prjs = np.load(args.sino) prjs = np.copy(prjs[inds[:args.nSlices], ...], 'C') / args.imgNorm # add noise to projections np.random.seed(0) if args.N0 > 0: prjs = prjs + np.sqrt((1 - args.doseRate) / args.doseRate * np.exp(prjs * args.imgNorm) / args.N0) * np.random.normal(size = prjs.shape) / args.imgNorm # In[8]: # mask for network training masks = helper.GetMasks2D(reconNet, resolutions) # In[9]: # fbp imgs = [] for i in range(prjs.shape[0]): # for i in range(10): if i % 10 == 0: print (i, end=', ') reconNet.dx = resolutions[i] reconNet.dy = resolutions[i]
reconNet.rotview = len(setToUse) reconNet.angles = [reconNet.angles[i] for i in setToUse] # support only one resolution resolution = np.load(args.resolutionFile) resolution = np.mean(resolution[args.slices[0]:args.slices[1]]) reconNet.dx = resolution reconNet.dy = resolution # In[38]: # mask for network training masks = helper.GetMasks2D(reconNet, [0.8] * refs.shape[0]) # In[39]: # fbp imgs = [] for i in range(prjs.shape[0]): # for i in range(10): if i % 10 == 0: print (i, end=', ') fp = np.copy(prjs[[i],...], 'C')