基于MATLAB的几种图像分割算法
最大类间方差法:基本思路是根据直方图以某一会灰度为阈值将图像分割成两部分,计算两组的方差,当被分成的两组之间的方差最大时,这个灰度为阈值灰度值
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的几种图像分割算法相关推荐
- 转载:基于MATLAB的几种图像分割算法
基于MATLAB的几种图像分割算法 转载自:https://blog.csdn.net/bentleydelll/article/details/82456150 最大类间方差法 基本思路是根据直方图 ...
- 虹膜识别算法 matlab,基于MATLAB GUI 的虹膜识别算法测试平台
基于MATLAB GUI 的虹膜识别算法测试平台 田启川;潘泉;程咏梅;张洪才 [期刊名称]<计算机仿真> [年(卷),期]2006(023)002 [摘要]虹膜识别是一种重要的利用生物学 ...
- matlab人工选择阈值进行分割,基于MATLAB的图像阈值分割算法的研究
[摘要]:图像分割是一种重要的数字图像处理技术.本文首先介绍了图像分割技术,其次总结了目前图像分割技术中所用到的阈值.边缘检测.区域提取等方法以及分水岭算法.针对各种阈值分割算法,本文在最后做了详细的 ...
- matlab 压缩感知矩阵_【精读】基于MATLAB的钢筋下料优化算法
基于MATLAB的钢筋下料优化算法 摘要:运用MATLAB软件求解实际工程中一维钢筋下料优化的问题,提出了首先列举出单根原料分割的所有可行解,其次采用线性规划的方法求出理想条件下最优方案,最后通过整数 ...
- 【单目标优化求解】基于matlab增强型黑猩猩优化器算法求解单目标优化问题【含Matlab源码 2013期】
⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[单目标优化求解]基于matlab增强型黑猩猩优化器算法求解单目标优化问题[含Matlab源码 2013期] 点击上面蓝色字体,直接付费下 ...
- 【聚类算法】基于matlab划分法k-means聚类算法【含Matlab源码 1941期】
一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[聚类算法]基于matlab划分法k-means聚类算法[含Matlab源码 1941期] 点击上面蓝色字体,直接付费下载,即可. 获取代码 ...
- 基于matlab GUI Powell+蚁群算法图像配准
基于matlab GUI Powell+蚁群算法图像配准 一.简介 1 蚁群算法(ant colony algorithm,ACA)起源和发展历程 Marco Dorigo等人在研究新型算法的过程中, ...
- 基于MATLAB GUI的蚁群算法路径规划实现电动汽车充电站与换电站协调
基于MATLAB GUI的蚁群算法路径规划实现电动汽车充电站与换电站协调 摘要: 随着电动汽车的普及和发展,电动汽车充电站与换电站的布局和规划变得尤为重要.本文基于MATLAB GUI平台,结合蚁群算 ...
- 基于连通域字符分割的流程_基于连通域的快速文字图像分割算法
基于连通域的快速文字图像分割算法 林孜阳 ; 穆雪 ; 吴凯锋 ; 严寒 ; 林怡芳 [期刊名称] <计算机光盘软件与应用> [年 ( 卷 ), 期] 2014(000)022 [摘要] ...
最新文章
- 4 个 MySQL 优化工具 AWR,帮你准确定位数据库瓶颈!
- 2015年浪潮面试题
- android alert,Android AlertDialog的基本使用
- AtCoder AGC001D Arrays and Palindrome (构造)
- Socket网络协议之一
- 深度学习之基于DCGAN实现手写数字生成
- Android之项目中如何用好构建神器Gradle?
- 求余和取模的计算公式
- Ubuntu上可使用的15个桌面环境
- sublime html乱码,HTML5 sublime 编码出现乱码怎么处理
- Android源码编译到/data/app方法
- 生活随记 - 2020国庆第八天
- 台达伺服控制器接线图_伺服电机如何接线图
- 【Azure 应用服务】App Service 开启了私有终结点(Private Endpoint)模式后,如何来实现公网Git部署呢?
- PS常用快捷键操作记录
- 程序员为什么单身?细数程序员六宗罪
- 一键root大师 android,一键Root大师
- 【电子学会】2021年12月图形化四级 -- 棕熊大战
- android+ue设计原则,【岗位课】移动端UI/UE设计湿
- 【云原生 | Kubernetes 实战】18、K8s 安全实战篇之 RBAC 认证授权(上)