MATLAB: Estimate PSF from blurred and unblurred images.

image processingImage Processing Toolbox

I have a blurred image and I want to estimate the Point Spread Function (PSF) that blurred the image. I also have a sharp un-blurred image. I don't need to de-blur the blurred image, I just need the PSF.
Can anyone suggest a function or other method that makes use of the blurred and the sharp image to estimate the PSF?
I've experimented a lot with Matlab's blind deconvolution function as well as a few others like those by Fergus et al. and Prateek Garg, and these do estimate the PSF from the blurred image. But I keep thinking there must be a better way that makes use of the sharp image and perhaps improves performance?
Thank you

Best Answer

What do the theories tell you?
blurredImage = originalImage * * psf (Convolution)
In the Fourier domain:
blurredImageFT = originalImageFT * psfFT (Multiplication)
so
psfFT = blurredImageFT / originalImageFT
psf = inverseFT(blurredImageFT / originalImageFT)
It's essentially the inverse filter except that you're finding the psf instead of the original image. So code that up and see what happens.
Related Question