Как использовать матрицу с кружком в качестве маски? - PullRequest
0 голосов
/ 19 сентября 2019

Я новичок в MATLAB и использую его для медицинского анализа.У меня есть матрица, которая содержит круглую форму.Вот пример:

   0   0   0   0   0   0   0   0   0   0
   0   0   0   0   1   0   0   0   0   0
   0   0   0   1   0   1   1   0   0   0
   0   0   1   0   0   0   0   1   0   0
   0   1   0   0   0   0   0   1   0   0
   0   0   0   0   0   0   0   0   0   0
   0   0   1   1   0   1   1   0   0   0
   0   0   0   0   1   0   0   0   0   0
   0   0   0   0   0   0   0   0   0   0
   0   0   0   0   0   0   0   0   0   0

Эта матрица была вычислена по этой строке:

egslbr= edge(slbr,'log'); 

Где slbr - мое изображение.Объединяя egslbr с моим slbr, я получаю изображение ниже.

enter image description here

Я хочу отменить все цветные пиксели за пределами зеленоватого круга.Есть ли способ сделать это?

1 Ответ

1 голос
/ 20 сентября 2019

Вы должны быть в состоянии создать маску из своего круга (при условии, что это полный круг - в матрице выборки, которую вы дали, есть пробел, что делает это намного более трудным, но я собираюсь предположить, что это было ошибкой).Вот простой способ сделать это:

mask = ~cumsum(egslbr) | ~cumsum(egslbr,'reverse');
slbr(mask) = 0;

Это должно установить каждый пиксель за пределами круга ( не включая край круга, хотя) в ноль.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...