mrpro.algorithms.reconstruction.RegularizedIterativeSENSEReconstruction
- class mrpro.algorithms.reconstruction.RegularizedIterativeSENSEReconstruction[source]
Bases:
DirectReconstruction
Regularized iterative SENSE reconstruction.
This algorithm solves the problem \(\min_{x} \frac{1}{2}||W^\frac{1}{2} (Ax - y)||_2^2 + \frac{1}{2}\lambda||Bx - x_0||_2^2\) by using a conjugate gradient algorithm to solve \(H x = b\) with \(H = A^H W A + \lambda B^H B\) and \(b = A^H W y + \lambda B^H x_0\) where \(A\) is the acquisition model (coil sensitivity maps, Fourier operator, k-space sampling), \(y\) is the acquired k-space data, \(W\) describes the density compensation, \(\lambda\) is the strength of the regularization and \(x_0\) is the regularization image (i.e. the prior). \(B\) is a linear operator applied to \(x\).
- __init__(kdata: KData | None = None, fourier_op: LinearOperator | None = None, csm: Callable | CsmData | None = CsmData.from_idata_walsh, noise: KNoise | None = None, dcf: DcfData | None = None, *, n_iterations: int = 5, regularization_data: float | Tensor = 0.0, regularization_weight: float | Tensor, regularization_op: LinearOperator | None = None) None [source]
Initialize RegularizedIterativeSENSEReconstruction.
For a unregularized version of the iterative SENSE algorithm the regularization_weight can be set to
0
orIterativeSENSEReconstruction
algorithm can be used.- Parameters:
kdata (
KData
|None
, default:None
) – Ifkdata
is provided andfourier_op
ordcf
areNone
, thenfourier_op
anddcf
are estimated based onkdata
. Otherwisefourier_op
anddcf
are used as provided.fourier_op (
LinearOperator
|None
, default:None
) – Instance of theFourierOp
used for reconstruction. IfNone
, set up based onkdata
.csm (
Callable
|CsmData
|None
, default:CsmData.from_idata_walsh
) – Sensitivity maps for coil combination. IfNone
, no coil combination is carried out, i.e. images for each coil are returned. If aCallable
is provided, coil images are reconstructed using the adjoint of theFourierOp
(including density compensation) and then sensitivity maps are calculated using theCallable
. For this,kdata
needs also to be provided. For examples have a look at themrpro.data.CsmData
class e.g.from_idata_walsh
orfrom_idata_inati
.noise (
KNoise
|None
, default:None
) – Noise used for prewhitening. IfNone
, no prewhitening is performeddcf (
DcfData
|None
, default:None
) – K-space sampling density compensation. IfNone
, set up based onkdata
.n_iterations (
int
, default:5
) – Number of CG iterationsregularization_data (
float
|Tensor
, default:0.0
) – Regularization data, e.g. a reference image (\(x_0\)).regularization_weight (
float
|Tensor
) – Strength of the regularization (\(\lambda\)).regularization_op (
LinearOperator
|None
, default:None
) – Linear operator \(B\) applied to the current estimate in the regularization term. If None, nothing is applied to the current estimate.
- Raises:
ValueError – If the
kdata
andfourier_op
areNone
or ifcsm
is aCallable
butkdata
is None.
- n_iterations: int
Number of CG iterations.
- regularization_data: torch.Tensor
Regularization data (i.e. prior) \(x_0\).
- regularization_weight: torch.Tensor
Strength of the regularization \(\lambda\).
- regularization_op: LinearOperator
Linear operator \(B\) applied to the current estimate in the regularization term.
- dcf: DcfData | None
Density Compensation Data.
- csm: CsmData | None
Coil Sensitivity Data.
- noise: KNoise | None
Noise Data used for prewhitening.
- fourier_op: LinearOperator
Fourier Operator.
- forward(kdata: KData) IData [source]
Apply the reconstruction.
- Parameters:
kdata (
KData
) – k-space data to reconstruct.- Returns:
the reconstruced image.
- direct_reconstruction(kdata: KData) IData [source]
Direct reconstruction of the MR acquisition.
Here we use \(S^H F^H W\) to calculate the image data using the coil sensitivity operator \(S\), the Fourier operator \(F\), and the density compensation operator \(W\). \(S\) and \(W\) are optional: If they have not been set in this instance, no coil combination or density compensation, respectively, will be performed.
- Parameters:
kdata (
KData
) – k-space data- Returns:
image data
- recalculate_csm(kdata: KData, csm_calculation: Callable[[IData], CsmData] = CsmData.from_idata_walsh, noise: KNoise | None | Literal[False] = None) Self [source]
Update (in place) the CSM from KData.
- Parameters:
kdata (
KData
) – k-space data used for adjoint reconstruction (including DCF-weighting if available), which is then used for CSM estimation.csm_calculation (
Callable
[[IData
],CsmData
], default:CsmData.from_idata_walsh
) – Function to calculate csm expecting idata as input and returning csmdata. For examples have a look at theCsmData
.noise (
Union
[KNoise
,None
,Literal
[False
]], default:None
) – Noise measurement for prewhitening. IfNone
,self.noise
(if previously set) is used. IfFalse
, no prewithening is performed even ifself.noise
is set. Use this if thekdata
is already prewhitened.