Inverse filters in general have quite good performance, but are limited in two key areas: an inability to handle certain types of filters, including lens aberrations[1], and the need to know the response of the filter which caused the degradation.
The Wiener filter operates in the Fourier domain, and both (approximately) inverts a degrading filter and removes noise. Given the original image I, the degrading filter H, and a noise constant n, it produces the corrected image J (H, I, and J are all in Fourier domain), by the following equation:
conj(H(u,v)) I(u,v) G(u,v) = _________________________ |H(u,v)|^2 + nThis provides the "optimal method for rolling off the deconvolution transfer function"[1].
Matlab implementation
Performance analysis