|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
奇怪的图像问题!I=imread('1.jpg');
[x,y,z]=size(I);
D1=zeros(x,y);
D2=zeros(x,y);
DoubleI=double(I);
I0=zeros(x,y,z);
for i=1:x
for j=1:y
% D1(i,j)=sqrt((DoubleI(i,j,1)-90)^2+(DoubleI(i,j,2)-90)^2+(DoubleI(i,j,3)-90)^2);
% D2(i,j)=sqrt((DoubleI(i,j,1)-110)^2+(DoubleI(i,j,2)-110)^2+(DoubleI(i,j,3)-110)^2);
%if (D1(i,j)<=D2(i,j))
if (I(i,j,1)<=80)&&(I(i,j,2)<=80)&&(I(i,j,3)<=80)
I0(i,j,1)=0;
I0(i,j,2)=0;
I0(i,j,3)=0;
else
%I0(i,j,1)=DoubleI(i,j,1);
%I0(i,j,2)=DoubleI(i,j,2);
%I0(i,j,3)=DoubleI(i,j,3);
I0(i,j,1)=I(i,j,1);
I0(i,j,2)=I(i,j,2);
I0(i,j,3)=I(i,j,3);
end
end
end
f=rgb2gray(I0);
b=double(f);
imtool(b) %%%%如图2,b.jpg
c=im2bw(b,0.9);
se=strel('disk',2);
bw1=imopen(c,se);
bw1=imclearborder(bw1);
imtool(bw1);%%%如图3,bw1.jpg
这时的bw1如图3中也就是bw1图像已经是全部黑色的了,图2中的中心部分的“缺陷”就是被
“se=strel('disk',2);
bw=imopen(c,se);
bw=imclearborder(bw);”这三句话给弄没了!
※※※※※※※※※※※※※※※※※※※※※※※※※※
※※※※※※※※※※※※※※※※※※※※※
但是当我把这个程序分开后,分为以下两个程序。却能够运行出如图6中的结果。(正是我想要的结果!)
第一个:
I=imread('1.jpg');
[x,y,z]=size(I);
D1=zeros(x,y);
D2=zeros(x,y);
DoubleI=double(I);
I0=zeros(x,y,z);
for i=1:x
for j=1:y
% D1(i,j)=sqrt((DoubleI(i,j,1)-90)^2+(DoubleI(i,j,2)-90)^2+(DoubleI(i,j,3)-90)^2);
% D2(i,j)=sqrt((DoubleI(i,j,1)-110)^2+(DoubleI(i,j,2)-110)^2+(DoubleI(i,j,3)-110)^2);
%if (D1(i,j)<=D2(i,j))
if (I(i,j,1)<=80)&&(I(i,j,2)<=80)&&(I(i,j,3)<=80)
I0(i,j,1)=0;
I0(i,j,2)=0;
I0(i,j,3)=0;
else
%I0(i,j,1)=DoubleI(i,j,1);
%I0(i,j,2)=DoubleI(i,j,2);
%I0(i,j,3)=DoubleI(i,j,3);
I0(i,j,1)=I(i,j,1);
I0(i,j,2)=I(i,j,2);
I0(i,j,3)=I(i,j,3);
end
end
end
BW=~im2bw(I0);
imwrite(BW);
%%%%保存的图片为图片4,1a.jpg
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
第二个程序:
f=imread('1.jpg');%%这张照片就是图片4,1a.jpg
whos f
imshow(f);
b=double(f);
whos b
imtool(b)%%%如图5,5.jpg
c=im2bw(b,0.9);
se=strel('disk',2);
bw=imopen(c,se);
bw=imclearborder(bw);
whos bw
imtool(bw);%%%如图6.jpg
而这两个程序区别就是把图保存出去然后又把二值图像读进来就可以显示出如图6.jpg的图像来。
怎么改能把最上面的整个程序也能整出如图6.jpg的图像呢?!
[ 本帖最后由 jeffjeff 于 2007-11-26 15:12 编辑 ] |
|