⛄一、基于GA的多阈值自适应图像分割

1 遗传算法(GA)的工作流程
GA[3]是由美国科学家Holland提出的,其主要优点是简单、鲁棒性强,需要解决的问题越复杂,目标越不明确,优越性越大.遗传操作主要包括选择、交叉、变异3种基本操作,其基本工作流程如下:

  1. 随机生成初始种群,个体数目一定;

2)计算群体中每个个体的适应度,并判断是否符合预设的优化准则,若符合,输出最佳个体及其所代表的最优解,结束计算,否则继续进行;

  1. 依据适应度选择再生个体,适应度高的个体被选中的概率高,适应度低的个体被选中的概率低;

  2. 按照一定的交叉概率和交叉方法,生成新的个体;

  3. 按照一定的变异概率和变异方法,生成新的个体;

  4. 由交叉和变异产生的新个体组成新一代的种群,返回到2),继续进行计算.

GA的优化准则,一般依据问题的不同有不同的确定方式.通常采用的准则有:种群中个体的最大适应度超过预先的设定值;种群中个体的平均适应度超过预先设定值;进化代数超过预先设定值.

2 熵阈值分割在GA中的构造问题
将遗传算法用于前面所讨论的图像二维熵阈值选择[8],应首先解决以下两个问题:

  1. 如何将问题的解编码成染色体,即如何将多个阈值表示成染色体;

  2. 如何构造一个适应度函数来评价每个染色体的适应度,即如何评价每组阈值的分割效果.

因为采用灰度-区域灰度均值二维直方图进行分析,且分析对像是真彩色图像,即每个像素点都具有属于[0,255]的RGB共3个颜色分量,因此得到的阈值组是由多个6维向量(sRi,sGi,sBi,tRi,tGi,tBi)组成的,其中i=1,2,…,N-1,N为分割类别数.为避免过长的染色体带来计算上的复杂性,文中算法采用实数编码方式.这样,每条染色体的长度为6×(N-1)个整数码串.

熵判别函数被用来作为遗传算法的适应度函数,即F(s,t)=W(s,t).F(s,t)越大,说明分割效果越好,该染色体的适应度越高.

解决了上述2个问题后,只需按照遗传算法的流程执行即可.经过一定的迭代次数后,得到一个最佳的染色体.对该染色体解码,便可得到所需要的多个分割阈值.

3固定码长GA的多阈值分割
如果通过先验知识可以得知图像分割的类别数N(即需N-1个阈值进行分割),则可采用固定码长GA分割法,即用N-1个基因代表N-1个不同的分割阈值,编码成一个染色体.编码与适应度函数已在前面指出,这里只对选择、交叉和变异操作进行说明.

  1. 基于排名的选择操作:
    根据个体的适应度在群体中的排名来分配选择概率,基于此概率采用转盘选择法;

  2. 线性交叉:
    交叉概率Pc取为0.3~0.4;

  3. 均匀变异:
    变异概率Pm取为0.1~0.2.

4 可变码长GA的自适应多阈值分割
如果在图像分割前不知道需要分割的类数或其很难确定,则要求分割方法能自动确定最佳分类数,本文采用的可变码长遗传算法便可以实现这一点.把图像分割的类别数即染色体的码长融合到适应度函数中,从而实现在对阈值寻优的同时得以优化分割类别数,最终实现图像的多阈值自适应分割处理.与固定码长的GA相比,主要在以下几个方面加以改进.

  1. 编码:
    仍基于RGB分割阈值,但另需给出一最大码长Max N,即最大分割类数,则每个个体码长Ni的变化范围为1~Max N.

  2. 适应度函数的改进:
    如直接将式(11)的熵判别函数作为适应度函数,则不能同时对所分类数N进行优化.在此引入函数估计和学习系统理论中的模型复杂度概念[9],在原来熵函数的基础上乘一惩罚因子,提出如下启发式准则函数作为适应度函数:

FD=N−−√W(s∗1,s∗2,⋯,s∗N−1,t∗1,t∗2,⋯,t∗N−1).   (14)

并由此进行基于排序的转盘选择.其中:N为分类数,W(·)为熵函数.

  1. 交叉操作的改进:
    对进行交叉操作的染色体对的共同部分(即较短染色体长度范围内),进行一般的线性交叉;对共同部分以外的,即较长染色体长出的一部分,等概率地进行以下3种操作:丢弃,拼接在另一条染色体上,长度变短为某个随机值.后半部分操作包含了染色体长度的变化,从而使图像的分割类数自适应变化.

  2. 变异操作的改进:
    变异操作是在原均匀交叉方法的基础上加进了关于码长变异的操作,即等概率地使染色体长度变长或变短.其中,变长就是在其后拼接上一随机长度的向量,变短则可以简单地将染色体截断一段随机长度.当然变化后的染色体长度应在1~Max N范围内.

⛄二、部分源代码

clear ;
close all;
clc;
pc=0.7;%交叉概率
pm=0.05;%变异概率
NIND=40;%个体数目
MAXGEN=60;%最大遗传代数
NVAR=2;%变量的维数
PRECI=20;%变量的二进制位数
GGAP=0.9;%代沟
trace=zeros(MAXGEN,1);
%FieldD=[rep(PRECI,[1,NVAR]);[-3,4.1;12 .1,5.8];rep([1;0;1;1],[1,NVAR])];
FieldD=[20,20;0,0;10,10;1,1;0,0;1,1;1,1];
% FieldD=[20,20;-3,4.1;12.1,5.8;1,1;0,0;1,1;1,1];

