drawassisted

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

Описание

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

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

Примечание

drawassisted функция удобства для создания AssistedFreehand Объект ROI. Если вы создаете объект ROI непосредственно, вызывая AssistedFreehand, необходимо вызвать draw возразите функции, чтобы включить интерактивный рисунок ROI. В отличие от этого drawassisted функция создает объект ROI и вызывает draw возразите функции для вас. Какой бы ни способ, которым вы создаете 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, заданный как объект изображения.

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

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

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

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

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

Пример: 'green'

Пример: 'g'

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

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 не может получить нажатия кнопки.

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

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

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

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

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

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

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

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

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

'off'Метка не отображается.

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

Родительский элемент 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. Точно так же, если вы Ctrl-click ROI, отменяет выбор его и устанавливает это значение к false.

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

Пример: 'green'

Пример: 'g'

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

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

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

Пример: 'green'

Пример: 'g'

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

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

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

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

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

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

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

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

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

свернуть все

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. Чтобы получить эти уведомления, используйте addlistener возразите функции, чтобы настроить listeners для определенных событий. В прослушивателе задайте событие, такое как 'ROIMoved', и функция обратного вызова, которая выполняется, когда событие имеет место. Когда ROI уведомляет ваше приложение через прослушиватель, это возвращает данные, характерные для события. Например, с 'ROIMoved' событие, объект ROI возвращает свое предыдущее положение и свое текущее положение.

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

Введенный в R2018b

Для просмотра документации необходимо авторизоваться на сайте