Find intersection points between a line and a boundary

5 views (last 30 days)
I am trying to find the intersection points between a line and a boundary, how can I do it?
Code:
clc;
clear;
close all;
url='https://cdn.pixabay.com/photo/2012/04/01/17/05/brazil-23548_960_720.png';
I = imread(url);
I = rgb2gray(I);
[yDim,xDim] = size(I);
if yDim>xDim
lineLength = yDim;
else
lineLength = xDim;
end
imshow(I);
hold on;
axis on;
%Boundary
BW = imbinarize(I);
[B,L] = bwboundaries(BW,'noholes');
k=1;
stat = regionprops(I,'Centroid');
b = B{k};
c = stat(k).Centroid;
yBoundary = b(:,2);
xBoundary = b(:,1);
centroidy = c(:,2);
centroidx = c(:,1);
plot(yBoundary, xBoundary, 'g', 'linewidth', 2);
angle = 270;
xLine(1) = centroidx;
yLine(1) = centroidy;
xLine(2) = xLine(1) + lineLength * cosd(angle);
yLine(2) = yLine(1) - lineLength * sind(angle);
plot(xLine, yLine);

Answers (1)

KSSV
KSSV on 19 Jul 2020
  6 Comments
Ali razi
Ali razi on 19 Jul 2020
The first thing that popped in my mind. The results are the same. Any issue why not use rot90?
KSSV
KSSV on 19 Jul 2020
It just needs a transpose......so we transpse using '.

Sign in to comment.

Products


Release

R2020a

Community Treasure Hunt

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

Start Hunting!