Here we shall explore image restoration (eg, deblurring) using Weiner and Lucy Richardson filtering.
First consider this pair of images:
Original image
Blurry image
In MATLAB, we have the functions deconvwnr
and deconvlucy
that performs Weiner and Lucy-Richardson filtering respectively. However we must also specify the filter that was used in the blurring process. Looking at the images above it seems that a gaussian blurring might be the reason for the transformation. However, we do not know the appropriate kernel size and variance of the gaussian filter
First we keep sigma constant at 5 and plot the PSNRs for the 2 methods. The graphs below show that a window size of 11 is appropriate for sigma = 5
PSNR vs window size for fixed sigma
Next we vary both sigma and window size to find the optimal filter. We observe that for sigma=5, we get best performance.
PSNR when sigma and filter size is varied for Weiner filtering
PSNR when sigma and filter size is varied for Lucy-Richardson filtering
Thus choosing filter size = 11 and sigma = 5, we get the following restorations. Lucy-Richardson's output looks sharper, but has more ringing artifacts at the edge.
Restoration from Weiner
Restoration from Lucy-Richardson
Now we consider this image, whose ground truth is unknown
We try 3 types of filters all of window size = 11: average, gaussian (sigma = 5) and motion blur kernel (angle = 45 degree). The results are shown below:
The left column shows the Lucy-Richardson algorithm's outputs, while the right shows Weiner filtering. The top row is for average filter, the middle row for gaussian and the bottom row for motion blur
The results look sharper than the input image. In general Lucy-Richardson's output looks more sharper.