Clear Filters
Clear Filters

How to find the center of 4 points on an image?

4 views (last 30 days)
I have an image of the foot that was devided into different cells. I need to find the center of each cell. I was wondering if the best way to do so is to pick the 4 points on the vertices of the cell and let Matlab find the center?
Attache is the image. Let me know if you have any ideas. Thanks.
  2 Comments
Tommy
Tommy on 14 Apr 2020
You could create a polyshape based on the four vertices and then use centroid.
Milad Zarei
Milad Zarei on 15 Apr 2020
Yes, I think that would work. I'll give it a shot. Thanks!

Sign in to comment.

Accepted Answer

Ameer Hamza
Ameer Hamza on 15 Apr 2020
Edited: Ameer Hamza on 15 Apr 2020
try this code. It requires functions from image preocessing toolbox.
im = im2double(imread('image.jpeg'));
%% remove red text
im_gray = rgb2gray(im);
im_gray(~(im_gray < 0.2)) = 1;
im_gray = double(imbinarize(im_gray));
%% find the polygons
regions = bwconncomp(im_gray);
pxlList = regions.PixelIdxList;
outlier = isoutlier(cellfun(@(x) numel(x), pxlList));
pxlList(outlier) = [];
%% find centers
centers = zeros(numel(pxlList), 2);
for i=1:numel(pxlList)
im_zeros = zeros(size(im_gray));
im_zeros(pxlList{i}) = 1;
rp = regionprops(im_zeros);
centers(i, :) = rp.Centroid;
end
%%
imshow(im);
hold on
plot(centers(:,1), centers(:,2), 'r+', 'LineWidth', 2, 'MarkerSize', 10);
  8 Comments
Milad Zarei
Milad Zarei on 16 Apr 2020
Ameer, I am honestly impressed. This is so neat. Good job.
Just a quick question. The first code, it finds the centers in pixles (not mm), right?
Ameer Hamza
Ameer Hamza on 16 Apr 2020
I am glad to be of help.
Yes, It finds centers in pixel coordinates. You can convert it to mm according to your scale.

Sign in to comment.

More Answers (0)

Categories

Find more on Images in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!