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 имя аргумента и 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