【图像分割】基于回溯搜索优化算法实现图像聚类分割附matlab代码

本文涉及的产品
视觉智能开放平台,分割抠图1万点
视觉智能开放平台,图像资源包5000点
视觉智能开放平台,视频资源包5000点
简介: 【图像分割】基于回溯搜索优化算法实现图像聚类分割附matlab代码

 1 内容介绍

阈值法是一种简单且有效的图像分割技术.但是随着阈值数目的增加,求解阈值的计算量增大并且实时性降低,这给多阈值图像分割带来了很大的困难.为了克服这一困难,把多阈值分割看作一个优化问题.将最大类间方差法当作要优化的函数,用回溯搜索优化算法求解要优化的函数,从而实现多阈值图像分割.将提出的多阈值算法应用于基准测试图像上,并与传统阈值分割法比较.实验结果表明:回溯搜索优化算法很好的解决了最大类间方差算法求解多阈值分割实时性差的问题,并验证了该算法应用在图像分割上是可行的.

image.gif编辑

image.gif编辑

image.gif编辑

image.gif编辑

image.gif编辑

image.gif编辑

2 仿真代码

%{

Backtracking Search Optimization Algorithm (BSA)

Platform: Matlab 2013a  

Cite this algorithm as;

[1]  P. Civicioglu, "Backtracking Search Optimization Algorithm for

numerical optimization problems", Applied Mathematics and Computation, 219, 8121?144, 2013.

Copyright Notice

Copyright (c) 2012, Pinar Civicioglu

All rights reserved.

Redistribution and use in source and binary forms, with or without

modification, are permitted provided that the following conditions are

met:

   * Redistributions of source code must retain the above copyright

     notice, this list of conditions and the following disclaimer.

   * Redistributions in binary form must reproduce the copyright

     notice, this list of conditions and the following disclaimer in

     the documentation and/or other materials provided with the distribution

     

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"

AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE

IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE

ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE

LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR

CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF

SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS

INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN

CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)

ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE

POSSIBILITY OF SUCH DAMAGE.

%}

function bsa(fnc,mydata,popsize,dim,DIM_RATE,low,up,epoch)

%INITIALIZATION

if numel(low)==1, low=low*ones(1,dim); up=up*ones(1,dim); end % this line must be adapted to your problem

pop=GeneratePopulation(popsize,dim,low,up); % see Eq.1 in [1]

fitnesspop=feval(fnc,pop,mydata);

historical_pop=GeneratePopulation(popsize,dim,low,up); % see Eq.2 in [1]

% historical_pop  is swarm-memory of BSA as mentioned in [1].

% ------------------------------------------------------------------------------------------

for epk=1:epoch

   %SELECTION-I

   if rand<rand, historical_pop=pop; end  % see Eq.3 in [1]

   historical_pop=historical_pop(randperm(popsize),:); % see Eq.4 in [1]

   F=get_scale_factor; % see Eq.5 in [1], you can other F generation strategies

   map=zeros(popsize,dim); % see Algorithm-2 in [1]        

   if rand<rand,

       for i=1:popsize,  u=randperm(dim); map(i,u(1:ceil(DIM_RATE*rand*dim)))=1; end

   else

       for i=1:popsize,  map(i,randi(dim))=1; end

   end

   % RECOMBINATION (MUTATION+CROSSOVER)  

   offsprings=pop+(map.*F).*(historical_pop-pop);   % see Eq.5 in [1]    

   offsprings=BoundaryControl(offsprings,low,up); % see Algorithm-3 in [1]

   % SELECTON-II

   fitnessoffsprings=feval(fnc,offsprings,mydata);

   ind=fitnessoffsprings<fitnesspop;

   fitnesspop(ind)=fitnessoffsprings(ind);

   pop(ind,:)=offsprings(ind,:);

   [globalminimum,ind]=min(fitnesspop);    

   globalminimizer=pop(ind,:);

   % EXPORT SOLUTIONS

   assignin('base','globalminimizer',globalminimizer);

   assignin('base','globalminimum',globalminimum);

   fprintf('BSA|%5.0f -----> %9.16f\n',epk,globalminimum);

end

return

function pop=GeneratePopulation(popsize,dim,low,up)

pop=ones(popsize,dim);

for i=1:popsize

   for j=1:dim

       pop(i,j)=rand*(up(j)-low(j))+low(j);

   end

end

return

function pop=BoundaryControl(pop,low,up)

[popsize,dim]=size(pop);

for i=1:popsize

   for j=1:dim                

       k=rand<rand; % you can change boundary-control strategy

       if pop(i,j)<low(j), if k, pop(i,j)=low(j); else pop(i,j)=rand*(up(j)-low(j))+low(j); end, end        

       if pop(i,j)>up(j),  if k, pop(i,j)=up(j);  else pop(i,j)=rand*(up(j)-low(j))+low(j); end, end        

   end

end

return

function F=get_scale_factor % you can change generation strategy of scale-factor,F    

    F=3*randn; % STANDARD brownian-walk

   % F=4*randg;  % brownian-walk    

   % F=lognrnd(rand,5*rand);  % brownian-walk              

   % F=1/normrnd(0,5);        % pseudo-stable walk (levy-like)

   % F=1./gamrnd(1,0.5);      % pseudo-stable walk (levy-like, simulates inverse gamma distribution; levy-distiribution)  

