Интерактивный модульный рабочий процесс инструмента

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

ШагОписаниеПримечания
1Отобразите изображение, которое будет обработано (названный изображением target) в окне рисунка.Используйте функцию imshow, чтобы отобразить целевое изображение, видеть Отображение Целевое изображение в Окне рисунка.
2Создайте модульный инструмент, сопоставив его с целевым изображением.

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

Большинство инструментов сопоставляет себя с изображением в текущей системе координат, по умолчанию, но можно задать определенный объект изображения, или фигуру, оси или объект uipanel, который содержит изображение. Смотрите Интерактивный Модульный Рабочий процесс Инструмента.

В зависимости от того, как вы разработали свой графический интерфейс пользователя, вы можете также хотеть задать родительский объект самого модульного инструмента. Это является дополнительным; по умолчанию инструменты или используют тот же родительский элемент в качестве целевого изображения или открытый в отдельном окне рисунка. Смотрите Задают Родительский элемент Модульного Инструмента для получения дополнительной информации.

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

3Настройте интерактивность между инструментом и целевым изображением. (Необязательно)

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

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

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

Этот пример использует imshow, чтобы отобразить изображение в окне рисунка.

himage = imshow('pout.tif');

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

Сопоставьте модульные инструменты с целевым изображением

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

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

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

imshow('pout.tif');
impixelinfo

Следующие данные показывают целевое изображение в фигуре с инструментом Pixel Information в левом нижнем углу окна. Инструмент Pixel Information автоматически настраивает связь с целевым изображением: когда вы перемещаете указатель через изображение, инструмент отображает x-и y-координаты и значение пикселя под указателем.

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

Вы задаете целевое изображение модульного инструмента, когда вы создаете его путем передачи изображения в качестве аргумента к модульной функции создания инструмента. Можно также задать фигуру, оси или объект uipanel, который содержит целевое изображение.

Продолжая пример в предыдущем разделе, вы можете хотеть добавить инструмент Display Range в окно рисунка, которое уже содержит инструмент Pixel Information. Для этого вызовите функцию imdisplayrange, задав целевое изображение. Вы, возможно, также задали фигуру, оси или объект uipanel, содержащий целевое изображение.

imageobj = imshow('pout.tif');
pixelinfopanelobj = impixelinfo(imageobj);
drangepanelobj = imdisplayrange(imageobj);

Обратите внимание на то, что функции создания инструмента возвращают объекты uipanel, созданные функциями imdisplayrange и impixelinfo. Можно использовать эти объекты, если вы хотите изменить расположение инструментов. Смотрите Положение Модульные Инструменты в графический интерфейсе пользователя для получения дополнительной информации.

Следующие данные показывают целевое изображение в фигуре с инструментом Pixel Information в левом нижнем углу и инструментом Display Range в правом нижнем углу окна. Инструмент Display Range автоматически настраивает связь с целевым изображением: когда вы перемещаете указатель через изображение (или изображения) в фигуре, инструмент Display Range показывает область значений отображения изображения.

Получите указатель на целевое изображение

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

Получите указатель, когда вы первоначально отображаете изображение в окне рисунка с помощью синтаксиса imshow, который возвращает указатель.

hfig = figure;
himage = imshow('moon.tif')

himage = 
  Image with properties:

           CData: [537x358 uint8]
    CDataMapping: 'scaled'

  Show all properties

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

himage2 = imhandles(hfig)
himage2 = 
  Image with properties:

           CData: [537x358 uint8]
    CDataMapping: 'scaled'

  Show all properties

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

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

Определение родительского элемента является дополнительным; модульные инструменты у всех есть поведение по умолчанию. Некоторые инструменты меньшего размера, такие как инструмент Pixel Information, используют родительский элемент целевого изображения как их родительский элемент, вводя себя в то же окно рисунка как целевое изображение. Другие модульные инструменты, такие как инструмент Pixel Region или инструмент Overview, открываются в отдельных собственных фигурах.

Инструменты с отдельными функциями создания

