# How to deconvolve an image in MATLAB? i was using weiner filter for this purpose but didn't get the results.

6 visualizzazioni (ultimi 30 giorni)
Shoaib Ul Hassan il 2 Mar 2020
Commentato: Gab D il 6 Ago 2020
function ex = wienerFilter(y,h,sigma,gamma,alpha);
%
% ex = wienerFilter(y,h,sigma,gamma,alpha);
%
% Generalized Wiener filter using parameter alpha. When
% alpha = 1, it is the Wiener filter. It is also called
% Regularized inverse filter.
%
% Reference: Richb's paper
% Created: Tue May 4 16:24:06 CDT 1999, Huipin Zhang
N = size(y,1);
Yf = fft2(y);
Hf = fft2(h,N,N);
Pyf = abs(Yf).^2/N^2;
% direct implementation of the regularized inverse filter,
% when alpha = 1, it is the Wiener filter
% Gf = conj(Hf).*Pxf./(abs(Hf.^2).*Pxf+alpha*sigma^2);
%
% Since we don't know Pxf, the following
% handle singular case (zero case)
sHf = Hf.*(abs(Hf)>0)+1/gamma*(abs(Hf)==0);
iHf = 1./sHf;
iHf = iHf.*(abs(Hf)*gamma>1)+gamma*abs(sHf).*iHf.*(abs(sHf)*gamma<=1);
Pyf = Pyf.*(Pyf>sigma^2)+sigma^2*(Pyf<=sigma^2);
Gf = iHf.*(Pyf-sigma^2)./(Pyf-(1-alpha)*sigma^2);
% max(max(abs(Gf).^2)) % should be equal to gamma^2
% Restorated image without denoising
eXf = Gf.*Yf;
ex = real(ifft2(eXf));
return
##### 1 CommentoMostra -1 commenti meno recentiNascondi -1 commenti meno recenti
Gab D il 6 Ago 2020
Hi, could you provide de full reference of Richb's paper? I am not able to determine what is the gamma variable.
Also, since we dont know Pxf, could we just use an approximation based on a standart Fourier deconvolution X_0hat=Y/H and compute Pxf from there?

Accedi per commentare.

### Risposte (1)

Daniel Vieira il 2 Mar 2020
Looking superficially this code seems right, would have to go through the theory to check. But you can also use the function wiener2.
##### 1 CommentoMostra -1 commenti meno recentiNascondi -1 commenti meno recenti
Shoaib Ul Hassan il 3 Mar 2020
And what if i want to use Blind Deconvolution Method?

Accedi per commentare.

### Categorie

Scopri di più su Image Filtering in Help Center e File Exchange

### Community Treasure Hunt

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

Start Hunting!

Translated by