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中functools模块的常用函数解析
Jun 30 Python
Python使用getpass库读取密码的示例
Oct 10 Python
Python高级用法总结
May 26 Python
利用python库在局域网内传输文件的方法
Jun 04 Python
Python中 map()函数的用法详解
Jul 10 Python
浅析Python四种数据类型
Sep 26 Python
解决python测试opencv时imread导致的错误问题
Jan 26 Python
python中报错&quot;json.decoder.JSONDecodeError: Expecting value:&quot;的解决
Apr 29 Python
numpy数组之存取文件的实现示例
May 24 Python
处理Selenium3+python3定位鼠标悬停才显示的元素
Jul 31 Python
django数据模型(Model)的字段类型解析
Dec 25 Python
matplotlib部件之套索Lasso的使用
Feb 24 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性能优化分析工具XDebug 大型网站调试工具
2011/05/22 PHP
PHP在特殊字符前加斜杠的实现代码
2011/07/17 PHP
CentOS6.5 编译安装lnmp环境
2014/12/21 PHP
Zend Framework教程之连接数据库并执行增删查的方法(附demo源码下载)
2016/03/21 PHP
PHP5.2中PDO的简单使用方法
2016/03/25 PHP
PHP生成推广海报的方法分享
2018/04/22 PHP
PHP safe_mode开启对于PHP系统函数有什么影响
2020/11/10 PHP
PHP 出现 http500 错误的解决方法
2021/03/09 PHP
JS宝典学习笔记(下)
2007/01/10 Javascript
JS 控件事件小结
2012/10/31 Javascript
利用try-catch判断变量是已声明未声明还是未赋值
2014/03/12 Javascript
js 设置缓存及获取设置的缓存
2014/05/08 Javascript
jquery通过ajax加载一段文本内容的方法
2015/01/15 Javascript
input输入框鼠标焦点提示信息
2015/03/17 Javascript
JavaScript里四舍五入函数round用法实例
2015/04/06 Javascript
JS实现自动变换的菜单效果代码
2015/09/09 Javascript
用iframe实现不刷新整个页面上传图片的实例
2016/11/18 Javascript
JS中判断null的方法分析
2016/11/21 Javascript
ionic选择多张图片上传的示例代码
2017/10/10 Javascript
Angular angular-file-upload文件上传的示例代码
2018/08/23 Javascript
在Vue-cli里应用Vuex的state和mutations方法
2018/09/16 Javascript
提升node.js中使用redis的性能遇到的问题及解决方法
2018/10/30 Javascript
NVM安装nodejs的方法实用步骤
2019/01/16 NodeJs
微信小程序学习笔记之获取位置信息操作图文详解
2019/03/29 Javascript
VSCode Vue开发推荐插件和VSCode快捷键(小结)
2020/08/08 Javascript
Python实现自动添加脚本头信息的示例代码
2016/09/02 Python
python如何去除字符串中不想要的字符
2020/07/05 Python
selenium+python自动化测试之使用webdriver操作浏览器的方法
2019/01/23 Python
对python中矩阵相加函数sum()的使用详解
2019/01/28 Python
Python3.0中普通方法、类方法和静态方法的比较
2019/05/03 Python
python中删除某个元素的方法解析
2019/11/05 Python
python3.6、opencv安装环境搭建过程(图文教程)
2019/11/05 Python
python中K-means算法基础知识点
2021/01/25 Python
今冬明春火灾防控工作方案
2014/05/29 职场文书
搞笑的获奖感言
2014/08/16 职场文书
python开发人人对战的五子棋小游戏
2022/05/02 Python