fanbeam

Луч вентилятора преобразовывает

Синтаксис

F = fanbeam(I,D)
F = fanbeam(I,D,Name,Value)
[F,fan_sensor_positions,fan_rotation_angles] = fanbeam(___)

Описание

пример

F = fanbeam(I,D) вычисляет данные о проекции луча вентилятора (sinogram) F от изображения I. Каждый столбец F содержит данные о проекции луча вентилятора в одном угле поворота. D является расстоянием от вершины луча вентилятора до центра вращения.

F = fanbeam(I,D,Name,Value) пары "имя-значение" использования, чтобы задать шаг вращения и интервал датчика. Имена аргумента могут быть сокращены, и случай не имеет значения.

пример

[F,fan_sensor_positions,fan_rotation_angles] = fanbeam(___) возвращает местоположение датчиков луча вентилятора в fan_sensor_positions и углах поворота, где проекции луча вентилятора вычисляются в fan_rotation_angles.

Примеры

свернуть все

Установите настройку IPT делать оси видимыми.

iptsetpref('ImshowAxesVisible','on')

Создайте демонстрационное изображение и отобразите его.

ph = phantom(128);
imshow(ph)

Вычислите fanbeam проекции и отобразите их.

[F,Fpos,Fangles] = fanbeam(ph,250);
figure
imshow(F,[],'XData',Fangles,'YData',Fpos,...
            'InitialMagnification','fit')
axis normal
xlabel('Rotation Angles (degrees)')
ylabel('Sensor Positions (degrees)')
colormap(gca,hot), colorbar

Вычислите проекции луча вентилятора для геометрии 'дуги'.

I = ones(100);
D = 200;
dtheta = 45;
[Farc,FposArcDeg,Fangles] = fanbeam(I,D,...
                    'FanSensorGeometry','arc',...
                 'FanRotationIncrement',dtheta);

Преобразуйте угловые положения в линейное расстояние вдоль x-prime оси.

FposArc = D*tan(FposArcDeg*pi/180);

Вычислите проекции луча вентилятора для геометрии 'строки'.

[Fline,FposLine] = fanbeam(I,D,...
           'FanSensorGeometry','line',...
        'FanRotationIncrement',dtheta);

Вычислите соответствующий Радон, преобразовывают.

[R,Rpos]=radon(I,Fangles);

Отобразите эти три проекции в одном конкретном угле поворота. Обратите внимание, что эти три очень похожи. Различия происходят из-за геометрии выборки и числовых приближений, используемых в вычислениях.

figure
idx = find(Fangles==45);
plot(Rpos,R(:,idx),...
           FposArc,Farc(:,idx),...
          FposLine,Fline(:,idx))
legend('Radon','Arc','Line')

Входные параметры

свернуть все

Введите изображение, заданное как 2D числовая или логическая матрица.

Расстояние в пикселях от поклонника излучает вершину к центру вращения, заданного как положительное число. Центр вращения является центральным пикселем изображения, заданного как floor((size(I)+1)/2). D должен быть достаточно большим, чтобы гарантировать, что вершина луча вентилятора за пределами изображения во всех углах поворота. Смотрите Советы для инструкций по определению D. Фигура иллюстрирует D относительно вершины луча вентилятора для одной геометрии луча вентилятора.

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: F = fanbeam(I,D,'FanRotationIncrement',5)

Угол поворота луча вентилятора постепенно увеличивается в градусах, заданный как пара, разделенная запятой, состоящая из 'FanRotationIncrement' и положительной скалярной величины.

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

Расположение датчика луча вентилятора, заданное как пара, разделенная запятой, состоящая из 'FanSensorGeometry' и одно из следующих значений.

Значение

Значение

Схема

'arc'

Датчики расположены с интервалами под равными углами вдоль круговой дуги на расстоянии D от центра вращения.

FanSensorSpacing задает угловой интервал в градусах.

'line'

Датчики расположены с интервалами на равных расстояниях вдоль строки, которая параллельна x' ось. Самый близкий датчик является расстоянием D от центра вращения.

FanSensorSpacing задает расстояние между лучами вентилятора на x' ось в пикселях.

Интервал датчика боба вентилятора, заданный как пара, разделенная запятой, состоящая из 'FanSensorSpacing' и положительной скалярной величины.

  • Если FanSensorGeometry является 'arc', то FanSensorSpacing задает угловой интервал в градусах.

  • Если FanSensorGeometry является 'line', то FanSensorSpacing задает линейное расстояние между лучами вентилятора в пикселях. Линейный интервал измеряется на x' ось.

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

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

свернуть все

Данные о проекции луча вентилятора, возвращенные как numsensors-by-numangles числовая матрица. numsensors является количеством датчиков луча вентилятора, и numangles является количеством углов поворота луча вентилятора. Каждый столбец F содержит выборки датчика луча вентилятора в одном угле поворота.

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

Местоположение датчиков луча вентилятора, возвращенных как numsensors-by-1 числовой вектор.

  • Если FanSensorGeometry является 'arc' (значение по умолчанию), то fan_sensor_positions содержит углы распространения луча вентилятора.

  • Если FanSensorGeometry является 'line', то fan_sensor_positions содержит положения датчика луча вентилятора вдоль x' ось. Смотрите FanSensorSpacing для получения дополнительной информации.

fanbeam определяет количество датчиков путем вычисления, сколько лучей требуется, чтобы покрывать целое изображение для любого угла поворота. Меньше датчиков требуется, чтобы покрывать изображение, когда расстояние D между вершиной луча вентилятора и центром вращения является большим.

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

Угол поворота датчиков луча вентилятора, возвращенных как 1 numangles числовым вектором. numangles является 360/FanRotationIncrement.

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

Советы

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

sqrt(size(I,1)^2 + size(I,2)^2)

Значения, возвращенные в F, являются числовым приближением проекций луча вентилятора. Алгоритм зависит от Радона, преобразовывают, интерполированный к геометрии луча вентилятора. Результаты отличаются в зависимости от используемых параметров. Можно ожидать более точные результаты, когда изображение будет больше, D больше, и для точек ближе к середине изображения, далеко от ребер.

Ссылки

[1] Kak, A.C., & Slaney, M., Принципы Компьютеризированной Томографической Обработки изображений, ИИ-Пресс, Нью-Йорк, 1988, стр 92-93.

Смотрите также

| | | | |

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