How can I calcuate the distance from two selected points?
Show older comments
Is there a simple way (a command) to be able to identify in a grafical way the distance beetween two points on a figure? If I have a figure with some points I wonder if There is a way that allow you to have in ouput the distance between the two selected points? For example a sort of ginput command. Have you got an idea?
Accepted Answer
More Answers (1)
Image Analyst
on 1 Feb 2014
Try this method with improfile:
clc; % Clear the command window.
close all; % Close all figures (except those of imtool.)
clear; % Erase all existing variables. Or clearvars if you want.
workspace; % Make sure the workspace panel is showing.
format long g;
format compact;
fontSize = 20;
folder = fullfile(matlabroot, '\toolbox\images\imdemos');
filePattern = fullfile(folder, '*.jpg')
[f p] = uigetfile(filePattern);
subplot(2, 1, 1);
originalImage = imread([p f]);
grayImage = rgb2gray(originalImage);
imshow(grayImage);
title('Original Image', 'FontSize', fontSize);
axis on;
% Enlarge figure to full screen.
set(gcf, 'Units', 'Normalized', 'OuterPosition', [0 0 1 1]);
% Give a name to the title bar.
set(gcf, 'Name', 'Demo by ImageAnalyst', 'NumberTitle', 'Off')
uiwait(msgbox('Left click, then right click'));
[x, y, intensityProfile] = improfile();
% Plot crosses over where you clicked.
hold on;
plot(x, y, 'r-', 'LineWidth', 3);
% Plot line
plot([x(1), x(end)], [y(1), y(end)], 'r+', 'LineWidth', 3, 'MarkerSize', 20);
% Plot intensity profile in another plot.
subplot(2, 1, 2);
plot(intensityProfile, 'LineWidth', 3);
grid on;
title('Intensity Profile', 'FontSize', fontSize);
distance = sqrt((x(1) - x(end))^2 + (y(1) - y(end))^2)
message = sprintf('The distance = %.1f pixels.', distance);
uiwait(helpdlg(message));
Note: you still have to select the two points.
2 Comments
nehad mohamed
on 17 Jan 2021
[x, y, intensityProfile] = improfile();
error in this
Image Analyst
on 17 Jan 2021
Sorry but my Crystal Ball Toolbox is still on order, and, until then, I can't see your monitor. Can you tell me the error? Because when I copied and pasted the code above, it ran just fine. So post your modified code in your own question and I'll fix it there.
Categories
Find more on Build Interactive Tools in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!