我是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像素。这是正确的方法还是应该使用其他功能?
答案 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(:)));
现在我们可以实际进行插值。需要记住的重要一点是参考坐标(x
和y
)必须与输入图像(a
)的大小相同。这是您最初尝试的问题之一。
M = interp2(x,y,a,xq,yq,'nearest');