一、简介
元胞自动机(CA)是一种用来仿真局部规则和局部联系的方法。典型的元胞自动机是定义在网格上的,每一个点上的网格代表一个元胞与一种有限的状态。变化规则适用于每一个元胞并且同时进行。典型的变化规则,决定于元胞的状态,以及其( 4 或 8 )邻居的状态。
1 对元胞自动机的初步认识
元胞自动机(CA)是一种用来仿真局部规则和局部联系的方法。典型的元
胞自动机是定义在网格上的,每一个点上的网格代表一个元胞与一种有限的状
态。变化规则适用于每一个元胞并且同时进行。
2 元胞的变化规则&元胞状态
典型的变化规则,决定于元胞的状态,以及其( 4 或 8 )邻居的状态。
3 元胞自动机的应用
元胞自动机已被应用于物理模拟,生物模拟等领域。
4 元胞自动机的matlab编程
结合以上,我们可以理解元胞自动机仿真需要理解三点。一是元胞,在matlab中可以理解为矩阵中的一点或多点组成的方形块,一般我们用矩阵中的一点代表一个元胞。二是变化规则,元胞的变化规则决定元胞下一刻的状态。三是元胞的状态,元胞的状态是自定义的,通常是对立的状态,比如生物的存活状态或死亡状态,红灯或绿灯,该点有障碍物或者没有障碍物等等。

二、源代码

%元胞自动机   边缘提取
clear all
I=imread('lena.bmp');
I=double(I);
figure;imshow(uint8(I));
im=I;
[M,N]=size(I);
im_o=zeros(M,N);
sigma=18;
for t=1:1
    for i=2:M-1
        for j=2:N-1
%            tmp=(im(i-1,j)+im(i+1,j)+im(i,j-1)+im(i,j+1))/4;
%            tmp=abs(im(i,j)-tmp);
           if (abs(im(i-1,j)-im(i,j))<sigma)&(abs(im(i+1,j)-im(i,j))<sigma)& (abs(im(i,j-1)-im(i,j))<sigma)& (abs(im(i,j+1)-im(i,j))<sigma)
               im_o(i,j)=0;
           else
               im_o(i,j)=im(i,j);
           end
%            im_o(i,j)=min(im(i,j),tmp);
       end
   end
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.

三、运行结果

【边缘检测】基于元胞自动机图像边缘检测matlab源码_matlab

【边缘检测】基于元胞自动机图像边缘检测matlab源码_matlab_02