【图像分割】基于粒子群算法实现图像的自适应多阈值快速分割matlab代码
【图像分割】基于粒子群算法实现图像的自适应多阈值快速分割matlab代码
TT_Matlab
每天分享一点Matlab资料,一起成长进步。需要定制程序添加qq1575304183
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.
部分理论引用网络文献,若有侵权联系博主删除。
微信扫一扫赞赏作者 赞赏
发送给作者
人赞赏
长按二维码向我转账
受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。
-
Origin(Pro):学习版的窗口限制【数据绘图】 2020-08-07
-
如何卸载Aspen Plus并再重新安装,这篇文章告诉你! 2020-05-29
-
AutoCAD 保存时出现错误:“此图形中的一个或多个对象无法保存为指定格式”怎么办? 2020-08-03
-
OriginPro:学习版申请及过期激活方法【数据绘图】 2020-08-06
-
CAD视口的边框线看不到也选不中是怎么回事,怎么解决? 2020-06-04
-
教程 | Origin从DSC计算焓和比热容 2020-08-31
-
如何评价拟合效果-Origin(Pro)数据拟合系列教程【数据绘图】 2020-08-06
-
Aspen Plus安装过程中RMS License证书安装失败的解决方法,亲测有效! 2021-10-15
-
CAD外部参照无法绑定怎么办? 2020-06-03
-
CAD中如何将布局连带视口中的内容复制到另一张图中? 2020-07-03