Freehand

Необходимая область от руки

Описание

Freehand объект задает форму и положение нарисованной от руки видимой области (ROI). Можно настроить внешний вид и интерактивное поведение ROI.

Для получения дополнительной информации об использовании ROI от руки, включая горячие клавиши, смотрите Советы.

Freehand ROI tracing the edge of an object in an image.

Создание

Существует два способа создать Freehand объект. Для получения дополнительной информации смотрите, Создают Формы ROI.

  • Используйте drawfreehand функция. Используйте эту функцию, когда это необходимо, чтобы создать ROI и установить внешний вид в одной команде. Можно задать форму и положение ROI в интерактивном режиме путем рисования ROI по изображению с помощью мыши.

  • Используйте images.roi.Freehand функция описана здесь. Используйте эту функцию, когда это необходимо, чтобы задать внешний вид и поведение ROI, прежде чем вы зададите форму и положение ROI. После создания объекта можно задать форму и положение в интерактивном режиме при помощи draw функция.

Описание

пример

roi = images.roi.Freehand создает Freehand объект со свойствами по умолчанию.

roi = images.roi.Freehand(ax) создает ROI в осях, заданных ax.

roi = images.roi.Freehand(___,Name,Value) свойства наборов ROI с помощью аргументов name-value. Можно задать несколько аргументов name-value. Заключите каждое имя свойства в одинарные кавычки.

Пример: images.roi.Freehand('Color','y') создает желтый Freehand объект.

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

развернуть все

Родительский элемент ROI в виде Axes возразите или UIAxes объект. Для получения информации об использовании ROI в UIAxes, включая важные ограничения, смотрите Используя ROI в Приложениях, Созданных с App Designer.

Свойства

развернуть все

Закройте ROI в виде логического значения true или false. Когда true, Freehand возразите закрывает ROI путем соединения последней точки, чертившей к первой чертившей точке.

Цвет ROI в виде триплета RGB, названия цвета или короткого названия цвета.

Можно задать любой цвет с помощью триплета RGB. Триплет RGB является вектором-строкой с 3 элементами, элементы которого задают интенсивность красных, зеленых, и синих компонентов цвета. Интенсивность должна быть в области значений [0,1].

Можно задать некоторые простые цвета по наименованию как строковый скаляр или вектор символов. Эта таблица приводит опции именованного цвета и эквивалентные триплеты RGB.

Название цветаКраткое названиеТриплет RGBВнешний вид
'red''r'[1 0 0]

A rectangle colored pure red

'green''g'[0 1 0]

A rectangle colored pure green

'blue''b'[0 0 1]

A rectangle colored pure blue

'cyan' 'c'[0 1 1]

A rectangle colored pure cyan

'magenta''m'[1 0 1]

A rectangle colored pure magenta

'yellow''y'[1 1 0]

A rectangle colored pure yellow

'black''k'[0 0 0]

A rectangle colored black

'white''w'[1 1 1]

A rectangle colored white

Вот триплеты RGB для цветов по умолчанию что MATLAB® использование во многих типах графиков.

Триплет RGBВнешний вид
[0 0.4470 0.7410]

A rectangle colored medium blue

[0.8500 0.3250 0.0980]

A rectangle colored reddish-orange

[0.9290 0.6940 0.1250]

A rectangle colored dark yellow

[0.4940 0.1840 0.5560]

A rectangle colored dark purple

[0.4660 0.6740 0.1880]

A rectangle colored light green

[0.3010 0.7450 0.9330]

A rectangle colored light blue

[0.6350 0.0780 0.1840]

A rectangle colored dark red

Пример: 'Color','r'

Пример: 'Color','green'

Пример: 'Color',[0 0.4470 0.7410]

Контекстное меню, которое отображается, когда вы щелкаете правой кнопкой по ROI в виде ContextMenu объект. Можно создать пользовательское контекстное меню при помощи uicontextmenu функционируйте и затем конфигурирующий свойства контекстного меню.

