簡體   English   中英

如何獲得軸坐標中的x和y值而不是矩陣位置?

[英]How can I get x and y value in axis coordinates instead of matrix position?

我需要找到二進制圖像的x和y坐標。 這是代碼的示例圖片(方形) 圖。1 圖2 圖3

And use the codes as below:


 a=imread('square.png');
 b=im2bw(a);
 figure(1)
 imshow(b) %%show image in normal axis
 sz=size(b);
 RI=imref2d(size(b));

 xmin=-sz(2)/2;
 xmax=sz(2)/2;
 ymin=-sz(1)/2;
 ymax=sz(1)/2;
 RI.XWorldLimits=[xmin xmax];
 RI.YWorldLimits=[ymin ymax];
 figure(2) %%show image is desired axes where zero is centered of axes
 imshow(b,RI);
 [x,y]=find(b==0); 
 figure(3)
 scatter(x,y) 

圖(1)是原始圖像。 圖(2)是同一幅圖像,但是顯示在不同的軸上(即,零在x和y軸上居中)。 然后,我尋找感興趣區域的x和y坐標(在此示例中為正方形框架)。 但是我得到的x和y坐標與來自Figure(2)的軸不一致。 根據圖(2),正方形的x和y坐標應均為-ve值和+ ve值。 但是所有x和y坐標都在+ ve值中。 我看問題出在哪里,然后我注意到[x,y]=find(b==0) x和y值與它們在矩陣中的位置一致,而不是軸坐標。 那么,如果我想在軸坐標中顯示x和y怎么辦? Tks。

首先,將find的輸出反轉。 它返回的行和列不是您編寫的xy 因此,您實際上應該將輸出指定為[y,x]

[y,x] = find(b == 0);

然后,您還需要確保散點圖軸的y方向被翻轉(使用axis image ),因為這是imshow (您的其他圖形)默認使用的方式。

scatter(x,y)
axis image

更新資料

如果要將這些坐標轉換為已顯示的居中坐標,則需要在調用散點之前對xy應用相同的轉換。

x = x + xmin;
y = y + ymin;

scatter(x,y)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM