使用meshgrid插入图像的物理坐标

时间:2016-01-21 00:59:06

标签: matlab

我是Matlab的新手,正在模拟需要我图像物理坐标的物理现象。例如,我可以使用以下内容来给出图像的尺寸。

a = phantom(80,250) 
a(81:250,:) = [];

对于我的物理系统,我需要在每个像素之间的间距为2,并且对象在x中为0:2:280,在y中为0:2:410。我试图使用meshgrid来查看它是否有助于从

开始的情况
[x,y] = meshgrid(1:1:100, 1:1:300);
[xm,ym] = meshgrid(1:.5:300, 1:.5:450);

M = interp2(x,y,a,xm,ym,'nearest');

这并没有给我我想要的东西,但我认为我可以找到解决方案。

我的基本问题是我的图像大小(80,250),我需要对其进行采样/缩放,以便我可以将右上角的点与位置(280mm,410mm)相关联,每个点之间的样本为2mm像素。这是正确的方法还是应该使用其他功能?

1 个答案:

答案 0 :(得分:2)

首先,图片 80 x 250.请务必结帐QIcon

在这一步之后你到底希望做什么?这真的决定了这是否适合这样做。

但根据您的代码和上一个陈述,您希望x范围为0 - 280,y范围为0 - 410.

xrange = linspace(0, 280, size(a, 2));
yrange = linspace(0, 410, size(a, 1));

现在你的图像的参考坐标是

[xx,yy] = meshgrid(xrange, yrange);

现在你想如何抽样,这取决于你。听起来你想要每2mm?因此,让我们构建网格以进行采样。

[xq, yq] = meshgrid(0:2:max(xx(:)), 0:2:max(yy(:)));

现在我们可以实际进行插值。需要记住的重要一点是参考坐标(xy必须与输入图像(a)的大小相同。这是您最初尝试的问题之一。

M = interp2(x,y,a,xq,yq,'nearest');