imf=imread(‘cameraman.tif’);
figure
subplot(211);
imshow(imf)
imf=double(imf);
[row,colume]=size(imf);
Lmax=max(imf( : ));
Lmin=min(imf( : ));
%图像归一化处理
g_imf=(imf-Lmin)./(Lmax-Lmin);

Chrom=crtbp(NIND,NVAR*PRECI);
gen=0;
ObjV=ObjectFunction(bs2rv(Chrom,FieldD),g_imf,row,colume,Lmax,Lmin);
[maxY,I]=max(ObjV);
X=bs2rv(Chrom,FieldD);
maxX=X(I,:);
while gen<MAXGEN
gen
FitnV=ranking(-ObjV);

if maxY<max(ObjV)
[maxY,I]=max(ObjV);
X=bs2rv(Chrom,FieldD);
maxX=X(I,:);
end
trace(gen,1)=maxY;
end
H = betainc(g_imf,X(I,1),X(I,2));
subplot(212);imshow(H)
figure
plot(1:gen,trace(:,1));
hold on;
grid
xlabel(‘进化代数’);
ylabel(‘最优解变化’);
title(‘SGA进化过程’);
disp([‘最优值为:’,num2str(maxY)]);
disp([‘对应的自变量取值:’,num2str(X(I,:))])

⛄三、运行结果



⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]常发亮,刘静,乔谊正.基于遗传算法的彩色图像二维熵多阈值自适应分割[J].控制与决策. 2005(06)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

【阈值分割】基于matlab遗传算法图像自适应多阈值快速分割【含Matlab源码 2444期】相关推荐

  1. 【Matlab路径规划】改进的遗传算法机器人避障路径规划【含GUI源码 703期】

    一.代码运行视频(哔哩哔哩) [Matlab路径规划]改进的遗传算法机器人避障路径规划[含GUI源码 703期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] ...

  2. 【Matlab车牌识别】停车计费系统【含GUI源码 735期】

    一.代码运行视频(哔哩哔哩) [Matlab车牌识别]停车计费系统[含GUI源码 735期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MATLA ...

  3. 【Matlab生物电信号】生物电信号仿真【含GUI源码 684期】

    一.代码运行视频(哔哩哔哩) [Matlab生物电信号]生物电信号仿真[含GUI源码 684期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]董兵,超于毅,李 ...

  4. 【Matlab语音分析】语音信号分析【含GUI源码 1718期】

    一.代码运行视频(哔哩哔哩) [Matlab语音分析]语音信号分析[含GUI源码 1718期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊,郑铁 ...

  5. 【Matlab身份证识别】身份证号码识别【含GUI源码 014期】

    一.代码运行视频(哔哩哔哩) [Matlab身份证识别]身份证号码识别[含GUI源码 014期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MAT ...

  6. 【Matlab水果识别】自助水果超市【含GUI源码 594期】

    一.代码运行视频(哔哩哔哩) [Matlab水果识别]自助水果超市[含GUI源码 594期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]倪云峰,叶健,樊娇娇 ...

  7. 【Matlab验证码识别】遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别【含GUI源码 1694期】

    一.代码运行视频(哔哩哔哩) [Matlab验证码识别]遗传算法和最大熵优化+大津法(OTSU)+自定义阈值数字验证码识别[含GUI源码 1694期] 二.matlab版本及参考文献 1 matlab ...

  8. 【通信仿真】基于matlab空时自适应处理降维仿真【含Matlab源码 1957期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[通信仿真]基于matlab空时自适应处理降维仿真[含Matlab源码 1957期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式 ...

  9. 【Matlab图像融合】小波变换遥感图像融合【含GUI源码 744期】

    一.代码运行视频(哔哩哔哩) [Matlab图像融合]小波变换遥感图像融合[含GUI源码 744期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余 ...

最新文章

  1. vue + webpack 模拟后台数据
  2. 上周新闻回顾:微软补了又漏 思科自找对手
  3. 怎么在js中取java变量的值
  4. Silverlight的报表查看器
  5. oracle asm 删除diskgroup,ASM磁盘组删除DISK操作
  6. 【计算机网络】URI、URL、URN 辨析
  7. Eclipse如何关闭在RUN/DEBUG时弹出窗口?
  8. 【转载】Android网络开发案例
  9. Redis入门指南 - 电子书下载 -(百度网盘 高清版PDF格式)
  10. CSS居中对齐、定位的总结
  11. 快速学习Ant Design-简介
  12. javascript获取上一工作日
  13. 【深度学习】9:CNN实现olivettifaces人脸数据库识别
  14. 计算机维修高级技能,高级计算机维修工操作技能考核试卷
  15. 鸿蒙系统pc版 硬件要求,原神全平台配置要求 原神配置需求一览
  16. 说一说 ArrayList 的扩容机制
  17. ctfshow七夕杯2022
  18. 云原生安全攻防|使用eBPF逃逸容器技术分析与实践
  19. Mendix装备制造业应用 | 质量统计分析人工智能应用APP
  20. sql2000的安装以及sp4的升级

热门文章

  1. 2022年湖北七大员证书查询真假怎么查呢?甘建二告诉你
  2. putextra 传递对象_intent.putextra用法 使用Intent传递对象的两种方式 - 电脑常识 - 服务器之家...
  3. 计算机基础教师期中工作小结,教师期中工作小结
  4. Java新帮派——数组
  5. linux Centos系统下django项目在Nginx服务器上的部署
  6. 电气simulink常用模块_多模分频器原理及simulink仿真分析
  7. java初级工程师需要学多久_Java初级工程师需要掌握什么样的技术?
  8. VS2013类向导“异常来自 HRESULT:0x8CE0000B”错误解决方法
  9. 几种常用的噪声估计算法(一)
  10. [文摘20081112]经典语录