你列出的公式是:如果你想要做逆Radon變換而不會在傅立葉域中濾波的中間結果。另一種方法是在空間域中使用卷積來完成整個濾波反投影算法,這在40年前可能更快;你最終會重新發布你發佈的公式。但是,我現在不會推薦它,特別是不適合你的第一次重建。你應該首先理解希爾伯特變換。
總之,這裏的一些Matlab代碼它執行強制性Shepp - 洛根幻像濾波反投影重建。我展示瞭如何使用Ram-Lak過濾器進行自己的過濾。如果我真的有動力,我會用一些interp2命令和總結替換氡/ iradon。
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 do inverse FBP without a filter
I1 = iradon(ift_R, theta, 'linear', 'none', 1.0, N);
subplot(1,3,1);imagesc(real(I1)); title('Manual filtering')
colormap(gray(256)); axis image; axis off
% for comparison, ask matlab to use their Ram-Lak filter implementation
I2 = iradon(R, theta, 'linear', 'Ram-Lak', 1.0, N);
subplot(1,3,2);imagesc(real(I2)); title('Matlab filtering')
colormap(gray(256)); axis image; axis off
% for fun, redo the filtering wrong on purpose
% exclude high frequencies to create a low-resolution reconstruction
myFilter(myFilter > 0.1) = 0;
ift_R = real(ifft(ifftshift(ft_R .* myFilter,1),[],1));
I3 = iradon(ift_R, theta, 'linear', 'none', 1.0, N);
subplot(1,3,3);imagesc(real(I3)); title('Low resolution filtering')
colormap(gray(256)); axis image; axis off
你提的問題是非常不清楚。我是什麼?我們如何找到b?我沒有看過的文字使用相同的符號。 Ram Lak濾波器只是一個abs(f)函數,就像雙斜坡一樣。如果你告訴我這些變量是什麼,我將能夠幫助你。 – Phonon
我的問題是我不知道。在文獻(即算法重建與無衍射源Page 72 - [鏈接](www.umiacs.umd.edu/~mingyliu/enee631/CTI_Ch03.pdf)他們使用只是一個I(或TETA那裏,採樣間隔) 燦你可以幫助我實現一個基於正弦圖和投影數量的簡單的abs()濾波器嗎? – mmlac
試試這個鏈接http://laskin.mis.hiroshima-u.ac.jp/Kougi/07a/PIP/PIP12pr。 pdf這是一個很好的文字圖2B是一個Ram Lak濾波器 – Phonon