Моя путаница с областью интересов

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

Пример, приведенный для создания бинарной маски для настройки ROI:

img = imread('pout.tif');
h_im = imshow(img);
e = imellipse(gca,[55 10 120 120]);
BW = createMask(e,h_im);

Я понимаю что эллипс imellipse используется для создания объекта ROI. Итак, следуя своей странице, я читал об этом больше, но нигде на этой странице это не объясняет, что gca является? все, что он говорит, - то, что это hparent и определяет родителя HG эллипса. Я не понимаю, это может кто-нибудь, пожалуйста, уточните. Могу ли я использовать что-то еще вместо gca? а что такое gca?

Также в этой строке imshow функция назначена h_im а затем в дальнейшем используется. Когда я сделал это с моей установкой с образцом изображения, я получил это значение h_im = 1.740099 так h_im это двойное значение.

Это далее используется здесь BW = createMask(e,h_im); Я понимаю, что это параметры, означающие:

BW = createMask (h, h_im) возвращает маску того же размера, что и изображение h_im с 1 с внутри объекта ROI h и с 0 снаружи. Этот синтаксис необходим, когда оси, содержащие область интереса, содержат более одного изображения.

так это 1.740099 размер изображения? В каких единицах это измеряется?

Также, когда я написал последнюю строку в моем Matlab, я получил следующую ошибку:

>> BW = createMask(h,h_im);
??? Invalid or deleted object.

Error in ==> imroi>imroi.parseInputsForCreateMask at 78
            h_ax = ancestor(obj.h_group,'axes');

Error in ==> imroi>imroi.createMask at 264
            [obj,h_im] = parseInputsForCreateMask(varargin{:});

Почему я получаю эту ошибку?

Спасибо

1 ответ

Решение

gca - это функция, которая возвращает дескриптор текущей оси. Аналогично, h_im - это дескриптор объекта изображения, созданного imshow. Подробнее о работе с ручками из Mathworks вы можете прочитать здесь.

Число, которое вы видите при проверке дескрипторов, не связано со свойствами (размером и т. Д.) Изображения - значение может иметь отношение к типу объекта, но в основном это идентификаторы, используемые Matlab для отслеживания открытых графических объектов. Поэтому, когда вы вызываете imellipse, вы передаете дескриптор к осям, где появится эллипс, и возвращаете другой дескриптор в e,

e = imellipse(gca,[55 10 120 120]);

В качестве альтернативы вместо gca Вы могли бы использовать другую ручку, указывающую на другие оси. Например, если у вас было:

a1 = subplot(1,2,1), h1 = imshow(img1)
a2 = subplot(1,2,2), h2 = imshow(img2)

Тогда вы можете использовать либо a1 или же a2 вместо gca, в зависимости от того, какое изображение вы хотите создать.

Если вы закроете фигуру, содержащую изображение и ваш эллипс, эти маркеры будут удалены - так вы получили ошибку "Неверный или удаленный объект". Как только вы использовали createMask и вернул маску, которую хочешь, фигуру можно закрыть.

Другие вопросы по тегам