2011-07-15 20 views
0

我有一個任務來從一個Sinogram創建一個2D圖像。我有以下內容:MATLAB如何將pol2cart複數插值到笛卡爾網格上?

function recon = fourier(sinogram, interpolation) 

tic; 

[rows cols] = size(sinogram); 

% calculate 1D FFT of the sinogram 
% fftSino = ...; 
fftSino = fft(sinogram); 

% prepare the coordinate system change 
cartesianX = 0:1/(cols-1):1; 
cartesianY = -1:2/(rows-1):1; 

[x y] = meshgrid(-1:2/(rows-1):1); 
ySign = y < 0; 
polarAngle = ~ySign - atan2(y, x)/pi; 
polarRadius = sqrt(x.^2 + y.^2) .* (ySign - ~ySign); 

%% 
% perform coordinate system change 
fftSinoInterp = pol2cart(polarAngle, polarRadius); 

但是現在我不知道如何將複數插入我的笛卡爾網格。 任何人都可以給我提示什麼函數使用什麼參數? 我看着interp2,但我無法弄清楚X Y Z的用途。我也不知道interp1或TriScatteredInterp如何在這裏工作。

+0

interp2幫助頁面 - http://www.mathworks.com/help/techdoc/ref/interp2.html – ThP

回答

1

我認爲你真的想做濾波反投影。您沒有指定用於生成正弦圖的角度,因此您的函數聲明是不完整的;如果你不知道使用什麼角度,重建可能甚至是不可能的。 pol2cart()和其他代碼在重建圖像的上下文中沒有任何用處。

相反,你應該使用iradon()。 Please see my other answer about using iradon() at this page

我還建議您免費閱讀「計算機斷層成像原理」第3章available here。濾波反投影算法從第62頁開始。如果這太困難,可以閱讀this student project