码迷,mamicode.com
首页 > 其他好文 > 详细

随机游走的matlab实现

时间:2016-05-13 01:27:34      阅读:2313      评论:0      收藏:0      [点我收藏+]

标签:

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

随机游走的matlab实现

标签:

原文地址:http://blog.csdn.net/malena_meak/article/details/51345414

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!