Convert 360-degrees extended Field Of View scan to standard 180-degreeΒΆ

Visit the tomopy.sino_360_to_180 for more information.

Load HDF5 dataset of extended FOV scan

h5file = "/mnt/PETRA/SED/BEATS/IH/BEATS_first_scan-20230511T170626/BEATS_first_scan-20230511T170626.h5"
projs, flats, darks, theta = dxchange.read_aps_32id(h5file, exchange_rank=0, sino=(600, 800, 1))
print("Dataset size: ", projs[:, :, :].shape[:], " - dtype: ", projs.dtype)
print("Flat fields size: ", flats[:, :, :].shape[:])
print("Dark fields size: ", darks[:, :, :].shape[:])
print("Theta array size: ", theta.shape[:])
ru.plot_midplanes(projs)
../_images/66608667aa5203434611a9dd0517c594d1d09d41ee6ca193bf640955bc2da07a.png
projs_180 = tomopy.sino_360_to_180(projs, overlap=600)
  • Check for continuity of sinogram features.

  • Fine-tune the overlap parameter.

  • The correctly processed sinogram shows no edge but only continuous lines

plt.imshow(projs_180[600:900, 600, 2700:3300])
<matplotlib.image.AxesImage at 0x7fbfc88121d0>
../_images/cc872cca50cc54c55dcb559270da855e73a006e07b216c00be3b6b5366b7b6c1.png

Sinogram processed with wrong overlap

projs_180 = tomopy.sino_360_to_180(projs, overlap=700)
plt.imshow(projs_180[600:900, 600, 2700:3300])
<matplotlib.image.AxesImage at 0x7fbfc88121d0>
../_images/cc872cca50cc54c55dcb559270da855e73a006e07b216c00be3b6b5366b7b6c1.png

Sinogram processed with correct overlap