python数字图像处理之图像自动阈值分割示例


Posted in Python onJune 28, 2022

引言

图像阈值分割是一种广泛应用的分割技术,利用图像中要提取的目标区域与其背景在灰度特性上的差异,把图像看作具有不同灰度级的两类区域(目标区域和背景区域)的组合,选取一个比较合理的阈值,以确定图像中每个像素点应该属于目标区域还是背景区域,从而产生相应的二值图像。

在skimage库中,阈值分割的功能是放在filters模块中。

我们可以手动指定一个阈值,从而来实现分割。也可以让系统自动生成一个阈值,下面几种方法就是用来自动生成阈值。

1、threshold_otsu

基于Otsu的阈值分割方法,函数调用格式:

skimage.filters.threshold_otsu(image, nbins=256)

参数image是指灰度图像,返回一个阈值。

from skimage import data,filters
import matplotlib.pyplot as plt
image = data.camera()
thresh = filters.threshold_otsu(image)   #返回一个阈值
dst =(image <= thresh)*1.0   #根据阈值进行分割
plt.figure('thresh',figsize=(8,8))
plt.subplot(121)
plt.title('original image')
plt.imshow(image,plt.cm.gray)
plt.subplot(122)
plt.title('binary image')
plt.imshow(dst,plt.cm.gray)
plt.show()

返回阈值为87,根据87进行分割得下图:

python数字图像处理之图像自动阈值分割示例

2、threshold_yen

使用方法同上:

thresh = filters.threshold_yen(image)

返回阈值为198,分割如下图:

python数字图像处理之图像自动阈值分割示例

3、threshold_li

使用方法同上:

thresh = filters.threshold_li(image)

返回阈值64.5,分割如下图:

python数字图像处理之图像自动阈值分割示例

4、threshold_isodata

阈值计算方法:

threshold = (image[image <= threshold].mean() +image[image > threshold].mean()) / 2.0

使用方法同上:

thresh = filters.threshold_isodata(image)

返回阈值为87,因此分割效果和threshold_otsu一样。

5、threshold_adaptive

调用函数为:

skimage.filters.threshold_adaptive(image, block_size, method='gaussian')

block_size: 块大小,指当前像素的相邻区域大小,一般是奇数(如3,5,7。。。)

method: 用来确定自适应阈值的方法,有'mean', 'generic', 'gaussian' 和 'median'。

省略时默认为gaussian

该函数直接访问一个阈值后的图像,而不是阈值。

from skimage import data,filters
import matplotlib.pyplot as plt
image = data.camera()
dst =filters.threshold_adaptive(image, 15) #返回一个阈值图像
plt.figure('thresh',figsize=(8,8))
plt.subplot(121)
plt.title('original image')
plt.imshow(image,plt.cm.gray)
plt.subplot(122)
plt.title('binary image')
plt.imshow(dst,plt.cm.gray)
plt.show()

python数字图像处理之图像自动阈值分割示例

大家可以修改block_size的大小和method值来查看更多的效果。如:

dst1 =filters.threshold_adaptive(image,31,'mean') 
dst2 =filters.threshold_adaptive(image,5,'median')

两种效果如下:

python数字图像处理之图像自动阈值分割示例

以上就是python数字图像处理之图像自动阈值分割示例的详细内容,更多关于python数字图像自动阈值分割的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
在Python中使用__slots__方法的详细教程
Apr 28 Python
Python中在for循环中嵌套使用if和else语句的技巧
Jun 20 Python
Python 多线程Threading初学教程
Aug 22 Python
python 2.7.14安装图文教程
Apr 08 Python
解决python3 urllib 链接中有中文的问题
Jul 16 Python
Python解决走迷宫问题算法示例
Jul 27 Python
django框架使用views.py的函数对表进行增删改查内容操作详解【models.py中表的创建、views.py中函数的使用,基于对象的跨表查询】
Dec 12 Python
PyTorch 解决Dataset和Dataloader遇到的问题
Jan 08 Python
python3通过qq邮箱发送邮件以及附件
May 20 Python
实例讲解Python 迭代器与生成器
Jul 08 Python
详解Django中 render() 函数的使用方法
Apr 22 Python
Anaconda安装pytorch及配置PyCharm 2021环境
Jun 04 Python
Python 读取千万级数据自动写入 MySQL 数据库
Jun 28 #Python
python数字图像处理:图像简单滤波
Jun 28 #Python
python实现一个简单的贪吃蛇游戏附代码
python数字图像处理之对比度与亮度调整示例
Jun 28 #Python
python数字图像处理实现图像的形变与缩放
在python中读取和写入CSV文件详情
Jun 28 #Python
python数字图像处理之图像的批量处理
You might like
php环境无法上传文件的解决方法
2014/04/30 PHP
thinkPHP5.0框架整体架构总览【应用,模块,MVC,驱动,行为,命名空间等】
2017/03/25 PHP
ext监听事件方法[初级篇]
2008/04/27 Javascript
查看源码的工具 学习jQuery源码不错的工具
2011/12/26 Javascript
同域jQuery(跨)iframe操作DOM(示例代码)
2013/12/13 Javascript
javascript中局部变量和全局变量的区别详解
2015/02/27 Javascript
js实现搜索框关键字智能匹配代码
2020/03/26 Javascript
JavaScript代码因逗号不规范导致IE不兼容的问题
2016/02/25 Javascript
浅析Bootstrap缩略图组件与警示框组件
2016/04/29 Javascript
使用node.js中的Buffer类处理二进制数据的方法
2016/11/26 Javascript
浅谈jquery拼接字符串效率比较高的方法
2017/02/22 Javascript
移动端效果之Swiper详解
2017/10/09 Javascript
使用Bootrap和Vue实现仿百度搜索功能
2017/10/26 Javascript
轻量级JS Cookie插件js-cookie的使用方法
2018/03/22 Javascript
vue实现个人信息查看和密码修改功能
2018/05/06 Javascript
vue中v-model的应用及使用详解
2018/06/27 Javascript
js canvas实现橡皮擦效果
2018/12/20 Javascript
微信网页登录逻辑与实现方法
2019/04/29 Javascript
浅谈Vuex的this.$store.commit和在Vue项目中引用公共方法
2020/07/24 Javascript
[01:01:22]VGJ.S vs OG 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
python使用xlrd实现检索excel中某列含有指定字符串记录的方法
2015/05/09 Python
Python Socket使用实例
2017/12/18 Python
django框架模型层功能、组成与用法分析
2019/07/30 Python
python标准库sys和OS的函数使用方法与实例详解
2020/02/12 Python
new_zeros() pytorch版本的转换方式
2020/02/18 Python
python如何构建mock接口服务
2021/01/28 Python
Python操作Excel的学习笔记
2021/02/18 Python
CSS3中animation实现流光按钮效果
2020/12/21 HTML / CSS
全球最大的服务市场:Fiverr
2017/01/03 全球购物
中国一家综合的外贸B2C电子商务网站:DealeXtreme(DX)
2020/03/10 全球购物
护理专业学生的求职信范文
2013/12/11 职场文书
2014年教学工作总结
2014/11/13 职场文书
校长新学期致辞
2015/07/30 职场文书
Python代码,能玩30多款童年游戏!这些有几个是你玩过的
2021/04/27 Python
SpringBoot项目部署到阿里云服务器的实现步骤
2022/06/28 Java/Android
pytest实现多进程与多线程运行超好用的插件
2022/07/15 Python