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

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

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

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

Извлечение данных из трехмерных магниторезонансных изображений

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

Ключевые термины Аффинные, традиционные и комплексные преобразования, трехмерные и двухмерные преобразования, исходный массив преобразований, дискретизация выбранных размерностей
Ключевые функции maketform, makeresampler, imtransform, tformarray

Просмотр демонстрационного примера.

Демонстрация включает следующие шаги:

  • Шаг 1: Считывание и просмотр магниторезонансных изображений (горизонтальные срезы).
  • Шаг 2: Получение сагиттальных данных на основе горизонтальных срезов с использованием функции imtransform.
  • Шаг 3: Получение сагиттальных данных на основе горизонтальных срезов с использованием функции tformarray.
  • Шаг 4: Получение сагиттальных данных и отображение их в виде последовательности.
  • Шаг 5: Получение корональных данных и отображение их в виде последовательности.

Шаг 1: Считывание и просмотр магниторезонансных изображений (горизонтальные срезы).

В этом примере используются магниторезонансные данные, которые представлены в MATLAB и используются при описании функций montage и immovie. Считывание магниторезонансных изображений добавляет две переменные в рабочее пространство: D (128x128x1x27, в формате uint8) и полутоновую палитру map (89x3, в формате double).

Переменная D включает 27 горизонтальных срезов магниторезонансных данных сканирования человеческого черепа с размерностью 128x128. Значения элементов D находятся в диапазоне от 0 до 88. Таким образом, палитра обеспечивает генерацию изображения в диапазоне, пригодном для визуального анализа. Размерность данных в D должна быть согласована с функцией immovie. Первых две размерности являются пространственными. Третья размерность представляет собой размерность цвета. Числа третьей размерности указывают на индексы в палитре, например, size(D, 3) и используются для описания RGB-составляющих цвета. Четвертая размерность является временной и только в очень редких случаях используется в качестве пространственной координаты. Приведенные выше пространственные размерности в D используются в функциях imtransform или tformarray для преобразования слайдов горизонтальных срезов в сагиттальные данные. Пространственные размерности D размещены в такой последовательности:

  • Размерность 1: От передней до задней части головы (ростральная (rostral) и каудальная (caudal) части)
  • Размерность 2: С левой части головы на правую
  • Размерность 4: От верхней части головы к нижней (inferior и superior).

Данные, которые представляют собой набор из 27 горизонтальных срезов, подвергаются последующей обработке. Для предотвращения непредсказуемых ситуаций при обработке данных, в примере используется функция iptgetpref.

truesizewarning=iptgetpref('TruesizeWarning');
iptsetpref('TruesizeWarning', 'off');
load mri;
figure;
immovie(D, map);
montage(D, map);
title('Horizontal Slices');

Шаг 2: Получение сагиттальных данных на основе горизонтальных срезов с использованием функции imtransform.

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

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

M1=D(:, 64, :, :); size(M1)

Также существует возможность просмотра M1 как изображения с размерностью 128x1x1x27. С использованием функции reshape данные M1 можно преобразовать в изображение с размерностью 128x27, с дальнейшим просмотром с помощью imshow.

M2=reshape(M1, [128 27]); size(M2)
figure, imshow(M2, map);
title('Sagittal - Raw Data');

Размерности в M2 следующие:

  • Размерность 1: От передней до задней части головы (ростральная (rostral) и каудальная (caudal) части)
  • Размерность 2: От верхней части головы к нижней (inferior и superior).

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

T0=maketform('affine', [0 -2.5; 1 0; 0 0]);

Параметр, который применяется при реализации функции maketform и представляет собой блок 2x2

[ 0 -2.5
1 0 ]

характеризует описанные выше преобразования поворота и масштабирования. После преобразований получим:

  • Размерность 1: От верхней части головы к нижней (inferior и superior).
  • Размерность 2: От передней до задней части головы (ростральная (rostral) и каудальная (caudal) части)

Выражение

imtransform(M2, T0, 'cubic')

применяется для преобразования данных из T в M2 и обеспечения приемлемой разрешительной способности при интерполяции вдоль направления сверху вниз. Однако, при такого рода преобразованиях отпадает необходимость в проведении кубической интерполяции в направлении от передней части головы к задней. Поэтому окрестности в этом направлении определяются с большей степенью эффективности.

R2=makeresampler({'cubic', 'nearest'}, 'fill');
M3=imtransform(M2, T0, R2);
figure, imshow(M3, map);
title('Sagittal - IMTRANSFORM')

Шаг 3: Получение сагиттальных данных на основе горизонтальных срезов с использованием функции tformarray.

