# how to Identify the centre of atom

3 views (last 30 days)
on 12 Apr 2024
Commented: DGM on 13 Apr 2024
how to Identify the centre of gravity like the fllowing figure

DGM on 12 Apr 2024
Here's a start.
% the original image
inpict = im2gray(inpict);
% crop out the subimages
A0 = imcrop(inpict,[31.51 30.51 277.98 277.98]);
B0 = imcrop(inpict,[326.51 30.51 277.98 277.98]);
C0 = imcrop(inpict,[621.51 30.51 277.98 277.98]);
% process A
A = imflatfield(A0,10);
A = imopen(A,strel('disk',3,0));
% process B
% process C
C = imflatfield(C0,10);
% for example, find the centroids of the blobs in one of the masks
centers = vertcat(Sc.Centroid);
% mark the centers on the mask
hold on;
plot(centers(:,1),centers(:,2),'x','linewidth',2)
Image Analyst on 13 Apr 2024
@DGM in your first response, since he specifically wanted the center of gravity, you should have used "WeightedCentroid" instead of 'Centroid', though for this image it looks like they should be really close to the same location.
Maybe, after field flattening, you can use kmeans to classify a pixel as light, dark, or gray.
DGM on 13 Apr 2024
That's a pretty good point. I'll throw in an example just for sake of completeness.
% the original image
inpict = im2gray(inpict);
% crop out the subimages (i'm just going to use C)
C0 = imcrop(inpict,[621.51 30.51 277.98 277.98]);
% process C (same as before)
C = imflatfield(C0,10);
% for example, find the weighted centroids of the blobs in one of the masks
% in this call to regionprops, it's important to make sure that the second argument
% has a light-on-dark polarity, hence the use of imcomplement() in the case of B or C.
% A is already light-on-dark, so we wouldn't need to complement it.
centers = vertcat(Sc.WeightedCentroid);
plot(centers(:,1),centers(:,2),'x','linewidth',2)