exponenta event banner

iradon

Обратное преобразование Радона

Описание

пример

I = iradon(R,theta) восстанавливает изображение I из данных проекции в R захвачено под углами проекции theta.

I = iradon(R,theta,interp,filter,frequency_scaling,output_size) задает параметры для использования в обратном преобразовании Радона. Можно указать любую комбинацию последних четырех аргументов. iradon использует значения по умолчанию для пропущенных аргументов.

[I,H] = iradon(___) также возвращает частотную характеристику фильтра, H.

Примеры

свернуть все

Создайте изображение фантома. Отображение изображения.

P = phantom(128); 
imshow(P)
title('Original image')

Figure contains an axes. The axes with title Original image contains an object of type image.

Выполните преобразование изображения по Радону.

R = radon(P,0:179);

Выполните отфильтрованную обратную проекцию.

I1 = iradon(R,0:179);

Выполнить незафильтрованную обратную проекцию.

I2 = iradon(R,0:179,'linear','none');

Отображение восстановленных изображений.

figure
subplot(1,2,1)
imshow(I1,[])
title('Filtered Backprojection')
subplot(1,2,2)
imshow(I2,[])
title('Unfiltered Backprojection')

Figure contains 2 axes. Axes 1 with title Filtered Backprojection contains an object of type image. Axes 2 with title Unfiltered Backprojection contains an object of type image.

Создайте изображение фантома.

P = phantom(128);

Выполните преобразование Радона изображения, затем получите вектор проекции, соответствующий проекции под углом 45 градусов.

R = radon(P,0:179);
r45 = R(:,46);

Выполните обратное преобразование Радона для этого одиночного вектора проекции. iradon синтаксис не позволяет делать это напрямую, потому что если theta является скаляром и обрабатывается как приращение. Задачу можно выполнить, передав две копии вектора проекции и разделив результат на 2.

I = iradon([r45 r45], [45 45])/2;

Просмотрите результат.

imshow(I, [])
title('Backprojection from 45 degrees')

Figure contains an axes. The axes with title Backprojection from 45 degrees contains an object of type image.

Входные аргументы

свернуть все

Данные проекции параллельного луча, указанные как одно из следующих значений.

  • Если theta является скаляром, затем укажите R в виде числового вектора-столбца, содержащего преобразование Радона для theta степени.

  • Если theta является вектором, затем укажите R как 2-D матрица, в которой каждый столбец является преобразованием Радона для одного из углов в theta.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

Углы проекции (в градусах), указанные как один из следующих.

СтоимостьОписание
числовой векторУглы проекции. Между углами должно быть одинаковое расстояние.
числовой скалярИнкрементный угол между выступами. Выступы взяты под углами m*theta, где m = 0,1,2,...,size(R,2)-1.
[]Автоматически задать угол приращения между проекциями равным 180/size(R,2)

Типы данных: double

Тип интерполяции для использования в задней проекции, указанный как одно из этих значений, перечисленных в порядке увеличения точности и вычислительной сложности.

Стоимость

Описание

'nearest'

Интерполяция ближайшего соседа

'linear'

Линейная интерполяция

'spline'

Сплайн-интерполяция

'pchip'Фасонно-сохраняющая кусочно-кубическая интерполяция
'v5cubic'Кубический сверток, используемый в MATLAB ® 5

Типы данных: char | string

Фильтр для фильтрации частотной области, указанный как одно из этих значений.

Стоимость

Описание

'Ram-Lak'

Обрезанный Ram-Lak или наклонный фильтр. Частотная характеристика этого фильтра - | f |. Поскольку этот фильтр чувствителен к шуму в выступах, один из фильтров, перечисленных ниже, может быть предпочтительным. Эти фильтры умножают фильтр Ram-Lak на окно, которое отменяет выделение высоких частот.

'Shepp-Logan'

Умножает фильтр Ram-Lak на sinc функция

'Cosine'

Умножает фильтр Ram-Lak на cosine функция

'Hamming'

Умножает фильтр Ram-Lak на окно Хэмминга

'Hann'

Умножает фильтр Ram-Lak на окно Ханна

'None'Фильтрация отсутствует. iradon возвращает нефильтрованные данные обратной проекции.

Типы данных: char | string

Масштабный коэффициент для масштабирования частотной оси, заданный как положительное число в диапазоне (0, 1]. Если frequency_scaling меньше 1, то фильтр сжимается, чтобы вписаться в частотный диапазон [0,frequency_scaling], в нормированных частотах; все частоты выше frequency_scaling имеют значение 0.

Число строк и столбцов в восстановленном изображении, указанное как положительное целое число. Если output_size не указан, размер определяется из длины выступов в соответствии с:

output_size = 2*floor(size(R,1)/(2*sqrt(2)))

При указании output_size, то iradon восстанавливает меньшую или большую часть изображения, но не изменяет масштаб данных. Если прогнозы были рассчитаны с помощью radon функция, то восстановленное изображение может быть не такого же размера, как исходное изображение.

Выходные аргументы

свернуть все

Изображение в градациях серого, возвращаемое в виде числовой матрицы. Если входные данные проекции R является типом данных single, то I является single; иначе I является double.

Типы данных: single | double

Частотная характеристика фильтра, возвращаемая в виде числового вектора.

Типы данных: double

Алгоритмы

iradon предполагает, что центр вращения является центральной точкой проекций, которая определяется как ceil(size(R,1)/2).

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

Ссылки

[1] Kak, A. C., и М. Слэни, принципы компьютеризированного томографического отображения, Нью-Йорка, Нью-Йорка, IEEE Press, 1988.

Расширенные возможности

См. также

| | | | |

Представлен до R2006a