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

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.

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.


Andrei (view profile)

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.

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


Update presentation

Update presentation

hpFilter no more necessary. Some argument are no optionnal. Demonstration file is included.

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

MATLAB Online Live Editor Challenge

View the winning live scripts from faculty and students who participated in the recent challenge.

Learn more

Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.

» Watch video