I need to deconvolve the image of a fluorescent bead without the Point Spread Function in MATLAB

6 views (last 30 days)
I am aware that I could use deconvolution algorithms such as LUCY, Weiner and Blind but I am confused as to how to estimate the PSF (point spread function), which is needed for the LUCY and Weiner algorithms.
I have read in a lot of places around the internet that a fluorescent bead that represents a sub resolution object and therefore a impulse function. While I understand that the OTF (optical transfer function) is represented by the image I am getting, how am I superposed to deconvolve the image I have using the very same image?
Here is an example of the image I am trying to deconvolve:
I have a program which automatically singles in on the bead and crops the rest of the image. All I need to do is apply deconvolution to this.
My ultimate aim to achieve optical sectioning by deconvolving a bunch of 2D slices I got from a video and representing them with a 3D software.
So can someone please explain what I need to do, either theoretically (or in terms of MATLAB, which would be preferred).
------------------------
*One Possible Solution*
After talking to a few people, I have noticed that EPFL have a Java resource that is callable from MATLAB. It's a PSF generator, based on the specifications of your microscope. This generated PSF can be used with the LUCY and Weiner.
------------------------
*Alternative Solution*
I have also found this resource, which is a MATLAB library dedicated to what I am working on right now.
------------------------
This (I would love it, if someone attempts to answer this question too) is how I will measure the performance of the deconvolution algorithms. I believe that the ultimate result of my deconvolution will depend on the PSF estimation (EPFL resource or Praveen's algorithm) and the deconvolution algorithm (Blind, LUCY, Weiner etc.). I will post a table of all the results here once this is done.
  2 Comments
Akash Tomer
Akash Tomer on 9 Apr 2017
I also have the same problem I am having a blurred image which i need to deblur. So I am using weiner filter to deblur it but i am unable to find the PSF of a blurred image.I am using MATLAB 7.9.0(R2009b). .

Sign in to comment.

Answers (2)

Bjorn Gustavsson
Bjorn Gustavsson on 27 Jan 2016
Well, if I understand you right, the claim is that the image of your bead is an image of the point-spread-function of your imaging system. (To be nit-picky the OTF is the FFT of the psf). So it seems to me your first step would be to deconvolve that image until you reach an image with a single-pixel impulse - with some psf. That step would be more or less identical with cropping the image around the brightest point and calling that matrix psf. Then you can use that for LR or Wiener-deconvolution to your hearts content on other images from your system. The thing here is that I would suggest that you try that psf-estimate in blind deconvolution on a couple of more interesting images and see if you get a similar psf out (as far as I recall matlab's blind deconvolution function returns updated estimates of psf). If those psf-estimates are roughly the same you should have a robust estimate. Then you can go ahead and deconvolve away - with caution, always with caution...
HTH
  1 Comment
Sharan Duggirala
Sharan Duggirala on 28 Jan 2016
So the size of my bead is currently 4 microns. So therefore it is not sub resolution. However, I have made changes to question which indicates the direction in which I am going (estimating the PSF, using the specifications given by the microscope and then using a particular algorithm like LUCY or Weiner). Could you please validate the direction in which I am heading.

Sign in to comment.


Image Analyst
Image Analyst on 27 Jan 2016
Unless the image of the bead is theoretically supposed to be a single pixel, the image of the bead is not the PSF itself but the PSF convolved with the image of the bead. For example if the bead is a disc of 5 pixels radius and the PSF is a sombrero function, then the image is of a disc convolved with a sombrero function. To get the PSF, you need to know the theoretical size of the bead, then use an inverse filter to get back the PSF. It might be easiest to do this in Fourier space.
  3 Comments
Bjorn Gustavsson
Bjorn Gustavsson on 28 Jan 2016
What Image Analyst suggests is that you figure out how large an ideal image of your bead should be, then create an artificial image something along these lines:
imsiz = size(img_of_bead);
im_ideal = zeros(imsiz);
im_ideal(i0+[-ni:ni],j0+[nj:nj]) = 1;
psf_est = abs(ifft2(fft2(img_of_bead)./fft2(im_ideal)));
That you should then crop down to a reasonable size and also beware of noise amplification.
I'd be more lazy and go for the psf-estimate returned by blind deconvolution and see if that one works...
Also a word of caution: in your image the spot look like it has 2 blobs - is that the way it should be or is there some other issues making the image suboptimal?

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!