当前位置: 首页 > news >正文

matlab hsi图像分割_图像分割之阈值分割(matlab)

e9af43e5a8ea954ece39cced85aed0d3.png

图像分割是一种重要的图像处理的技术。

对于数字图像,我们往往会对他们中的某一部分感兴趣,这些部分我们称为前景或者目标, 其余部分称为背景。为了识别和分析图像中的目标,我们需要把他们从图像中提取出来,在此基础上对图像进行进一步的处理和应用,图像分割就是为了实现这个过程。

一.阈值分割法

1.灰度阈值法分割

灰度阈值分割就是把图像灰度分成不同的等级,然后确定灰度,门阈值的方法。灰度阈值分割其实就是二值化处理,即:选择一个阈值,将图像转化为黑白二值图像,用于图像分割以及边缘提取。

显然,图像阈值化处理是一种阶梯函数,属于图像灰度级的非线性运算,该变换函数曲线如图所示。它的功能是由用户指定一个阈值, 如果图像中某个像素的灰度值大于该阈值,则将该像素的灰度值置为255,否则将其灰度值置为0。

e5f2a174264f49c3c472cbd2a0cc7c59.png

输入一张图像,并用imhist函数显示他的直方图。

dee2f8db77e63c398704f1479783ee47.png

从理论上来讲,以直方图双峰之间的谷底处灰度值作为阈值进行图像的阈值化处理,即可将目标和背景分割开来。

下面对他们进行图像分割

运行-如下代码

  f=imread('ll.png');
f1=im2bw(f,91/255);
f2=im2bw(f,140/255);
f3=im2bw(f,120/255);
f4=im2bw(f,56/255);
subplot(2,2,1);imshow(f1);
subplot(2,2,2);imshow(f2);
subplot(2,2,3);imshow(f3);
subplot(2,2,4);imshow(f4);

be13aaf01ac763ffda7a5bcc6af2e859.png

可以看到,在图像分割的过程中,阈值不宜选的过大或者过小,都会大大影响分割的效果,所以,在使用阈值分割的过程中,阈值的选择很重要,但是使用直方图的方法不容易确定出合适的阈值,这时候我们就要使用科学的方法来确定,通常我们有以下几种方法来确定:

  • 最小误差阈值
  • 最大方差阈值
  • 最佳阈值法
  • 差别分析法

涉及科学计算的知识大家可以自行查阅资料掌握,下面我们重点讲述全局阈值法和局部阈值法分割。全局阈值法作为更先进的算法,可以直接算出阈值来,然后进行图像分割。

  1. 全局阈值分割

运行如下代码

  I=imread('coins.png');
  subplot(1,2,1);
  imshow(I);
  Level = graythresh(I);  %求取二值化的阈值
  BW = im2bw(I, level);   %按阈值进行二值化
  subplot(1,2,2);
  imshow(BW);

9f7e509eede78d634ee155eb53a7c2b7.png

2.局部阈值分割

这里采用一张我自己用手机拍的图片为例,对它进行局部阈值处理

n = imread('renjiancihua.jpg');
f=rgb2gray(n);
T = graythresh(f);                          % 自动获取阈值
T = T*255;                                  % 阈值在区间[0,1],需调整至[0,255]
g = f<=T;
subplot(1,2,1);imshow(f);title('原图像');
subplot(1,2,2);imshow(g);title(['阈值处理,阈值为' num2str(T)]);

39646959d1ae793d8d59739165916909.png

今天的分享就到这里,后续在图像分割这一块会更新边缘检测,区域生长,区域分割有关内容。

相关文章:

  • imx6 配置串口波特率_STM32F103 串口的使用方法
  • 十天征服单片机百度云_单片机学习「1」 初始51单片机
  • jpa删除数据后数据库无修改_Java编程第46讲——强大、奇妙的数据库操作工具JPA...
  • 有赞小程序源码_有赞小程序商城怎么开通,如何收费?
  • docker pycharm 连接_七、连Pycharm都不知道怎么用,学什么Python
  • github图片_通过这个 Go 项目搭建一个图片服务器竟然这么简单
  • pecs_神奇的PECS是什么?看看BCaBA教师们怎么说
  • 仿生蛇类机器人 特点_仿生科技成为机器人技术发展最快的领域之一
  • ue4 曲线图实现 蓝图_UE4[蓝图]只需一秒!最速实现【二段跳】
  • 临键锁如何实现幻读_阿里面试:如何用Redis实现分布式锁?
  • 相机裁剪旋转_测试版的Windows 10相机应用程序开始支持文档扫描
  • eve战巡族伤害_新版本各族3级战巡资料【纯手打】
  • 索尼的hlg是什么_hlg(索尼hlg和slog的区别)
  • 卷积过滤器的宽度_02卷积层与池化层中的核与过滤器
  • yum mysql5.5_yum安装mysql5.5及修改root密码
  • 03Go 类型总结
  • 3.7、@ResponseBody 和 @RestController
  • CentOS从零开始部署Nodejs项目
  • PermissionScope Swift4 兼容问题
  • PHP 7 修改了什么呢 -- 2
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • vue.js框架原理浅析
  • Vue.js源码(2):初探List Rendering
  • 代理模式
  • 服务器之间,相同帐号,实现免密钥登录
  • 给第三方使用接口的 URL 签名实现
  • 思考 CSS 架构
  • 通过git安装npm私有模块
  • 网络应用优化——时延与带宽
  • 微信小程序--------语音识别(前端自己也能玩)
  • python最赚钱的4个方向,你最心动的是哪个?
  • 数据库巡检项
  • ​一些不规范的GTID使用场景
  • # 数据结构
  • #android不同版本废弃api,新api。
  • #define,static,const,三种常量的区别
  • #pragam once 和 #ifndef 预编译头
  • $con= MySQL有关填空题_2015年计算机二级考试《MySQL》提高练习题(10)
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (20050108)又读《平凡的世界》
  • (2022 CVPR) Unbiased Teacher v2
  • (8)STL算法之替换
  • (pojstep1.1.2)2654(直叙式模拟)
  • (二)换源+apt-get基础配置+搜狗拼音
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (转)http-server应用
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • ../depcomp: line 571: exec: g++: not found