How to filter image background

조회 수: 9 (최근 30일)
Daniel
Daniel 2014년 8월 11일
I used this code
mu=1;
nsamples=1000000;
L=1;
l=1;
a1=1;
a2=1;
x01=-4+8*rand(nsamples,1);
y01=-4+8*rand(nsamples,1);
r01=sqrt(x01.^2+y01.^2);
rm1=mu*r01.*exp(-r01.^2/a1^2)+r01;
A1=atan2(y01,x01);
xm1=rm1.*cos(A1);
ym1=rm1.*sin(A1);
x02=-4+8*rand(nsamples,1);
y02=-4+8*rand(nsamples,1);
r02=sqrt(x02.^2+y02.^2);
rm2=mu*r02.*exp(-r02.^2/a2^2)+r02;
A2=atan2(y02,x02);
xm2=rm2.*cos(A2)+2;
ym2=rm2.*sin(A2);
A=reshape([xm1,ym1],[],2);
B=reshape([xm2,ym2],[],2);
A1=A(:,[1]);
A2=A(:,[2]);
B1=B(:,[1]);
B2=B(:,[2]);
x=vertcat(A1,B1);
y=vertcat(A2,B2);
values=hist3([x,y],[300,300]);
image=mat2gray(values);
image2=imcomplement(image);
image3=imrotate(image2,90);
x=linspace(-5,5,10000);
y=linspace(-5,5,10000);
figure
imshow(flipud(image3))
to generate this image:
What I am trying to do is eliminate the background noise. I want the background to be white, starting just outside of the circles I generated. I tried changing r01 and r02 but this made the image look artificial. I also tried changing the scale of mat2gray but couldn't come up with the right values.
I know that there are some redundancies in my code and it isn't very elegant---part of this reason is to make it more clear for application (ie differentiation of x01 and x02, use of L,l,a1,a2). This should be irrelevent for the image manipulation

답변 (0개)

Community Treasure Hunt

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

Start Hunting!

Translated by