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

1 简介

针对二维熵法阈值分割中精度和时间性能较差的问题,提出了基于二维熵 - 量子遗传算法的多阈值图像分割方法。定义了二维阈值量子染色体的编码方式,解决了传统遗传算法优化二维最大指数熵阈值过程中速度慢、多样性小的缺点;在产生阈值解时,提出了半随机策略来代替传统的完全随机策略,加快寻优速度;改进了量子门旋转角度方式,提出了一种新的自适应旋转角度的方法,提高了算法的精度和收敛速度。并进行了分割实验和SAR 图像变化检测实验。结果表明:该方法比基于一维熵的图像分割算法具有更高的抗噪性;其寻优速度较完全随机产生阈值解的量子遗传算法提高了 3 倍 ~5 倍;避免了算法发散或过早收敛。与其他基于阈值分割的变化检测算法相比,性能更好。

2 部分代码

%%%利用最大熵法(multiKSW熵法)及量子遗传算法实现灰度图像多阈值分割
%%%主程序
%%初始部分,读取图像及计算相关信息
clear all;
close all;
clc;

[I,filename]=sunlightopenpic;
I=uint8(I);
% % if isrgb(I)==1
% % I=rgb2gray(I);
% % end
Lmin=double(min(I(:)));
Lmax=double(max(I(:)));
graynum=double(Lmax-Lmin+1);
[M,N]=size(I);
hist=imhist(I);
total=M*N;
hist1=double(hist/total);

%hist1对应是每种灰度的对应出现概率。

HT=0;    % 统计图像的信息熵
for i=Lmin:Lmax
   if hist1(i+1)==0
       temp=0;
   else
       temp=hist1(i+1)*log(1/hist1(i+1));
   end
       HT=HT+temp;
end
%%程序主干部分,种群随机初始化,种群数取10,染色体二进制编码取8位 初始化Q(t)

global population C;
C=2;  %对应阈值的个数
population=20;
Q=ones(8*C,2,population);
Q=Q/sqrt(2);
%这里定义种群数
tic

figure(1);
subplot(2,2,1),imshow(I);title('原图');
subplot(2,2,2);imshow(uint8(seg_I));
title(['multiksw熵法及量子遗传算法图像多阈值',num2str(t_opt1(1)),' ',num2str(t_opt1(C)),'分类数为',num2str(C)]);
subplot(2,2,3);imhist(I);title('原图像的直方图');
disp('最佳直方图熵法及量子遗传算法阈值为:')
t_opt1
disp('对应的熵值为')
multiksw(t_opt1(:,1),C,Lmin,Lmax,hist1,HT)

%%程序结

3 仿真结果

4 参考文献

[1]仝彤, 慕晓冬, and 张力. "基于改进二维熵-量子遗传算法的图像多阈值变化检测方法." 火力与指挥控制 5(2019).

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Matlab科研辅导帮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值