我有一个图像(逻辑值),像这样
我需要将此图像从像素重新采样到mm或cm;这是我用来重新取样的代码:
function [ Ires ] = imresample3( I, pixDim )
[r,c]=size(I);
x=1:1:c;
y=1:1:r;
[X,Y]=meshgrid(x,y);
rn=r*pixDim;
cn=c*pixDim;
xNew=1:pixDim:cn;
yNew=1:pixDim:rn;
[Xnew,Ynew]=meshgrid(xNew,yNew);
Id=double(I);
Ires=interp2(X,Y,Id,Xnew,Ynew);
end
我得到的是黑色图像。我怀疑这段代码不是我想到的东西:它似乎只占用了图像的左上角。
相反,我想要的是以毫米/厘米的比例生成相同的图像:我期望的是每个白色像素应该从原始位置映射到新位置(以mm / cm为单位);发生的事情肯定不是我所期待的。
我不确定interp2
是否是正确的命令。
我不想调整图片大小,我只是想从像素世界转到mm / cm世界。
pixDim
当然是图像像素的尺寸,将耳朵的高度(以cm为单位)除以耳朵的高度(mm)(平均为0.019 cm)。
有什么想法吗?
编辑:我很确定代码没有任何意义,但是有人告诉我这样做......无论如何,如果我有两个耳朵,我首先需要扩展真实尺寸然后执行一些对他们的操作。我的意思是"真正的维度"如果一个尺寸为6.5x3.5cm而另一个尺寸为6x3.2cm,我需要对此尺寸执行操作。 在进行操作之前,我怎么能从像素尺寸移动到cm尺寸。 我想从一个世界移动到另一个世界,因为我想摆脱捕捉距离(因为我想如果耳朵的图片被拍到附近而另一个拍摄远处,它们的像素尺寸应该不同) 。 我对么?有办法吗?我以为我可以绘制缩放轴的耳朵,但是我想我不能从另一个中减去一个,对吧?答案 0 :(得分:3)
Matlab不使用单位。要应用0.019厘米/像素的因子,你必须按比例缩放0.019才能得到1厘米的网格,但这会导致任何小于1厘米的假象丢失。
最佳做法是使用多个轴显示数据,一个用于cm,一个用于像素。这里解释了:http://www.mathworks.de/de/help/matlab/creating_plots/using-multiple-x-and-y-axes.html
处理数据的任何函数都应该与比例无关,或者使用比例因子作为输入参数,其他一切都是一些严重的算法问题的标志。