基于信息熵方法的多阈值图像分割算法


图像分割,简单地说就是将一幅数字图像分割成不同的区域,在同一区域内具有在一定的准则下可认为是相同的性质,如灰度,颜色,纹理等,而任何相邻区域之间其性质具有明显的区别。 基于信息熵的一类方法被广泛应用到图像分割领域,比如最大熵,最大交叉熵,最小交叉熵等。本文研究了基于Tsallis熵的多阈值图像分割算法,通过利用图像的灰度直方图信息,近似拟合灰度的概率分布函数,然后设定目标函数,目标函数最大化对应的阈值就是最佳阈值,相比传统算法,Tsallis熵的阈值分割方法,能够克服一定的噪声干扰,同时避免了单阈值的问题,能够分割多个感兴趣区域。 本文最后在matlab环境中进行真实图像的分割实验,结果表明,这种方法能够较好的克服图像细节分割不准的问题,同时能够针对多个灰度级别进行分割,大大提高分割的准确率。
资源截图
代码片段和文件信息
clc;
clear;
%C=imread(‘lena.bmp‘);
%C=imread(‘stone.jpg‘);
C=imread(‘1.bmp‘);
if isrgb(C)
    I=rgb2gray(C);
else
    I=C;
end
%I=imnoise(I‘gaussian‘00.005);
%figure
subplot(131)
imshow(I)
tic
IDX = otsu(I2);
subplot(132);
imagesc(IDX) axis image off 
colormap(gray)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%确定基本粒子群算法的迭代次数和粒子个数
Iter = 50;
global  popsize
popsize = 20;  %%粒子个数
global dimsize
dimsize=2;  %%粒子维数
%初始化基本粒子群优化算法的参数
Wmax = 0.9;             %最大惯性因子
Wmin = 0.1;             %最小惯性因子
c1 = 2.0;               %个体学习因子
c2 = 2.0;               %群体学习因子
xmax = 254;             %粒子允许的最小位置
xmin = 2; 
speedmax=10;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%初始化
        for k1=1:popsize
           for i=1:popsize
              %Xpop(i1:dimsize)= unifrnd(xminxmax1dimsize);
                 %pop(i1:dimsize)=[ unifrnd(xmin85) unifrnd(85170)unifrnd(170255)];   %%三阈值
                  Xpop(i1:dimsize)=unifrnd(22541dimsize);   %%两阈值
           end
           for j=1:popsize
               Xpop(jdimsize+1:2*dimsize)= unifrnd(-speedmaxspeedmax1dimsize);
           end
           pop(k11:2*dimsize )= Xpop(k11:2*dimsize);
        end
        
        BestFit = 0;
        pBestFit=zeros(popsize1); %%%%%%%%
        %初始化粒子历史最优位置pBest和全局最优位置gBest
        pBest = zeros(popsizedimsize);
        gBest = zeros(1dimsize);
        
        %迭代更新
        for it = 1:Iter
            for t=1:popsize
                %计算适应度pFit并更新历史最优适应度pBestFit和全局最佳适应度gBestFit
                Theta = pop(t1:dimsize);

                %当前粒子的适应度pFit
                pFit = ThetaFit(ThetaI);

                %更新个体历史最优适应度pBestFit
                if pFit > pBestFit(t)
                    pBestFit(t) = pFit;
                    pBest(t1:dimsize) = pop(t1:dimsize);
                end
        end
        %更新当前时刻全局最优位置gBest、前一时刻全局最优适应度PregBest
        %和全局最佳适应度gBestFit
        [gBestFitind] = max(pBestFit);   %%pBestFit(j:)表示第j个子群的适应度值,ind(j)表示位置
        gBest(1:dimsize) = pBest(ind1:dimsize);  
        %位置向量和速度向量更新
        for j=1:popsize
                for t = dimsize+1:2*dimsize
                    %惯性权重更新并产生随机数r1、r2
                    W = Wmax - it*(Wmax - Wmin)/Iter;
                    r1 = rand;
                    r2 = rand;

                    %速度向量Vpos更新
                    pop(jt) = W*pop(jt) + c1*r1*(pBest(jt-dimsize) - pop(jt-dimsize)) + ...
                            c2*r2*(gBest(t-dimsize) - pop(jt-dimsize));
                    %限制更新后粒子速度在[VminVmax]范围内
                    if pop(jt) > speedmax
                        pop(jt) = speedmax;
                    end
                   if pop(jt) < -speedmax
                        pop(jt) = -speedmax;
                   end

                    %粒子位置更新
                    pop(jt-dimsize) = pop(jt-dimsize) + pop(jt);
   

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-10-10 15:39  源码
     文件       56910  2016-04-27 00:29  源码1.bmp
     文件       66614  2016-04-27 00:08  源码lena.bmp
     文件        3936  2016-04-27 00:41  源码main.m
     文件        1888  2016-04-27 12:31  源码main_Tsallis_2D.m
     文件       76885  2012-10-30 15:53  源码stone.jpg
     文件      889611  2016-04-27 12:34  源码毕业论文 (修复的).docx
     目录           0  2018-10-10 15:39  演示
     文件     5437006  2016-04-13 13:32  演示9780.avi
     文件          64  2018-10-10 16:34  说明.txt
     目录           0  2018-10-10 15:38  需求
     文件       13002  2016-04-04 21:27  需求新建 Microsoft Word 文档.docx

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)