mri.reconstructors.self_calibrating
mri.reconstructors.self_calibrating#
This implements the self-calibrating reconstruction for the multi-channel case.
- class SelfCalibrationReconstructor(fourier_op, linear_op=None, gradient_formulation='synthesis', kspace_portion=0.1, Smaps=None, smaps_extraction_mode='gridding', smaps_gridding_method='linear', n_jobs=1, verbose=0, **kwargs)[source]#
Bases:
mri.reconstructors.base.ReconstructorBase
Self Calibrating reconstruction for multi-channel acquisition. The coil sensitivity is estimated from a small portion of the k-space center and used to reconstruct the complex image.
Notes
For the Analysis case, finds the solution for x of: ..math:: (1/2) * sum(||F Sl x - yl||^2_2, n_coils) + mu * H( W x )
For the Synthesis case, finds the solution of: ..math:: (1/2) * sum(||F Sl Wt alpha - yl||^2_2, n_coils) + mu * H (alpha)
with ..math:: alpha = W x and x = Wt alpha
The sensitivity information (Sl) is taken to be the low-resolution of the image extracts from the k-space portion given in the parameter
- Parameters
fourier_op (object of class FFT, NonCartesianFFT or Stacked3DNFFT in) –
mri.operators – Defines the fourier operator F in the above equation.
linear_op (object, (optional, default None)) – Defines the linear sparsifying operator denoted \(W\) in the equation above. This must operate on x and have 2 functions, op(x) and adj_op(coeff) which implements the operator and adjoint operator. For wavelets, this can be object of class WaveletN or WaveletUD2 from mri.operators.linear . If None, sym8 wavelet with nb_scale=3 is chosen.
gradient_formulation (str between 'analysis' or 'synthesis',) – default ‘synthesis’ defines the formulation of the image model which defines the gradient.
kspace_portion (int or tuple (default is 0.1 in all dimension)) – int or tuple indicating the k-space central portion used to estimate the coil sensitivity information, denoted \(Sl\) in the above equation. if int, will be evaluated to (0.1,)*nb_dim of the image
Smaps (numpy.ndarray (optional, default None)) –
- for gradient initialization:
Please refer to mri.operators.gradient.base for information.
Sensivity maps used to initialize the gradient operator. If set to None, the maps will have to be recomputed once when calling the reconstruct method. The shape should correspond to the shape of the expected volume.
smaps_extraction_mode (string 'FFT' | 'NFFT' | 'Stack' | 'gridding' (default)) – Defines the mode in which we would want to interpolate to extract the sensitivity information when recomputing the sensitivity maps. NOTE: FFT should be considered only if the input has been sampled on the grid
smaps_gridding_method (string 'linear' (default) | 'cubic' | 'nearest') – For gridding mode, it defines the way interpolation must be done used by the sensitivity extraction method when recomputing the sensitivity maps.
n_jobs (int, default 1) – The number of CPUs used to accelerate the reconstruction.
verbose (int, optional default 0) –
- Verbosity levels
1 => Print basic debug information 5 => Print all initialization information 20 => Calculate cost at the end of each iteration. 30 => Print the debug information of operators if defined by class NOTE - High verbosity (>20) levels are computationally intensive.
**kwargs (Extra keyword arguments) –
- for gradient initialization:
Please refer to mri.operators.gradient.base for information.
- regularizer_op: operator, (optional default None)
Defines the regularization operator for the regularization function H. If None, the regularization chosen is Identity and the optimization turns to gradient descent.
See also
ReconstructorBase
parent class
- get_smaps()[source]#
Get the sensitivity maps.
- Returns
The sensitivity maps when given or already computed, or None.
- Return type
np.ndarray, None
- set_smaps(smaps)[source]#
Set the sensitivity maps and re-initializes the gradient accordingly.
- Parameters
smaps (numpy.ndarray) –
- for gradient initialization:
Please refer to mri.operators.gradient.base for information
- reconstruct(kspace_data, optimization_alg='pogm', x_init=None, num_iterations=100, recompute_smaps=True, **kwargs)[source]#
Perform the self-calibrating reconstruction.
- Parameters
kspace_data (numpy.ndarray) – the acquired value in the Fourier domain. this is y in above equation.
optimization_alg (str (optional, default 'pogm')) – Type of optimization algorithm to use, ‘pogm’ | ‘fista’ | ‘condatvu’
x_init (numpy.ndarray (optional, default None)) – input initial guess image for reconstruction. If None, the initialization will be an ndarray of zeros
num_iterations (int (optional, default 100)) – number of iterations of algorithm
recompute_smaps (bool (optional, default False)) – A boolean value to check if the Smaps must be recalculated. Note that this would recompute the lipchitz constant. This must be set to True if you want the Smaps to be updated in this reconstruction. The first reconstruction would need this to be True.