Качественный и количественный анализ отфильтрованной обратной проекции / 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');