Примечание
Для получения информации о создании данных проекции из интегралов линии вдоль параллельных путей, смотрите Radon Transform. Чтобы преобразовать данные проекции вентилятора-луча в данные проекции параллельного луча, используйте fan2para
функция.
fanbeam
функция вычисляет проекции матрицы изображения в заданных направлениях. Проекция двумерной функции f (x, y) является набором интегралов линий. The fanbeam
функция вычисляет интегралы линии вдоль путей, которые излучаются из одного источника, образуя форму вентилятора. Чтобы представлять изображение, fanbeam
функция принимает несколько проекций изображения с разных углов путем поворота источника вокруг центра изображения. Следующий рисунок показывает одну проекцию вентилятора-балки под заданным углом поворота.
Проекция вентилятора-балки на угол поворота Theta
Когда вы вычисляете данные проекции вентилятора-луча с помощью fanbeam
функция, вы задаете в качестве аргументов изображение и расстояние между вершиной проекций вентилятор-луч и центром вращения (центральный пиксель в изображении). The fanbeam
функция определяет количество пучков, основываясь на размере изображения и настройках fanbeam
параметры.
The FanSensorGeometry
параметр задает выравнивание датчиков: 'arc'
или 'line'
.
Геометрия датчика вентилятора | Описание |
---|---|
'arc' | fanbeam позиционирует датчики вдоль дуги с интервалом между ними с интервалом в 1 степень. Используйте FanSensorSpacing параметр для управления расстоянием между датчиками путем определения угла между каждым лучом. Это конфигурация датчика вентилятора по умолчанию. |
'line' | fanbeam расположения датчиков вдоль прямой линии, а не дуги. Используйте FanSensorSpacing параметр, чтобы задать расстояние между датчиками, в пикселях, вдоль оси x '. |
The 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
.
The ifanbeam
функция преобразует данные проекции вентилятор-луч в данные проекции параллель-луч с fan2para
function, а затем вызывает iradon
функция для выполнения реконструкции изображения. По этой причине ifanfeam
функция поддерживает определенные iradon
параметры, которые он передает в iradon
функция. Смотрите Обратное Преобразование Радона для получения дополнительной информации о iradon
функция.
В этом примере показано, как использовать fanbeam
и ifanbeam
для формирования проекций из выборочного изображения и последующего восстановления изображения из проекций.
Сгенерируйте тестовое изображение и отобразите его. Тестовое изображение является фантомом головы Shepp-Logan, который может быть сгенерирован phantom
функция. Фантомное изображение иллюстрирует многие качества, которые встречаются в реальной томографической визуализации человеческих голов.
P = phantom(256); imshow(P)
Вычислите данные проекции вентилятора-луча тестового изображения, используя FanSensorSpacing
параметр для изменения интервала между датчиками. В примере используется дуговая геометрия луча, поэтому интервал между датчиками задается путем определения углового интервала для балок. Первый вызов разделяет лучи на 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')