# Finding Area of Polygon defined by roipoly

8 views (last 30 days)
abdulla alyammahi on 25 Mar 2020
Answered: Image Analyst on 31 Mar 2020
Hello,
I would like to know how I can use the function polyarea to find the area of a region defined by the function roipoly.
I am new to image processing with matlab and basically what I am trying to do is read an image, select a border for something within the image using roipoly, finding the area within the border in pixels and finally converting the area in pixels to area in m^2. Please advise.
Thank you,

Matt J on 25 Mar 2020
Edited: Matt J on 25 Mar 2020
roipoly returns a logical mask BW of the region
BW = roipoly;
so, its area in whole pixels would simply be
area = sum(BW(:));
If you have the coordinates of the vertices, because you called roipoly using this syntax
[BW,xi2,yi2] = roipoly(___);
then fractional pixels can be included in the area calculation by doing
area = polyarea(xi2,yi2)

abdulla alyammahi on 30 Mar 2020
Thank you very much for your response, I tried it and it worked perfectly and solved my problem.
Matt J on 31 Mar 2020
You're welcome, but please click "Accept" to indicate that it worked.

Image Analyst on 31 Mar 2020
To get the answer in real world units like m^2 you have to get the area, using one of these 3 ways:
areaInPixels = polyarea(x, y);
Then multiply by the spatial calibration factor
areaInM2 = areaInPixels * metersPerPixel ^ 2;
If you don't know how to arrive at meters per pixel, you basically have to draw a distance on your image and tell it how many real world units it is. I have a demo attached where it does exactly that. Please run it.