exponenta event banner

fanbeam

Преобразование веера-луча

Описание

пример

F = fanbeam(I,D) вычисляет данные проекции луча вентилятора (синограмма) 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)

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

Рассчитайте проекции фана и отобразите их.

[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

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

Вычислить проекции веерной балки для геометрии «дуги».

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

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

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')

Figure contains an axes. The axes contains 3 objects of type line. These objects represent Radon, Arc, Line.

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

свернуть все

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

Расстояние в пикселях от вершины луча вентилятора до центра вращения, заданное как положительное число. Центр вращения - это центральный пиксель изображения, определяемый как 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 - количество датчиков вентиляторного луча, numangles - число углов поворота вентиляторного луча. Каждый столбец F содержит образцы датчика луча вентилятора под одним углом поворота.

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

Расположение датчиков веерной балки, возвращаемое в виде числового вектора числовых датчиков по 1.

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

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

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

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

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

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

Совет

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

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

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

Ссылки

[1] Kak, A.C., & Slaney, M., Принципы компьютеризированной томографической визуализации, IEEE Press, NY, 1988, стр. 92-93.

См. также

| | | | |

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