I need to deconvolve the image of a fluorescent bead without the Point Spread Function in MATLAB
조회 수: 10 (최근 30일)
이전 댓글 표시
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:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/153616/image.png)
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
Akash Tomer
2017년 4월 9일
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). .
Image Analyst
2017년 4월 9일
Yes, sometimes it's a bit of a guessing game. Try different spreads until you get the best looking image.
답변 (2개)
Bjorn Gustavsson
2016년 1월 27일
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
Image Analyst
2016년 1월 27일
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
Bjorn Gustavsson
2016년 1월 28일
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?
samane pahlevani
2020년 10월 26일
hi, thanks for your attention, could you please explain more about line 3 in your answer?
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!