osmlem¶
- odl.solvers.iterative.statistical.osmlem(op, x, data, niter, callback=None, **kwargs)[source]¶
Ordered Subsets Maximum Likelihood Expectation Maximation algorithm.
This solver attempts to solve:
max_x L(x | data)
where
L(x, | data)
is the likelihood ofx
givendata
. The likelihood depends on the forward operatorsop[0], ..., op[n-1]
such that (approximately):op[i](x) = data[i]
- Parameters:
- opsequence of
Operator
Forward operators in the inverse problem.
- x
op.domain
element Vector to which the result is written. Its initial value is used as starting point of the iteration, and its values are updated in each iteration step. The initial value of
x
should be non-negative.- datasequence of
op.range
element-like
Right-hand sides of the equation defining the inverse problem.
- datasequence of
- niterint
Number of iterations.
- callbackcallable, optional
Function called with the current iterate after each iteration.
- opsequence of
- Other Parameters:
- sensitivitiesfloat or
op.domain
element-like
, optional The algorithm contains an
A^T 1
term, if this parameter is given, it is replaced by it. Default:op[i].adjoint(op[i].range.one())
- sensitivitiesfloat or
See also
mlem
Ordinary MLEM algorithm without subsets.
loglikelihood
Function for calculating the logarithm of the likelihood
Notes
Given forward models , and data , , the algorithm attempts to find an that maximizes:
The algorithm is explicitly given by partial updates:
for and .
The algorithm is not guaranteed to converge, but works for many practical problems.
References
Natterer, F. Mathematical Methods in Image Reconstruction, section 5.3.2.