【问题标题】:resample an image from pixel to millimiters将图像从像素重新采样到毫米
【发布时间】:2014-03-28 06:44:02
【问题描述】:

我有一个图像(逻辑值),像这样

我需要将此图像从像素重新采样到毫米或厘米;这是我用来重采样的代码:

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

我得到的是黑色图像。我怀疑这段代码做了一些我没有想到的事情:它似乎只占据了图像的左上角。

相反,我想要的是在毫米/厘米尺度上拥有相同的图像:我期望每个白色像素都应该从原始位置映射到新位置(以毫米/厘米为单位);发生的事情肯定不是我所期望的。

我不确定interp2 是正确的命令。

我不想调整图像大小,我只想从像素世界转到毫米/厘米世界。

pixDim当然是图像像素的尺寸,用耳朵的高度(厘米)除以耳朵的高度(毫米)(平均为0.019厘米)。

有什么想法吗?

编辑:我很确定代码没有意义,但有人告诉我这样做......无论如何,如果我有两个边缘耳朵,我需要先缩放两个真实尺寸,然后执行一些对它们进行操作。我所说的“真实尺寸”的意思是,如果一个尺寸为 6.5x3.5cm,另一个尺寸为 6x3.2cm,我需要在这个尺寸上执行操作。 在进行操作之前,我不知道如何从像素尺寸移动到厘米尺寸。 我想从一个世界移动到另一个世界,因为我想摆脱捕捉距离(因为我想如果一张耳朵的照片是近拍的,另一张是远拍的,它们的像素尺寸应该不同) . 我对么?有办法吗?我以为我可以绘制耳朵缩放轴,但我想我不能从另一个减去一个,对吧?

【问题讨论】:

  • 这毫无意义——要么你想调整图像大小,要么你不想。无论哪种方式,只需在图像坐标中进行计算,然后使用毫米/像素比例因子来转换 结果
  • 跑题了,但是用你的图片做了一些有用的工作,至少看起来是这样。这是 - stackoverflow.com/questions/22009416/…
  • @Divakar 这不是我想要的,但确实很有用,谢谢。
  • @lupin_85 这就是为什么我说它跑题了。

标签: image matlab pixel resampling


【解决方案1】:

Matlab 不使用单位。要应用 0.019 厘米/像素的系数,您必须按 0.019 的系数缩放以获得 1 厘米的网格,但这会导致任何小于 1 厘米的人工制品丢失。

最佳做法是使用多轴显示数据,一个用于厘米,一个用于像素。这里解释一下:http://www.mathworks.de/de/help/matlab/creating_plots/using-multiple-x-and-y-axes.html

任何处理数据的函数都应该独立于比例或使用比例因子作为输入参数,其他一切都是一些严重算法问题的迹象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多