首页 > 化工知识 > 【图像分割】基于粒子群算法实现图像的自适应多阈值快速分割matlab代码

【图像分割】基于粒子群算法实现图像的自适应多阈值快速分割matlab代码

时间:2021-12-11 来源: 浏览:

【图像分割】基于粒子群算法实现图像的自适应多阈值快速分割matlab代码

原创 天天Matlab 天天Matlab
天天Matlab

TT_Matlab

每天分享一点Matlab资料,一起成长进步。需要定制程序添加qq1575304183

收录于话题 #图像处理matlab源码 286个 内容

1 简介

为确定图像分割的最佳阈值,基于粒子群优化算法提出了一种多阈值图像分割方法.由最大熵或最大类间方差法得到优化的目标函数,用粒子群算法对其进行优化,得到分割的最佳阈值,并用该阈值对图像进行分割.将分割结果与遗传算法的多阈值分割结果相比较可以看出,该算法不仅可实现正确的图像分割,并可使分割速度大大提高.

2 部分代码

clc ; clear ; close all ;                 %清屏,删除已有的变量和窗口,tic和toc用来给程序计时 %% 输入图像; Imag = imread ( ’24063.jpg’ ); %296059   Imag = rgb2gray ( Imag ); Image_Shangmax = Imag ; %% 开始种群等基本定义 N = 500 ;                           % 初始种群个数 d = 3 ;                             % 阈值个数(参看上述的函数表达式) ger = 300 ;                         % 最大迭代次数     plimit = [ 1 , 256 ];           %% 作图 figure ( 3 ); plot ( record );                 %画出最大值的变化过程 title ( ’收敛过程’ ) threshold1 = ym ( 1 ); threshold2 = ym ( 2 ); threshold3 = ym ( 3 ); [ height , length ]= size ( Image_Shangmax ); for i = 1 : length     for j = 1 : height         if Image_Shangmax ( j , i ) > threshold3             Image_Shangmax ( j , i )= 255 ;         elseif Image_Shangmax ( j , i ) > threshold2 && Image_Shangmax ( j , i ) < = threshold3             Image_Shangmax ( j , i )= 165 ;         elseif Image_Shangmax ( j , i ) > threshold1 && Image_Shangmax ( j , i ) < = threshold2             Image_Shangmax ( j , i )= 80 ;         else               Image_Shangmax ( j , i )= 0 ;         end     end end figure ( 4 ); imshow ( Image_Shangmax ); xlabel ([ ’最大熵法阈值’ , num2str ( ym )]); %% 适应度函数 function fx = f ( x ) Imag = imread ( ’24063.jpg’ ); %296059   Imag = rgb2gray ( Imag ); [ height , length ]= size ( Imag ); totalNum = height * length ; pixelCount = zeros ( 1 , 256 ); %统计各个像素值的个数 for i = 1 : length     for j = 1 : height         number = Imag ( j , i ) +1 ;         pixelCount ( number )= pixelCount ( number ) +1 ;     end end pi = pixelCount / totalNum ;   %pi 灰度级为i的像素出现的概率 fx = zeros ( 1 , 500 ); for i = 1 : 500     m = x ( i , 1 );     n = x ( i , 2 ); k = x ( i , 3 );     w0 = sum ( pi ( 1 : m ));     w1 = sum ( pi ( m +1 : n ));     w2 = sum ( pi ( n +1 : 256 ));     w3 = sum ( pi ( k +1 : 256 ));   H0 = 0 ;   H1 = 0 ;   H2 = 0 ;   H3 = 0 ;     for j = 1 : m         if w0 > 0 && pi ( 1 , j ) / w0 ~ = 0             H0 = H0 - ( pi ( 1 , j ) / w0 ) .* log ( pi ( 1 , j ) / w0 ); %计算各个阈值下的前景熵         else             H0 = H0 ;         end       end         for j = m +1 : n         if w1 > 0 && pi ( 1 , j ) / w1 ~ = 0             H1 = H1 - ( pi ( 1 , j ) / w1 ) .* log ( pi ( 1 , j ) / w1 ); %计算各个阈值下的背景熵         else             H1 = H1 ;         end       end         for j = n +1 : k         if w2 > 0 && pi ( 1 , j ) / w2 ~ = 0             H2 = H2 - ( pi ( 1 , j ) / w2 ) .* log ( pi ( 1 , j ) / w2 ); %计算各个阈值下的背景熵         else             H2 = H2 ;         end       end         for j = k +1 : 256         if w3 > 0 && pi ( 1 , j ) / w3 ~ = 0             H3 = H3 - ( pi ( 1 , j ) / w3 ) .* log ( pi ( 1 , j ) / w3 ); %计算各个阈值下的背景熵         else             H3 = H3 ;         end       end     fx ( i )= H0 + H1 + H2 + H3 ;     end end

3 仿真结果

4 参考文献

[1]韦苗苗,江铭炎. (2005). 基于粒子群优化算法的多阈值图像分割. 山东大学学报:工学版, 35(6), 4.

部分理论引用网络文献,若有侵权联系博主删除。

天天Matlab

赞赏二维码 微信扫一扫赞赏作者 赞赏

已喜欢, 对作者说句悄悄话
最多40字,当前共

  人赞赏

1 / 3

长按二维码向我转账

赞赏二维码

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

版权:如无特殊注明,文章转载自网络,侵权请联系cnmhg168#163.com删除!文件均为网友上传,仅供研究和学习使用,务必24小时内删除。
相关推荐