Find intersection points between a line and a boundary
Mostrar comentarios más antiguos
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);
Respuestas (1)
KSSV
el 19 de Jul. de 2020
0 votos
6 comentarios
Ali razi
el 19 de Jul. de 2020
KSSV
el 19 de Jul. de 2020
Check the inputs to InterX....they should be of size 2*m. Read about the function examples given in the function.
Ali razi
el 19 de Jul. de 2020
KSSV
el 19 de Jul. de 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
el 19 de Jul. de 2020
KSSV
el 19 de Jul. de 2020
It just needs a transpose......so we transpse using '.
Categorías
Más información sobre MATLAB en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!