help me get the points of the mask

5 Ansichten (letzte 30 Tage)
kunal
kunal am 9 Mai 2025
Beantwortet: Matt J am 6 Jul. 2025
I have shapes like this and i want the four points like what i have marked and the enclosing are i drew with lines
  6 Kommentare
kunal
kunal am 13 Mai 2025
ah yes, it's ok if it overlaps or not, sorry if this is confusing. As you can see every part or side i have enclosed it in perfect square/rectangle or four point polygon and where the mask is continuous it also shares 2 point of edges
Image Analyst
Image Analyst am 13 Mai 2025
@kunal did you not understand my Answer below or did you not even see it (scroll down)? I didn't see any response whatsoever to it.

Melden Sie sich an, um zu kommentieren.

Antworten (2)

Image Analyst
Image Analyst am 9 Mai 2025
Bearbeitet: Image Analyst am 9 Mai 2025
You can find a wealth of information online just by Googling "Minimum perimeter polygon". Yes, it's a thing. And there is much research and published papers and algorithms on it.
"In digital image processing, a minimum perimeter polygon (MPP) is a technique to represent the boundary of a shape or object using a polygon with the fewest possible edges while maintaining the essential shape characteristics. It's a form of polygonal approximation where the goal is to approximate a digital boundary with a polygon with the smallest perimeter."
Also see the PDF I've attached.
Sorry, I don't have any MATLAB code for it but you could try asking MATLAB's AI engine to write it for you:
You might also look at the LIDAR toolbox : https://www.mathworks.com/help/lidar/
See examples at:
  2 Kommentare
kunal
kunal am 14 Mai 2025
this consider the image as an whole but i want to seperate the pieces into part of rectangle
Image Analyst
Image Analyst am 14 Mai 2025
Each "blob" in the image is considered a separate, distinct polygon. You can get the minimum points to define each using the concepts of minimum perimeter polygon.
If you have a single blob that is shaped like an L, the min perimeter polygon will define the whole L shape but it will not split the two L into separate blobs. Not sure why you'd really need that though instead of just a single polygon.

Melden Sie sich an, um zu kommentieren.


Matt J
Matt J am 6 Jul. 2025
You can try bwlpolyshape(), downloadable from,
which will fit a polyshape to the mask, subject to a distance tolerance distTol. You will have to do some postprocessing to consolidate some of the spurious vertices.
S=structfun(@logical,load('my_masks'),'uni',0);
p=bwlpolyshape(S.a2,distTol=15,refine=0,Visualize=true)
p =
polyshape with properties: Vertices: [20×2 double] NumRegions: 1 NumHoles: 2
[x,y]=boundary(p);
hold on
plot(x,y,'og','MarkerFaceColor','y');hold off

Kategorien

Mehr zu Read, Write, and Modify Image finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by