How do you find a centroid of an image?
이전 댓글 표시
I am trying to find the centroid of a binary image using region props but I keep receiving the error "Field reference for multiple structure elements that is followed by more reference blocks is an error". Here is my code for finding the centroid:
measurements = regionprops(bw, 'Centroid');
hold on;
plot(measurements.Centroid(1), measurements.Centroid(2), 'r+', 'MarkerSize', 120, 'LineWidth', 1);
hold off;
imshow(bw)
Any help would be appreciated thank you
댓글 수: 1
Image Analyst
2014년 8월 6일
Do you want the centroid of the whole, entire image, or of individual blobs in the image? You asked about the whole image but your code seems to indicate you maybe want centroids of individual blobs. Of course the centroid of the whole image is at the center, and the "Weighted centroid" depends on the gray levels in the image.
채택된 답변
추가 답변 (6개)
Nade Sritanyaratana
2014년 8월 5일
The example at the end of the regionprops documentation has an elegant use of the cat function, which might be able to fix the error you are getting.
measurements = regionprops(bw, 'Centroid');
imshow(bw);
centroids = cat(1,measurements.Centroid);
hold on;
plot(centroids(:,1), centroids(:,2), 'r+', 'MarkerSize', 120, 'LineWidth', 1);
hold off;
댓글 수: 4
Rish
2014년 8월 5일
Image Analyst
2014년 8월 6일
Your markers are too big - 120. Try something like 10 or 15 instead.
Image Analyst
2016년 2월 7일
You can't do that because centroids is [x1,y1,x2,y2,x3,y3,x4,y4,.....] You need to extract x and y separately:
xCenters = centroids(1:2:end);
yCenters = centroids(2:2:end);
Then you can pick out which two blobs you want to find the midpoint between and average them. For example
xMid = (xCenters(1)+xCenters(2))/2;
yMid = (yCenters(1)+yCenters(2))/2;
hold on;
plot(xMid, yMid, 'r+', 'LineWidth', 2, 'MarkerSize', 20);
hallouma amari
2015년 5월 12일
편집: Image Analyst
2015년 5월 12일
help me too please
this is my error
Field reference for multiple structure elements that is followed by more reference blocks is an error.
img2=imread('56.png');
se=strel('disk',3);
J=imclose(img2,se);
J=rgb2gray(J);
M=imadjust(J);
B=0; %initialisation
[R C]=size(J);
measurements = regionprops(J, 'Centroid');
x2=measurements.Centroid(1);
y2=measurements.Centroid(2);
bw = bwboundaries(J);
boundary = bw{1};
x1=boundary(:,1);
y1=boundary(:,2);
x1 = x1-x2;
y1 = y1-y2;
댓글 수: 1
Image Analyst
2015년 5월 12일
Try like what I showed:
centroids = [measurements.Centroid];
xCentroids = centroids(1:2:end);
yCentroids = centroids(2:2:end);
% Compute distances of perimeter to centroid of blob #1
bw = bwboundaries(J);
boundary = bw{1};
x1=boundary(:,1);
y1=boundary(:,2);
deltaXs = x1 - xCentroids(1);
deltaYs = y1 - yCentroids(1);
somia gupta
2016년 5월 10일
0 개 추천
i want to find the centroid of an image in matlab ??? need help for the code for head pose detection
댓글 수: 1
Image Analyst
2016년 5월 10일
See my Image Segmentation Tutorial in my File Exchange http://www.mathworks.com/matlabcentral/fileexchange/?term=authorid%3A31862 It goes over that plus more.
vinoba
2017년 3월 11일
0 개 추천
How to find centroid of each and every blob(objects) in a binary image?
댓글 수: 1
Image Analyst
2017년 3월 11일
See my Image Segmentation Tutorial in my File Exchange: http://www.mathworks.com/matlabcentral/fileexchange/?term=authorid%3A31862
Basically
[labledImage, numBlobs] = bwlabel(binaryImage);
props = regionprops(labeledImage, 'Centroid', 'WeightedCentroid');
You get a structure array with both types of centroids for every region.
tanuwyot
2017년 10월 25일
0 개 추천
How to locate the nucleus centroid and extract the seven HU moments value ? Please help me
댓글 수: 1
Image Analyst
2017년 10월 25일
Use regionprops(). See http://www.mathworks.com/matlabcentral/fileexchange/25157-image-segmentation-tutorial
I don't have code for Hu's moments.
카테고리
도움말 센터 및 File Exchange에서 Image Arithmetic에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
