从3D数据创建各向同性的体积

时间:2016-01-29 18:18:29

标签: matlab

我使用尺寸为512 * 512 * 304的CTA卷。如何将体积转换为轴向尺寸为256 * 256的各向同性形式。我已经通过Converting non-isotropic to isotropic voxel但它没有帮助我。

我不确定如何继续,但我仍然从dicom中读取了必要的参数(可能需要上述问题) 对于x和x两者,切片之间的间隔= 0.45并且像素间距为0.4。收率

我想问的另一个问题是转换到世界坐标。当我使用原始体积(512 * 512 * 304)时,提取的管的形状与参考数据相同,但就坐标位置而言,它显示出显着的差异。我的同事问我,参考数据是世界坐标。

非常感谢提前;

1 个答案:

答案 0 :(得分:0)

听起来您正在尝试将坐标网格重新定义为具有各向同性(即立方体,即相等的高度,宽度,长度)体素的坐标网格。

也许这样的事情会这样做: (我使用matlabs示例mri数据作为示例)

load mri D
D=double(squeeze(D));       % Remove singleton dimension and convert from int to double
szD_a=size(D);              % calculate size of original image stack
vox_a = [.4,.4,.45];         % define original voxel size
vox_b = [.25,.25,.25];       % set target voxel size
szD_b=ceil((szD_a-1).*vox_a./vox_b)+1; % calculate size of target image stack
                                       % plus and minus 1 account for 
                                       % pixel (1,1,1) being at coordinate [0,0,0]
% Get x,y,z coordinates of each voxel in original image stack
[Xa,Ya,Za]=meshgrid(...
    [0:szD_a(1)-1]*vox_a(1),...
    [0:szD_a(2)-1]*vox_a(2),...
    [0:szD_a(3)-1]*vox_a(3));

% Define x,y,z coordinates of each voxel in target image stack
[Xb,Yb,Zb]=meshgrid(...
    [0:szD_b(1)-1]*vox_b(1),...
    [0:szD_b(2)-1]*vox_b(2),...
    [0:szD_b(3)-1]*vox_b(3));

% interpolate imagestack from original to target coordinates
D_target=interp3(Xa,Ya,Za,double(D),Xb,Yb,Zb);
figure
subplot(1,2,1)
imagesc(D(:,:,1))
subplot(1,2,2)
imagesc(D_target(:,:,1))