Круговая маска в Matlab

Я создаю шесть кругов для маскировки в Matlab. Каждый из внутренних и внешних радиусов маски различен. Эти маски используются для обнаружения паразитов на предметном стекле. У меня есть этот код (одна из масок), но я хочу сделать белую область между ними, чтобы обвести ее на общем изображении. Как я могу это сделать? или есть другой способ замаскировать эту общую картинку? MidpointCircle.m

resize_factor = 1;
inner_rad = 15*4/resize_factor;
outer_rad = 20*4/resize_factor;

ec_2 = floor(0.5*(outer_rad+inner_rad)*2*pi);

center = outer_rad+2; 
mask1_size = center*2;

circleimg = zeros(mask1_size,mask1_size);
circleimg = MidpointCircle(circleimg, outer_rad, center, center, 1);
circleimg = MidpointCircle(circleimg, inner_rad, center, center, 1);
mask1 = circleimg;

введите здесь описание изображения


person sunshine    schedule 02.06.2015    source источник


Ответы (1)


Хорошо, теперь я понял.

Ваша функция MidpointCircle создает только границы круга, а не весь круг. Следующий код вычисляет расстояние до центра и выбирает все значения, которые меньше внешнего и больше внутреннего радиуса:

clear all;

resize_factor = 1;
inner_rad = 15*4/resize_factor;
outer_rad = 20*4/resize_factor;

ec_2 = floor(0.5*(outer_rad+inner_rad)*2*pi);

center = outer_rad+2; 
mask1_size = center*2;

[x,y] = meshgrid(1:mask1_size,1:mask1_size);

distance = (x-center).^2+(y-center).^2;
mask = distance<outer_rad^2 & distance>inner_rad^2;

figure(1);
imshow(mask)

Результат:

введите здесь описание изображения

person Steffen    schedule 02.06.2015