MATLAB如何将pol2cart复数插值到笛卡尔网格上?

时间:2011-07-15 14:48:18

标签: matlab interpolation coordinate-systems

我有一个从Sinogram创建2D图像的任务。我有以下内容:

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如何在这里工作。

1 个答案:

答案 0 :(得分:1)

我认为你真的想尝试过滤反投影。您没有指定用于生成正弦图的角度,因此您的函数声明不完整;如果您不知道使用了什么角度,甚至可能无法进行重建。 pol2cart()和其余代码在重建图像的上下文中没有做任何有用的事情。

相反,你可能应该使用iradon()。 Please see my other answer about using iradon() at this page

我还建议您免费阅读“计算机断层扫描成像原理”第3章available here。过滤后的反投影算法从第62页开始。如果这太难了,您可以阅读this student project