Для получения информации о создании данных о проекции из линейных интегралов вдоль параллельных путей смотрите Преобразование Радона. Чтобы преобразовать данные о проекции луча вентилятора в данные о проекции параллельного луча, используйте fan2para
функция.
fanbeam
функция вычисляет проекции матрицы изображений вдоль заданных направлений. Проекция двумерной функции f (x, y) является набором линейных интегралов. fanbeam
функция вычисляет линейные интегралы вдоль путей, которые исходят из одного источника, формируя форму вентилятора. Представлять изображение, fanbeam
функционируйте берет несколько проекций изображения от различных углов путем вращения источника вокруг центра изображения. Следующий рисунок показывает одну проекцию луча вентилятора при заданном угле поворота.
Проекция луча вентилятора в тете угла поворота
Когда вы вычисляете данные о проекции луча вентилятора с помощью fanbeam
функция, вы задаете в качестве аргументов изображение и расстояние между вершиной проекций луча вентилятора и центром вращения (центральный пиксель в изображении). fanbeam
функция определяет количество лучей, на основе размера изображения и настроек fanbeam
параметры.
FanSensorGeometry
параметр задает, как выравниваются датчики: 'arc'
или 'line'
.
Геометрия датчика вентилятора | Описание |
---|---|
'arc' | fanbeam располагает датчики вдоль дуги, располагая датчики с интервалами в 1 интервале степени. Используйте FanSensorSpacing параметр, чтобы управлять расстоянием между датчиками путем определения угла между каждым лучом. Это - геометрия датчика вентилятора по умолчанию. |
'line' | fanbeam датчики положения вдоль прямой линии, а не дуга. Используйте FanSensorSpacing параметр, чтобы задать расстояние между датчиками, в пикселях, вдоль x´ ось. |
FanRotationIncrement
параметр задает шаг угла поворота. По умолчанию, fanbeam
берет проекции под различными углами путем вращения источника вокруг центрального пикселя в 1 интервале степени.
Следующие фигуры иллюстрируют оба этих конфигураций. Первая фигура иллюстрирует геометрию, используемую fanbeam
функционируйте когда FanSensorGeometry
установлен в 'arc'
(значение по умолчанию). Отметьте, как вы задаете расстояние между датчиками путем определения углового интервала лучей.
Проекция луча вентилятора с геометрией дуги
Следующая фигура иллюстрирует геометрию, используемую fanbeam
функционируйте когда FanSensorGeometry
установлен в 'line'
. В этом рисунке отметьте, как вы задаете положение датчиков путем определения расстояния между ними в пикселях вдоль x´ ось.
Проекция луча вентилятора с геометрией линии
Чтобы восстановить изображение из данных о проекции луча вентилятора, используйте ifanbeam
функция. С этой функцией вы задаете в качестве аргументов данные о проекции и расстояние между вершиной проекций луча вентилятора и центром вращения, когда данные о проекции были созданы. Например, этот код воссоздает изображение I
из данных о проекции P
и расстояние D
.
I = ifanbeam(P,D);
По умолчанию, ifanbeam
функция принимает, что данные о проекции луча вентилятора были созданы с помощью геометрии датчика вентилятора дуги с лучами, расположенными с интервалами под 1 углом степени и проекциями, взятыми в 1 шаге степени в полных 360 областях значений степени. Как с fanbeam
функция, можно использовать ifanbeam
параметры, чтобы задать другие значения для этих характеристик данных о проекции. Используйте те же значения в этих параметрах, которые использовались, когда данные о проекции были созданы. Для получения дополнительной информации об этих параметрах, смотрите ifanbeam
.
ifanbeam
функция преобразует данные о проекции луча вентилятора в данные о проекции параллельного луча с fan2para
функция, и затем вызывает iradon
функция, чтобы выполнить реконструкцию изображений. Поэтому ifanfeam
функционируйте поддерживает определенный iradon
параметры, которые это передает iradon
функция. Смотрите Обратное Преобразование Радона для получения дополнительной информации о iradon
функция.
В этом примере показано, как использовать fanbeam
и ifanbeam
сформировать проекции из демонстрационного изображения и затем восстановить изображение от проекций.
Сгенерируйте тестовое изображение и отобразите его. Тестовое изображение является фантомом главы Shepp-Логана, который может быть сгенерирован phantom
функция. Фантомное изображение иллюстрирует многие качества, которые найдены в реальной томографической обработке изображений человеческих голов.
P = phantom(256); imshow(P)
Вычислите данные о проекции луча вентилятора тестового изображения, с помощью FanSensorSpacing
параметр, чтобы варьироваться интервал датчика. Пример использует геометрию дуги fanbeam, таким образом, вы задаете интервал между датчиками путем определения углового интервала лучей. Первый вызов располагает лучи с интервалами в 2 градусах; второе в 1 степени; и третье в 0,25 градусах. В каждом вызове расстояние между центром вращения и вершиной проекций является постоянным на уровне 250 пикселей. Кроме того, fanbeam
вращает проекцию вокруг центрального пикселя в 1 шаге степени.
D = 250; dsensor1 = 2; F1 = fanbeam(P,D,'FanSensorSpacing',dsensor1); dsensor2 = 1; F2 = fanbeam(P,D,'FanSensorSpacing',dsensor2); dsensor3 = 0.25; [F3, sensor_pos3, fan_rot_angles3] = fanbeam(P,D,... 'FanSensorSpacing',dsensor3);
Отобразите данные о проекции на графике F3
. Поскольку fanbeam
вычисляет данные о проекции при углах поворота от 0 до 360 градусов, те же шаблоны происходят при смещении 180 градусов. Те же функции производятся с обеих сторон.
figure, imagesc(fan_rot_angles3, sensor_pos3, F3) colormap(hot); colorbar xlabel('Fan Rotation Angle (degrees)') ylabel('Fan Sensor Position (degrees)')
Восстановите изображение из данных о проекции луча вентилятора с помощью ifanbeam
. В каждой реконструкции совпадайте с интервалом датчика вентилятора интервалу, используемому, когда данные о проекции были созданы ранее. Пример использует OutputSize
параметр, чтобы ограничить выходной размер каждой реконструкции совпадать с размером оригинального изображения P
. В выходе отметьте, как качество реконструкции поправляется как количество лучей в увеличениях проекции. Первое изображение, Ifan1
, был создан с помощью 2 интервалов степени лучей; второе изображение, Ifan2
, был создан с помощью 1 интервала степени лучей; третье изображение, Ifan3
, был создан с помощью 0,25 интервалов лучей.
output_size = max(size(P)); Ifan1 = ifanbeam(F1,D, ... 'FanSensorSpacing',dsensor1,'OutputSize',output_size); figure, imshow(Ifan1) title('Ifan1')
Ifan2 = ifanbeam(F2,D, ... 'FanSensorSpacing',dsensor2,'OutputSize',output_size); figure, imshow(Ifan2) title('Ifan2')
Ifan3 = ifanbeam(F3,D, ... 'FanSensorSpacing',dsensor3,'OutputSize',output_size); figure, imshow(Ifan3) title('Ifan3')