Типичные скалярные объемные данные состоят из трехмерные массивы данных и трех координатных массивов тех же размерностей. Массивы координат задают координаты x -, y - и z для каждой точки данных.
Модули измерения координат зависят от типа данных. Для примера данные о потоке могут иметь координатные модули дюймов и модулей данных psi.
Ряд MATLAB® функции полезны для визуализации скалярных данных:
Плоскости разбиения обеспечивают способ исследования распределения значений данных в объеме путем преобразования значений в цвета. Можно ориентировать плоскости разбиения под произвольными углами, а также использовать непланарные срезы. (Для рисунков использования плоскостей разбиения см. slice
, пример срезания объема и плоскостей разбиения, используемые для отображения контекста.) Можно задать данные, используемые для окрашивания изоповерхностей, что позволяет отображать различную информацию в цвете и форме поверхности (см. isocolors
).
Срезы контура являются контурными графиками, нарисованными в определенных координатах в пределах объема. Контурные графики позволяют вам увидеть, где в заданной плоскости значения данных равны. Посмотрите contourslice
например, пример.
Изоповерхностей - это поверхности, построенные с помощью точек равного значения в качестве вершин patch
графические объекты.
Пример скалярных данных включает данные магнитно-резонансной томографии (МРТ). Эти данные обычно содержат несколько плоскости разбиения, взятых через объем, такой как тело человека. MATLAB включает набор данных МРТ, который содержит 27 срезы изображения человеческой головы. Этот пример иллюстрирует следующие методы, применяемые к данным МРТ:
Серия 2-D изображений, представляющих срезы через голову
2-D и 3-D срезы контура, взятые в произвольных местоположениях в данных
Изоповерхность с изопрописными буквами, показывающая поперечное сечение интерьера
Данные МРТ, D
, сохранен как массив 128 на 128 на 1 на 27. Третье измерение массива используется обычно для данных цвета изображения. Однако, поскольку это индексированные изображения (палитра, map
, также загружен) нет информации в третьей размерности, которую можно удалить используя squeeze
команда. Результат - массив 128 на 128 на 27.
Первым шагом является загрузка данных и преобразование массива данных с 4-D на 3-D.
load mri D = squeeze(D);
Чтобы отобразить одно из изображений, используйте image
команда:
figure colormap(map) image_num = 8; image(D(:,:,image_num)) axis image
Сохраните пределы по оси X и Y для использования в следующей части примера:
x = xlim; y = ylim;
Визуализируйте данные МРТ как объемные данные, потому что это набор срезов, постепенно проходящих через объект 3-D. Использовать contourslice
отображение контурного графика среза объема. Создать контурный график с той же ориентацией и размером, что и изображение, созданное в первой части этого примера:
Чтобы улучшить видимость деталей, этот контурный график использует 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])
В отличие от изображений, которые являются 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
страницы с описанием для примеров.