orthosliceViewer

Просмотр ортогональных срезов в полутоме или RGB

Описание

orthosliceViewer является средством просмотра для исследования объемов, представляющим три ортогональных вида объема по x, y и z размерностям.

Использование orthosliceViewer чтобы просмотреть отдельные срезы объема. The orthosliceViewer открывает, отображая центральный срез в каждой размерности. Каждый вид стека изображений включает перекрестие, которое можно использовать, чтобы просмотреть различные срезы стека изображений. Перекрестия соединяются таким образом, что при перемещении перекрестия на связанных видах также перемещаются.

The orthosliceViewer поддерживает свойства, функции объектов и события, которые можно использовать для настройки его внешнего вида и функционирования. The orthosliceViewer может отправлять уведомления, когда происходят определенные события, такие как перемещение перекрестия. Дополнительные сведения см. в разделе Дополнительные сведения.

Примечание

По умолчанию нажатие и перетаскивание мыши в срезах, отображаемых в интерактивном режиме, изменяет их яркость и контрастность, метод называется window/level. Перетаскивание мыши горизонтально слева направо изменяет контрастность. Перетаскивание мыши вертикально вверх и вниз изменяет яркость. Нажатие клавиши Ctrl при нажатии и перетаскивании мыши ускоряет изменения. Удерживание клавиши Shift при нажатии и перетаскивании мыши замедляет скорость изменения. Нажмите эти клавиши перед нажатием и перетаскиванием. Чтобы контролировать это поведение, используйте свойство DisplayRangeInteraction.

Создание

Описание

пример

orthosliceViewer(V) отображает громкость V на рисунке.

orthosliceViewer(___,Name,Value) устанавливает свойства с помощью пар "имя-значение". Для примера, orthosliceViewer(V,'Colormap',cmap) создает orthosliceViewer объект, задающий палитру, используемую для отображения объема. Можно задать несколько пары "имя-значение". Заключайте каждое имя свойства в одинарные кавычки.

s = orthosliceViewer(___) возвращает orthosliceViewer объект, s, со свойствами, которые могут использоваться для управления визуализацией изображений. Используйте входные параметры из любого из предыдущих синтаксисов.

Входные параметры

расширить все

Входной объем, заданный как m -by- n -by- p -by- c числовой массив. Для полутоновых томов, c равен 1. Для томов RGB c равно 3. Тома RGB могут иметь только класс uint8, uint16, single, и double.

Типы данных: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32

Свойства

расширить все

Общие свойства

Палитра стека изображений, заданная как числовой массив m -на 3 со значениями в области значений [0 1]. Colormap не влияет, когда S является m -by- n -by- p -by- c стеком изображений RGB.

Отображение области значений объема полутонового цвета, заданная как двухэлементный вектор вида [low high]. Значение low (и любое значение, меньше low) отображается черным цветом. Значение high (и любое значение, больше high) отображается в белом цвете. Промежуточные значения отображаются в виде промежуточных оттенков серого, используя значение по умолчанию для уровней серого. Если вы задаете пустую матрицу ([]), sliceViewer использует значение по умолчанию. DisplayRange не влияет при указании тома RGB.

Интерактивное управление областью значений отображения, заданное как одно из следующих значений. Это свойство не влияет при указании стека томов RGB. Для получения дополнительной информации об использовании этой возможности см. раздел «Описание».

ЗначениеОписание

'on' (по умолчанию для объемов интенсивности в полутоновом цвете)

Можно управлять областью значений отображения стека полутоновых изображений, щелкнув левой кнопкой мыши и перетащив его по осям.

'off'(по умолчанию для логических томов и томов RGB)

Область значений отображения отсутствует.

Родительский элемент orthosliceViewer объект, заданный как указатель на uipanel или как рисунок, созданный с помощью figure или uifigure функция. Если вы не задаете родительский элемент, родительский элемент orthosliceViewer объект gcf.

Масштабные коэффициенты, используемые для изменения масштаба объема, заданные как положительный числовой вектор 1 на 3. Значения в массиве соответствуют масштабному коэффициенту, применяемому в x, y и z направлениях.

Индексы срезов изображения, которые будут отображаться, заданные как неотрицательный числовой массив 1 на 3. orthosliceViewer отображает соответствующие срезы в [x,y,z] индексы в YZ, XZ, и XY представления.

Перекрестные свойства

Перекрестный цвет, заданный как MATLAB® ColorSpec (Color Specification).

Пример: 'green'

Пример: 'g'

