随机游走类似布朗运动,就是随机的向各个方向走吧。
虽然代码没什么技术含量,不过产生的图像实在太漂亮了,所以还是贴上来吧。
产生的图像:
matlab代码如下:
clear all;close all;clc n=; %游走的步数。也是图像中像素个数,有些位置可能重复,所以白像素小于等于n
x=; %初始x坐标
y=; %初始y坐标
pix=zeros(n,); %游走产生的像素坐标
neighbour=[- -;- ;- ; -; ; -; ; ]; %当前像素邻域
for i=:n
r=floor(+*rand()); %八邻域随机选一个来走
y=y+neighbour(r,); %y方向游走
x=x+neighbour(r,); %x方向游走
pix(i,:)=[y x]; %保存坐标
end miny=min(pix(:,)); %图像坐标不可能为负,所以找最小值再整体提升为正
minx=min(pix(:,)); %同上 pix(:,)=pix(:,)-miny+; %像素坐标整体变为正
pix(:,)=pix(:,)-minx+; maxy=max(pix(:,)); %找最大坐标值,为开辟图像做准备
maxx=max(pix(:,)); img=zeros(maxy,maxx); %根据maxy、maxx产生图像
for i=:n %将游走的值赋给图像
img(pix(i,),pix(i,))=;
end
imshow(img)