How could one use the Total Variation frame work to solve the Deblurring problem?
Specifically using the ADMM as a solver.
One could assume the blurring operator is known, linear and shift invariant.

What are the advantages of the TV approach? What are the disadvantages?

This is a continuation of How to Solve Image Denoising with Total Variation Prior Using ADMM.

  • $\begingroup$ It is better to have a question about the non blind case and a dedicated question to the blind case. $\endgroup$
    – Royi
    May 29, 2021 at 13:32
  • $\begingroup$ I answered on the Non Blind case. You may open another question on the blind case. $\endgroup$
    – Royi
    Jun 5, 2021 at 11:55
  • $\begingroup$ @Royi, I am also interested in the Blind Version. Could you extend it as well? $\endgroup$
    – Mark
    Jun 6, 2021 at 15:11
  • $\begingroup$ I see. I think it is better to have a dedicated question for the blind deblurring case. $\endgroup$
    – Royi
    Jun 6, 2021 at 18:05

1 Answer 1


Formulation of the Problem

I am solving the problem under the following assumptions:

  • The blurring operator is Linear and Spatially Invariant (Hence applied by convolution).
  • The blurring operator is known.
  • There is a measurement noise.

So the model is:

$$ \boldsymbol{y} = H \boldsymbol{x} + \boldsymbol{n} $$

Where $ H $ is the matrix form of the blurring kernel, $ \boldsymbol{n} $ is AWGN noise and $ \boldsymbol{x} $ is the reference image to be estimated.
In the model, we assume that $ D \boldsymbol{x} \sim \text{Exponential} \left( \lambda \right) $ (See Exponential Distribution).

Hence the optimization problem (Equivalent of the MAP Estimator) is given by:

$$ \arg \min_{\boldsymbol{x}} \frac{1}{2} {\left\| H \boldsymbol{x} - \boldsymbol{y} \right\|}_{2}^{2} + \lambda \operatorname{TV} \left( \boldsymbol{x} \right) = \arg \min_{x} \frac{1}{2} {\left\| H \boldsymbol{x} - \boldsymbol{y} \right\|}_{2}^{2} + \lambda {\left\| D \boldsymbol{x} \right\|}_{1} $$

Pay attention that this model makes sense only when noise is added as otherwise the TV term only smoothens the output. So the regularization of the TV allows to control between inversing the blurring operator and smoothing the noise.

Solution by ADMM

The ADMM problem will be formulated as:

$$ $$

$$\begin{aligned} \arg \min_{\boldsymbol{x}, \boldsymbol{z}} \quad & \frac{1}{2} {\left\| H \boldsymbol{x} - \boldsymbol{y} \right\|}_{2}^{2} + \lambda {\left\| \boldsymbol{z} \right\|}_{1} \\ \text{subject to} \quad & D \boldsymbol{x} = \boldsymbol{z} \end{aligned}$$

The ADMM will have 3 steps:

  1. vX = mC \ (vY + (paramRho * mD.' * (vZ - vU)));.
  2. vZ = ProxL1(mD * vX + vU, paramLambda / paramRho);.
  3. vU = vU + mD * vX - vZ;.

Where mC = decomposition(mH.' * mH + paramRho * (mD.' * mD), 'chol'); (That's the difference from How to Solve Image Denoising with Total Variation Prior Using ADMM?).
The parameter paramRho is the parameter of the ADMM solver.

I coded this solution in a MATLAB function - SolveLsTvAdmm().
I compared it to a reference by CVX:

enter image description here enter image description here

In the above the noise level was 3 / 255 (Image was scaled to the range [0, 1]) and the blurring operator was Box Blur with radius of 2.
I didn't optimize the paramLambda to its optimal value. So one could get better results. Pay attention that for this low level of paramLambda and small size of an image the ADMM solver is slower then the direct solver of CVX.

The full code is available on my StackExchange Signal Processing Q75471 GitHub Repository (Look at the SignalProcessing\Q75471 folder).


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.