2013-04-14 1 views
-2

Может ли кто-нибудь мне помочь? Мне нужно сделать изображение в MATLAB, заполненном черным, кроме определенного круга, которое у меня есть из предыдущей функции, возможно ли это? Спасибо ~Есть ли способ заполнить изображение черным цветом, кроме определенного круга в MATLAB?

+0

у вас есть координаты окружности? –

+0

yes i have, x, y и radius :) – 91em

+0

проверить свойство '(xh)^2 + (yk)^2 <= r^2', если это выполняется, то пиксель лежит внутри круга, иначе его вне круг, где (h, k) - центр. –

ответ

1

Если вы просто хотите, чтобы сделать изображение (не использовать матрицу для вычисления ничего после этого), вы можете использовать функции высокого уровня, как rectangle или viscircles рисовать круги на изображении. Введите 'doc rectangle' в командном окне для объяснения параметров. Например:

N=50; 
x=23; y=11; 
rad = 13; 

img = zeros(N); 

figure(1) 
image(im); colormap gray; axis xy; axis image 
hold on; rectangle('Position', [x,y,rad,rad], 'Curvature', [1,1], 'facecolor', 'w', 'edgecolor', 'w'); hold off; 
+0

Омг тоже работает! Большое вам спасибо <3333. Мы использовали функцию «прямоугольник» в предыдущем методе рисования кругов! Спасибо спасибо ^^ – 91em

2

Вот как это можно сделать:

%Center of the circle is (x,y) and radius is r. 
x=250; 
y=250; 
r=50; 


%this is your image 
a=true(500,500); 
for i=1:500 
    for j=1:500 
     if ((j-x)^2+(i-y)^2)<=r^2 %condition that (x,y) lies on the circle. 
     a(i,j)=0; 
     end 
    end 
end 
imshow(a) 

%%%%%%%%%%%%%%%%%% Alternate method %%%%%%%%%%%%%%%%%%%%%% 
%vectorized way 

x=250; 
y=250; 
r=50; 


%this is your image 
a=true(500,500); 
[x_meshgrid,y_meshgrid]=meshgrid(1:500,1:500); 
circle_test=(x_meshgrid-x).^2+(y_meshgrid-y).^2-r.^2; 
b=circle_test<=0; 
%desiredImage=yourImage.*b; 
desiredImage=a.*b; 
+0

ЭТО РАБОТАЕТ !! РАБОТАЕТ !! OMG THANKYOU ТАК МНОГО <3333. Я немного отредактировал его, чтобы получить желаемый результат, и теперь он идеально подходит. ^^ ~ Ух, я знал, что это будет что-то вроде этого, но не может запрограммировать его, так как я очень новичок в Matlab><. Еще раз спасибо :) – 91em

+0

Примите/отпустите ответ, чтобы он был полезен другим людям, и он выходит из оставшегося без ответа списка вопросов –

+0

Я пробовал раньше, но ... «Vote Up требует 15 репутации» – 91em

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