Matlab编程:使用iradon.m函数进行3D氡变换

时间:2015-10-20 19:07:06

标签: matlab 3d 3d-reconstruction radial mri

我正在做一段Matlab代码来重建径向三维核磁共振数据。但是,由于Matlab内置的氡功能只是2D,我必须将它们应用两次。在我的代码中进行第一次iradon变换后,我得到了成像对象的投影,因为它们应该看起来(从不同的角度)。但是在第二次iradon变换之后,我没有看到对象的正确重建(只是很多噪声和一些模糊的东西,对象应该是)。

我的解决方案尝试如下所示。

输入数据是自由感应衰减或fid:fid(NP,nv,nv2)其中NP是投影数量,nv是θ角度增量的数量,nv2是角度增量的数量。

在FID上执行ifft将为每个θ角度提供尺寸proj(NP,phi)的正弦图。

执行第一个iradon,为每个θ角度提供尺寸为I(r,x)的滤波和未滤波反投影。 (因此I3和I4具有尺寸(r,z,theta))

执行最后一次iradon变换后,应该渲染尺寸为I(x,y,z)的重建3D图像

I3=[];
I4=[];
I5=[];
I6=[];

for k=1:1:nv2
    FID = squeeze(fid(:,:,k));
    proj=abs(fftshift(ifft(ifftshift(FID),[],1)));
    I1 = imrotate(iradon(proj,theta,'v5cubic','none',1,2*NP),-90);
    I2 = imrotate(iradon(proj,theta,'v5cubic','Ram-Lak',1,2*NP),-90);
    I3(:,:,k) = I1;
    I4(:,:,k) = I2;
end

for k=1:size(I3,2)
    I5(:,:,k) = iradon(squeeze(I3(:,k,:)),phi,'v5cubic','none',1,2*NP);
    I6(:,:,k) = iradon(squeeze(I4(:,k,:)),phi,'v5cubic','Ram-Lak',1,2*NP);
end

0 个答案:

没有答案