Рабочий процесс интерактивного инструмента

Использование интерактивных инструментов обычно включает следующие шаги.

Отобразите целевое изображение в окне фигуры

Отображение обрабатываемого изображения (называемого target image) в MATLAB® окно рисунка. imshow функция рекомендуется, потому что она оптимизирует свойства рисунка, осей и объектов изображения для отображения изображений, но можно также использовать image или imagesc функций.

Некоторые инструменты добавляют себя в окно рисунка, содержащее изображение. Предотвратите отображение инструментов над изображением путем включения границы. Если вы используете imshow затем убедитесь, что Image Processing Toolbox™ ImshowBorder для выбора задано значение 'loose' (это значение по умолчанию).

Создайте инструмент

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

Ассоциируйте инструмент с целевым изображением

При создании инструмента можно задать целевое изображение или позволить инструменту выбрать подходящее целевое изображение.

  • Чтобы задать целевое изображение, предоставьте указатель на целевое изображение как входной параметр функции создания инструмента. Указателем может быть определенный объект изображения или рисунок, оси или объект uipanel, который содержит изображение.

  • Чтобы позволить инструменту выбрать целевое изображение, вызовите функцию создания инструмента без входных параметров. По умолчанию инструмент использует изображение на текущей фигуре в качестве целевого изображения. Если текущая фигура содержит несколько изображений, инструмент связывается с первым изображением в дочерних элементах объекта рисунка (последнее созданное изображение). Обратите внимание, что не все инструменты предлагают синтаксис без аргументов.

Некоторые инструменты могут работать с несколькими изображениями на рисунке. Это impixelinfo, impixelinfoval, и imdisplayrange.

Укажите родительский элемент инструмента

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

Установка родительского элемента опциональна. Когда вы не задаете родительский элемент, инструменты используют поведение по умолчанию.

  • Некоторые меньшие инструменты, такие как инструмент Display Range и инструмент Pixel Information, используют родительский элемент целевого изображения в качестве своего родительского элемента, вставляя себя в то же окно рисунка, что и целевое изображение.

  • Другие инструменты, такие как инструмент «Настроить контрастность» и инструмент «Выбрать Палитру», открываются в отдельных рисунках самостоятельно.

  • Два инструмента, инструмент «Обзор» и инструмент «Пиксельная область», имеют различные функции создания для определения родительского рисунка. Их основные функции создания, imoverview и impixelregion, откройте инструменты в отдельном окне рисунка. Чтобы задать другой родительский элемент, вы должны использовать imoverviewpanel и impixelregionpanel функций. Для получения примера смотрите Создать пиксель Области Инструмента.

    Примечание

    Инструмент «Обзор» и инструмент «Пиксельная область» обеспечивают дополнительные возможности при создании в собственных окнах рисунка. Например, оба инструмента включают кнопки масштаба, которые не являются частью их версий uipanel.

Позиционные инструменты

Каждый инструмент имеет поведение позиционирования по умолчанию. Для примера, impixelinfo функция создает инструмент как объект uipanel, который является полной шириной окна рисунка, расположенной в нижнем левом углу целевого изображения окна рисунка.

Поскольку инструменты созданы из графических объектов, таких как объекты uipanel, можно изменить их положение по умолчанию или другие характеристики, задав свойства объектов. Чтобы задать положение инструмента или другого графического объекта, установите Position свойство как четырехэлементный вектор положения [left bottom width height]. Значения left и bottom задайте расстояние от нижнего левого угла родительского объекта контейнера, такой как рисунок. Значения width и height задайте размерности объекта.

Когда вы задаете вектор положения, можно задать модули измерения значений в векторе, установив значение Units свойство объекта. Чтобы разрешить лучшее изменение размера, используйте нормированные модули, потому что они задают относительное положение инструмента, а не точное расположение в пикселях.

