Find intersection points between a line and a boundary
Show older comments
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
on 19 Jul 2020
0 votes
6 Comments
Ali razi
on 19 Jul 2020
KSSV
on 19 Jul 2020
Check the inputs to InterX....they should be of size 2*m. Read about the function examples given in the function.
Ali razi
on 19 Jul 2020
KSSV
on 19 Jul 2020
Why rot90? You need to make the array column major. If x and y are your corodinates of a curve/ line.
If x and y are row vectors.
L1 = [x ; y] ;
If x and y are column vectors.
L1 = [x y]' ;
Ali razi
on 19 Jul 2020
KSSV
on 19 Jul 2020
It just needs a transpose......so we transpse using '.
Categories
Find more on MATLAB 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!