我有一套100 2-D图像切片,大小相同.我已经使用MATLAB来堆叠它们来创建一个体积数据。当二维切片的大小为480×488像素时,图像叠加的方向不够宽,无法在投影时以不同的方向显示体积。我需要沿切片内插,以增加尺寸,以便于可视化。
有人能给我一个关于如何做的想法或建议吗?
编辑:投影显微术-图像
图1是预计卷的顶部视图.
图2是投影卷的侧视图.
当我改变旋转角度,并尝试在不同的方向,例如侧面视图(图2)中的体积,是我在图2中看到的。
我想通过沿图像切片进行插值来扩展侧视图。
发布于 2011-07-21 16:20:10
下面是MATLAB文档中关于如何使用等表面可视化体积数据(类似于您的数据)的一个调整示例
%# load MRI dataset: 27 slices of 128x128 images
load mri
D = squeeze(D); %# 27 2D-images
%# view slices as countours
contourslice(D,[],[],1:size(D,3))
colormap(map), view(3), axis tight
%# apply isosurface
figure
%#D = smooth3(D);
p = patch( isosurface(D,5) );
isonormals(D, p);
set(p, 'FaceColor',[1,.75,.65], 'EdgeColor','none')
daspect([1 1 .5]), view(3), axis tight, axis vis3d
camlight, lighting gouraud
%# add isocaps
patch(isocaps(D,5), 'FaceColor','interp', 'EdgeColor','none');
colormap(map)
发布于 2011-07-21 06:03:57
MATLAB有一个函数interp3
,它可以用于插值,假设数据是一致离散的。
看看文档。
希望这能有所帮助。
编辑: MATLAB函数interp3
工作如下:
vi = interp3(x, y, z, v, xi, yi, zi);
我假设您的“切片堆栈”将数组x, y, z, v
定义为3D
数组,其中x, y
是平面上像素的坐标,z
是每个切片的“高度”,v
是实际的图像切片,可能是像素的“强度”值。
如果要在中间的z
值内插新的图像切片,可以在zi
数组中指定这些级别。数组xi, yi
将再次表示平面中像素的坐标。
发布于 2011-10-31 13:20:57
我创建了一个函数来沿图像切片进行插值。以下是代码:
function res = interp_along_slices( vol, scale )
% Interpolation along the image slices
% Get the size of the volume
[r c p] = size(vol);
% Pre-allocate the array:
% the third dimension is scale times the p
vol_interp = zeros(r,c,scale*p);
% interpolate along the image slices
for inr = 1:r;
for jnr = 1:c;
xi = vol(inr,jnr,:);
vol_interp(inr,jnr,:) = interp(xi, scale);
end;
end;
res = vol_interp;
end
https://stackoverflow.com/questions/6771851
复制相似问题