def rec_sirtfbp(data, theta, rot_center, start=0, test_sirtfbp_iter=False): # Use test_sirtfbp_iter = True to test which number of iterations is suitable for your dataset # Filters are saved in .mat files in "./¨ if test_sirtfbp_iter: nCol = data.shape[2] output_name = './test_iter/' num_iter = [50, 100, 150] filter_dict = sirtfilter.getfilter(nCol, theta, num_iter, filter_dir='./') for its in num_iter: tomopy_filter = sirtfilter.convert_to_tomopy_filter( filter_dict[its], nCol) rec = tomopy.recon(data, theta, center=rot_center, algorithm='gridrec', filter_name='custom2d', filter_par=tomopy_filter) output_name_2 = output_name + 'sirt_fbp_%iiter_slice_' % its dxchange.write_tiff_stack(data, fname=output_name_2, start=start, dtype='float32') # Reconstruct object using sirt-fbp algorithm: num_iter = 100 nCol = data.shape[2] sirtfbp_filter = sirtfilter.getfilter(nCol, theta, num_iter, filter_dir='./') tomopy_filter = sirtfilter.convert_to_tomopy_filter(sirtfbp_filter, nCol) rec = tomopy.recon(data, theta, center=rot_center, algorithm='gridrec', filter_name='custom2d', filter_par=tomopy_filter) return rec
def rec_sirtfbp(data, theta, rot_center, start=0, test_sirtfbp_iter = True): # Use test_sirtfbp_iter = True to test which number of iterations is suitable for your dataset # Filters are saved in .mat files in "./¨ if test_sirtfbp_iter: nCol = data.shape[2] output_name = './test_iter/' num_iter = [50,100,150] filter_dict = sirtfilter.getfilter(nCol, theta, num_iter, filter_dir='./') for its in num_iter: tomopy_filter = sirtfilter.convert_to_tomopy_filter(filter_dict[its], nCol) rec = tomopy.recon(data, theta, center=rot_center, algorithm='gridrec', filter_name='custom2d', filter_par=tomopy_filter) output_name_2 = output_name + 'sirt_fbp_%iiter_slice_' % its dxchange.write_tiff_stack(data, fname=output_name_2, start=start, dtype='float32') # Reconstruct object using sirt-fbp algorithm: num_iter = 100 nCol = data.shape[2] sirtfbp_filter = sirtfilter.getfilter(nCol, theta, num_iter, filter_dir='./') tomopy_filter = sirtfilter.convert_to_tomopy_filter(sirtfbp_filter, nCol) rec = tomopy.recon(data, theta, center=rot_center, algorithm='gridrec', filter_name='custom2d', filter_par=tomopy_filter) return rec
#data = tomopy.prep.phase.retrieve_phase(data,pixel_size=detector_pixel_size_x,dist=sample_detector_distance,energy=monochromator_energy,alpha=8e-3,pad=True) # Set rotation center. rot_center = 1552 print(rot_center) data = tomopy.minus_log(data) # Use test_sirtfbp_iter = True to test which number of iterations is suitable for your dataset # Filters are saved in .mat files in "./¨ test_sirtfbp_iter = True if test_sirtfbp_iter: nCol = data.shape[2] output_name = './test_iter/' num_iter = [50,100,150] filter_dict = sirtfilter.getfilter(nCol, theta, num_iter, filter_dir='./') for its in num_iter: tomopy_filter = sirtfilter.convert_to_tomopy_filter(filter_dict[its], nCol) rec = tomopy.recon(data, theta, center=rot_center, algorithm='gridrec', filter_name='custom2d', filter_par=tomopy_filter) output_name_2 = output_name + 'sirt_fbp_%iiter_slice_' % its dxchange.write_tiff_stack(data, fname=output_name_2, start=start, dtype='float32') # Reconstruct object using sirt-fbp algorithm: num_iter = 100 nCol = data.shape[2] sirtfbp_filter = sirtfilter.getfilter(nCol, theta, num_iter, filter_dir='./') tomopy_filter = sirtfilter.convert_to_tomopy_filter(sirtfbp_filter, nCol) rec = tomopy.recon(data, theta, center=rot_center, algorithm='gridrec', filter_name='custom2d', filter_par=tomopy_filter) # Reconstruct object using Gridrec algorithm. # rec = tomopy.recon(data, theta, center=rot_center, algorithm='gridrec', nchunk=1)