1 Aug 2013

matlab的annotation必须用uniform坐标

收藏到CSDN网摘


经常碰到matlab图像需要标注的情况,annotation可以很方便的加入线,箭头,方框等标注信息,但是箭头等位置需要用归一化的坐标来表示,如何转换呢?

matlab有一个函数叫dsxy2figxy,在自带的实例中,用来将dataspace的坐标转换到figure坐标(归一化),如果需要使用,必须添加path之后才可调用
addpath(fullfile(docroot,'techdoc','creating_plots','examples'));
[figx,figy] = dsxy2figxy(x,y);
经测试,对于图片(image,不是plot)坐标位置有误,因为图片的原点是左上角,而非左下角.这时就需要这样转换
axPos = get(gca,'Position');
xMinMax = xlim;
yMinMax = ylim;
n = size(b,1); % 图片高度
% 转换横坐标
figx = axPos(1) + ((x - xMinMax(1))/(xMinMax(2)-xMinMax(1))) * axPos(3);
% 转换纵坐标,注意要先反转图片的上下(n-y),然后在转换
figy = axPos(2) + (((n-y) - yMinMax(1))/(yMinMax(2)-yMinMax(1))) * axPos(4);

No comments :

Post a Comment