Два из инструментов, инструмента Pixel Region и инструмента Overview, имеют отдельную функцию создания, чтобы предусмотреть эту возможность. Их первичные функции создания, imoverview и impixelregion, открывают инструменты в отдельном окне рисунка. Чтобы задать различный родительский элемент, необходимо использовать функции impixelregionpanel и imoverviewpanel.

Примечание

Инструмент Overview и инструмент Pixel Region предусматривают дополнительные возможности, когда создано в их собственных окнах рисунка. Например, оба инструмента включают кнопки изменения масштаба, которые не являются частью их uipanel версий.

Встройте пиксельный инструмент области в существующую фигуру

Этот пример показывает поведение по умолчанию, когда вы создаете инструмент Pixel Region с помощью функции impixelregion. Инструмент открывается в отдельном окне рисунка, как показано в следующей фигуре.

himage = imshow('pout.tif')
hpixelinfopanel = impixelinfo(himage);
hdrangepanel = imdisplayrange(himage);
hpixreg = impixelregion(himage);

Чтобы встроить инструмент Pixel Region в то же окно как целевое изображение, необходимо задать родительскую фигуру целевого изображения как родительский элемент инструмента Pixel Region, когда вы создаете его.

Следующий пример создает фигуру и объект осей и затем располагает объекты в фигуру гарантировать их видимость. Смотрите Положение Модульные Инструменты в графический интерфейсе пользователя для получения дополнительной информации. Пример затем создает модульные инструменты, задавая фигуру, содержащую целевое изображение как родительский элемент инструмента Pixel Region. Обратите внимание на то, что пример использует функцию impixelregionpanel, чтобы создать инструмент.

fig = figure;
ax = axes('units','normalized','position',[0 .5 1 .5]);
img = imshow('pout.tif')
pixelinfopanelobj = impixelinfo(img);
drangepanelobj = imdisplayrange(img);
pixregionobj = impixelregionpanel(fig,img);
set(pixregionobj, 'Units','normalized','Position',[0 .08 1 .4]);

Следующие данные показывают Пиксельную область, встроенную в ту же фигуру как целевое изображение.

Положение модульные инструменты в графический интерфейсе пользователя

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

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

Например, в Задают Родительский элемент Модульного Инструмента, когда инструмент Pixel Region был встроен в то же окно рисунка как целевое изображение, пример должен был изменить местоположение и объекта изображения и инструмента Pixel Region 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])

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

Примечание

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

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

  • Прокрутите панель

  • Инструмент Overview

  • Поле Magnification

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

Если вы создаете Панель Прокрутки, можно опционально добавить другие модульные инструменты навигации: инструмент Overview и инструмент Magnification. Инструмент Overview отображает представление целого изображения, которому масштабируют для соответствия, с прямоугольником, наложенным на него, который указывает на часть изображения, которое в настоящее время видимо в панели прокрутки. Выводы информации на экран Увеличения текущее увеличение изображения и могут использоваться, чтобы изменить увеличение.

Следующие разделы предоставляют больше подробную информацию.

Понимание панелей прокрутки

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

hfig = figure;
himage = imshow('concordaerial.png');

Следующие данные показывают эту иерархию объектов.

Иерархия объектов изображения, отображенного в фигуре

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

hfig = figure('Toolbar','none',...
              'Menubar', 'none');
himage = imshow('concordaerial.png');
hpanel = imscrollpanel(hfig,himage);

Следующие данные показывают иерархию объектов после вызова imscrollpanel. Отметьте, как imscrollpanel вставляет новый объект (заштрихованный в сером) в иерархию между объектом фигуры и объектом осей, содержащим изображение. (Чтобы изменить данные изображения, отображенные в полосе прокрутки, используйте функцию replaceImage в API imscrollpanel.)

Иерархия объектов изображения, отображенного в панели прокрутки

Следующие данные показывают, как эти графические объекты появляются в изображении с возможностью прокрутки, когда оно отображено на экране.

Компоненты панели прокрутки