Например, когда вы впервые создали встроенный инструмент Pixel Region на рисунке, он, по-видимому, перехватывает всю фигуру, потому что по умолчанию вектор положения установлен в [0 0 1 1], в нормированных модулях. Этот вектор положения сообщает инструменту выровняться по нижнему левому углу его родительского элемента и заполнить весь объект. Чтобы разместить изображение и инструмент Pixel Information и инструменты Display Range, измените положение инструмента Pixel Region в нижней половине окна рисунка, оставив место внизу для инструментов Pixel Information и Display Range. Вот вектор положения для инструмента Pixel Region.

set(hpixreg,'Units','normalized','Position',[0 .08 1 .4])

Чтобы разместить инструмент Pixel Region, измените положение целевого изображения так, чтобы оно помещалось в верхней половине окна рисунка, используя следующий вектор положения. Чтобы изменить положение изображения, необходимо задать Position свойство содержащего его объекта осей; объекты изображения не имеют Position свойство.

set(hax,'Units','normalized','Position',[0 0.5 1 0.5])

Для получения примера смотрите Создать пиксель Области Инструмента.

Добавление вспомогательных средств навигации

Тулбокс включает инструменты, которые можно использовать для добавления средств навигации к приложению GUI.

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

После создания панели прокрутки можно добавить другие инструменты навигации: инструмент «Обзор» и инструмент «Увеличение». Инструмент «Обзор» отображает вид всего изображения, масштабируемого для соответствия, с прямоугольником, наложенным на него, который указывает часть изображения, которая в данный момент видна на панели прокрутки. В Поле увеличения отображается текущее увеличение изображения и может использоваться, чтобы изменить увеличение.

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

Примечание

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

Настройка интерактивности инструментов

Когда вы создаете инструмент и связываете его с целевым изображением, инструмент автоматически устанавливает необходимые соединения между целевым изображением и инструментом.

Некоторые инструменты имеют одностороннее соединение с целевым изображением. Эти инструменты обновляются при взаимодействии с целевым изображением, но вы не можете использовать инструмент для изменения целевого изображения. Например, инструмент Pixel Information получает информацию о местоположении и значении пикселя, находящегося в данный момент под указателем.

Другие инструменты имеют двухстороннее соединение с целевым изображением. Эти инструменты обновляются при взаимодействии с целевым изображением, и можно обновить целевое изображение путем взаимодействия с инструментами. Для примера инструмент «Обзор» настраивает двухстороннее соединение с целевым изображением. Для этого инструмента, если вы изменяете видимый фрагмент целевого изображения путем прокрутки, панорамирования или путем изменения увеличения, инструмент Overview изменяет размер и расположение прямоугольника детали так, чтобы он совпадал с фрагментом изображения, которая теперь видна. И наоборот, если вы перемещаете окно детализации в инструменте Overview, то инструмент обновляет видимый фрагмент целевого изображения на панели прокрутки.

Инструменты выполняют эту интерактивность с помощью свойств коллбэка графических объектов. Например, объект рисунка поддерживает WindowButtonMotionFcn коллбэк, который выполняется при нажатии кнопки мыши. Можно настроить подключение инструмента с помощью интерфейса прикладного программиста (API), связанного с инструментом, чтобы настроить коллбэки для получения уведомлений о событиях. Для получения дополнительной информации смотрите Коллбэки - Запрограммированный ответ на действие пользователя и Обзор событий и прослушивателей. Для получения примера смотрите Сборка Изображения Сравнение Инструмента.

Например, блок «Увеличение» поддерживает одну функцию API: setMagnification. Можно использовать эту функцию API, чтобы задать значение увеличения, отображаемое в поле Увеличение. Поле Увеличение автоматически уведомляет панель прокрутки об изменении увеличения изображения на основе значения. Панель прокрутки также поддерживает обширный набор функций API. Чтобы получить информацию об этих API, смотрите страницу с описанием для каждого инструмента.

Похожие примеры

Подробнее о