В этом примере показано, как отобразить подробную область заблокированного изображения, выбранную в интерактивном режиме с помощью инструментов ROI.
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]. После появления информация только для чтения в обзоре можно в интерактивном режиме настроить размер и положение информация только для чтения.
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
вспомогательная функция, которая обновляет границы информация только для чтения так, чтобы они совпадали с границами подробного представления. Функция helper определяется в конце этого примера.
addlistener(haDetailView,'XLim','PostSet',@updateOverviewROI); addlistener(haDetailView,'YLim','PostSet',@updateOverviewROI);
Добавьте прослушиватель в прямоугольник информация только для чтения. Эти прослушиватели обнаруживают изменения пространственной протяженности прямоугольника. Когда пределы изменяются, прослушиватели вызывают updateOverViewROI
helper, которая обновляет границы подробного изображения так, чтобы оно совпадало с границами информация только для чтения. Функция helper определяется в конце этого примера.
addlistener(hrOView,'MovingROI',@updateDetailView);
Теперь можно изменять размер и положение прямоугольника информация только для чтения в интерактивном режиме, чтобы настроить вид отображения. Точно так же, когда вы масштабируете и панорамируете подробный вид, размер и положение информация только для чтения обновляется.
Этот пример программно изменяет размер и положение информация только для чтения путем установки 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