How to calculate Area of overlapping polygons inside square

조회 수: 8 (최근 30일)
cvk engineer
cvk engineer 2020년 5월 16일
댓글: darova 2020년 5월 18일
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?)

채택된 답변

Steven Lord
Steven Lord 2020년 5월 16일
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
Steven Lord
Steven Lord 2020년 5월 17일
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.
cvk engineer
cvk engineer 2020년 5월 18일
Issue solved, Thank you so much.
I took union of all the polygons, created polygon of coverage square, got area of intersection of these two..

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

darova
darova 2020년 5월 17일
편집: darova 2020년 5월 17일
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
cvk engineer
cvk engineer 2020년 5월 18일
imcrop needs image processing toolbox which i dont have, thanks.
darova
darova 2020년 5월 18일
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(:))

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Elementary Polygons에 대해 자세히 알아보기

제품


릴리스

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by