Hi All,
In short, my question is, "how do you calculate or find out the distance in pixels, between each centroid in a binary image?". I have looked at numerous other questions and can't seem to find one that explains it in a way that I can understand. I am relatively new to Matlab (2 months to be exact, with no previous experience in any other computer language). I have attached the "original image (unprocessed)", the "binary (and rotated) figure", and the "cropped binary figure" I am working with.
I have plotted the centroids onto the cropped binary image using this code:
a1RP=regionprops(a1C,'Centroid','MajorAxisLength',... 'MinorAxisLength','Orientation', 'Eccentricity'); CentroidS=cat(1,a1RP.Centroid);figure imshow(a1C)hold on plot(CentroidS(:,1),CentroidS(:,2),'b*')hold off
which, gives the following figure: attached as "binary image with plotted centroids"
I have tried pdist() and pdist2() but I don't understand what the output means. I get a 100×100 double output, and I am not sure how to interpret that. The code I used for that is as follows:
CentroidDistances=pdist2(CentroidS(:,1),CentroidS(:,2),'euclidean');
The reason I want to know the distance between each centroid is because I want to know what the pitch is, in the grid I am imaging, in pixels. The pitch is ~64 microns, but I want to know how many pixels in the image, correspond to 64 microns, and I think the distance between each neighbouring centroid would give me that. In my mind, I expected each of these distances to be the same, but the 100×100 array threw me off.
I really hope I am making sense. If I am not, please feel free to ask me to clarify or expand, if you want more detail
Thank you.
P.s. This is the full code I used:
imshow(a1) % a1=original image (unprocessed)
a1G=mat2gray(a1); a1GC=imadjust(a1G); a1GCT=graythresh(a1GC); a1B=imbinarize(a1GC,a1GCT); a1R=imrotate(a1B,17,'nearest','loose'); a1C=imcrop(a1R); a1RP=regionprops(a1C,'Centroid','MajorAxisLength',... 'MinorAxisLength','Orientation', 'Eccentricity'); CentroidS=cat(1,a1RP.Centroid); figure imshow(a1C)hold on plot(CentroidS(:,1),CentroidS(:,2),'b*')hold off CentroidDistances=pdist2(CentroidS(:,1),CentroidS(:,2),'euclidean');
Best Answer