Контекстное меню предоставляет возможность удалять ROI в виде true или false. Когда значением является true, можно удалить ROI в интерактивном режиме с помощью контекстного меню. Когда значением является false, опция контекстного меню, чтобы удалить ROI отключена.

В обоих случаях можно удалить ROI за пределами контекстного меню при помощи delete функция.

Область осей, в которые можно в интерактивном режиме поместить ROI в виде одного из значений в этой таблице.

ЗначениеОписание
'auto'Областью рисунка являются пределы текущей системы координат (значение по умолчанию).
'unlimited'Область рисунка не имеет никакого контура, и ROI могут чертиться или перетаскиваться, чтобы расширить вне пределов осей.
[x,y,w,h]Область рисунка ограничивается прямоугольной областью, начинающейся в (x, y), и расширяющей к ширине w и высота h.

Прозрачность ROI стоит в виде номера в области значений [0, 1]. Когда значением является 1, поверхность ROI абсолютно непрозрачна. Когда значением является 0, поверхность ROI абсолютно прозрачна.

Поверхность ROI может получить нажатия кнопки в виде true или false. Когда true (значение по умолчанию), поверхность ROI захватывает клики мыши. Когда false, поверхность ROI не захватывает клики мыши.

Видимость ROI обрабатывает в Children свойство родительского элемента в виде одного из значений в этой таблице.

ЗначениеОписание
'on'Указатель на объект всегда отображается (значение по умолчанию).
'off'Указатель на объект скрыт в любом случае.
'callback' Указатель на объект отображается из коллбэков или функций, вызванных коллбэками, но не из функций, вызванных из командной строки.

Интерактивность ROI в виде одного из значений в этой таблице.

ЗначениеОписание
'all'ROI является полностью межигровым (значение по умолчанию).
'none'ROI не является межигровым, и никакие не перетаскивают точки, отображаются.
'translate'ROI может быть переведен (перемещенный) в области рисунка, но не изменился.
'reshape'ROI может быть изменен, но не переведен.

Метка ROI в виде вектора символов или строкового скаляра. По умолчанию ROI не имеет никакой метки ('').

Прозрачность фона текста в виде номера в области значений [0, 1]. Когда установлено в 1, фон текста абсолютно непрозрачен. Когда установлено в 0, фон текста абсолютно прозрачен.

Цвет текста метки в виде триплета RGB, названия цвета или короткого названия цвета.

Можно задать любой цвет с помощью триплета RGB. Триплет RGB является вектором-строкой с 3 элементами, элементы которого задают интенсивность красных, зеленых, и синих компонентов цвета. Интенсивность должна быть в области значений [0,1].

Можно задать некоторые простые цвета по наименованию как строковый скаляр или вектор символов. Эта таблица приводит опции именованного цвета и эквивалентные триплеты RGB.

Название цветаКраткое названиеТриплет RGBВнешний вид
'red''r'[1 0 0]

A rectangle colored pure red

'green''g'[0 1 0]

A rectangle colored pure green

'blue''b'[0 0 1]

A rectangle colored pure blue

'cyan' 'c'[0 1 1]

A rectangle colored pure cyan

'magenta''m'[1 0 1]

A rectangle colored pure magenta

'yellow''y'[1 1 0]

A rectangle colored pure yellow

'black''k'[0 0 0]

A rectangle colored black

'white''w'[1 1 1]

A rectangle colored white

Вот триплеты RGB для цветов по умолчанию, которые MATLAB использует во многих типах графиков.

Триплет RGBВнешний вид
[0 0.4470 0.7410]

A rectangle colored medium blue

[0.8500 0.3250 0.0980]

A rectangle colored reddish-orange

[0.9290 0.6940 0.1250]

A rectangle colored dark yellow

[0.4940 0.1840 0.5560]

A rectangle colored dark purple

[0.4660 0.6740 0.1880]

A rectangle colored light green

[0.3010 0.7450 0.9330]

