exponenta event banner

orthosliceViewer

Просмотр ортогональных фрагментов в градациях серого или RGB-томах

Описание

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

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

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

Примечание

По умолчанию нажатие и перетаскивание мыши в отображаемых фрагментах в интерактивном режиме изменяет их яркость и контрастность - метод, называемый окном/уровнем. Перетаскивание мыши по горизонтали слева направо изменяет контраст. Перетаскивание мыши вертикально вверх и вниз изменяет яркость. Нажатие клавиши Ctrl при щелчке и перетаскивании мыши ускоряет изменения. Нажатие клавиши Shift при щелчке и перетаскивании мыши замедляет скорость изменения. Нажмите эти клавиши перед щелчком и перетаскиванием. Для управления этим поведением используйте свойство DisplayRireInteraction.

Создание

Описание

пример

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 представляет собой стек RGB-образов m-by-n-by-p-by-c.

Диапазон отображения объема в градациях серого, заданный как двухэлементный вектор формы [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'Перекрестие не видно.

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

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

Пример: 'green'

Пример: 'g'

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

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

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

Примеры

свернуть все

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

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'

Загрузите данные МРТ и просмотрите их в Orthoslice 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);

Просмотр стека изображений в программе просмотра Orthoslice Viewer.

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

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

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

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