How to calculate Area of overlapping polygons inside square
8 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
cvk engineer
am 16 Mai 2020
Kommentiert: darova
am 18 Mai 2020
I have requirement to calculate percentage of area covered by polygons inside square(Green Border) for matlab plot.
Logic used is Area coverage= Area of outer square- area of each polygon- polygon overlapping area
I am stuck at finding overlapping area as there are more than 3 polygons overlapping. I am using intersect function for finding intersection

Is there any better method for this requirement(Can Non-plotted are be measured?)
0 Kommentare
Akzeptierte Antwort
Steven Lord
am 16 Mai 2020
Take the union of all the polyshape objects representing your polygons
Make a polyshape representing the interior and boundary of your square and intersect that square with the union polyshape.
This results in one final polyshape whose area you can compute.
3 Kommentare
Steven Lord
am 17 Mai 2020
The polyshape representing a square and its interior is easy. Here's the unit square.
square = polyshape([0 1 1 0 0], [0 0 1 1 0]);
plot(square)
I'm assuming you want the intersection of the triangles inside the square, not just a measurement of how much of the green line representing the outside of the square covers the triangles. Making that square "annulus" would be a little trickier; there's probably a way to do this using polybuffer but a quick way to do it would be:
figure
square = polyshape([0 1 1 0 0], [0 0 1 1 0]);
w = 0.05;
inner = polyshape([w 1-w 1-w w w], [w w 1-w 1-w w]);
plot(subtract(square, inner))
Change w and recreate the inner polyshape to change how thick or thin the "ring" is.
Weitere Antworten (1)
darova
am 17 Mai 2020
Bearbeitet: darova
am 17 Mai 2020
What about this simple trick?
I = imread('image.png');
I1 = imcrop(I, [70 75 130 95]);
I2 = im2bw(I1,0.95);
imshowpair(I1,I2,'montage')
sum(~I2(:))
You need only to scale pixels to area

2 Kommentare
darova
am 18 Mai 2020
Just select region you want
I = imread('image.png');
I1 = im2bw(I1,0.95);
I2 = I1(70:200,75:170);
imshowpair(I1,I2,'montage')
sum(~I2(:))
Siehe auch
Kategorien
Mehr zu Elementary Polygons 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!