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

1 vue (au cours des 30 derniers jours)
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];
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);
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?

Réponse acceptée

Image Analyst
Image Analyst le 28 Juin 2018
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');
  3 commentaires
Asher Zaidi
Asher Zaidi le 29 Juin 2018
Sure, thanks!

Connectez-vous pour commenter.

Plus de réponses (1)

Matt J
Matt J le 28 Juin 2018
Modifié(e) : Matt J le 28 Juin 2018
You can use the text() command to write the diameters onto the image at desired locations.


En savoir plus sur Get Started with Image Processing Toolbox dans Help Center et File Exchange




Community Treasure Hunt

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

Start Hunting!

Translated by