exponenta event banner

Методы визуализации скалярных данных тома

Что такое скалярные данные тома?

Типичные скалярные объемные данные состоят из 3-D массива данных и трех координатных массивов одинаковых размеров. Массивы координат определяют координаты x, y и z для каждой точки данных.

Единицы координат зависят от типа данных. Например, данные потока могут иметь единицы координат дюймов и единицы данных psi.

Ряд функций MATLAB ® полезны для визуализации скалярных данных:

  • Плоскости среза позволяют исследовать распределение значений данных в объеме путем сопоставления значений цветам. Плоскости среза можно ориентировать под произвольными углами, а также использовать непланарные срезы. (Иллюстрации использования плоскостей среза см. в разделе slice, пример среза громкости и плоскости среза, используемые для отображения контекста.) Можно указать данные, используемые для окраски изоповерхностей, что позволяет отображать различную информацию по цвету и форме поверхности (см. isocolors).

  • Контурные срезы - это контурные графики, построенные в определенных координатах объема. Контурные графики позволяют видеть, где в заданной плоскости значения данных равны. Посмотрите contourslice например.

  • Изоповерхности - это поверхности, построенные с использованием точек равной величины в качестве вершин patch графические объекты.

Способы отображения данных МРТ

Пример скалярных данных включает в себя данные магнитно-резонансной томографии (МРТ). Эти данные обычно содержат ряд плоскостей среза, взятых через объем, например тело человека. MATLAB включает в себя набор данных МРТ, который содержит 27 фрагментов изображения человеческой головы. Этот пример иллюстрирует следующие методы, применяемые к данным МРТ:

Изменение формата данных

Данные МРТ, D, сохранен как множество 128 на 128 на 1 на 27. Третий размер массива обычно используется для данных цвета изображения. Однако, поскольку это индексированные изображения (карта цветов, map, также загружено) в третьем измерении нет информации, которую можно удалить с помощью squeeze команда. Результат - множество 128 на 128 на 27.

Первым шагом является загрузка данных и преобразование массива данных из 4-D в 3-D.

load mri
D = squeeze(D);

Отображение изображений данных МРТ

Чтобы отобразить одно из изображений МРТ, используйте image команда:

  • Создание нового figure которая использует карту цвета МРТ, которая загружена данными:

  • Выполните индексирование в массив данных для получения данных для восьмого изображения.

  • Приспособиться axis масштабирование.

figure
colormap(map)
image_num = 8;
image(D(:,:,image_num))
axis image

Сохраните пределы осей X и Y для использования в следующей части примера:

x = xlim;
y = ylim;

Отображение контурного фрагмента 2-D

Визуализируйте данные МРТ как объемные данные, поскольку они представляют собой набор фрагментов, последовательно проходящих через объект 3-D. Использовать contourslice для отображения контурного графика объемного фрагмента. Создайте контурный график с той же ориентацией и размером, что и изображение, созданное в первой части этого примера.

  • Отрегулируйте направление оси Y (axis).

  • Установить пределы (xlim, ylim).

  • Установите пропорции данных (daspect).

Для улучшения видимости деталей в этом контурном графике используется jet colormap. brighten функция уменьшает яркость значений цвета.

cm = brighten(jet(length(map)),-.5);
figure
colormap(cm)
contourslice(D,[],[],image_num)
axis ij
xlim(x)
ylim(y)
daspect([1,1,1])

Отображение 3-D контурных фрагментов

В отличие от изображений, которые являются 2-D объектами, контурные фрагменты являются 3-D объектами, которые можно отображать в любой ориентации. Например, можно отобразить четыре фрагмента контура на виде 3-D.

figure
colormap(cm)
contourslice(D,[],[],[1,12,19,27],8);
view(3);
axis tight

Применение изо-поверхности к данным МРТ

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

Во-первых, сглаживание данных с помощью smooth3; затем использовать isosurface для расчета изодата. Использовать patch для отображения этих данных на рисунке, использующем исходную карту цветов серой шкалы для изокап.

figure
colormap(map)
Ds = smooth3(D);
hiso = patch(isosurface(Ds,5),...
   'FaceColor',[1,.75,.65],...
   'EdgeColor','none');
   isonormals(Ds,hiso)

isonormals функция визуализирует изоповерхность, используя нормали вершин, полученные из сглаженных данных, улучшая качество изоповерхности. Изоповерхность использует один цвет для представления своего изовального значения.

Добавление изокап Показать поверхность выреза

Использовать isocaps для вычисления данных для другого исправления, отображаемого в том же самом изовалюте (5) в качестве изоповерхности. Использовать несмутированные данные (D), чтобы показать детали интерьера. Вы можете видеть это как отрезанную верхнюю часть головы. Нижняя изокапа не видна на конечном виде.

hcap = patch(isocaps(D,5),...
   'FaceColor','interp',...
   'EdgeColor','none');

Определение вида

Определите вид и задайте пропорции (view, axis, daspect).

view(35,30) 
axis tight 
daspect([1,1,.4])

Добавить освещение

Добавление освещения и пересчет нормалей поверхности на основе градиента объемных данных, что приводит к более плавному освещению (camlight, lighting, isonormals). Увеличить AmbientStrength свойство изокапа осветлять окраску без воздействия на изоповерхность. Установите SpecularColorReflectance изоповерхности, чтобы сделать цвет зеркального отраженного света ближе к цвету изоповерхности; затем установите SpecularExponent для уменьшения размера зеркального пятна.

lightangle(45,30);
lighting gouraud
hcap.AmbientStrength = 0.6;
hiso.SpecularColorReflectance = 0;
hiso.SpecularExponent = 50;

Изокап в сочетании с изоповерхностью для визуализации данных МРТ.

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

Чтобы отобразить изокапы при других значениях данных, попробуйте изменить значение изоповерхности или используйте subvolume команда. См. раздел isocaps и subvolume справочные страницы для примеров.