Fit Gaussian to randomly distributed points

4 vues (au cours des 30 derniers jours)
Daniel Goldfarb
Daniel Goldfarb le 26 Mai 2015
Commenté : Greig le 28 Mai 2015
I'm trying to recreate the signal produced by a microscope by randomly distributing x number of points(with a given intensity value) on a matrix of a size equal to the resolution(512). I then want to fit a gaussian on to each point to see at what density value of points do I lose the ability to resolve the peaks.
Regarding the code, I'm able to randomly allocate the points and set a peak intensity:
a=1 b=resolution
for i=1:number_of_points x=ceil(((b-a).*rand(i,1)+a)); y=ceil(((b-a).*rand(i,1)+a)); A(x,y)=100;
but I'm unable to fit gaussian to each one of those peaks. How would I take a single value in a matrix and fit a point spread function which caries over the entire matrix, until point density equals a value in which no peaks are resolvable

Réponses (1)

Greig
Greig le 26 Mai 2015
If I understand your question properly, I think imgaussfilt might be what you are looking for, but you will need to make some decision about the sigma value for the Gaussian. Also, I think it only does isotropic filtering (i.e., sigma is the same in all directions).
  2 commentaires
Daniel Goldfarb
Daniel Goldfarb le 26 Mai 2015
Thanks for the quick response Greig. Unfortunately imgaussfilt didn't work for a double input argument.
Greig
Greig le 28 Mai 2015
I don't actually have Image Processing Toolbox, which is needed for imgaussfilt, so I cannot play around with it, but it should be able to handles this. It reads in an image matrix, which is 2D. In your case I think you want to use it like:
B = imgaussfilt([x,y], sigma);

Connectez-vous pour commenter.

Community Treasure Hunt

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

Start Hunting!

Translated by