Пример: [0 1 0]

Состояние связанных перекрестных объектов, заданное как одно из значений в этой таблице.

ЗначениеОписание
'on'Перекрестие видно и может взаимодействовать с.
'inactive'Перекрестие видно, но не может взаимодействовать с
'off'Перекрестия не видно.

Ширина поперечной линии, заданная как положительный числовой скаляр, измеренная в точках. Значение по умолчанию является числом точек на пиксель экрана.

Цвет полосы информация только для чтения, заданный как MATLAB ColorSpec (Color Specification) значение или 'none'. По умолчанию ребро информация только для чтения является сплошным цветным ('none'). Если вы задаете StripeColor, информация только для чтения ребра полосатый. Чередование состоит из комбинации значений, заданных как 'Color' и это значение.

Пример: 'green'

Пример: 'g'

Пример: [0 1 0]

Функции объекта

addlistenerСоздайте прослушиватель событий, привязанный к источнику событий
getAxesHandlesПолучите указатели на оси в Ortoslice Viewer

Примеры

свернуть все

Загрузите стек изображений в рабочую область.

load(fullfile(toolboxdir('images'),'imdata','BrainMRILabeled','images','vol_001.mat'));

Создайте пользовательскую карту Палитры.

cmap = parula(256);

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

s = orthosliceViewer(vol,'Colormap',cmap)
s = 
  orthosliceViewer with properties:

               SliceNumbers: [121 121 78]
             CrosshairColor: [1 1 0]
         CrosshairLineWidth: 1
       CrosshairStripeColor: 'none'
            CrosshairEnable: 'on'
                     Parent: [1×1 Panel]
                   Colormap: [256×3 double]
               DisplayRange: [0 2239]
               ScaleFactors: [1 1 1]
    DisplayRangeInteraction: 'on'

Загрузите данные МРТ и просмотрите их в Ortoslice Viewer.

load(fullfile(toolboxdir('images'),'imdata','BrainMRILabeled','images','vol_001.mat'));
s = orthosliceViewer(vol);

Получите указатель на оси, которая содержит срез.

[hXYAxes, hYZAxes, hXZAxes] = getAxesHandles(s);

Отключите перекрестие для лучшей видимости.

set(s,'CrosshairEnable','off');

Укажите имя GIF файла.

filename = 'animatedYZSlice.gif';

Создайте массив чисел срезов в необходимом направлении. Рассмотрим направление YZ.

sliceNums = 1:240;

Проследите цикл и создайте изображение в заданном положении среза.

for idx = sliceNums
    % Update X slice number to get YZ Slice.
    s.SliceNumbers(1) = idx;
  
    % Use getframe to capture image.
    I = getframe(hYZAxes);
    [indI,cm] = rgb2ind(I.cdata,256);
  
    % Write frame to the GIF File.
    if idx == 1
        imwrite(indI,cm,filename,'gif','Loopcount',inf,'DelayTime',0.05);
    else
        imwrite(indI,cm,filename,'gif','WriteMode','append','DelayTime',0.05);
    end
end

Просмотрите анимированный GIF.

Загрузка стека изображений.

load(fullfile(toolboxdir('images'),'imdata','BrainMRILabeled','images','vol_001.mat'));

Создайте пользовательскую палитру для просмотра срезов.

cmap = parula(256);

Просмотр стека изображений в программе просмотра ортослитных средств просмотра.

os = orthosliceViewer(vol,'Colormap',cmap);

Настройте прослушиватели для двух перекрестных движущихся событий Ortoslice Viewer. Когда вы перемещаете перекрестие, Ortoslice Viewer отправляет уведомления об этих событиях и выполняет указанную функцию обратного вызова.

addlistener(os,'CrosshairMoving',@allevents);
addlistener(os,'CrosshairMoved',@allevents);

The allevents функция обратного вызова отображает имя каждого события с предыдущим положением и текущим положением перекрестия.

function allevents(src,evt)
evname = evt.EventName;
    switch(evname)
        case{'CrosshairMoved'}
            disp(['Crosshair moved previous position: ' mat2str(evt.PreviousPosition)]);
            disp(['Crosshair moved current position: ' mat2str(evt.CurrentPosition)]);
        case{'CrosshairMoving'}
            disp(['Crosshair moving previous position: ' mat2str(evt.PreviousPosition)]);
            disp(['Crosshair moving current position: ' mat2str(evt.CurrentPosition)]);
    end
 end

Подробнее о

расширить все

Введенный в R2019b