MATLAB Answers

How to get matrix indices from roipoly

4 views (last 30 days)
Paul Safier
Paul Safier on 10 Sep 2021
Commented: Image Analyst on 11 Sep 2021
I have a matrix that I want to extract an ROI from. I am using roipoly to clip the region. The syntax below gives the coordinates of the polygon in the intrinsic coordinate system, I believe. How can I get the matrix indices for each vertex of the polygon?
tst = rand(100);
[xrefout,yrefout,BW,xi2,yi2] = roipoly(tst);
I select some square.
xi2 and yi2 are real valued. To get the pixel value, does one just round xi2 and yi2 to the nearest integer?

Accepted Answer

Matt J
Matt J on 10 Sep 2021
You must interchange the coordinates (i,j)=(yi2,xi2)
Paul Safier
Paul Safier on 10 Sep 2021
Yep, I see. That'll do. Thanks.

Sign in to comment.

More Answers (1)

Image Analyst
Image Analyst on 10 Sep 2021
Try using the mask roipoly() returns:
tst = imread('moon.tif'); % Get some matrix.
imshow(tst); % Display it.
% Ask user to use roipoly.
message = sprintf('Left click vertices.\nRight click last point.\nThen double click inside when you are all done.');
mask = roipoly(tst);
% Extract values inside the polygon they drew.
valuesInsideMask = tst(mask)
Image Analyst
Image Analyst on 11 Sep 2021
There is also a drawpolygon() function that you might like.

Sign in to comment.




Community Treasure Hunt

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

Start Hunting!

Translated by