File Exchange

image thumbnail

Unsupervised Wiener-Hunt deconvolution

version (95.9 KB) by François Orieux
Return the Wiener-Hunt deconvolution of data without tuning parameters.


Updated 19 Dec 2011

View Version History

View License

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)

Cite As

François Orieux (2020). Unsupervised Wiener-Hunt deconvolution (, MATLAB Central File Exchange. Retrieved .

Comments and Ratings (6)

Juha Kuortti

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.

François Orieux

You right, this is a mistake in 'test.m'. It should be

udeconv(lena_blurred, ir)

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.


François Orieux

The gamrnd function is necessary and come with Statistics toolbox.

Mathias Anton

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...

MATLAB Release Compatibility
Created with R2008a
Compatible with any release
Platform Compatibility
Windows macOS Linux

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!