声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 3496|回复: 2

[人工智能] 遗传算法的图象分割matlab程序

[复制链接]
发表于 2007-7-25 08:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
用matlab写的遗传算法分割程序,用的是Sheffield大学gatbs工具箱
能够运行得到真确结果!

a10.m
  1. O=imread('Lenna.bmp');
  2. figure(1);imshow(O);

  3. NIND = 40; % Number of individuals
  4. MAXGEN =50; % Maximum no. of generations
  5. PRECI = 8; % Precision of variables
  6. GGAP = 0.9; % Generation gap
  7. % Build field descriptor
  8. FieldD = [8;1;256;1;0;1;1];
  9. % Initialise population
  10. Chrom = crtbp(NIND, PRECI);
  11. gen = 0;% Counter
  12. phen=bs2rv(Chrom,FieldD);% Evaluate initial population
  13. ObjV = target(O,phen);
  14. while gen < MAXGEN,% Generational loop
  15. % Assign fitness values to entire population
  16. FitnV = ranking(-ObjV);
  17. SelCh = select('sus', Chrom, FitnV, GGAP);% Select individuals for breeding
  18. SelCh = recombin('xovsp',SelCh,0.7);% Recombine individuals (crossover)
  19. SelCh = mut(SelCh);% Apply mutation
  20. phenSel = bs2rv(SelCh,FieldD);% Evaluate offspring, call objective function
  21. ObjVSel=target(O,phenSel);
  22. [Chrom ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel);% Reinsert offspring into population
  23. gen = gen+1;% Increment counter
  24. end
  25. [Y,I]=max(ObjV);
  26. M=bs2rv(Chrom(I,:),FieldD)
  27. [m,n]=size(O);
  28. for i=1:m
  29.     for j=1:n
  30.         if O(i,j)>M
  31.             O(i,j)=256;
  32.         end
  33.     end
  34. end
  35. figure(2)
  36. imshow(O);
复制代码



target.m
  1. function f=target(T,M)
  2. dT=double(T);
  3. [U,V]=size(T); W=length(M);f=zeros(W,1);
  4. for k=1:W
  5. s1=0;I=0;s2=0;J=0;
  6. for i=1:U
  7.     for j=1:V
  8.         if T(i,j)<=M(k)
  9.             s1=s1+dT(i,j);I=I+1;
  10.         end
  11.         if T(i,j)>M(k)
  12.             s2=s2+dT(i,j);J=J+1;
  13.         end
  14.     end
  15. end
  16. p1=s1/I;p2=s2/J;
  17. f(k)=I*J*(p1-p2)*(p1-p2)/(256*256*256*256);
  18. end
复制代码


本程序由研学hwh4103
回复
分享到:

使用道具 举报

发表于 2009-6-27 10:42 | 显示全部楼层
能不能说一下具体要怎么运行?还需要什么初始文件?图像分割程序,那是不是要图像的原始文件啊?谢谢!
发表于 2012-4-5 15:59 | 显示全部楼层
谢谢楼主分享!学习学习!!!!!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-23 09:50 , Processed in 0.059885 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表