关键词:
⛄一、粒子群算法自适应多阈值图像分割简介
FCM聚类算法是一种局部搜索算法,对初始值较为敏感,容易陷入局部极小值而不能得到全局最优解。PSO算法是一种基于群体的具有全局寻优能力的优化方法。本文将FCM聚类算法和PSO算法结合起来,将FCM聚类算法的聚类准则函数作为PSO算法中的粒子适应度函数,具体步骤如下:
(1)读入待分割图像I;给定阈值数m作为粒子具有的特征数;确定粒子群的群体规模N,学习因子c1、c2,惯性权重wmax、wmin,迭代的最大次数T。
(2)初始化粒子群S0=Xi0|i=1,2,…,N,其中每个粒子初始位置为Xi0=(x0i1,x0i2,…,x0im),每个粒子初始速度为Vi0=(v0i1,v0i2,…,v0im),m为粒子具有的特征数;取t=0。
(3)根据式(3)计算待分割图像I各像素对每个聚类中心的隶属度。
(4)根据式(1)评价群体中的粒子。计算粒子的适应度值,如果优于该粒子当前个体极值,则将pbestt设置为该粒子的位置,且更新个体极值;如果群体中所有粒子的个体极值中最优的优于群体当前的极值,则将设gbestt置为群体中个体极值中最优的位置,且更新群体极值。
(5)粒子更新,用式(5)和式(6)对所有粒子的速度和位置更新。
(6)终止条件判断:如果t<T,令t=t+1,转到步骤(3);否则,转到步骤(7)。
(7)根据群体最优的gbest结果对图像I进行分割,输出结果。
⛄二、部分源代码
%% -------------------------------------------------------------------------------
clear;
clc;
close all;
warning(‘off’);
% Loading
img=imread(‘fat.jpg’);
img=im2double(img);
imgtemp=img;
img = histeq(img);
gray=rgb2gray(img);
gray=imadjust(gray);
% Reshaping image to vector
X=gray(😃;
%% Starting PSO Segmentation
k = 2; % Number of segments
%---------------------------------------------------
CostFunction=@(m) ClusterCost(m, X); % Cost Function
VarSize=[k size(X,2)]; % Decision Variables Matrix Size
nVar=prod(VarSize); % Number of Decision Variables
VarMin= repmat(min(X),k,1); % Lower Bound of Variables
VarMax= repmat(max(X),k,1); % Upper Bound of Variables
%% PSO Parameters
MaxIt = 50; % Maximum Number of Iterations
nPop = 5; % Population Size (Swarm Size)
% PSO Parameters
w = 1; % Inertia Weight
wdamp = 0.99; % Inertia Weight Damping Ratio
c1 = 1.5; % Personal Learning Coefficient
c2 = 2.0; % Global Learning Coefficient
% Velocity Limits
VelMax = 0.1*(VarMax-VarMin);
VelMin = -VelMax;
%% Initialization
empty_particle.Position = [];
empty_particle.Cost = [];
empty_particle.Out = [];
empty_particle.Velocity = [];
empty_particle.Best.Position = [];
empty_particle.Best.Cost = [];
empty_particle.Best.Out = [];
particle = repmat(empty_particle, nPop, 1);
GlobalBest.Cost = inf;
for i = 1:nPop
% Initialize Position
particle(i).Position = unifrnd(VarMin, VarMax, VarSize);
% Initialize Velocity
particle(i).Velocity = zeros(VarSize);
% Evaluation
[particle(i).Cost particle(i).Out] = CostFunction(particle(i).Position);
% Update Personal Best
particle(i).Best.Position = particle(i).Position;
particle(i).Best.Cost = particle(i).Cost;
particle(i).Best.Out=particle(i).Out;
% Update Global Best
if particle(i).Best.Cost<GlobalBest.Cost
GlobalBest = particle(i).Best;
end
⛄三、运行结果
⛄四、matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
[1]许永峰,张书玲.多阈值图像分割的模糊粒子群优化算法[J].计算机工程与应用. 2008,(11)
3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除
基于标记的分水岭分割算法
Opencv分水岭算法——watershed自动图像分割用法OpenCV距离变换distanceTransform应用图像分割在图像处理中占有重要地位,也是图像识别的基础。通常需要在进行图像分割算法前找到轮廓或分割线,因此传统的分割算法主要集中在边缘... 查看详情
opencv+cpp系列(三十)基于距离变换与分水岭的图像分割
文章目录一、图像分割二、距离变换与分水岭三、演示一、图像分割图像分割概述【详情请点击】图像分割(ImageSegmentation)是图像处理最重要的处理手段之一图像分割的目标是将图像中像素根... 查看详情
图像分割基于matlab粒子群算法和ostu和分水岭和k-means脂肪肝水平识别含matlab源码2397期
⛄一、粒子群算法自适应多阈值图像分割简介FCM聚类算法是一种局部搜索算法,对初始值较为敏感,容易陷入局部极小值而不能得到全局最优解。PSO算法是一种基于群体的具有全局寻优能力的优化方法。本文将FCM聚类算法和PSO算法... 查看详情
基于分水岭算法的图像分割-matlab版本
✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。 查看详情
opencv实战——基于分水岭算法的图像分割(代码片段)
OpenCV实战——基于分水岭算法的图像分割0.前言1.分水岭算法2.分水岭算法直观理解3.完整代码相关链接0.前言分水岭变换是一种流行的图像处理算法,用于快速将图像分割成同质区域。分水岭变换主要基于以下思想:当图... 查看详情
图像分割——分水岭算法
...图像中的目标物体是连接在一起的,则分割起来很困难,分水岭分割算法经常用于处理这类问题,通常会取得比较好的效果。嵌牛鼻子:图像分割、分水岭算法嵌牛提问:分水岭算法具体有哪些步骤?嵌牛正文:一、综述分水岭... 查看详情
图像分割算法
...割方法基于阈值的分割方法基于区域的图像分割方法基于分水岭算法的图像分割基于边缘检测的分割方法图像分割介绍图像分割(imagesegmentation)技术是计算机视觉领域的个重要的研究方向,是图像语义理解的重要一... 查看详情
opencv—python分水岭算法图像分割
....distanceTransform(src,distanceType,maskSize)1.2基于标记的分水岭分割功能1.3示例代码二、分水岭方法一、功能与函数介绍分水岭算法是一种图像区域分割法,在分割的过程中,它会把跟临近像素间的相似性... 查看详情
matlab应用实战系列(七十五)-图像处理应用matlab实现基于分水岭算法的图像分割(附matlab代码)(代码片段)
一、简介二、源代码clear, close all;clc;%1.读取图像并求取图像的边界。rgb = imread(\'tree.jpeg\');%读取原图像I = rgb2gray(rgb);%转化为灰度图像figure; subplot(121)%显示灰度图像imshow(I)text(732,501,\'Imagecou 查看详情
opencv图像处理之——分水岭算法的图像分割(代码片段)
OpenCV图像处理之——分水岭算法的图像分割1.效果图2.原理3.源码参考这篇博客将介绍如何使用分水岭算法进行基于标记的图像分割,OpenCV通过cv2.watershed()实现;1.效果图官方示例——水果分割效果图如下:共分了8块... 查看详情
形态学滤波:使用分水岭算法对图像进行分割
一、分水岭算法 分水岭变换是一个流行的图像处理算法,用于快速分割图像为同类区域。它背后的原理是,将图像视为拓扑结构的地图,那么均质区域对应的是被陡峭边缘包围的平坦盆地。实现方法: 分水岭分割的结果... 查看详情
基于kmeans聚类算法的图像分割(色彩分割)实战(代码片段)
基于Kmeans聚类算法的图像分割(色彩分割)实战图像分割是将一幅图像分割成多个像素区域的任务。属于同一对象类型的所有像素都被分配到同一类别下。图像分类是给一副完整的图像一个类别,目标检测是检测到图像中的所有... 查看详情
基于聚类的图像分割(python)
作者|小白来源| 小白学视觉了解图像分割当我们在做一个图像分类任务时,首先我们会想从图像中捕获感兴趣的区域,然后再将其输入到模型中。让我们尝试一种称为基于聚类的图像分割技术,它会帮助我们在一定... 查看详情
python图像处理丨基于k-means聚类的图像区域分割(代码片段)
摘要:本篇文章主要讲解基于理论的图像分割方法,通过K-Means聚类算法实现图像分割或颜色分层处理。本文分享自华为云社区《[Python图像处理]十九.图像分割之基于K-Means聚类的区域分割》,作者:eastmount。本篇... 查看详情
基于k-means聚类算法的图像分割和基于机器学习的图像二元分类
基于K-means聚类算法的图像分割:https://www.jianshu.com/p/11d7cde4944d 直线检测。。 查看详情
图像处理matlab应用实战系列(九十七)-基于对比度限制自适应直方图均衡化和分水岭变换实现细胞图像分割(代码片段)
读入图片Img=imread(\'nuclei.png\');imshow(Img)二值化adapthisteq:使用限制对比度的自适应直方图均衡化(CLAHE)来变换值,从而增强灰度图像的对比度I_eq=adapthisteq(Img);imshow(I_eq);bw=imbinarize(I_eq,graythresh(I_eq));%二值化imshow(bw)adapthisteq过后二值化 查看详情
matlab应用实战系列(七十五)-图像处理应用matlab实现基于分水岭算法的图像分割(附matlab代码)(代码片段)
一、简介二、源代码clear, close all;clc;%1.读取图像并求取图像的边界。rgb = imread(\'tree.jpeg\');%读取原图像I = rgb2gray(rgb);%转化为灰度图像figure; subplot(121)%显示灰度图像imshow(I)text(732,501,\'ImagecourtesyofCorel\',\'Fon... 查看详情
1.5:基于聚类的“图像分割”实例编写(代码片段)
...K-Means函数里,然后给像素添加不同的灰度并输出。 图像分割常用方法:1.阈值分割:对图像灰度值进行度量,设置不同类别的阈值,达到分割的目的。2.边缘分割:对图像边缘进行检测,即检测图像中灰度值发生跳变的地方... 查看详情