measure diameter starting with a certain point

2 vues (au cours des 30 derniers jours)
Walaa
Walaa le 31 Oct 2022
I used the code suggested by @Image Analyst to calculate the shortest distance between the boundaries. Now I need to measure the diameter of the larger blob, but most importantly, I want to start measuring at the same point we measured the shortest distance and plot the diameter as a coloured line over the binary image.
the code i used to measure the shortest distance
% Define object boundaries
numberOfBoundaries = size(binaryImage, 1);
boundary1 = boundaries{1};
boundary2 = boundaries{2};
boundary1x = boundary1(:, 2);
boundary1y = boundary1(:, 1);
x1=1;
y1=1;
x2=1;
y2=1;
overallMinDistance = inf; % Initialize.
index1 = 1;
index2 = 1;
for k = 1 : length(boundary2)
boundary2x = boundary2(k, 2);
boundary2y = boundary2(k, 1);
% For this blob, compute distances from boundaries to edge.
allDistances = sqrt((boundary1x - boundary2x).^2 + (boundary1y - boundary2y).^2);
% Find closest point, min distance.
[minDistance(k), indexOfMin] = min(allDistances);
if minDistance(k) < overallMinDistance
overallMinDistance = minDistance(k);
x1 = boundary1x(indexOfMin);
y1 = boundary1y(indexOfMin);
x2 = boundary2x;
y2 = boundary2y;
index2 = k;
index1 = indexOfMin;
end
end
% Report to command window.
fprintf('narrowest rim length = %f at index %d of boundary 1 and index %d of boundary 2.\n', ...
overallMinDistance, index1, index2);
hFig = figure;
h1 = subplot(1, 1, 1);
imshow(binaryImage);
title('Narrowest rim', 'FontSize', 10);
hFig.WindowState = 'maximized';
hold on;
% Draw a line between point 1 and 2
NarrowestRim=line(h1, [x1, x2], [y1, y2], 'Color', 'y', 'LineWidth', 3);

Réponses (0)

Catégories

En savoir plus sur Images dans Help Center et File Exchange

Produits


Version

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by