create a white circle or sphere inside a black box

i have created white boxes inside a big black box as follows:
A=zeros(70,70); % black box
A(15:23,50:55)=1;% white box
A(50:60,50:55)=1;% white box
A(20:23,10:13)=1 ;% white box
imshow(A,[])
how can i add to the same matrix A a white circle or a white sphere?thanks in advance.

 Akzeptierte Antwort

Andrei Bobrov
Andrei Bobrov am 21 Jul. 2011
A=zeros(70,70);
r = 10; %radius
m = {40,40}; %midpoint
A(m{:})=1;
B = imdilate(A,strel('disk', r,0) );
imshow(B)
ADD wutout Image Processing Toolbox
A=zeros(70,70);
r = 10; %radius
P = [40,40]; %midpoint
[m n ] = size(A);
X = bsxfun(@plus,(1:m)',zeros(1,n));
Y = bsxfun(@plus,(1:n),zeros(m,1));
B = sqrt(sum(bsxfun(@minus,cat(3,X,Y),reshape(P,1,1,[])).^2,3))<=r;
imagesc(B)

4 Kommentare

Friedrich
Friedrich am 21 Jul. 2011
If she has Image Processing Toolbox your code will work. Maybe consider using bwdist. This should be possible too and should result in short code ;)
A=zeros(70,70);
r = 10; %radius
m = {40,40}; %midpoint
A(m{:})=1;
B = bwdist(A) <= r;
imshow(B)
Friedrich
Friedrich am 21 Jul. 2011
Nice. +1
Thanks, Friedrich!
Adding my variant without Image Processing Toolbox

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (3)

Friedrich
Friedrich am 21 Jul. 2011
Hi,
can this help?
function out = my_circ( A, midpoint, radius )
out = A;
[ m n] = size(A);
for i=1:m
for j=1:n
if norm( [i,j] - midpoint ) <= radius
out(i,j) = 1;
end
end
end
end
And call it through:
>> A = zeros(100);
>> B = my_circ(A,[40,40],10);
>> imshow(B,[]);
Ujitha
Ujitha am 3 Mär. 2013

0 Stimmen

Hi this was really helpful. How do you do this to create two different sizes of circles.
Thanks inadvance
Ujitha
Ujitha am 4 Mär. 2013

0 Stimmen

Thanks a lot. It was really helpful..!

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by