필터 지우기
필터 지우기

How can I plot the diameters of an irregularly shaped region in an image?

조회 수: 1 (최근 30일)
This is my code:
props = regionprops(BW, 'Area', 'Perimeter','Centroid','EquivDiameter');
allAreas = [props.Area];
allPerimeters = [props.Perimeter];
centroids = cat(1, props.Centroid);
allDiameters = [props.EquivDiameter];
figure(1);
imshow(BW);
title('Outlines, from bwboundaries()', 'FontSize', 1);
axis image; % Make sure image is not artificially stretched because of screen's aspect ratio.
hold on;
boundaries = bwboundaries(BW);
numberOfBoundaries = size(boundaries, 1);
for k = 1 : numberOfBoundaries
thisBoundary = boundaries{k};
plot(thisBoundary(:,2), thisBoundary(:,1), 'r', 'LineWidth', 2);
end
hold on;
plot(centroids(:,1),centroids(:,2), 'b*')
hold off
This gives me the following image:
I got the actual values of the diameters through "EquivDiameter", but how can I plot the diameters of each individual blob on top of their centroids?

채택된 답변

Image Analyst
Image Analyst 2018년 6월 28일
Try this:
xCentroids = centroids(1:2:end);
yCentroids = centroids(2:2:end);
for k = 1 : length(xCentroids )
txt = sprintf(' %.2f', allDiameters(k));
text(xCentroids(k), yCentroids(k), txt, 'FontSize', 20, 'FontWeight', 'bold');
end
  댓글 수: 3
Image Analyst
Image Analyst 2018년 6월 29일
OK. You might make the font size a bit smaller. Honestly I don't know why you want the diameters on the image if there are so many of them.
But anyway, if I've answered all your questions, can you click the "Accept this answer" link?

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Matt J
Matt J 2018년 6월 28일
편집: Matt J 2018년 6월 28일
You can use the text() command to write the diameters onto the image at desired locations.

제품


릴리스

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by