MATLAB.Exponenta
MATLAB и Simulink на русском
Технологии разработки и отладки
		сложных технических систем

Обработка сигналов и изображений\image Processing Toolbox

И.М.Журавель "Краткий курс теории обработки изображений"

В оглавление \ К следующему разделу \ К предыдущему разделу

Реконструкция изображений по их проекционным данным

В этом примере рассмотрим применение функций radon, iradon, fanbeam и ifanbeam для получения проекций изображений и обратную реконструкцию данных на основе их проекций. В функциях radon и iradon для получения проекций используется параллельно-лучевая геометрия, а в функциях fanbeam и ifanbeam - веерно-лучевая геометрия. Для того, чтобы сравнить параллельно-лучевую и веерно-лучевую геометрии, создадим некоторые синтезированные проекции для каждой геометрии и затем применим их для восстановления исходного изображения.

Практической задачей, где применяется реконструкция изображений, является рентгеновская томография, где проекции формируются на основании измерения ослабления радиации при прохождении через разные физические среды. В результате на изображении отображаются данные о структуре среза исследуемого объекта. Проекционные данные формируются и хранятся в специальной медицинской аппаратуре. На основании этих данных существует возможность реконструкции изображения исследуемых органов. В среде Matlab моделирование восстановления вида объекта по его томографическим проекциям можно реализовать с помощью функций iradon и ifanbeam.

Функция iradon применяется для реконструкции изображений из параллельно-лучевых проекций. В параллельно-лучевой геометрии каждая проекция формируется в результате линейной комбинации изображений, представляющих некоторый исследуемый орган под разными углами. Функция ifanbeam применяется для реконструкции данных на основании их веерно-лучевых проекций, которые получены из одного источника излучения, но зафиксированы несколькими датчиками.

Рассмотрим применение пакета Image Processing Toolbox для моделирования описанных выше процедур при использовании обеих геометрий.

Содержание

  • Создание фантома головы.
  • Параллельные лучи - вычисление синтезированных проекций.
  • Параллельные лучи - реконструкция фантома головы на основании проекционных данных.
  • Веерные лучи - вычисление синтезированных проекций.
  • Веерные лучи - реконструкция фантома головы на основании проекционных данных.

Создание фантома головы.

Тестовое изображение фантома головы Шеппа-Логана может быть сгенерировано с помощью функции phantom. Изображение фантома иллюстрирует много особенностей, которые в действительности свойственны реальным томографическим изображениям головы человека. Размещенные в центре фантома объекты в виде эллипса моделируют реальные внутренние особенности строения головы человека.

P=phantom(256);
imshow(P)

Параллельные лучи - вычисление синтезированных проекций.

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

theta1=0:10:170;
[R1, xp]=radon(P, theta1); 
num_angles_R1=size(R1, 2)
num_angles_R1=
    18
theta2=0:5:175;
[R2, xp]=radon(P, theta2);
num_angles_R2=size(R2, 2)
num_angles_R2=
    36
theta3=0:2:178;
[R3, xp]=radon(P, theta3); 
num_angles_R3=size(R3, 2)
num_angles_R3=
    90
  
Отметим, что для каждого угла проекция вычисляется на основании N точек вдоль оси xp, где N является константой,
которая зависит от расстояния до всех точек изображения, спроектированных под разными углами.

N_R1=size(R1, 1)
N_R2=size(R2, 1)
N_R3=size(R3, 1)
N_R1=
   367
N_R2=
   367
N_R3=
   367
   
Таким образом, когда мы используем меньший фантом головы, при вычислении проекций требуется меньшее число точек вдоль оси xp.

P_128=phantom(128);
[R_128, xp_128]=radon(P_128, theta1);
N_128=size(R_128, 1)
N_128=
   185
   
Отобразим проекционные данные R3. Некоторые свойства изображения исходного фантома видны на изображении R3. 
Первый столбец R3 соответствует проекциям нулевого угла, которые интегрированы в вертикальном направлении. 
Последний столбец соответствует проекциям под 90 градусов, которые просуммированы в горизонтальном направлении.

figure, imagesc(theta3, xp, R3)
colormap(hot)
colorbar
xlabel('Параллельный поворот угла - \theta'); 
ylabel(' Параллельное расположение датчиков x\ ');
На изображении представлена зависимость местонахождения сенсоров от поворота угла.

Параллельные лучи - реконструкция фантома головы на основании проекционных данных.

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

Следующие три примера реконструкции (I1, I2 и I3) демонстрируют эффект изменения числа углов, по которым сделаны проекции. Для I1 и I2 некоторые особенности, которые четко заметны на исходном фантоме, видны не очень качественно. Что касается, элипсообразных предметов, то они достаточно хорошо заметны на каждом изображении. Результирующее изображение I3 наиболее точно соответствует исходному изображению.

Как уже отмечалось выше, на изображениях I1 и I2 есть некоторые артефакты, которые искажают действительную информацию. Для устранения этих артефактов используют большее число углов.

% Построение результирующей размерности
% при реконструкции с использованием
% размеров исходного изображения P.
output_size=max(size(P));
dtheta1=theta1(2)-theta1(1);
I1=iradon(R1, dtheta1, output_size);
figure, imshow(I1)

dtheta2=theta2(2)-theta2(1);
I2=iradon(R2, dtheta2, output_size);
figure, imshow(I2)

dtheta3=theta3(2)-theta3(1);
I3=iradon(R3, dtheta3, output_size);
figure, imshow(I3)

Веерные лучи - вычисление синтезированных проекций.

Рассмотрим вычисление синтезированных проекций с использованием веерно-лучевой геометрии и переменной 'FanSensorSpacing'.

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. Отметим, что веерный угловой поворот в диапазоне от 0 до 360 градусов может быть
преобразован в модель с использованием 180 градусов, поскольку некоторые свойства будут идентичны с обеих сторон.
Некоторые свойства на изображении при веерно-лучевых проекциях могут быть связаны с некоторыми свойствами на
изображениях параллельно-лучевых проекций и наоборот.

figure, imagesc(fan_rot_angles3, sensor_pos3, F3)
colormap(hot)
colorbar
xlabel('Веерный поворот угла (в градусах) ')
ylabel('Веерное расположение датчиков (в градусах)')

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

Каждому веерному расположению сенсоров в пространстве соответствует своя синтезированная проекция. При практической реализации реконструкции всегда известна геометрия источников и сенсоров изображения P.

Изменение значения 'FanSensorSpacing' приводит к изменению числа сенсоров, которые используются при изменении угла. При каждой веерно-лучевой реконструкции используется поворот на все значения угла. Использование данных при различных поворотах угла влияет на качество результата обработки.

Отметим, что 'FanSensorSpacing' является только одним параметром из нескольких, которые можно контролировать при использовании функций fanbeam и ifanbeam. Также существует возможность конвертации между параллельными и веерно-параллельными данными. Для этого используют функций fan2para и para2fan.

Ifan1=ifanbeam(F1, D, 'FanSensorSpacing', dsensor1, 'OutputSize', output_size);
figure, imshow(Ifan1)

Ifan2=ifanbeam(F2, D, 'FanSensorSpacing', dsensor2, 'OutputSize', output_size);
figure, imshow(Ifan2)

Ifan3=ifanbeam(F3, D, 'FanSensorSpacing', dsensor3, 'OutputSize', output_size);
figure, imshow(Ifan3)

В оглавление \ К следующему разделу \ К предыдущему разделу


Поиск по сайту:

Система Orphus

Яндекс.Метрика