nabu.estimation.cor_sino
source module nabu.estimation.cor_sino
Classes
-
SinoCorInterface — A class that mimics the interface of CenterOfRotation, while calling SinoCor
-
CenterOfRotationFourierAngles — This CoR estimation algo is proposed by V. Valls (BCU). It is based on the Fourier transform of the columns on the sinogram. It requires an initial guesss of the CoR wich is retrieved from dataset_info.dataset_scanner.x_rotation_axis_pixel_position. It is assumed in mm and pixel size in um. Options are (for the moment) hard-coded in the SinoCORFinder.cor_finder.extra_options dict.
-
CenterOfRotationVo — A wrapper around algotom 'find_center_vo' and 'find_center_360'.
source class SinoCor(img_1, img_2, logger=None)
This class has 2 methods
- overlap. Find a rough estimate of COR
- accurate. Try to refine COR to 1/10 pixel
Methods
source staticmethod SinoCor.schift(mat, val)
source method SinoCor.overlap(side='right', window_width=None)
Compute COR by minimizing difference of circulating ROI
- side: preliminary knowledge if the COR is on right or left
- window_width: width of ROI that will slide on the other part of the sinogram by default, 20% of the width of the detector.
Raises
-
ValueError
source method SinoCor.accurate(neighborhood=7, shift_value=0.1)
refine the calculation around COR integer pre-calculated value The search will be executed in the defined neighborhood
Parameters
-
neighborhood : int — Parameter for accurate calculation in the vicinity of the rough estimate. It must be an odd number. 0.1 pixels float shifts will be performed over this number of pixel
source class SinoCorInterface(logger=None, **kwargs)
source method SinoCorInterface.find_shift(img_1, img_2, side='right', window_width=None, neighborhood=7, shift_value=0.1, return_relative_to_middle=None, **kwargs)
source class CenterOfRotationFourierAngles(*args, **kwargs)
This CoR estimation algo is proposed by V. Valls (BCU). It is based on the Fourier transform of the columns on the sinogram. It requires an initial guesss of the CoR wich is retrieved from dataset_info.dataset_scanner.x_rotation_axis_pixel_position. It is assumed in mm and pixel size in um. Options are (for the moment) hard-coded in the SinoCORFinder.cor_finder.extra_options dict.
Methods
source method CenterOfRotationFourierAngles.gaussian(p, x)
source method CenterOfRotationFourierAngles.tukey(p, x)
source method CenterOfRotationFourierAngles.sinlet(p, x)
source method CenterOfRotationFourierAngles.find_shift(sino, angles=None, side='center', near_std=100, near_width=20, shift_sino=True, crop_around_cor=False, signal='tukey', near_weight=0.1, near_alpha=0.5, near_step=0.5, return_relative_to_middle=None)
Raises
-
ValueError
source class CenterOfRotationVo(logger=None, verbose=False, extra_options=None)
A wrapper around algotom 'find_center_vo' and 'find_center_360'.
Nghia T. Vo, Michael Drakopoulos, Robert C. Atwood, and Christina Reinhard, "Reliable method for calculating the center of rotation in parallel-beam tomography," Opt. Express 22, 19078-19086 (2014)
Methods
source method CenterOfRotationVo.find_shift(sino, halftomo=False, is_360=False, win_width=100, side='center', search_width_fraction=0.1, step=0.25, radius=4, ratio=0.5, dsp=True, ncore=None, hor_drop=None, ver_drop=None, denoise=True, norm=True, use_overlap=False, return_relative_to_middle=None)
Raises
-
ValueError