A rectangle colored light blue

[0.6350 0.0780 0.1840]

A rectangle colored dark red

Пример: 'LabelTextColor','r'

Пример: 'LabelTextColor','green'

Пример: 'LabelTextColor',[0 0.4470 0.7410]

Пометьте видимость в виде одного из этих значений.

ЗначениеОписание
'on'Метка отображается, когда ROI отображается.
'hover'Метка отображается только, когда мышь наводит на ROI.
'off'Метка не отображается.

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

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

Управляйте стилем рисунка от руки во время интерактивного размещения в виде логического значения true или false. Когда значением является false, нажатие кнопки и перетаскивает жест, завершает ROI от руки. Когда значением является true, несколько жестов перетаскивания могут быть объединены с прямыми ребрами, чтобы сделать более комплексную форму ROI от руки.

Родительский элемент ROI в виде Axes или UIAxes объект. Для получения информации об использовании ROI в UIAxes, включая важные ограничения, смотрите Используя ROI в Приложениях, Созданных с App Designer.

Положение ROI в виде n-by-2 числовая матрица, где n является количеством вершин или точек, задающих ROI. Каждая строка представляет [x y] координаты вершины или точки. Freehand объект генерирует эти точки, когда вы чертите форму ROI в интерактивном режиме. Чтобы работать с меньшим количеством точек, используйте reduce функция.

Состояние выбора ROI в виде логического значения true или false. Можно также установить это свойство в интерактивном режиме. Например, нажатие на ROI выбирает ROI и устанавливает это свойство на true. Точно так же нажатие клавиши Ctrl и нажатие на ROI отменяют выбор ROI и устанавливают значение этого свойства к false.

Цвет ROI, когда выбрано в виде триплета RGB, названия цвета, короткого названия цвета или 'none'. Если вы задаете 'none', затем значение Color задает цвет ROI для всех состояний, выбранных или нет.

Можно задать любой цвет с помощью триплета RGB. Триплет RGB является вектором-строкой с 3 элементами, элементы которого задают интенсивность красных, зеленых, и синих компонентов цвета. Интенсивность должна быть в области значений [0,1].

Можно задать некоторые простые цвета по наименованию как строковый скаляр или вектор символов. Эта таблица приводит опции именованного цвета и эквивалентные триплеты RGB.

Название цветаКраткое названиеТриплет RGBВнешний вид
'red''r'[1 0 0]

A rectangle colored pure red

'green''g'[0 1 0]

A rectangle colored pure green

'blue''b'[0 0 1]

A rectangle colored pure blue

'cyan' 'c'[0 1 1]

A rectangle colored pure cyan

'magenta''m'[1 0 1]

A rectangle colored pure magenta

'yellow''y'[1 1 0]

A rectangle colored pure yellow

'black''k'[0 0 0]

A rectangle colored black

'white''w'[1 1 1]

A rectangle colored white

Вот триплеты RGB для цветов по умолчанию, которые MATLAB использует во многих типах графиков.

Триплет RGBВнешний вид
[0 0.4470 0.7410]

A rectangle colored medium blue

[0.8500 0.3250 0.0980]

A rectangle colored reddish-orange

[0.9290 0.6940 0.1250]

A rectangle colored dark yellow

[0.4940 0.1840 0.5560]

A rectangle colored dark purple

[0.4660 0.6740 0.1880]

A rectangle colored light green

[0.3010 0.7450 0.9330]

A rectangle colored light blue

[0.6350 0.0780 0.1840]

A rectangle colored dark red

Пример: 'SelectedColor','r'

Пример: 'SelectedColor','green'

Пример: 'SelectedColor',[0 0.4470 0.7410]

Сглаженное ребро ROI после интерактивного размещения в виде неотрицательного скаляра. Freehand возразите использует стандартное отклонение Гауссова ядра сглаживания, чтобы отфильтровать x и координаты y ROI. Этот параметр задает размер фильтра как в этом уравнении: 2*ceil(2*Smoothing) + 1. Необходимо задать свойство прежде, чем чертить ROI в интерактивном режиме. Вы видите эффект сглаживания только после завершения рисунка.

