Типичные скалярные данные об объеме состоят из трехмерного массива данных и трех координатных массивов тех же размерностей. Координатные массивы задают x-, y-, и z-координаты для каждой точки данных.
Модули координат зависят от типа данных. Например, данные о потоке могут иметь координатные модули дюймов и модули данных фунта на квадратный дюйм.
Много функций MATLAB® полезны для визуализации скалярных данных:
Плоскости разбиения обеспечивают способ исследовать распределение значений данных в объеме путем отображения значений с цветами. Можно ориентировать плоскости разбиения под произвольными углами, а также использовать неплоские срезы. (Для рисунков того, как использовать плоскости разбиения, смотрите slice
, пример разрезания объема и плоскости разбиения раньше показывали контекст.) Можно указать, что данные раньше окрашивали изоповерхности, позволяя вам отобразить различную информацию в цветной и поверхностной форме (см. isocolors
).
Срезы контура являются контурными графиками, чертившими в определенных координатах в объеме. Контурные графики позволяют вам видеть, где в данной плоскости значения данных равны. Смотрите contourslice
для примера.
Изоповерхности являются поверхностями, созданными при помощи точек равного значения как вершины patch
графические объекты.
Пример скалярных данных включает данные о магнитно-резонансной томографии (MRI). Эти данные обычно содержат много плоскостей разбиения, севших через объем, таких как человеческое тело. MATLAB включает набор данных MRI, который содержит 27 фрагментов изображения человеческой головы. Этот пример иллюстрирует, что следующие методы применились к данным MRI:
Серия 2D изображений, представляющих срезы через голову
2D и 3-D срезы контура, взятые в произвольных местоположениях в данных
Изоповерхность с изодном, показывающим сечение внутренней части
Данные MRI, D
, хранится как 128 128 1 27 массивами. Третье измерение массива обычно используется в данных о цвете изображения. Однако, поскольку они индексируются изображения (палитра, map
, также загружается) в третьей размерности нет никакой информации, которая можно удалить использование squeeze
команда. Результатом являются 128 128 27 массивами.
Первый шаг должен загрузить данные и преобразовать массив данных от 4-D до 3-D.
load mri D = squeeze(D);
Чтобы отобразить одно из изображений MRI, используйте image
команда:
figure colormap(map) image_num = 8; image(D(:,:,image_num)) axis image
Сохраните x-и пределы оси Y для использования в следующей части примера:
x = xlim; y = ylim;
Визуализируйте данные MRI как данные об объеме, потому что это - набор срезов, бравшихся прогрессивно через 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])
В отличие от изображений, которые являются 2D объектами, срезы контура являются 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
ось
daspect
).
view(35,30) axis tight daspect([1,1,.4])
Добавьте подсветку и повторно вычислите поверхностные нормали на основе градиента данных об объеме, которые производят более сглаженную подсветку (camlight
подсветка
изонормали
). Увеличьте AmbientStrength
свойство изодна украсить окраску, не влияя на изоповерхность. Установите SpecularColorReflectance
из изоповерхности, чтобы сделать цвет зеркального отраженного света ближе к цвету изоповерхности; затем установите SpecularExponent
уменьшать размер зеркального пятна.
lightangle(45,30); lighting gouraud hcap.AmbientStrength = 0.6; hiso.SpecularColorReflectance = 0; hiso.SpecularExponent = 50;
Изодно, объединенное с изоповерхностью, чтобы визуализировать данные MRI.
Использование изодна интерполировало окраску поверхности, что означает, что палитра фигуры определяет окраску закрашенной фигуры. Этот пример использует палитру, предоставленную данными.
Чтобы отобразить изодно в других значениях данных, попытайтесь изменить значение изоповерхности или используйте subvolume
команда. Смотрите isocaps
и subvolume
страницы с описанием для примеров.