0

我正在编写一段用于重建径向 3D NMR 数据的 Matlab 代码。但是,由于 Matlab 中内置的氡函数只是 2D 的,我将不得不应用它们两次。在我的代码中的第一个 iradon 变换之后,我得到了成像对象的投影,因为它们应该看起来(从不同的角度)。但是在第二次 iradon 变换之后,我看不到对象的正确重建(只有很多噪声和一些模糊的东西,对象应该在哪里)。

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

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

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

执行第一个 iradon 会为每个 theta 角提供尺寸为 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
4

0 回答 0