[英]How can I get x and y value in axis coordinates instead of matrix position?
我需要找到二進制圖像的x和y坐標。 這是代碼的示例圖片(方形)
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
的輸出反轉。 它返回的行和列不是您編寫的x
和y
。 因此,您實際上應該將輸出指定為[y,x]
。
[y,x] = find(b == 0);
然后,您還需要確保散點圖軸的y方向被翻轉(使用axis image
),因為這是imshow
(您的其他圖形)默認使用的方式。
scatter(x,y)
axis image
更新資料
如果要將這些坐標轉換為已顯示的居中坐標,則需要在調用散點之前對x
和y
應用相同的轉換。
x = x + xmin;
y = y + ymin;
scatter(x,y)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.