How to get matrix indices from roipoly

조회 수: 9 (최근 30일)
Paul Safier
Paul Safier 2021년 9월 10일
댓글: Image Analyst 2021년 9월 11일
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?

채택된 답변

Matt J
Matt J 2021년 9월 10일
You must interchange the coordinates (i,j)=(yi2,xi2)
  댓글 수: 5
Matt J
Matt J 2021년 9월 10일
편집: Matt J 2021년 9월 10일
You can threshold the result if you need to, e.g.,
min(max(round(z),1),3)
The rounding is just an approximation step which we are considering here only because you seem to need a result that can be used to index into a matrix. There is no single sacred way to do it. You can choose whatever integer approximation works best for you.
Paul Safier
Paul Safier 2021년 9월 10일
Yep, I see. That'll do. Thanks.

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

추가 답변 (1개)

Image Analyst
Image Analyst 2021년 9월 10일
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.');
uiwait(helpdlg(message));
mask = roipoly(tst);
% Extract values inside the polygon they drew.
valuesInsideMask = tst(mask)
  댓글 수: 4
Paul Safier
Paul Safier 2021년 9월 11일
The clipped matrix is used as well, sure, but the vertex info is needed elsewhere and printed. It's the vertex info (in indicial format) that I was questioning.
Image Analyst
Image Analyst 2021년 9월 11일
There is also a drawpolygon() function that you might like.

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

제품


릴리스

R2020b

Community Treasure Hunt

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

Start Hunting!

Translated by