How can I plot the diameters of an irregularly shaped region in an image?
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Asher Zaidi
el 28 de Jun. de 2018
Comentada: Asher Zaidi
el 29 de Jun. de 2018
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?
0 comentarios
Respuesta aceptada
Image Analyst
el 28 de Jun. de 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');
end
3 comentarios
Image Analyst
el 29 de Jun. de 2018
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?
Ver también
Categorías
Más información sobre Computer Vision with Simulink en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!