matlab練習程式(隨機遊走影象)

Dsp Tian發表於2013-07-12

隨機遊走類似布朗運動,就是隨機的向各個方向走吧。

雖然程式碼沒什麼技術含量,不過產生的影象實在太漂亮了,所以還是貼上來吧。

產生的影象:

matlab程式碼如下:

clear all;close all;clc

n=70000;        %遊走的步數。也是影象中畫素個數,有些位置可能重複,所以白畫素小於等於n
x=0;            %初始x座標
y=0;            %初始y座標
pix=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方向遊走
    pix(i,:)=[y x];         %儲存座標
end

miny=min(pix(:,1));         %影象座標不可能為負,所以找最小值再整體提升為正
minx=min(pix(:,2));         %同上

pix(:,1)=pix(:,1)-miny+1;   %畫素座標整體變為正
pix(:,2)=pix(:,2)-minx+1;

maxy=max(pix(:,1));         %找最大座標值,為開闢影象做準備
maxx=max(pix(:,2));

img=zeros(maxy,maxx);       %根據maxy、maxx產生影象
for i=1:n                   %將遊走的值賦給影象
    img(pix(i,1),pix(i,2))=1;
end
imshow(img)

 

相關文章