Типичные скалярные данные об объеме состоят из трехмерного массива данных и трех координатных массивов тех же размерностей. Координатные массивы задают 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
, 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;
Изопрописная буква, объединенная с изоповерхностью, чтобы визуализировать данные MRI.
Использование изопрописных букв интерполировало окраску поверхности, что означает, что палитра фигуры определяет окраску закрашенной фигуры. Этот пример использует палитру, предоставленную данными.
Чтобы отобразить изопрописные буквы в других значениях данных, попытайтесь изменить значение изоповерхности или используйте команду subvolume
. Смотрите isocaps
и страницы с описанием subvolume
для примеров.