Finding Area of Polygon defined by roipoly

21 views (last 30 days)
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,

Answers (2)

Matt J
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)
  2 Comments
abdulla alyammahi
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
Matt J on 31 Mar 2020
You're welcome, but please click "Accept" to indicate that it worked.

Sign in to comment.


Image Analyst
Image Analyst on 31 Mar 2020
Edited: Image Analyst on 26 Dec 2020
To get the answer in real world units like m^2 you have to first get the area in pixels, using one of these 3 ways:
[mask, x, y] = roipoly(); % Get binary image and (x,y) coordinates of polygon
% Method 1 to get area in pixels:
areaInPixels = polyarea(x, y); % Could have fractional pixel amounts.
% Method 2
areaInPixels = bwarea(mask); % Could have fractional pixel amounts.
% Method 3
areaInPixels = nnz(mask); % Always an integer count of pixels.
Then multiply by the spatial calibration factor to get the area in square meters or millimeters:
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.

Community Treasure Hunt

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

Start Hunting!