2015-06-02 2 views
-1

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

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; 

enter image description here

ответ

0

Хорошо, теперь я понимаю.

Ваша функция 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) 

Результат:

enter image description here

+0

Спасибо. задача решена. – sunshine

Смежные вопросы