Find intersection points between a line and a boundary
Afficher commentaires plus anciens
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);
Réponses (1)
KSSV
le 19 Juil 2020
0 votes
6 commentaires
Ali razi
le 19 Juil 2020
KSSV
le 19 Juil 2020
Check the inputs to InterX....they should be of size 2*m. Read about the function examples given in the function.
Ali razi
le 19 Juil 2020
KSSV
le 19 Juil 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
le 19 Juil 2020
KSSV
le 19 Juil 2020
It just needs a transpose......so we transpse using '.
Catégories
En savoir plus sur MATLAB dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!