【图像分割】基于遗传算法优化最大熵值法实现双阈值图像分割附matlab代码

您所在的位置:网站首页 最大熵算法应用 【图像分割】基于遗传算法优化最大熵值法实现双阈值图像分割附matlab代码

【图像分割】基于遗传算法优化最大熵值法实现双阈值图像分割附matlab代码

2023-12-18 16:07| 来源: 网络整理| 查看: 265

1 内容介绍

利用遗传算法与最大熵值法相结合的算法对图像进行处理。通过结合遗传算法改善了最大熵值法运算速度慢的弱点,实现了图像的双阈值分割。

2 仿真代码 clc   clear all   close all   lbx=-1;ubx=1; %函数自变量x范围【-1,1】   lby=-1;uby=1; %函数自变量y范围【-1,1】   %% 定义遗传算法参数   NIND=50;        %个体数目   MAXGEN=50;      %最大遗传代数   PRECI=20;       %变量的二进制位数   GGAP=0.90;      %代沟   px=0.97;         %交叉概率   pm=0.001;        %变异概率   trace=zeros(6,MAXGEN);                        %寻优结果的初始值   FieldD=[PRECI PRECI PRECI PRECI PRECI;lbx lby lbx lbx lbx;ubx uby ubx ubx ubx;1 1 1 1 1;0 0 0 0 0;1 1 1 1 1;1 1 1 1 1];                      %区域描述器   Chrom=crtbp(NIND,PRECI*5);                      %初始种群   %% 优化   gen=0;                                  %代计数器   XY=bs2rv(Chrom,FieldD);                 %计算初始种群的十进制转换   d1=XY(:,1);   d2=XY(:,2);d3=XY(:,3);d4=XY(:,4);d5=XY(:,5);   ObjV=func(d1,d2,d3,d4,d5,NIND);       %计算目标函数值                          %记下每代的最优值   end   figure(2);   plot(1:MAXGEN,trace(6,:));   grid on   xlabel('遗传代数')   ylabel('解的变化')   title('进化过程')   bestc1=trace(1,end)   bestc2=trace(2,end)   bestc3=trace(3,end)   bestc4=trace(4,end)   bestc5=trace(5,end)   bestSIR=trace(6,end)  

function [v10,v11]=mutation_2d(c10,c11)

    %变异算子

    format long;

    population=20;

    pm=0.03;

    for i=1:population         for j=1:8             r0=rand(1);             r1=rand(1);             if r0>pm                 temp0(i,j)=c10(i,j);             else                 tt=not(str2num(c10(i,j)));                 temp0(i,j)=num2str(tt);             end             if r1>pm                 temp1(i,j)=c11(i,j);             else                 tt=not(str2num(c11(i,j)));                 temp1(i,j)=num2str(tt);             end         end     end

    v10=temp0;     v11=temp1;

function [c10,c11]=cross_2d(s_code10,s_code11)

   %交叉算子

   pc=0.8;       %交叉概率取0.6    population=20;

   %(1,2)/(3,4)/(5,6)进行交叉运算,(7,8)/(9,10)复制

   ww0=s_code10;    ww1=s_code11;

   for i=1:(pc*population/2)        r0=abs(round(rand(1)*10)-3);        r1=abs(round(rand(1)*10)-3);        for j=(r0+1):8            temp0=ww0(2*i-1,j);            ww0(2*i-1,j)=ww0(2*i,j);            ww0(2*i,j)=temp0;         end        for j=(r1+1):8            temp1=ww1(2*i-1,j);            ww1(2*i-1,j)=ww1(2*i,j);            ww1(2*i,j)=temp1;         end    end

   c10=ww0;    c11=ww1;

3 运行结果

4 参考文献

[1]李佩姗, 史春景, 郝永平. 基于遗传算法最大熵值法的毫米波图像分割[J]. 光电技术应用, 2019, 34(2):5.

[2]宋家慧. 基于遗传算法的最大熵阈值的图像分割[J]. 信息化研究, 2005, 31(002):60-63.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

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



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3