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

Примечание

Для получения информации о создании данных о проекции из линейных интегралов вдоль параллельных путей смотрите Преобразование Радона. Чтобы преобразовать данные о проекции луча вентилятора в данные о проекции параллельного луча, используйте функцию 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

Этот пример показывает, как использовать 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')