查看单个帖子
旧 2008-10-27, 22:35   #1
子虫湖南
初级会员
 
注册日期: 2008-10-27
年龄: 43
帖子: 2
声望力: 0
子虫湖南 正向着好的方向发展
默认 [求助]用matlab生成随机图像

有个matlab程序,运行结果不是我想得到的效果。
我的目的是想生成一幅二值图像,白色背景,由随机分布的50个黑色矩形构成,也就是说矩形的位置是随机的。其次,矩形宽服从正态分布,高是宽的两倍。
请高手帮忙,程序如下:

f=ones(256,256); %生成全为1的256阶矩阵
subplot(131);imshow(f); %显示(白色矩阵)

x=unidrnd(256^2,1,50); %生成50个不超过256的平方的均匀随机数
for i=1:50
f(x(i))=0;
end %50个随机点处像素值改为0(50个黑点)
subplot(132);imshow(f);

y=normrnd(15,1,1,50); %生成50个正态分布N(15,1)随机数
y=round(y);
z=2*y;

for i=1:50
for k=1:z(i)
if x(i)+k>256^2
break;
else
f(x(i)+k)=0;
for n=1:y(i)
if y(i)*256+x(i)>256^2
break;
else
f(y(i)*256+x(i))=0;
f(y(i)*256+x(i)+k)=0;
end
end
end %对每个黑点x(i),将以该点为左上角顶点的高为z(i),
宽为y(i)的矩形区域内的点全都赋值0(即变黑)
subplot(133),imshow(f);

直接复制到matlab下,可以运行。:ft:
子虫湖南 当前离线   回复时引用此帖