Проекция луча вентилятора

Примечание

Для получения информации о создании данных о проекции из линейных интегралов вдоль параллельных путей смотрите Преобразование Радона. Чтобы преобразовать данные о проекции луча вентилятора в данные о проекции параллельного луча, используйте fan2para функция.

fanbeam функция вычисляет проекции матрицы изображений вдоль заданных направлений. Проекция двумерной функции f (x, y) является набором линейных интегралов. fanbeam функция вычисляет линейные интегралы вдоль путей, которые исходят из одного источника, формируя форму вентилятора. Представлять изображение, fanbeam функционируйте берет несколько проекций изображения от различных углов путем вращения источника вокруг центра изображения. Следующий рисунок показывает одну проекцию луча вентилятора при заданном угле поворота.

Проекция луча вентилятора в Theta угла поворота

Когда вы вычисляете данные о проекции луча вентилятора с помощью 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

В этом примере показано, как использовать fanbeam и ifanbeam сформировать проекции из демонстрационного изображения и затем восстановить изображение от проекций.

Сгенерируйте тестовое изображение и отобразите его. Тестовое изображение является фантомом главы Shepp-Логана, который может быть сгенерирован phantom функция. Фантомное изображение иллюстрирует многие качества, которые найдены в реальной томографической обработке изображений человеческих голов.

P = phantom(256);
imshow(P)

Figure contains an axes object. The axes object contains an object of type image.

Вычислите данные о проекции луча вентилятора тестового изображения, с помощью 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)')

Figure contains an axes object. The axes object contains an object of type image.

Восстановите изображение из данных о проекции луча вентилятора с помощью 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')

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

Ifan2 = ifanbeam(F2,D, ...
       'FanSensorSpacing',dsensor2,'OutputSize',output_size);
figure, imshow(Ifan2)
title('Ifan2')

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

Ifan3 = ifanbeam(F3,D, ...
       'FanSensorSpacing',dsensor3,'OutputSize',output_size);
figure, imshow(Ifan3)
title('Ifan3')

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