matlab点随机移动,随机游走的matlab实现

该博客介绍了如何使用随机游走算法生成图像效果。通过设置游走步数和像素坐标,模拟布朗运动,确定从任意点出发到达各点的概率。算法首先定义了游走的八个方向,然后进行随机选择并更新像素位置。最终,生成的像素坐标用于填充一个二维矩阵,形成图像并显示。这种方法常用于图像分割和视频去噪。
摘要由CSDN通过智能技术生成

%随机游走产生图像效果实现,随机游走类似布朗运动,就是随机的向各个方向走random walker算法不是要真的执行“走”的这个过程,而是要直接算“从任一点出发,先到达哪个初始点的概率更高”。这种情况下,结果基本是确定的。就好像问“一个脚上绑着10kg重物的人,和一个没有带重物的人赛跑,谁获胜的概率高”?确实前者不是没有可能获胜,但是你比较概率大小的话,结果是显而易见的。随机游走是一种基于图论的半自动分割算法随机游走算法有很多的应用,比如:基于随机游走的图像分割,基于随机游走的视频去噪

clear all;

clc;

n=100000;%游走的步数,也是图像中像素个数,所有直接关系到图像的大小,有些位置可能重复,所以白像素小于等于n

x=0;

y=0;%游走的初始位置

pixel=zeros(n,2);%游走产生的像素坐标

neighbour=[-1 -1;-1 0;-1 1;0 -1;0 1;1 -1;1 0;1 1];%游走的八个方向

for i=1:n

r=floor(1+8*rand());%八邻域随机选一个来走

y=y+neighbour(r,1);%y方向游走

x=x+neighbour(r,2);%x方向游走,游走时连续的

pixel(i,:)=[y x];

end

miny=min(pixel(:,1));

minx=min(pixel(:,2));%图像坐标不可能为负,所以找最小值再整体提升为正

pixel(:,1)=pixel(:,1)-miny+1;

pixel(:,2)=pixel(:,2)-minx+1;

maxy=max(pixel(:,1));

maxx=max(pixel(:,2));%找到随机游走得到的图像的大小

img=zeros(maxy,maxx);

for i=1:n

img(pixel(i,1),pixel(i,2))=1;

end

imshow(img)说明:文章源码来源于http://blog.csdn.net/songzitea/article/details/8797424

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值