exponenta event banner

drawassisted

Создание окупаемости инвестиций для изображения с помощью краев изображения

Описание

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

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

Примечание

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

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

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

Примеры

свернуть все

Чтение изображения в рабочую область и его отображение.

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

Нарисуйте ассистированный freehand ROI.

h = drawassisted;

Создайте маску окупаемости инвестиций.

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)]);

Альфа смешивает исходную окупаемость инвестиций в целевое изображение.

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

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

I = imread('cameraman.tif');

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

img = imshow(I);

Нарисуйте вспомогательную окупаемость инвестиций на изображении с помощью базового изображения.

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

Настройка прослушивателей для событий перемещения окупаемости инвестиций. При его перемещении 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, указанный как объект изображения.

Аргументы пары «имя-значение»

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

Пример: roi = drawassisted('LineWidth',5);

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

Цвет ROI, указанный как разделенная запятыми пара, состоящая из 'Color' и MATLAB ®ColorSpec (Color Specification) значение.

Пример: 'green'

Пример: 'g'

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

Контекстное меню, указанное как разделенная запятыми пара, состоящая из 'ContextMenu' и ContextMenu объект. Укажите эту пару имя-значение для отображения пользовательского контекстного меню при щелчке правой кнопкой мыши на окупаемости инвестиций. Чтобы создать пользовательское контекстное меню, создайте ContextMenu объект, с помощью uicontextmenu , а затем настройте свойства контекстного меню.

ROI может быть интерактивно удален через контекстное меню, указанное как пара, разделенная запятыми, состоящая из 'Deletable' и логическое значение true или false. Когда значение равно true (по умолчанию) можно удалить ROI с помощью контекстного меню. Чтобы отключить этот пункт контекстного меню, установите 'Deletable' кому false. Если установлено значение false, вы по-прежнему можете удалить ROI, позвонив delete , указывая дескриптор ROI в качестве входного значения.

Прозрачность грани ROI, определяемая как разделенная запятыми пара, состоящая из 'FaceAlpha' и скалярное значение в диапазоне [0,1]. Когда значение равно 1, лицо ROI полностью непрозрачное. Когда значение равно 0, лицо ROI полностью прозрачное.

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

Видимость дескриптора окупаемости инвестиций в Children свойство родительского элемента, указанное как разделенная запятыми пара, состоящая из 'HandleVisibility' и одно из значений в этой таблице.

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

Изображение, на котором нужно нарисовать ROI, указанное как пара, разделенная запятыми, состоящая из 'Image' и дескриптор для Image объект.

Интерактивность ROI, определяемая как разделенная запятыми пара, состоящая из 'InteractionsAllowed' и одно из значений в этой таблице.

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

Метка ROI, указанная как разделенная запятыми пара, состоящая из 'Label' и символьный вектор или строку. По умолчанию для этого свойства установлен пустой массив ('') и ROI не имеет метки.

Прозрачность текстового фона, определяемая как разделенная запятыми пара, состоящая из 'LabelAlpha' и скалярное значение в диапазоне [0 1]. Если установлено значение 1, текстовой фон полностью непрозрачен. Если установлено значение 0, текстовой фон полностью прозрачен.

Цвет текста метки, заданный как разделенная запятыми пара, состоящая из 'LabelTextColor' и MATLAB ColorSpec (Color Specification) значение. Значения интенсивности должны находиться в диапазоне [0,1].

Видимость метки ROI, указанной как разделенная запятыми пара, состоящая из 'LabelVisible' и одно из этих значений.

СтоимостьОписание
'on'Метка отображается, когда отображается ROI, и Label свойство nonempty (по умолчанию).
'hover'

Метка отображается только при наведении курсора мыши на ROI.

'off'Метка не видна.

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

Размер маркера, указанный как разделенная запятыми пара, состоящая из 'MarkerSize' и положительный числовой скаляр в точках.

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

Положение ROI, определяемое как разделенная запятыми пара, состоящая из 'Position' и массив n-by-2 формы [x1 y1; …; xn yn] где n - количество точек. Каждая строка определяет положение точки, определяющей ROI. AssistedFreehand объект обновляет значение этого свойства при перемещении и изменении формы ROI. Для работы с меньшим количеством точек используйте reduce объектная функция.

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

