最大类间方差法:基本思路是根据直方图以某一会灰度为阈值将图像分割成两部分,计算两组的方差,当被分成的两组之间的方差最大时,这个灰度为阈值灰度值

img = imread('C:\Users\dell\Desktop\前单图\3.3.JPG');%原图I_gray=rgb2gray(img);%转换为灰度图subplot(121),imshow(img);
%转换为双精度
I_double=double(I_gray);
[wid,len]=size(I_gray);%图像的大小
%灰度级
colorLevel=256;
%直方图
hist=zeros(colorLevel,1);
%计算直方图
for i=1:widfor j=1:lenm=I_gray(i,j)+1;%图像的灰度级mhist(m)=hist(m)+1;%灰度值为i的像素和end
end
%直方图归一化
hist=hist/(wid*len);%各灰度值概率 Pi
miuT=0;%定义总体均值
for m=1:colorLevelmiuT=miuT+(m-1)*hist(m);  %总体均值
end
xigmaB2=0;%
for mindex=1:colorLevelthreshold=mindex-1;%设定阈值omega1=0;%目标概率omega2=0;%背景概率for m=1:threshold-1omega1=omega1+hist(m);% 目标概率 W0endomega2=1-omega1; %背景的概率 W1miu1=0;%目标的平均灰度值miu2=0;%背景的平均灰度值for m=1:colorLevelif m<thresholdmiu1=miu1+(m-1)*hist(m);%目标 i*pi的累加值[1 threshold]elsemiu2=miu2+(m-1)*hist(m);%背景 i*pi的累加值[threshold m]endendmiu1=miu1/omega1;%目标的平均灰度值miu2=miu2/omega2;%背景的平均灰度值xigmaB21=omega1*(miu1-miuT)^2+omega2*(miu2-miuT)^2;%最大方差xigma(mindex)=xigmaB21;%先设定一个值 再遍历所有灰度级%找到xigmaB21的值最大if xigmaB21>xigmaB2finalT=threshold;%找到阈值 灰度级xigmaB2=xigmaB21;%方差为最大end
end
%阈值归一化
fT=finalT/255;
for i=1:widfor j=1:lenif I_double(i,j)>finalT %大于所设定的均值 则为目标bin(i,j)=0;elsebin(i,j)=1;endend
end
subplot(122),imshow(bin);

局部阈值算法: 主要应用于图像中有阴影,光照不均匀,各处的对比度不同,有突出噪声,背景灰度突变等

function bw=adaptivethreshold(IM,ws,C,tm)
% 功能:自适应图像分割
% IM-待分割的原始图像  ws平均滤波时的窗口大小
%C 常量 根据经验选择合适的参数
% tm -开关变量 1=中值滤波 0=均值滤波
%bw- 图像分割后的二值图像
%输入参数处理
if (nargin<3)error('You must provide the image IM, the window size ws, and C');
elseif(nargin==3)tm=0;elseif(tm~=0&&tm~=1)error('tm must be 0 or 1');
endIM=mat2gray(IM);if tm==0%图像均值滤波mIM=imfilter(IM,fspecial('average',ws),'replicate');else%图像进行中值滤波mIM=medfilt2(IM,[ws,ws]);endsIM=mIM-IM-C;bw=im2bw(sIM,0);bw=imcomplement(bw);

K-means均值法:是一种广泛的聚类方法

function [mu,mask]=kmeans(ima,k)
%功能·:运用K-means算法对图像进行分割
% 输入 ima-输入的灰度图像 K-分类数
%输出 mu -均值类向量  mask-分类后的图像
ima=double(ima);
copy=ima;
ima=ima(:);
mi=min(ima);%找到最小值
ima=ima-mi+1;
s=length(ima);%有多少灰度级
%计算图像灰度直方图
m=max(ima)+1;%图像最大灰度值
h=zeros(1,m);
hc=zeros(1,m);
for i=1:sif  (ima(i)>0)h(ima(i))=h(ima(i))+1;%灰度值i累加endend
ind =find(h);
h1=length(ind);
%初始化质心
mu=(1:k)*m/(k+1);
%start process
while(true)oldmu=mu;%现有的分类·for i=1:h1c=abs(ind(i)-mu);cc=find(c==min(c));hc(ind(i))=cc(1);end%重新计算均值for i=1:ka=find(hc==i)mu(i)=sum(a.*h(a))/sum(h(a));endif(mu==oldmu) break;end
end%计算生成分类后的图像
s=size(copy);
mask=zeros(s);
for i=1:s(1)for j=1:s(2)c=abs(copy(i,j)-mu);a=find(c==min(c));mask(i,j)=a(1);end
end
mu=mu+mi-1;

K-means均值效果图

详情请参考:《现代数字图像处理技术提高及应用案例详解》赵小川著

