MATLAB Как мне интерполировать комплексные числа pol2cart в декартову сетку?

У меня есть задание создать 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.


person mmlac    schedule 15.07.2011    source источник


Ответы (1)


Я думаю, вы действительно пытаетесь сделать отфильтрованную обратную проекцию. Вы не указываете, какие углы использовались для создания вашей синограммы, поэтому ваше объявление функции является неполным; реконструкция может быть даже невозможной, если вы не знаете, какие углы использовались. pol2cart() и остальная часть вашего кода не делают ничего полезного в контексте восстановления изображения.

Вместо этого вам, вероятно, следует использовать iradon(). См. другой мой ответ об использовании iradon() на этой странице.

Я также советую вам прочитать главу 3 «Принципы компьютерной томографической визуализации», доступную здесь бесплатно. Алгоритм отфильтрованной обратной проекции начинается на странице 62. Если это слишком сложно, вы можете прочитать этот студенческий проект.

person user244795    schedule 26.07.2011