Hello Mat

 找回密码
 立即注册
查看: 4033|回复: 0

PSO算法的最大熵阈值图像分割

[复制链接]

1294

主题

1520

帖子

110

金钱

管理员

Rank: 9Rank: 9Rank: 9

积分
22633
发表于 2017-5-20 20:58:07 | 显示全部楼层 |阅读模式
PSO算法的最大熵阈值图像分割:http://www.docin.com/p-603535257.html
具体的二分割程序:
  1.     % 最大熵法分割
  2.     % http://www.docin.com/p-603535257.html
  3.     p1 = log( sum( probR(1:xR) ) );
  4.     p2 = log( sum( probR(xR+1:Lmax) ) );
  5.     p3 = sum( probR(1:xR).*log(probR(1:xR) + eps) ) ./ sum( probR(1:xR) );
  6.     p4 = sum( probR(xR+1:Lmax).*log(probR(xR+1:Lmax) + eps) ) ./ sum( probR(xR+1:Lmax) );
  7.    
  8.     fitness = p1+p2-p3-p4;                 % 适应度值
复制代码
多分割的话,这篇文章,还是有些坑啊。
  1.     p1 = log( sum( p(1:t(1)) ) );
  2.     p2 = log( sum( p(t(1)+1:t(2)) ) );
  3.     p3 = log( sum( p(t(2)+1:Lmax) ) );
  4.     p4 = sum( p(1:t(1)).*log(p(1:t(1)) + eps) ) ./ sum( p(1:t(1)) +eps );
  5.     p5 = sum( p(t(1)+1:t(2)).*log(p(t(1)+1:t(2)) + eps) ) ./ sum( p(t(1)+1:t(2)) +eps );
  6.     p6 = sum( p(t(2)+1:Lmax).*log(p(t(2)+1:Lmax) + eps) ) ./ sum( p(t(2)+1:Lmax) +eps );
  7.     fitness = p1+p2+p3-p4-p5-p6;                 % 适应度值
复制代码

也可以参考:https://wenku.baidu.com/view/3fa4312ffd0a79563c1e72f9.html

二维最大熵法:
  1. function fitness = fun(im, t)
  2. % 输入:
  3. % I是图像
  4. % t是阈值

  5. % 首先以原始灰度图像(L个灰度级)中各象素及其4邻域的4个象素为一个区域,
  6. % 计算出区域灰度均值图像(L个灰度级),
  7. % 这样原始图像中的每个象素都对应一个点灰度-区域灰度均值对,
  8. % 这样的数据对存在L×L种可能的取值

  9. h = fspecial('average',[2,2]);  % 2x2均值模板
  10. meanI = imfilter(im, h);        % 均值图像
  11. Lmax = 256;
  12. % pi,j为点灰度-区域灰度均值对(i,j)发生的概率
  13. pij = zeros(Lmax,Lmax);
  14. for i=0:Lmax-1
  15.     [x,y] = find(im==i);  % 原图像寻找
  16.     data=[];
  17. %     for j=1:length(x)
  18. %         data(j) = double( meanI(x(j),y(j)) );
  19. %     end
  20.     data = meanI( sub2ind(size(meanI),x, y) );
  21.     n_countR = imhist(uint8(data));  % 直方图
  22.     % pi,j为点灰度-区域灰度均值对(i,j)发生的概率
  23.     pij(i+1, :) = n_countR;
  24. end
  25. pij = pij./(Lmax*Lmax);

  26. PA = sum( sum( pij(1:t(1), 1:t(2)) ) );
  27. % PB = sum( sum( pij(t(1)+1:Lmax, t(2)+1:Lmax) ) );
  28. HA = -sum( sum( pij(1:t(1),1:t(2)).*log(pij(1:t(1),1:t(2))+eps) ) );
  29. HL = -sum( sum( pij(1:Lmax,1:Lmax).*log(pij(1:Lmax,1:Lmax)+eps) ) );
  30. fitness = log( PA*(1-PA)+eps ) + HA./(PA+eps) + (HL-HA)./(1-PA+eps);
复制代码




算法QQ  3283892722
群智能算法链接http://halcom.cn/forum.php?mod=forumdisplay&fid=73
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Python|Opencv|MATLAB|Halcom.cn ( 蜀ICP备16027072号 )

GMT+8, 2024-4-27 01:50 , Processed in 0.240042 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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