MATLAB Как интерполировать комплексные числа pol2cart на декартовой сетке? - PullRequest
0 голосов
/ 15 июля 2011

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

1 голос
/ 26 июля 2011

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...