how to find the number of atoms at different peak positions automatically?
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
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 comentarios
Image Analyst
el 10 de En. de 2019
Find each individual spot, find it's centroid and second central spatial moment (demo attached), then use fspecial().
Respuestas (1)
Image Analyst
el 4 de En. de 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 comentarios
Image Analyst
el 4 de En. de 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.
Ver también
Categorías
Más información sobre Computer Vision with Simulink en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!