我有两组3D
张图片(它们以2D stacks
的形式出现)。 Image A
为10 micron
,尺寸为1000 x 1024 x 1017
,而图片B为5 micron
,尺寸为:2004 x 2048 x 2036
。我喜欢对随机选择的2D slices
A
的一组进行计算,然后将其与B
的同一组切片进行比较。但是,由于B
的每个切片A
的切片数量是两倍,因此将B
的两个切片与A
的每个切片进行比较是明智的吗?如果是这样,我如何确定B
的两个切片中哪一个确切地构成A
的切片?
在考虑这个问题时,我还想到A
使用2
函数为我选择用于计算的每个imresize
炸掉2D slice
。考虑到我完全忽略了B
会发生的情况,可以将这个新的A
与z-coordinate
进行比较吗?
谢谢。
答案 0 :(得分:1)
如你所说这是microCT,我假设两个图像都是同一个对象的不同大小分辨率。这意味着像素具有特定的空间位置,而不仅仅是值,因此对于这种情况,在两个图像中都没有像素(假设像素是立方体中心的无限小点)。
因此,我们假设在图像A中,像素中心的位置是它们的索引(1,1,1),(1,1,2)等。这意味着图像开始(像素边界)处于“世界值“0.5
,以size(imgA)+0.5
现在,首先将所需的像素坐标转换为此范围。 imgB
像素中心位于(ind-0.5)*size(imgA)/size(imgB)+0.5
个位置。
示例:假设
size(imgA,1)=3; size(imgB,1)=4;
因此imgA
中的像素位于x
位置1:3
。使用上面的公式,imgB
上的像素位于[0.8750 1.6250 2.3750 3.1250]
中。
请注意第一个像素是0.375
0.5
(我们的图像边框),下一个像素位于0.75
(双0.375*2
)。
我们将更高分辨率的图像缩放到相同的“真实世界”坐标。
现在到了真实的东西。
我们需要在参考(A
)图像中创建所需的坐标。为此,我们这样做:
[y, x, z]=...
ndgrid((1:size(imgB,1)-0.5)*size(imgA,1)/size(imgB,1)+0.5),...
(1:size(imgB,2)-0.5)*size(imgA,2)/size(imgB,2)+0.5),...
(1:size(imgB,3)-0.5)*size(imgA,3)/size(imgB,3)+0.5);
现在这3个有我们想要的坐标。 注意!每个都是size(imgB)
!!!您需要总共使用RAM 5*size(imgB)
来处理此问题。
现在我们可以插入
imAinB=interp3(imgA,x,y,z,'linear'); % Or nearest
答案 1 :(得分:0)
似乎你的功能是imresize3。您可以使用以下内容将一个卷更改为其他卷:
B = imresize3(V,[numrows numcols numplanes])
您还可以探索插值方法。