udeconv - Unsupervised Wiener-Hunt deconvolution
xEap = udeconv(data, ir, ...)
[xEap, gnChain, gxChain] = udeconv(data, ir, ...)
return the deconvolution of 'data' by 'ir'. The algorithm is a stochastic iterative process (Gibbs sampler) that allow automatic tuning of regularization parameter, see reference below. There is no specific constraints on the number of dimension.
The call [xEap, gnChain, gxChain, xStd] = udeconv(...) allow to compute the diagonal of the covariance matrix around xEap with the cost of an fft at each iteration.
If you use this work, add a citation of the reference below.
Compatible with octave.
data -- the data
ir -- the impulsionnal response
Optionnals argument are in the form (..., 'key', val, ...).
'criterion', val -- if the difference between two successive estimate is less than this value, stop the algorithm. Default is 1e-4.
'burnin', val -- number of iteration to remove at the beginning of the chain to compute the mean of the image. Default is typicaly 30.
'maxIter', val -- maximum number of iteration. Default is 150.
xEap -- the estimated result
gnChain, gxChain -- the MCMC chain of the regularisation parameters. See reference below.
xStd -- is the standart deviation around the estimate
xEap = udeconv(data, ir)
[xEap gnChain, gxChain] = udeconv(...)
[xEap gnChain, gxChain, xStd] = udeconv(...)
François Orieux, Jean-François Giovannelli, and Thomas Rodet, "Bayesian estimation of regularization and point spread function parameters for Wiener-Hunt deconvolution," J. Opt. Soc. Am. A 27, 1593-1607 (2010)
François Orieux (2020). Unsupervised Wiener-Hunt deconvolution (https://www.mathworks.com/matlabcentral/fileexchange/30880-unsupervised-wiener-hunt-deconvolution), MATLAB Central File Exchange. Retrieved .
Works fine with images, but for any 1D data (like audio) will cause an error.
Is there any suitable replacement for gamrnd function? Just to try. Thank you.
You right, this is a mistake in 'test.m'. It should be
Nevertheless, the displayed image are correct. I will try to fix that as soon as possible.
why in test.m you have placed lena and not lena_blurred, i.e. lena_deconvolued = udeconv(lena, ir), as the image to be deconvolved? From what I see, in a practical situation we have access only to the convolved data and not to the original data and also, from my point of view, it makes little sense to apply the deconvolution method on the original data.
The gamrnd function is necessary and come with Statistics toolbox.
Would nice to be able to test this apparently nice program. Unfortunately, it appears to be compatible with octave, but not with matlab - couldn't find gamrnd.m in matlab...
hpFilter no more necessary. Some argument are no optionnal. Demonstration file is included.