Качественный и количественный анализ отфильтрованной обратной проекции / iradon in matlab

Мне было интересно, если кто-нибудь сталкивался с этой проблемой.

Я могу восстановить изображения из Matlab, который напоминает исходное изображение, однако, фактические значения всегда разные.

Например, исходное изображение имеет значения в матрице в диапазоне от 0 до 1, в то время как мое восстановленное изображение находится в диапазоне от -0,2 до 0,4, например.

Восстановленное изображение выглядит аналогично исходному изображению, только данные в изображении имеют разные масштабы.

это пример кода того, что я имею в виду.

p=phantom(64);
theta=0:1:179;
r=radon(p,theta);
ir=iradon(r,theta);

figure
subplot(1,2,1);imagesc(p)
subplot(1,2,2);imagesc(ir)

1 ответ

Эти результаты не совсем то, что я нашел.

>> min(min(ir))

-0.0583

>> max(max(ir))

0.9658

Помните, что обратное преобразование Радона может только приблизить реконструкцию исходного изображения. Только с 180 взглядами наверняка будут некоторые различия.

Преобразование Радона по своей природе приводит к потере некоторой информации, поскольку пиксели должны проецироваться в новую систему координат и перегруппироваться - как во время проецирования, так и при обратном проецировании. Это приводит к тому, что восстановленное изображение слегка ухудшается. Преобразование Радона не является тождественно обратимым, как преобразование Фурье.

Для лучших результатов попробуйте использовать изображение большего размера и больше углов обзора.

p=phantom(256);
theta=0:0.01:179;

А также попробуйте использовать другой фильтр (F в FBP), например, Шепп-Логан, который снижает высокие частоты и уменьшает выбросы.

ir=iradon(r,theta,'linear','Shepp-Logan');
Другие вопросы по тегам