Finding Area of Polygon defined by roipoly

25 visualizaciones (últimos 30 días)
abdulla alyammahi
abdulla alyammahi el 25 de Mzo. de 2020
Editada: Image Analyst el 26 de Dic. de 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,

Respuestas (2)

Matt J
Matt J el 25 de Mzo. de 2020
Editada: Matt J el 25 de Mzo. de 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 comentarios
abdulla alyammahi
abdulla alyammahi el 30 de Mzo. de 2020
Thank you very much for your response, I tried it and it worked perfectly and solved my problem.
Matt J
Matt J el 31 de Mzo. de 2020
You're welcome, but please click "Accept" to indicate that it worked.

Iniciar sesión para comentar.


Image Analyst
Image Analyst el 31 de Mzo. de 2020
Editada: Image Analyst el 26 de Dic. de 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.

Categorías

Más información sobre Image Filtering and Enhancement en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by