return

3 运行结果

image.gif编辑

image.gif编辑

4 参考文献

[1]LI Sheng-jie. 基于回溯搜索优化算法的图像分割[J]. 新一代信息技术, 2019, 2(11):7.

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

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


相关文章
|
7天前
|
算法
基于WOA算法的SVDD参数寻优matlab仿真
该程序利用鲸鱼优化算法(WOA)对支持向量数据描述(SVDD)模型的参数进行优化,以提高数据分类的准确性。通过MATLAB2022A实现,展示了不同信噪比(SNR)下模型的分类误差。WOA通过模拟鲸鱼捕食行为,动态调整SVDD参数,如惩罚因子C和核函数参数γ,以寻找最优参数组合,增强模型的鲁棒性和泛化能力。
|
9天前
|
算法
基于GA遗传算法的PID控制器参数优化matlab建模与仿真
本项目基于遗传算法(GA)优化PID控制器参数,通过空间状态方程构建控制对象,自定义GA的选择、交叉、变异过程,以提高PID控制性能。与使用通用GA工具箱相比,此方法更灵活、针对性强。MATLAB2022A环境下测试,展示了GA优化前后PID控制效果的显著差异。核心代码实现了遗传算法的迭代优化过程,最终通过适应度函数评估并选择了最优PID参数,显著提升了系统响应速度和稳定性。
|
6天前
|
算法
基于WOA鲸鱼优化的购售电收益与风险评估算法matlab仿真
本研究提出了一种基于鲸鱼优化算法(WOA)的购售电收益与风险评估算法。通过将售电公司购售电收益风险计算公式作为WOA的目标函数,经过迭代优化计算出最优购电策略。实验结果表明,在迭代次数超过10次后,风险价值收益优化值达到1715.1万元的最大值。WOA还确定了中长期市场、现货市场及可再生能源等不同市场的最优购电量,验证了算法的有效性。核心程序使用MATLAB2022a实现,通过多次迭代优化,实现了售电公司收益最大化和风险最小化的目标。
|
10天前
|
算法
通过matlab分别对比PSO,反向学习PSO,多策略改进反向学习PSO三种优化算法
本项目使用MATLAB2022A版本,对比分析了PSO、反向学习PSO及多策略改进反向学习PSO三种优化算法的性能,主要通过优化收敛曲线进行直观展示。核心代码实现了标准PSO算法流程,加入反向学习机制及多种改进策略,以提升算法跳出局部最优的能力,增强全局搜索效率。
|
6天前
|
算法
通过matlab对比遗传算法优化前后染色体的变化情况
该程序使用MATLAB2022A实现遗传算法优化染色体的过程,通过迭代选择、交叉和变异操作,提高染色体适应度,优化解的质量,同时保持种群多样性,避免局部最优。代码展示了算法的核心流程,包括适应度计算、选择、交叉、变异等步骤,并通过图表直观展示了优化前后染色体的变化情况。
|
3天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于深度学习网络的宝石类型识别算法matlab仿真
本项目利用GoogLeNet深度学习网络进行宝石类型识别,实验包括收集多类宝石图像数据集并按7:1:2比例划分。使用Matlab2022a实现算法,提供含中文注释的完整代码及操作视频。GoogLeNet通过其独特的Inception模块,结合数据增强、学习率调整和正则化等优化手段,有效提升了宝石识别的准确性和效率。
|
9天前
|
算法 5G 数据安全/隐私保护
基于MIMO系统的PE-AltMin混合预编码算法matlab性能仿真
本文介绍了基于交替最小化(AltMin)算法的混合预编码技术在MIMO系统中的应用。通过Matlab 2022a仿真,展示了该算法在不同信噪比下的性能表现。核心程序实现了对预编码器和组合器的优化,有效降低了硬件复杂度,同时保持了接近全数字预编码的性能。仿真结果表明,该方法具有良好的鲁棒性和收敛性。
23 8
|
8天前
|
算法 决策智能
基于遗传优化算法的TSP问题求解matlab仿真
本项目使用遗传算法解决旅行商问题(TSP),目标是在四个城市间找到最短路径。算法通过编码、选择、交叉、变异等步骤,在MATLAB2022A上实现路径优化,最终输出最优路径及距离。
|
13天前
|
机器学习/深度学习 算法 Serverless
基于WOA-SVM的乳腺癌数据分类识别算法matlab仿真,对比BP神经网络和SVM
本项目利用鲸鱼优化算法(WOA)优化支持向量机(SVM)参数,针对乳腺癌早期诊断问题,通过MATLAB 2022a实现。核心代码包括参数初始化、目标函数计算、位置更新等步骤,并附有详细中文注释及操作视频。实验结果显示,WOA-SVM在提高分类精度和泛化能力方面表现出色,为乳腺癌的早期诊断提供了有效的技术支持。
|
10天前
|
算法
基于大爆炸优化算法的PID控制器参数寻优matlab仿真
本研究基于大爆炸优化算法对PID控制器参数进行寻优,并通过Matlab仿真对比优化前后PID控制效果。使用MATLAB2022a实现核心程序,展示了算法迭代过程及最优PID参数的求解。大爆炸优化算法通过模拟宇宙大爆炸和大收缩过程,在搜索空间中迭代寻找全局最优解,特别适用于PID参数优化,提升控制系统性能。

热门文章

最新文章