This paper presents an EM algorithm for reconstruction from emission tomography data that is exactly Richardson-Lucy:
Green, Peter J. "Bayesian Reconstructions from Emission Tomography Data Using a Modified EM Algorithm". IEEE Transactions on Medical Imaging, vol. 9, pp. 84-93, 1990.
Suppose we wish to reconstruct a vector given a vector in the matrix equation . Written in terms of elements, this is:
In tomography, the are cells in space that emit radiation, and the are "bins" of photons collected at particular angles and locations. In deblurring, is the original image and is the blurry image.
The premise behind Richardson-Lucy is that each contribution from an element of to an element of has independent Poisson noise:
For the "M" step, we find the most likely value of based on . The most likely value of depends on the th column of , which in the absence of noise would be times the corresponding column of :
For the "E" step, we find the expected value of given . The calculation amounts to distributing the value of each amongst the th row of in proportions according to the known values of :
So, here is a way to envision the R-L algorithm at work. Start with a matrix whose elements are for some initial guess of . Then independently scale each row so that it sums to (turning the matrix into an estimate of ). Then, replace each column with a multiple of the corresponding column of having the same sum, and repeat the process. In other words, we alternate between enforcing two constraints: summing across the rows of our matrix should yield , and each column should be a multiple of the same column in . When the process converges, our matrix contains valid values of .
To show that this actually is R-L, we plug into . We assume that is energy-preserving, so that is .
In the last equation, for notational convenience, the represents element-wise multiplication, and the fraction bar represents element-wise division.
Ringing: Given the "matrix-update" formulation of R-L given above, we can see how it is easy for ringing to come about. The ringing arises in the reconstructed image , each element of which corresponds to the scale of a column of the matrix. Basically, neither update step hinders ringing at all; operating on columns of the matrix does not relate the to each other, and when operating on the rows, only the sum of each row is considered, which ignores the oscillation of ringing.
Performing basic R-L as described above converges exceedingly slowly and will not match the quality of Matlab's deconvlucy. Matlab uses an acceleration technique which essentially extends each step by a small factor. The Matlab source code references the following papers:
"Acceleration of iterative image restoration algorithms, by D.S.C. Biggs
and M. Andrews, Applied Optics, Vol. 36, No. 8, 1997.
"Deconvolutions of Hubble Space Telescope Images and Spectra",
R.J. Hanisch, R.L. White, and R.L. Gilliland. in "Deconvolution of Images
and Spectra", Ed. P.A. Jansson, 2nd ed., Academic Press, CA, 1997.
The acceleration technique is described in the first paper. Matlab implements the algorithm from sections 2C-D of this paper, and it is not a hard algorithm to implement yourself.