资源描述:
《基于pcnn的图像分割的matlab实现》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、基于PCNN的图像分割的matlab实现图像分割是一种重要的图像技术,在理论研究和实际应用中都得到了人们的广泛重视。图像分割的方法和种类有很多,有些分割运算可直接应用于任何图像,而另一些只能适用于特殊类别的图像。有些算法需要先对图像进行粗分割,因为他们需要从图像中提取出来的信息。例如,可以对图像的灰度级设置门限的方法分割。许多不同种类的图像或景物都可作为待分割的图像数据,不同类型的图像,已经有相对应的分割方法对其分割,同时,某些分割方法也只是适合于某些特殊类型的图像分割。分割结果的好坏需要根据具体的场合及要求衡量。图像分割是从图像处理到图像分析的关键步骤,可以说,图像分割结果的好坏直接
2、影响对图像的理解。脉冲耦合神经网络(PCNN)是一种不同于传统人工神经网络的新型神经网络,它有着重要的生物学背景,是由Eckhorn为解释在猫的大脑视觉皮层中实验所观察到的与特征有关的神经元同步行为现象而提出的。PCNN的这个生物学背景使它在图像处理中具有先天优势,有着与传统方法进行图像处理所无法比拟的优越性。下面的程序是基于PCNN最基本的图像分割的matlab实现,分割效果较好。主程序: 1.function[Edge,Numberofaera]=PCNN(X) 2.%X:输入的灰度图像,Edge:检测到的一些边界点,Numberofaera则表明了在各次迭代时激活的块区域 3.c
3、lear; 4.clc; 1.I=imread('lena1.bmp'); 2.[Xa,Ya]=size(I); 3.subplot(1,2,1); 4.imshow(I); 5.%imshow(I); 6.X=double(I); 7.%X=double(imread('lena.bmp')); 8.Weight=[0.5 1 0.5;1 0 1;0.5 1 0.5]; %此可权值矩阵的选取原则(或者根据)是什么? 9.Beta=0.32; 10.Yuzhi=200; 11.Decay=0.31; 12.[a,b]=size(X); 13.Threshold=zeros(a,b)
4、; 14.S=zeros(a+2,b+2); 15.B=zeros(a,b); %标记样板,表明该pixel是否被激活过; 16.Y=zeros(a,b); 17.Edge=zeros(a,b);Numberofaera=zeros(a,b);Numberofaera_1=zeros(a,b); 18.Num_1=0;Num=0; 19.n=1; 20.while(sum(sum(B))~=Xa*Ya) %若采用128*128的图像,须注意。 21. for i0=2:a+1 1. for i1=2:b+1 2. V=[S(i0-1,i
5、1-1) S(i0-1,i1) S(i0-1,i1+1); 3. S(i0,i1-1) S(i0,i1) S(i0,i1+1); 4. S(i0+1,i1-1) S(i0+1,i1) S(i0+1,i1+1)]; 5. L=sum(sum(V.*Weight)); 6. F=X(i0-1,i1-1); 7. U=double(F)*(1+Beta*double(L)); 8. if U>=Threshold(i0-1,i1-1)
6、Thre
7、shold(i0-1,i1-1)<95 9. T(i0-1,i1-1)=1; %这是什么? 10. Threshold(i0-1,i1-1)=Yuzhi; 11. Y(i0-1,i1-1)=1; 12. if n==1 13. B(i0-1,i1-1)=0; %避免第一次全部激发造成的影响 14. else 15. B(i0-1,i1-1)=1; %已发
8、射过的标记 16. Threshold(i0-1,i1-1)=1000000;%相当于不会被第二次激活 17. end 18. else 19. T(i0-1,i1-1)=0; %no use? 20. Y(i0-1,i1-1)=0; 21. end 1.