Программирование Matlab: 3D-преобразование радона с использованием функции iradon.m

Я делаю кусок кода Matlab для реконструкции радиальных данных 3D ЯМР. Однако, поскольку функции радона, встроенные в Matlab, являются только 2D, мне придется применять их дважды. После первого преобразования iradon в моем коде я получаю проекции изображаемого объекта, как они должны выглядеть (под разными углами). Но после второго преобразования Ирадона я не вижу правильной реконструкции объекта (просто много шума и некоторые размытые вещи, где должен быть объект).

Моя попытка найти решение показана ниже.

Входными данными является свободный затухание индукции или fid: fid(NP,nv,nv2), где NP - количество проекций, nv - число приращений угла тета, а nv2 - число приращений угла phi.

Выполнение операции FID даст синограмму измерений proj(NP,phi) для каждого угла тета.

Выполнение первого ирадона дает отфильтрованные и нефильтрованные обратные проекции с размерами I(r,x) для каждого тета-угла. (чтобы I3 и I4 имели размеры (r,z,theta))

Выполнение последнего преобразования iradon должно затем сделать реконструированное трехмерное изображение с размерами I(x,y,z)

I3=[];
I4=[];
I5=[];
I6=[];

for k=1:1:nv2
    FID = squeeze(fid(:,:,k));
    proj=abs(fftshift(ifft(ifftshift(FID),[],1)));
    I1 = imrotate(iradon(proj,theta,'v5cubic','none',1,2*NP),-90);
    I2 = imrotate(iradon(proj,theta,'v5cubic','Ram-Lak',1,2*NP),-90);
    I3(:,:,k) = I1;
    I4(:,:,k) = I2;
end

for k=1:size(I3,2)
    I5(:,:,k) = iradon(squeeze(I3(:,k,:)),phi,'v5cubic','none',1,2*NP);
    I6(:,:,k) = iradon(squeeze(I4(:,k,:)),phi,'v5cubic','Ram-Lak',1,2*NP);
end

0 ответов

Другие вопросы по тегам