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

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

Типичные скалярные объемные данные состоят из трехмерные массивы данных и трех координатных массивов тех же размерностей. Массивы координат задают координаты 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 который использует MRI палитру, которая загружается данными:

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

  • Приспособиться 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 палитра. 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 страницы с описанием для примеров.