В этом примере показано, как отобразить детализированную область заблокированного изображения, выбранного в интерактивном режиме с помощью инструментов окупаемости инвестиций.
bigimageshow показы blockedImage объекты. Если blockedImage объект имеет несколько уровней, затем bigimageshow автоматически выбирает соответствующий уровень в зависимости от размера экрана и порта просмотра. bigimageshow всегда работает в одной «мировой координате» и отображает каждый уровень на основе его пространственной ссылочной информации. Это позволяет два дисплея одного и того же blockedImage объект для отображения детализации изображения на разных уровнях, но с одной и той же системой координат.
Создать blockedImage использование измененной версии изображения «tumor_091.tif» из набора данных CAMELYON16. Исходное изображение представляет собой тренировочное изображение лимфатического узла, содержащего опухолевую ткань. Исходное изображение имеет восемь уровней разрешения, а лучший уровень имеет разрешение 53760 на 61440. Измененное изображение имеет только три уровня грубого разрешения. Пространственная привязка модифицированного изображения была отрегулирована для обеспечения согласованного отношения сторон и регистрации признаков на каждом уровне.
bim = blockedImage('tumor_091R.tif');
Отображение всего большого изображения в левой части окна фигуры с помощью bigimageshow функция. Уровень разрешения отображаемого обзора автоматически изменяется в зависимости от размера окна и размера экрана.
hf = figure; haOView = subplot(1,2,1); haOView.Tag = 'OverView'; hl = bigimageshow(bim,'Parent',haOView);

Зафиксируйте уровень разрешения обзорного изображения как самый высокий уровень разрешения.
coarsestLevel = bim.NumLevels;
hl.ResolutionLevel = coarsestLevel;
title('Overview');

Отображение подробного вида большого изображения в правой части окна рисунка. Позволить bigimageshow для автоматического управления уровнем детализированного изображения.
haDetailView = subplot(1,2,2); haDetailView.Tag = 'DetailView'; hr = bigimageshow(bim,'Parent',haDetailView);

Увеличьте изображение подробного вида.
xlim([2800,3050])
ylim([500,750])
title('Detailed View');

На обзорном изображении нарисуйте прямоугольник окупаемости инвестиций. В этом примере задается начальный размер и положение прямоугольника программным путем путем установки Position свойство как четырехэлементный вектор вида [xmin, ymin, width, height]. После появления ROI в обзоре можно в интерактивном режиме скорректировать размер и положение ROI.
xrange = xlim; yrange = ylim; roiPosition = [xrange(1) yrange(1) xrange(2)-xrange(1) yrange(2)-yrange(1)]; hrOView = drawrectangle(haOView,'Position',roiPosition,'Color','r');

Сохраните маркеры перемещения прямоугольника, которые будут использоваться при определении взаимодействия между прямоугольником и выносным элементом.
hrOView.UserData.haDetailView = haDetailView; haDetailView.UserData.hrOView = hrOView;
Добавление прослушивателей на выносной элемент. Эти прослушиватели обнаруживают изменения пространственных границ выносного элемента. При изменении пространственных границ прослушиватели вызывают updateOverviewROI вспомогательная функция, которая обновляет границы ROI в соответствии с границами выносного элемента. Вспомогательная функция определяется в конце этого примера.
addlistener(haDetailView,'XLim','PostSet',@updateOverviewROI); addlistener(haDetailView,'YLim','PostSet',@updateOverviewROI);
Добавьте прослушиватель к окупаемости инвестиций прямоугольника. Эти прослушиватели обнаруживают изменения пространственной протяженности прямоугольника. При изменении ограничений прослушиватели вызывают updateOverViewROI вспомогательная функция, которая обновляет границы подробного изображения в соответствии с границами ROI. Вспомогательная функция определяется в конце этого примера.
addlistener(hrOView,'MovingROI',@updateDetailView);
Теперь можно изменять размер и положение ROI прямоугольника в интерактивном режиме для настройки экранного представления. Аналогично, при масштабировании и панорамировании выносного элемента размер и положение ROI обновляются.
Этот пример изменяет размер и положение ROI программным путем путем установки Position собственность.
hrOView.Position = [2230,1300,980,840]; evt.CurrentPosition = hrOView.Position; updateDetailView(hrOView,evt);

function updateOverviewROI(~,hEvt) % Update overview rectangle position whenever the right hand side % zooms/pans. ha = hEvt.AffectedObject; hr = hEvt.AffectedObject.UserData.hrOView; hr.Position = [ha.XLim(1),ha.YLim(1),diff(ha.XLim),diff(ha.YLim)]; end function updateDetailView(hSrc,hEvt) % Update the right side detail view anytime the overview rectangle is % moved. bigimageshow automatically picks the appropriate image level. ha = hSrc.UserData.haDetailView; ha.XLim = [hEvt.CurrentPosition(1), ... hEvt.CurrentPosition(1)+hEvt.CurrentPosition(3)]; ha.YLim = [hEvt.CurrentPosition(2), ... hEvt.CurrentPosition(2)+hEvt.CurrentPosition(4)]; end
