matlab中图像分割技术之二阈值分割
1.直方图双峰法
2.最大类间方差法
3.迭代法
阈值化图像分割是一种最基本的图像分割方法,其基本原理就是选取一个或多个处于灰度图像范围之中的灰度阈值,然后将图像中各个像素的灰度值与阈值比较,并根据比较的结果将图像中的对应像素分成两类或多类,从而把图像划分成互不重叠的区域集合,达成图像分割的目的。全局阈值分割和局部阈值分割两种。若根据分割算法常用的分割方法有图双峰法、最大类间方差法、迭代法等
一、直方图双峰法
该方法依据是图像的直方图,通过对直方图进行各种分析来实现对图像的分割。图像的直方图可以看作是像素灰度值概率分布密度函数的一个近似,假设一幅图像仅包含目标和背景,那么它的直方图所代表的像素灰度值概率密度分布函数实际上就是对应目标和背景的两个单峰分布密度函数的和。图像二值化过程就是在直方图上寻找两个峰、一个谷来对一个图像进行分割,也可以通过两级函数来近似直方图。
clc; %clc的作用就是清屏幕
clear; %clear是删除所有的变量
close all; %close all是将所有打开的图片关掉。
i=imread('E:\我的桌面\MATLAB\练习\4.jpg'); %读取图像
I=rgb2gray(i);
newI=im2bw(I,220/255); %双峰法
subplot(121),
imshow(I) ;
title('原图像')
subplot(122),
imshow(newI) ;
title('双峰法')
二、最大类间方差法
从统计意义上讲,方差是表征数据分布不均衡的统计量,可通过阈值对这类问题进行分割。最大类间方差法以图像的灰度直方图为依据,以目标和背景的类间方差最大为阈值选取准则,综合考虑了像素邻域以及图像整体灰度分布等特征关系,以经过灰度分类的像素类群之间产生最大方差时候的灰度数值作为图像的整体分割阈值。显然,适当的阈值使得两类数据间的方差越大越好,表明该阈值的确将两类不同的问题区分开了,同时希望属于同一类问题的数据之间的方差越小越好,表明同一类问题具有一定的相似性。
clc; %clc的作用就是清屏幕
clear; %clear是删除所有的变量
close all; %close all是将所有打开的图片关掉。
i=imread('E:\我的桌面\MATLAB\练习\2.jpg'); %读取图像
I=rgb2gray(i);
subplot(121),
imshow(I);
title('原始图像')
level=graythresh(I);
BW=im2bw(I, level); %最大类间方差法分割图像
subplot(122),
imshow(BW)
title('最大类间方差法分割图像')
disp(strcat('graythresh计算灰度阈值:', num2str(uint8(level*255))))
三、迭代法
迭代法选取阈值的方法为:初始阈值选取为图像的平均灰度T0,然后用T0∞将图像的像素点分作两部分,计算两部分各自的平均灰度,小于T0的部分为TA,大于T0的部分为TB,求TA和TB的平均值T1,将T1作为新的全局阈值代替T0,重复以上过程,如此迭代,直至Tk收敛。具体实现时,首先根据初始开关函数将输入图逐个图像分为前景和背景,在第一遍对图像扫描结束后,平均两个积分器的值以确定一个阈值。用这个阈值控制开关再次将输入图分为前景和背景,并用做新的开关函数。如此反复迭带直到开关函数不在发生变化,此时得到的前景和背景即为最终分割结果。
clc; %clc的作用就是清屏幕clear; %clear是删除所有的变量close all; %close all是将所有打开的图片关掉。i=imread('E:\我的桌面\MATLAB\练习\2.jpg'); %读取图像f=rgb2gray(i);subplot(121);imshow(f);title('原始图像');f=double(f); %下面进行迭代阈值二值化T=(min(f(:))+max(f(:)))/2;done=false;i=0;while ~doner1=find(f<=T);r2=find(f>T);Tnew=(mean(f(r1))+mean(f(r2)))/2;done=abs(Tnew-T)<1;T=Tnew;i=i+1;endf(r1)=0;f(r2)=1;subplot(122);imshow(f);title('迭代阈值二值化图像');
有时候几种方法可能取得是同一种效果。
matlab中图像分割技术之二阈值分割相关推荐
- matlab中图像分割技术之三分水岭分割法
分水岭算法是一种基于形态学的算法,是对图像的梯度分割.而图像分割的目的是将图像分割成不同的特体,即提取物体的边缘.由于物体边缘的灰度变换比较强烈,而梯度图像正好描述了图像的灰度变换情况.因此,可先 ...
- matlab中for循环设置二维数组,MATLAB中定义赋值一个二维数组
MATLAB中定义赋值一个二维数组 答: 分号:; 因特网能提供的最基本服务 答:E-mail, WWW, FTP 劳动合同中,用人单位给予劳动者低于当地工资最低水平的违反了()合法原则 答:内容合法 ...
- 怎样在matlab中写技术,rect矩形函数 matlab中怎样编写矩形函数
矩形函数的定义: 矩形函数 rect(t); 如果绝对值 |t| > 0.5 rect(t) = 0; 如果绝对值 |t| = 0.5 rect(t) = 0.5; 如果绝对值 |t| < ...
- MATLAB中怎样初始化(创建)二维、三维、四维以及多维矩阵,各维度的索引顺序是怎样的?
目录 1 在MATLAB中初始化二维矩阵 2 在MATLAB中初始化三维矩阵 3 在MATLAB中初始化四维矩阵 4 在MATLAB中初始化N维矩阵 1 在MATLAB中初始化二维矩阵 在MATLAB ...
- matlab函数im2bw_图像分割之阈值分割(matlab)(转载)
转载自:https://blog.csdn.net/weixin_39824223/article/details/112249214 matlab函数im2bw_图像分割之阈值分割(matlab) ...
- 【MATLAB教程案例23】基于MATLAB图像分割算法仿真——阈值分割法、Otsu阈值分割法、K均值聚类分割法等
FPGA教程目录 MATLAB教程目录 目录 1.软件版本 2.通过二值图实现图像分割 3.通过Otsu阈值分割实现图像分割
- matlab大津法函数,大津(Ostu)阈值分割方法在matlab中的实现
在matlab的image processing工具箱中,大津(Ostu)阈值分割方法有现成的函数实现 graythreshold GRAYTHRESH Global image threshold ...
- matlab大津法函数,matlab 大津阈值分割【相关词_ 大津法阈值分割matlab】
阈值法 阈值分割程序 Otsu Thresholding 赞(0) 踩(0) 收藏(0) 说明:大津法实现图像阈值分割的matlab源程序代码 (Otsu Thresholding Image sou ...
- tyvector在matlab中代表,MATLAB曲线绘制
信号源产生的方法 来源:http://www.2cto.com/kf/201401/270494.html matlab的checkerboard说明,GOOD! 来源:http://www.chi ...
最新文章
- phpstudy2018升级MySQL5.5为5.7.24教程(图文)
- Delphi中文件名函数-路径、名称、子目录、驱动器、扩展名
- 旅游网站的主页代码_一个在优化的网站主页内容应该如何设计?
- python 教程 网盘-python教程网盘
- 运筹学的课程笔记 markov decision process
- android中开启线程处理,Android线程与消息处理
- flask内置session原理
- 银行业务队列简单模拟(队列queue)
- linux下spark的python编辑_Linux下搭建Spark 的 Python 编程环境的方法
- Tensorflow Estimator之DNNClassifier
- Jscript中文变量乱码,又一次中招 _
- Windows Phone笔记(5)加速计和位置服务(转)
- 阿里云ubuntu服务器安装使用mysql并配置远程连接记录
- java学生管理系统论文_(定稿)毕业论文基于java的学生信息管理系统设计报告(完整版)最新版...
- thinkpad 机身清理
- MATLAB代码:基于分时电价条件下家庭能量管理策略研究
- Tomcat 配置文件详解
- 今天给大家分享的案例就是关于电影的啦,我们一起来看看IMDBtop10000的电影排行榜数据
- 这部纪录片带你重新认识中华神州大地,领略你不知道的中国
- python 输出第一行1个* 第二行3个* 第三行5个*