基于MATLAB的几种图像分割算法相关推荐

  1. 转载:基于MATLAB的几种图像分割算法

    基于MATLAB的几种图像分割算法 转载自:https://blog.csdn.net/bentleydelll/article/details/82456150 最大类间方差法 基本思路是根据直方图 ...

  2. 虹膜识别算法 matlab,基于MATLAB GUI 的虹膜识别算法测试平台

    基于MATLAB GUI 的虹膜识别算法测试平台 田启川;潘泉;程咏梅;张洪才 [期刊名称]<计算机仿真> [年(卷),期]2006(023)002 [摘要]虹膜识别是一种重要的利用生物学 ...

  3. matlab人工选择阈值进行分割,基于MATLAB的图像阈值分割算法的研究

    [摘要]:图像分割是一种重要的数字图像处理技术.本文首先介绍了图像分割技术,其次总结了目前图像分割技术中所用到的阈值.边缘检测.区域提取等方法以及分水岭算法.针对各种阈值分割算法,本文在最后做了详细的 ...

  4. matlab 压缩感知矩阵_【精读】基于MATLAB的钢筋下料优化算法

    基于MATLAB的钢筋下料优化算法 摘要:运用MATLAB软件求解实际工程中一维钢筋下料优化的问题,提出了首先列举出单根原料分割的所有可行解,其次采用线性规划的方法求出理想条件下最优方案,最后通过整数 ...

  5. 【单目标优化求解】基于matlab增强型黑猩猩优化器算法求解单目标优化问题【含Matlab源码 2013期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[单目标优化求解]基于matlab增强型黑猩猩优化器算法求解单目标优化问题[含Matlab源码 2013期] 点击上面蓝色字体,直接付费下 ...

  6. 【聚类算法】基于matlab划分法k-means聚类算法【含Matlab源码 1941期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[聚类算法]基于matlab划分法k-means聚类算法[含Matlab源码 1941期] 点击上面蓝色字体,直接付费下载,即可. 获取代码 ...

  7. 基于matlab GUI Powell+蚁群算法图像配准

    基于matlab GUI Powell+蚁群算法图像配准 一.简介 1 蚁群算法(ant colony algorithm,ACA)起源和发展历程 Marco Dorigo等人在研究新型算法的过程中, ...

  8. 基于MATLAB GUI的蚁群算法路径规划实现电动汽车充电站与换电站协调

    基于MATLAB GUI的蚁群算法路径规划实现电动汽车充电站与换电站协调 摘要: 随着电动汽车的普及和发展,电动汽车充电站与换电站的布局和规划变得尤为重要.本文基于MATLAB GUI平台,结合蚁群算 ...

  9. 基于连通域字符分割的流程_基于连通域的快速文字图像分割算法

    基于连通域的快速文字图像分割算法 林孜阳 ; 穆雪 ; 吴凯锋 ; 严寒 ; 林怡芳 [期刊名称] <计算机光盘软件与应用> [年 ( 卷 ), 期] 2014(000)022 [摘要] ...

最新文章

  1. 4 个 MySQL 优化工具 AWR,帮你准确定位数据库瓶颈!
  2. 2015年浪潮面试题
  3. android alert,Android AlertDialog的基本使用
  4. AtCoder AGC001D Arrays and Palindrome (构造)
  5. Socket网络协议之一
  6. 深度学习之基于DCGAN实现手写数字生成
  7. Android之项目中如何用好构建神器Gradle?
  8. 求余和取模的计算公式
  9. Ubuntu上可使用的15个桌面环境
  10. sublime html乱码,HTML5 sublime 编码出现乱码怎么处理
  11. Android源码编译到/data/app方法
  12. 生活随记 - 2020国庆第八天
  13. 台达伺服控制器接线图_伺服电机如何接线图
  14. 【Azure 应用服务】App Service 开启了私有终结点(Private Endpoint)模式后,如何来实现公网Git部署呢?
  15. PS常用快捷键操作记录
  16. 程序员为什么单身?细数程序员六宗罪
  17. 一键root大师 android,一键Root大师
  18. 【电子学会】2021年12月图形化四级 -- 棕熊大战
  19. android+ue设计原则,【岗位课】移动端UI/UE设计湿
  20. 【云原生 | Kubernetes 实战】18、K8s 安全实战篇之 RBAC 认证授权(上)

热门文章

  1. Codeforces Round #207 (Div. 2)C. Knight Tournament
  2. 搜狗输入法繁简体切换
  3. reac-hook的使用
  4. SaaS从业者必读:一文读懂如何衡量与优化SaaS公司的关键指标
  5. 财富自由之路-读后感
  6. Win7笔记本电脑启用虚拟WIFI共享上网
  7. indexedDB介绍
  8. openwrt移植到pb44---第一章(使用chaos_calmer)
  9. WNDR4300刷OpenWrt手记
  10. H5加速、WebView加速、Hybrid 常见方案对比