Цвет ROI при выборе, указанный как разделенная запятыми пара, состоящая из 'SelectedColor' и MATLAB ColorSpec (Color Specification). Если 'SelectedColor' имеет значение 'none', то значение Color определяет цвет ROI для всех состояний, выбранных или нет.

Пример: 'green'

Пример: 'g'

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

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

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

Пример: 'green'

Пример: 'g'

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

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

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

Видимость ROI, указанная как разделенная запятыми пара, состоящая из 'Visible' и 'on' или 'off'или как числовое или логическое 1 (true) или 0 (ложь). Значение 'on' эквивалентно true, и 'off' эквивалентно false. Таким образом, можно использовать значение этого свойства в качестве логического значения. Значение сохраняется как логическое значение типа вкл/выкл matlab.lang.OnOffSwitchState.

СтоимостьОписание
'on'Просмотрите ROI (по умолчанию).
'off'Скрыть ROI, не удаляя его. Вы по-прежнему можете получить доступ к свойствам невидимого ROI.

Управляющие точки для изменения формы ROI, указанные как разделенная запятыми пара, состоящая из 'Waypoints' и логический вектор n-by-1, длина которого равна Position. Элементы в Waypoints со значением true указать, что соответствующая точка в Position является ППМ. ППМ отображаются как круглые фигуры на кромке окупаемости инвестиций. Чтобы изменить форму окупаемости инвестиций, щелкните ППМ и перетащите его. При перетаскивании ППМ изменяется контур произвольной области между ППМ и непосредственно соседними ППМ.

Если вы рисуете окупаемость инвестиций в интерактивном режиме, AssistedFreehand генерирует все точки в Position но делает точки только в местах увеличенной кривизны в ППМ. Можно превратить все точки или некоторые подмножества точек в ППМ с помощью кода, подобного roi.Waypoints(1:4:end) = true;.

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

свернуть все

Ассистированный Freehand ROI, вернулся в качестве AssistedFreehand объект.

Совет

  • В этой таблице описывается выполнение общих задач с помощью AssistedFreehand ОКУПАЕМОСТЬ ИНВЕСТИЦИЙ.

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

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

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

    Наведите указатель на первую точку и щелкните мышью.

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

    Изменение размера (изменение формы) ROI.

    Наведите указатель на ППМ, а затем щелкните и перетащите. В этом режиме отсутствует помощь (привязка к кромкам).

    Добавьте ППМ.

    Поместите указатель на кромку ROI, щелкните правой кнопкой мыши и выберите «Добавить ППМ». Можно также разместить указатель на кромке ROI и дважды щелкнуть мышью.

    Удалите ППМ.

    Поместите указатель на ППМ, щелкните правой кнопкой мыши и выберите «Удалить ППМ».

    Переместите окупаемость инвестиций.Наведите указатель на ROI. Указатель изменяется на форму флера. Щелкните и перетащите, чтобы переместить ROI.
    Удаление ROI.Поместите указатель на окупаемость инвестиций (не на вершину), щелкните правой кнопкой мыши и выберите в контекстном меню команду «Удалить произвольный». Можно также удалить ROI программным путем с помощью delete объектный метод.
  • drawassisted функция возвращает AssistedFreehand Объект окупаемости инвестиций. После создания используйте эти возможности объекта для настройки внешнего вида и поведения окупаемости инвестиций.

    • Свойства объекта - объекты ROI поддерживают свойства, изменяющие их внешний вид или поведение. Например, чтобы изменить цвет roi желтом, установите его Color собственность, roi.Color = 'yellow'.

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

    • Уведомления о событиях - объекты ROI могут уведомлять код, когда определенные события, такие как перемещение или щелчок, происходят с ROI. Для получения этих уведомлений используйте addlistener объектная функция для настройки прослушивателей для определенных событий. В прослушивателе укажите событие, например 'ROIMoved'и функцию обратного вызова, которая выполняется при возникновении события. Когда ROI уведомляет приложение через прослушиватель, он возвращает данные, относящиеся к событию. Например, с помощью 'ROIMoved' объект ROI возвращает свою предыдущую позицию и текущую позицию.

    Пример использования прослушивателей событий с AssistedFreehand см. раздел Настройка прослушивателя для событий Freehand. Дополнительные сведения об этих возможностях см. в разделе AssistedFreehand объектная документация.

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

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

Не рекомендуется начинать с R2020a

Представлен в R2018b