马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
A=imread('123.bmp');
m=size(A,1);
n=size(A,2);
B=zeros(m-1,n-1);
for i=2:m-1
for j=2:n-1
if A(i,j,1)==0&A(i,j,2)==0&A(i,j,3)==255
B(i,j)=1;
end
end
end
for i=2:m-1
for j=2:n-1
if B(i-1,j-1)+B(i-1,j)+B(i,j-1)==0
B(i,j)=0;
A(i,j,1)=(A(i-1,j,1)+A(i,j-1,1)+A(i-1,j-1,1))/3;
A(i,j,2)=(A(i-1,j,2)+A(i,j-1,2)+A(i-1,j-1,2))/3;
A(i,j,3)=(A(i-1,j,3)+A(i,j-1,3)+A(i-1,j-1,3))/3;
else if B(i-1,j)+B(i-1,j+1)+B(i,j+1)==0
B(i,j)=0;
A(i,j,1)=(A(i-1,j,1)+A(i-1,j+1,1)+A(i,j+1,1))/3;
A(i,j,2)=(A(i-1,j,2)+A(i-1,j+1,2)+A(i,j+1,2))/3;
A(i,j,3)=(A(i-1,j,3)+A(i-1,j+1,3)+A(i,j+1,3))/3;
else if B(i,j-1)+B(i+1,j-1)+B(i+1,j)==0
B(i,j)=0;
A(i,j,1)=(A(i,j-1,1)+A(i+1,j-1,1)+A(i+1,j,1))/3;
A(i,j,2)=(A(i,j-1,2)+A(i+1,j-1,2)+A(i+1,j,2))/3;
A(i,j,3)=(A(i,j-1,3)+A(i+1,j-1,3)+A(i+1,j,3))/3;
else if B(i,j+1)+B(i+1,j+1)+B(i+1,j)==0
B(i,j)=0;
A(i,j,1)=(A(i,j+1,1)+A(i+1,j+1,1)+A(i+1,j,1))/3;
A(i,j,2)=(A(i,j+1,2)+A(i+1,j+1,2)+A(i+1,j,2))/3;
A(i,j,3)=(A(i,j+1,3)+A(i+1,j+1,3)+A(i+1,j,3))/3;
end
end
end
end
end
end
先判定待填充区域(蓝色),将位置存入B数组
然后以A(i,j)为中心对周围8个像素判定,若该像素周围存在3个不同颜色的像素,则用这3个像素颜色的均值填充该像素,然后继续判定下一个
得到的结果并不是蓝色区域被填充,初学matlab,望达人指导修改,不胜感激!
[ 本帖最后由 chivasgogo 于 2010-5-21 17:21 编辑 ] |