Цвет ROI чередует в виде триплета RGB, названия цвета, короткого названия цвета или 'none'. Если вы задаете 'none', затем ребро ROI является сплошным цветом, заданным Color. В противном случае ребро ROI чередуется с цветами, чередующимися между цветами, заданными Color и StripeColor.

Можно задать любой цвет с помощью триплета RGB. Триплет RGB является вектором-строкой с 3 элементами, элементы которого задают интенсивность красных, зеленых, и синих компонентов цвета. Интенсивность должна быть в области значений [0,1].

Можно задать некоторые простые цвета по наименованию как строковый скаляр или вектор символов. Эта таблица приводит опции именованного цвета и эквивалентные триплеты RGB.

Название цветаКраткое названиеТриплет RGBВнешний вид
'red''r'[1 0 0]

A rectangle colored pure red

'green''g'[0 1 0]

A rectangle colored pure green

'blue''b'[0 0 1]

A rectangle colored pure blue

'cyan' 'c'[0 1 1]

A rectangle colored pure cyan

'magenta''m'[1 0 1]

A rectangle colored pure magenta

'yellow''y'[1 1 0]

A rectangle colored pure yellow

'black''k'[0 0 0]

A rectangle colored black

'white''w'[1 1 1]

A rectangle colored white

Вот триплеты RGB для цветов по умолчанию, которые MATLAB использует во многих типах графиков.

Триплет RGBВнешний вид
[0 0.4470 0.7410]

A rectangle colored medium blue

[0.8500 0.3250 0.0980]

A rectangle colored reddish-orange

[0.9290 0.6940 0.1250]

A rectangle colored dark yellow

[0.4940 0.1840 0.5560]

A rectangle colored dark purple

[0.4660 0.6740 0.1880]

A rectangle colored light green

[0.3010 0.7450 0.9330]

A rectangle colored light blue

[0.6350 0.0780 0.1840]

A rectangle colored dark red

Пример: 'StripeColor','r'

Пример: 'StripeColor','green'

Пример: 'StripeColor',[0 0.4470 0.7410]

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

Данные, чтобы сопоставить с ROI в виде любых данных MATLAB. Например, можно задать скаляр, вектор, матрицу, массив ячеек, строку, символьный массив, таблицу или структуру. Freehand объект не использует эти данные.

Видимость ROI в виде 'on' или 'off', или как числовой или логический 1 (TRUE) или 0 ложь. Значение 'on' эквивалентно истине и 'off' эквивалентно лжи. Значение хранится как логическое значение включения - выключения типа OnOffSwitchState.

ЗначениеОписание
'on'Отобразите ROI.
'off'Скройте ROI, не удаляя его. Все еще можно получить доступ к свойствам невидимого ROI.

Точка положения является waypoint в виде логического вектора из той же длины как Position свойство. Элементы в Waypoints со значением true идентифицируйте точки в Position матрица, которые являются waypoints. По умолчанию, Freehand объект генерирует все точки, которые задают ROI, и только делает точки в местоположениях увеличенного искривления в waypoints. Можно повернуть все точки или некоторое подмножество точек, в waypoints при помощи кода, похожего на roi.Waypoints(1:4:end) = true;.

Waypoints появляются, когда проспект формирует на ребре ROI. Можно использовать waypoints, чтобы изменить ROI путем перетаскивания waypoint с мышью. Перемещение waypoints изменяет от руки чертившую область между waypoint, по которому вы кликнули и смежный waypoints.

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

addlistenerСоздайте прослушиватель события, связанный с источником события
beginDrawingFromPointНачните чертить ROI от заданной точки
bringToFrontПеренесите ROI на передний план порядка размещения Осей
createMaskСоздайте бинарный рисунок маски из ROI
drawНачните чертить ROI в интерактивном режиме
inROIЗапросите, расположены ли точки в ROI
reduceУменьшайте плотность точек в ROI
waitБлокируйте командную строку MATLAB, пока операция ROI не будет закончена

