drawassisted

Создайте настраиваемый ROI от руки с помощью со стороны краев объекта

Описание

drawassisted функция создает AssistedFreehand объект, который задает форму и положение видимой области (ROI) от руки, которая следует за контурами объектов в изображении. Можно создать ROI в интерактивном режиме путем рисования ROI по изображению с помощью мыши, или программно при помощи аргументов name-value. Можно также задать начальный внешний вид и поведение ROI.

Assisted Freehand ROI tracing the edge of an object between selected waypoints.

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

roi = drawassisted создает AssistedFreehand возразите и включает интерактивный рисунок нарисованной от руки видимой области (ROI) на текущей системе координат. AssistedFreehand ROI использует ребра в основном изображении, чтобы "помочь" вам, когда вы чертите форму.

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

roi = drawassisted(hImage) создает ROI на изображении, заданном hImage.

roi = drawassisted(___,Name,Value) изменяет внешний вид и поведение ROI с помощью одной или нескольких пар "имя-значение". Незаданные пары "имя-значение" установлены в значения по умолчанию.

Примеры

свернуть все

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

im = imread('peppers.png');
imshow(im)

Чертите ROI от руки, которому помогают.

h = drawassisted;

Создайте маску ROI.

bw = createMask(h);

Создайте альфа-матрицу, которая задает прозрачность исходного изображения на уровне каждого пикселя.

alphamat = imguidedfilter(single(bw),im,'DegreeOfSmoothing',2);

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

target = imread('fabric.png');
imshow(target)

Измените размер исходного изображения и альфа-матрицы к тому же размеру как целевое изображение.

alphamat = imresize(alphamat,[size(target,1),size(target,2)]);
im = imresize(im,[size(target,1),size(target,2)]);

Альфа-смешение исходный ROI в целевое изображение.

fused = single(im).*alphamat + (1-alphamat).*single(target);
fused = uint8(fused);
imshow(fused)

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

I = imread('cameraman.tif');

Отобразите изображение. Используйте imshow возвращаемое значение, чтобы получить указатель на отображенное изображение. Создать AssistedFreehand ROI требует основного изображения.

img = imshow(I);

Чертите ROI от руки, которому помогают, на изображении с помощью со стороны основного изображения.

roi = drawassisted(img,'Color','r');

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

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

allevents функция обратного вызова отображает предыдущее положение и текущее положение 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 в виде Image объект.

Аргументы name-value

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'Color','y' создает желтый AssistedFreehand объект

Закройте ROI от руки, задал разделенную запятой пару, состоящую из 'Closed' и логическое значение true или false. Если true (значение по умолчанию), drawassisted закрывает ROI путем соединения последнего waypoint, чертившего к первому чертившему waypoint.

Цвет 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 стоит в виде номера в области значений [0, 1]. Когда значением является 1, поверхность ROI абсолютно непрозрачна. Когда значением является 0, поверхность ROI абсолютно прозрачна.

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

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

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

Отобразите, на котором можно чертить ROI в виде Image объект.

Интерактивность 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 граничит в виде положительного числа в точках. Значением по умолчанию является три раза число точек на экранный пиксель, такой, что граница три пикселя шириной.

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

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

Положение ROI в виде n-by-2 числовая матрица, где n является количеством вершин или точек, задающих ROI. Каждая строка представляет [x y] координаты вершины или точки.

Состояние выбора ROI в виде логического значения true или 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 после интерактивного размещения в виде неотрицательного номера. drawassisted функционируйте использует стандартное отклонение Гауссова ядра сглаживания, чтобы отфильтровать x и координаты y ROI. Этот аргумент задает размер фильтра с помощью уравнения: 2*ceil(2*Smoothing) + 1. Вы видите эффект сглаживания только после завершения рисунка.

Цвет 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. Например, можно задать скаляр, вектор, матрицу, массив ячеек, строку, символьный массив, таблицу или структуру. drawassisted объект не использует эти данные.

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

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

Точка положения является waypoint в виде n-by-1 логический вектор, где n является числом точек, задающим ROI. Длина Waypoints должен совпадать с количеством строк Position аргумент значения имени. Элементы в Waypoints со значением true идентифицируйте точки в Position матрица, которые являются waypoints.

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

Выходные аргументы

свернуть все

ROI от руки, которому помогают, возвращенный как AssistedFreehand объект.

Советы

  • Эта таблица описывает, как выполнить общие задачи с AssistedFreehand 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 функция.
  • drawassisted функция создает AssistedFreehand объект. После того, как вы создадите объект, можно изменить форму, положение, внешний вид и поведение ROI при помощи этих объектных возможностей.

    ВозможностьПоддержка
    Свойства объектов

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

    Например, чтобы изменить цвет roi к желтому, устанавливает его Color свойство:

    roi.Color = 'yellow'

    Функции объектаОбъекты ROI имеют объектные функции, которые работают с ROI. Например, если вы хотите приостановить командную строку MATLAB после создания ROI, используйте wait функция.
    Уведомления о событии

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

    Для примера использования прослушивателей события с AssistedFreehand возразите, смотрите Настроенный Прослушиватель для Событий AssistedFreehand.

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

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

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

Введенный в R2018b