Border detection out of regular shape

1 vue (au cours des 30 derniers jours)
Albert
Albert le 8 Avr 2022
Commenté : Albert le 11 Avr 2022
Hi, I have this shape in the plot, but I want to detect the 4 tails sticking out of the square in order to remove them. How could I detect them? I only have a single vector of points (x,y) which are in the plot. Attached is the variable containing the points.
Thanks!
  4 commentaires
Les Beckham
Les Beckham le 8 Avr 2022
If you attach your data as a mat file using the paperclip (either edit your question or add it in a comment), it will make it easier to help you.
Albert
Albert le 8 Avr 2022
I have attached the mat file!

Connectez-vous pour commenter.

Réponse acceptée

Matt J
Matt J le 8 Avr 2022
Modifié(e) : Matt J le 8 Avr 2022
load data_points
data0=data;
shp=alphaShape(data,0.9);
[~,V]=boundaryFacets(shp);
shp=polyshape(V,'Simplify',true);
Warning: Polyshape has duplicate vertices, intersections, or other inconsistencies that may produce inaccurate or unexpected results. Input data has been modified to create a well-defined polyshape.
for i=[-1,sqrt(2)]
shp=polybuffer(shp,i,'Joint','square');
end
tf=shp.isinterior(data);
data=data(tf,:);
plot(data0(:,1),data0(:,2),'o',data(:,1),data(:,2),'.r'); hold on
  3 commentaires
Matt J
Matt J le 8 Avr 2022
Yes, or you could use isinterior() as in my now modified solution.
Albert
Albert le 11 Avr 2022
thanks!

Connectez-vous pour commenter.

Plus de réponses (0)

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by