![0000 Screenshot.png](https://www.mathworks.com/matlabcentral/answers/uploaded_files/200169/0000%20Screenshot.png)
how to find the number of atoms at different peak positions automatically?
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
I have a set of maximum positions and there are some number of atoms at each position. I get the number of atoms by manually pointing at each peak position. But how can I find a way that automatically counts the number of atoms at each max position?
3 Kommentare
Image Analyst
am 10 Jan. 2019
Find each individual spot, find it's centroid and second central spatial moment (demo attached), then use fspecial().
Antworten (1)
Image Analyst
am 4 Jan. 2019
You could try findpeaks() if you have the Signal Processing Toolbox.
Attach 'cube.mat' and a screenshot of the signal if you need more help.
5 Kommentare
Image Analyst
am 4 Jan. 2019
What I would do is to threshold, then call
props = regionprops(mask, 'WeightedCentroid');
Then get the y locations
xy = vertcat(props.WeightedCentroid);
y = xy(:, 2);
Then you need to count the number in each "Band" but the spots may not be perfectly aligned. So you can take a mean across the image and threshold then use regionprops() again this time to find the centroid of the black bands in between the spots bands.
meanVerticalProfile = mean(mask);
binaryImage = meanVerticalProfile < someDarkThreshold;
props2 = regionprops(binaryImage, 'WeightedCentroid');
xy = vertcat(props.WeightedCentroid);
edges = xy(:, 2);
etc.
Now you can use those black band centers as "edges" in histogram() or histcounts() to get the count in each spots band
counts = histcounts(y, edges);
It's all untested since I don't have your data, so adapt it if it doesn't work.
Siehe auch
Kategorien
Mehr zu Computer Vision with Simulink finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!