#convert 3D images to stacks of 2D slice images #create a transform for each 2D slice #create a initialisation using 2D slice stacks #compute H for each LR image psfList = [] for i in range(len(inputImages)): LRSpacing = np.float32(np.array(inputImages[i].header['pixdim'][1:4])) HRpsf = compute_psf(LRSpacing, HRSpacing, args.psf) psfList.append(HRpsf) #Compute H HList = [] for i in range(len(inputImages)): HList.append( compute_H(inputImages[i], initHRImage, inputTransforms[i], psfList[i], maskImages[i])) #Intensity correction To do #N4 on initHR #local correction #New init HR if args.bias == True: initHRImage_N4 = apply_N4_on_image(initHRImage, shrink_factor=1) xN4 = convert_image_to_vector(initHRImage_N4) hrN4Data = np.zeros(initHRImage.get_data().shape) for i in range(len(inputImages)): simu = convert_vector_to_image(HList[i].dot(xN4), inputImages[i]) im = gaussian_biais_correction(inputImages[i], simu, 5) warped = apply_affine_itk_transform_on_image(
else: #no transform provided : use identity as transform and zero as center m = np.identity(4) c = np.array([0, 0, 0, 1]) inputTransform = (m,c) print('Creating mask image using the following padding value:'+str(args.padding)) data = np.zeros(HRimage.get_data().shape) data[HRimage.get_data() > args.padding] = 1 maskHRImage = nibabel.Nifti1Image(data, HRimage.affine) print('Percentage of HR masked values : %.2f '%( np.size(np.nonzero((data))) / (1.0*np.size(data.shape)) * 100.0 / np.size(data) ) ) data = np.zeros(LRimage.get_data().shape) data[LRimage.get_data() > args.padding] = 1 maskLRImage = nibabel.Nifti1Image(data, LRimage.affine) print('Percentage of LR masked values : %.2f '%( np.size(np.nonzero((data))) / (1.0*np.size(data.shape)) * 100.0 / np.size(data) ) ) HRSpacing = np.float32(np.array(HRimage.header['pixdim'][1:4])) LRSpacing = np.float32(np.array(LRimage.header['pixdim'][1:4])) psf = compute_psf(LRSpacing, HRSpacing, args.psf) H = compute_H(LRimage, HRimage, inputTransform, psf, maskLRImage) x = convert_image_to_vector(HRimage) maskX = convert_image_to_vector(maskHRImage) #Let mask the HR image x = x*maskX nibabel.save(convert_vector_to_image(H.dot(x),LRimage),args.output)
m = np.identity(4) c = np.array([0, 0, 0, 1]) inputTransform = (m, c) print('Creating mask image using the following padding value:' + str(args.padding)) data = np.zeros(HRimage.get_data().shape) data[HRimage.get_data() > args.padding] = 1 maskHRImage = nibabel.Nifti1Image(data, HRimage.affine) print('Percentage of HR masked values : %.2f ' % (np.size(np.nonzero( (data))) / (1.0 * np.size(data.shape)) * 100.0 / np.size(data))) data = np.zeros(LRimage.get_data().shape) data[LRimage.get_data() > args.padding] = 1 maskLRImage = nibabel.Nifti1Image(data, LRimage.affine) print('Percentage of LR masked values : %.2f ' % (np.size(np.nonzero( (data))) / (1.0 * np.size(data.shape)) * 100.0 / np.size(data))) HRSpacing = np.float32(np.array(HRimage.header['pixdim'][1:4])) LRSpacing = np.float32(np.array(LRimage.header['pixdim'][1:4])) psf = compute_psf(LRSpacing, HRSpacing, args.psf) H = compute_H(LRimage, HRimage, inputTransform, psf, maskLRImage) x = convert_image_to_vector(HRimage) maskX = convert_image_to_vector(maskHRImage) #Let mask the HR image x = x * maskX nibabel.save(convert_vector_to_image(H.dot(x), LRimage), args.output)
# convert 3D images to stacks of 2D slice images # create a transform for each 2D slice # create a initialisation using 2D slice stacks # compute H for each LR image psfList = [] for i in range(len(inputImages)): LRSpacing = np.float32(np.array(inputImages[i].header["pixdim"][1:4])) HRpsf = compute_psf(LRSpacing, HRSpacing, args.psf) psfList.append(HRpsf) # Compute H HList = [] for i in range(len(inputImages)): HList.append(compute_H(inputImages[i], initHRImage, inputTransforms[i], psfList[i], maskImages[i])) # Intensity correction To do # N4 on initHR # local correction # New init HR if args.bias == True: initHRImage_N4 = apply_N4_on_image(initHRImage, shrink_factor=1) xN4 = convert_image_to_vector(initHRImage_N4) hrN4Data = np.zeros(initHRImage.get_data().shape) for i in range(len(inputImages)): simu = convert_vector_to_image(HList[i].dot(xN4), inputImages[i]) im = gaussian_biais_correction(inputImages[i], simu, 5) warped = apply_affine_itk_transform_on_image(