Matlab调整坐标

时间:2010-07-20 10:20:22

标签: matlab plot

我有尺寸为600 * 600的图像,并且在800 * 800像素屏幕上显示。 用户在屏幕上看到的x,y坐标记录在一个数组中:

x =[250,300,390,750,760];
y =[120,550,250,130,420]; 

在其他程序中,我想绘制600 * 600图像上的x,y坐标。问题是某些x,y图不在图像中(如下图所示),因为坐标多于图像的最大尺寸(600 * 600)。

EDITED: 如何将较大图像(800 * 800)的坐标转换/调整为较小的图像(600 * 600),使所有x,y坐标较小的图像(600 * 600)?< / p>

让我们说,例如,800 * 800图像的图像内的600 * 600的左上图像的坐标是例如。 x = -10,y = 3.

感谢。


alt text http://img9.imageshack.us/img9/8836/e47184420f.jpg

2 个答案:

答案 0 :(得分:0)

似乎只需按屏幕区域和图像尺寸的比例调整坐标即可:

newX = x.*(600/800)
newY = y.*(600/800)

答案 1 :(得分:0)

要获取图像坐标中的像素,您需要知道图像的左下角和右上角放在屏幕上的位置。从那里你可以计算图像的偏移和缩放。

%# define some parameters
imageSize = [600 600];
topLeftPixScreen = [200,100]; %# position of the top left image corner in screen pixels
bottomRightPixScreen = [800,750]; %# position of the bottom right image corner in screen pixels

%# transform coordinates
oldX =[250,300,390,750];
oldY =[120,550,250,130,420];

newX = (oldX - topLeftPixScreen(1))/(bottomRightPixScreen(1) - topLeftPixScreen(1) + 1);
newY = (oldY - topLeftPixScreen(2))/(bottomRightPixScreen(2) - topLeftPixScreen(2) + 1);

话虽如此,我建议使用ginput用Matlab选择点,因为这个函数直接返回图像像素。


编辑

如果你只有左上角,你必须希望没有任何缩放 - 否则,你无法改变这些点。

仅使用偏移,以上简化为

%#定义一些参数     imageSize = [600 600];     topLeftPixScreen = [200,100];屏幕像素中左上角图像角的%#位置

%# transform coordinates
oldX =[250,300,390,750];
oldY =[120,550,250,130,420];

newX = oldX - topLeftPixScreen(1);
newY = oldY - topLeftPixScreen(2);