Примеры

свернуть все

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

I = imread('baby.jpg');
figure
imshow(I)

Figure contains an axes object. The axes object contains an object of type image.

Создайте ROI от руки на изображении, с помощью Position свойство задать вершины ROI. Для программно созданных ROI, если вы хотите ROI, чертивший в определенные оси, необходимо указать что оси как входной параметр. В противном случае, экземпляр images.roi.Freehand класс создан, но не отображен. В этом примере задайте текущую систему координат (gca) чертить ROI на изображении в этом оси.

h = images.roi.Freehand(gca,'Position',[100 150;200 250;300 350;150 450]);

Figure contains an axes object. The axes object contains 2 objects of type image, images.roi.freehand.

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

I = imread('cameraman.tif');

Отобразите изображение.

imshow(I);

Чертите ROI от руки на изображении. Поскольку этот пример задает размер и местоположение ROI, вы не должны вызывать draw метод, чтобы включить интерактивный рисунок.

roi = images.roi.Freehand(gca,'Position',[10 15;100 50;100 150;15 145]);

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

addlistener(roi,'MovingROI',@allevents);
addlistener(roi,'ROIMoved',@allevents);

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

function allevents(src,evt)
evname = evt.EventName;
    switch(evname)
        case{'MovingROI'}
            disp(['ROI moving Previous Position: ' mat2str(evt.PreviousPosition)]);
            disp(['ROI moving Current Position: ' mat2str(evt.CurrentPosition)]);
        case{'ROIMoved'}
            disp(['ROI moved Previous Position: ' mat2str(evt.PreviousPosition)]);
            disp(['ROI moved Current Position: ' mat2str(evt.CurrentPosition)]);
    end

end

Больше о

развернуть все

Советы

  • Чертить ROI в интерактивном режиме с помощью draw или drawfreehand функция, расположите курсор на изображение и перетаскивание, чтобы чертить форму ROI. Чтобы закончить чертить ROI, отпустите кнопку мыши.

  • ROI поддерживает следующую интерактивность, включая горячие клавиши.

    ПоведениеГорячая клавиша
    Отмена, чертящая ROI.Нажмите Esc. Функция возвращает допустимый объект ROI с пустым Position свойство.
    Закончите чертить (близко) ROI.

    Дважды кликните, который добавляет точку в позиции указателя и чертит линию, соединяя эту точку с первой чертившей точкой, закрывая ROI.

    Щелкните правой кнопкой, который чертит линию, соединяя последнюю точку с первой чертившей точкой.

    Расположите указатель над первой точкой и нажатием кнопки.

    Нажмите Enter, который чертит линию, соединяя последнюю точку с первой чертившей точкой.

    Измените размер (изменяют) ROI.

    Указатель положения по waypoint и затем перетаскивает. Никакая помощь (привязывающийся к ребрам) не доступна в этом режиме.

    Добавьте waypoint.

    Расположите указатель на ребро ROI, щелкните правой кнопкой и выберите Add Waypoint. Можно также расположить указатель на ребро ROI и дважды кликнуть.

    Удалите waypoint.

    Расположите указатель на waypoint, щелкните правой кнопкой и выберите Remove Waypoint.

    Переместите ROI.Расположите указатель над ROI. Указатель превращается в форму fleur. Перетащите, чтобы переместить ROI.
    Удалите ROI.Расположите указатель на ROI (не на вершине), щелкните правой кнопкой и выберите Delete Freehand из контекстного меню. Можно также удалить ROI программно с помощью delete функция.
  • Для получения информации об использовании ROI в приложении, созданном с App Designer, смотрите Используя ROI в Приложениях, Созданных с App Designer.

Вопросы совместимости

развернуть все

Не рекомендуемый запуск в R2020a

Введенный в R2018b