В этом пункте мы получим результаты аналогичные результатам, полученным в пункте 2. Только теперь для преобразования трехмерных данных в двухмерные, а также для других операций будем использовать функцию tformarray. В шаге 2 начальные данные представляют собой трехмерный массив, а результат обработки представлен в виде двумерного массива. При преобразованиях используется функция imtransform, которая создает массив М3, а также промежуточные двумерные массивы M1 и M2.

При использовании аргумента типа TDIMS_A в функции tformarray существует возможность проведения определенных преобразований для исходного массива. В результате этих преобразований получится изображение с такими размерностями:

  • Размерность 1: Сверху вниз (исходная размерность)
  • Размерность 2: От передней до задней части головы (ростральная (rostral) и каудальная (caudal) части, исходная размерность)

Таким образом, получим примерный сагиттальный вид с исходной размерностью 2 при параметре tdims_a=[4 1 2]. Параметр tform можно получить, проводя двухмерные аффинные преобразования, которые заключаются в масштабировании размерности 1 с коэффициентом 2.5 и прибавлении к массиву значения 68.5. Вторая часть преобразований, которые заключаются в получении 64-го сагиттального плана, описывается функцией INVERSE_FCN:

Инверсная функция: ipex003.m
function U=ipex003( X, t ) U=[X repmat(t.tdata, [size(X, 1) 1])];

Определение коэффициентов T2 и Tc.

T1=maketform('affine', [-2.5 0; 0 1; 68.5 0]);
T2=maketform('custom', 3, 2, [], @ipex003, 64);
Tc=maketform('composite', T1, T2);

Проведем некоторые преобразования для определения третьей размерности.

R3=makeresampler({'cubic', 'nearest', 'nearest'}, 'fill');

Функция tformarray преобразовывает третью пространственную размерность и массив D трансформируется в двумерные данные. Таким образом, исходное изображение с размерами 66x128 с 27 видов растягивается до 66 в вертикальном направлении.

M4=tformarray(D, Tc, R3, [4 1 2], [1 2], [66 128], [], 0);

Полученный результат идентичен результату, полученному при обработке функцией imtransform.

figure, imshow(M4, map);
title('Sagittal - TFORMARRAY');

Шаг 4: Получение сагиттальных данных и отображение их в виде последовательности.

Создадим четырехмерный массив (трехмерные данные и размерность цветности), который используется для генерации движений слева направо с использованием более 30 снимков. Массив преобразований имеет такую структуру:

  • Размерность 1: Сверху вниз.
  • Размерность 2: От передней до задней части головы (ростральная (rostral) и каудальная (caudal) части)
  • Размерность 4: Слева направо.

В качестве первого шага проведем следующие преобразования - трансформируем исходный массив с использованием параметра TDIMS_A=[4 1 2]. Преобразования будут заключаться в перестановке и масштабировании элементов массива в вертикальной размерности.

T3=maketform('affine', [-2.5 0 0; 0 1 0; 0 0 0.5; 68.5 0 -14]);

Теперь в массиве преобразований tformarray параметр TSIZE_B=[66 128 35] включает 35 четырехразмерных слайдов.

S=tformarray(D, T3, R3, [4 1 2], [1 2 4], [66 128 35], [], 0);

Для просмотра движения сагиттальных слайдов они соответствующим образом монтируются.

figure;
immovie(S, map);
S2=padarray(S, [6 0 0 0], 0, 'both');
montage(S2, map);
title('Sagittal Slices');

Шаг 5: Получение корональных данных и отображение их в виде последовательности.

Создание корональных слайдов почти аналогично созданию сагиттальных. Для этого изменим параметр TDIMS_A из [4 1 2] на [4 2 1]. Создадим серию из 45 слайдов и смонтируем из них движения. Размерности результирующего массива:

  • Размерность 1: Сверху вниз.
  • Размерность 2: Слева направо.
  • Размерность 4: От задней до передней части головы (ростральная (rostral) и каудальная (caudal) части)
T4=maketform('affine', [-2.5 0 0; 0 1 0; 0 0 -0.5; 68.5 0 61]);

В функции tformarray параметр TSIZE_B=[66 128 48] описывает размерности изображений.

C=tformarray(D, T4, R3, [4 2 1], [1 2 4], [66 128 45], [], 0);

Для просмотра движения кадры соответствующим образом монтируются.

figure;
immovie(C, map);
C2=padarray(C, [6 0 0 0], 0, 'both');
montage(C2, map);
title('Coronal Slices');

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

iptsetpref('TruesizeWarning', truesizewarning);

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


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

Система Orphus

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