measure diameter starting with a certain point
    조회 수: 6 (최근 30일)
  
       이전 댓글 표시
    
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);
댓글 수: 0
답변 (0개)
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!