你列出的公式是:如果你想要做逆Radon變換而不會在傅立葉域中濾波的中間結果。另一種方法是在空間域中使用卷積來完成整個濾波反投影算法,這在40年前可能更快;你最終會重新發布你發佈的公式。但是,我現在不會推薦它,特別是不適合你的第一次重建。你應該首先理解希爾伯特變換。
總之,這裏的一些Matlab代碼它執行強制性Shepp - 洛根幻像濾波反投影重建。我展示瞭如何使用Ram-Lak過濾器進行自己的過濾。如果我真的有動力,我會用一些interp2命令和總結替換氡/ iradon。
phantomData=phantom();
N=size(phantomData,1);
theta = 0:179;
N_theta = length(theta);
[R,xp] = radon(phantomData,theta);
% make a Ram-Lak filter. it's just abs(f).
N1 = length(xp);
freqs=linspace(-1, 1, N1).';
myFilter = abs(freqs);
myFilter = repmat(myFilter, [1 N_theta]);
% do my own FT domain filtering
ft_R = fftshift(fft(R,[],1),1);
filteredProj = ft_R .* myFilter;
filteredProj = ifftshift(filteredProj,1);
ift_R = real(ifft(filteredProj,[],1));
% tell matlab to