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实现把回车符\r\n转换成\n
Apr 23 Python
Python中使用asyncio 封装文件读写
Sep 11 Python
shelve  用来持久化任意的Python对象实例代码
Oct 12 Python
使用Python绘制图表大全总结
Feb 11 Python
python 多个参数不为空校验方法
Feb 14 Python
Python 窗体(tkinter)按钮 位置实例
Jun 13 Python
通过PYTHON来实现图像分割详解
Jun 26 Python
pandas读取CSV文件时查看修改各列的数据类型格式
Jul 07 Python
flask框架url与重定向操作实例详解
Jan 25 Python
Python中Selenium库使用教程详解
Jul 23 Python
Django model重写save方法及update踩坑详解
Jul 27 Python
Pycharm 如何一键加引号的方法步骤
Feb 05 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加水印的代码(支持半透明透明打水印,支持png透明背景)
2013/01/17 PHP
PHP5.5安装PHPRedis扩展及连接测试方法
2017/01/22 PHP
Linux下安装Memcached服务器和客户端与PHP使用示例
2019/04/15 PHP
论坛特效代码收集(落伍转发-不错)
2006/12/02 Javascript
初窥JQuery(二) 事件机制(1)
2010/11/25 Javascript
js 表单提交后按钮变灰的实例代码
2013/08/16 Javascript
解析offsetHeight,clientHeight,scrollHeight之间的区别
2013/11/20 Javascript
JS获取屏幕,浏览器窗口大小,网页高度宽度(实现代码)
2013/12/17 Javascript
再次谈论Javascript中的this
2016/06/23 Javascript
JS实现添加,替换,删除节点元素的方法
2016/06/30 Javascript
微信小程序 出现47001 data format error原因解决办法
2017/03/10 Javascript
Bootstrap组件之下拉菜单,多级菜单及按钮布局方法实例
2017/05/25 Javascript
nodejs socket服务端和客户端简单通信功能
2017/09/14 NodeJs
浅谈node的事件机制
2017/10/09 Javascript
基于js中的存储键值对以及注意事项介绍
2018/03/30 Javascript
使用vue-cli导入Element UI组件的方法
2018/05/16 Javascript
js+canvas实现验证码功能
2020/09/21 Javascript
JavaScript引用类型RegExp基本用法详解
2018/08/09 Javascript
vue前后分离调起微信支付
2019/07/29 Javascript
微信小程序中悬浮窗功能的实现代码
2019/08/02 Javascript
Python实现栈和队列的简单操作方法示例
2019/11/29 Python
pytorch 彩色图像转灰度图像实例
2020/01/13 Python
Python实现自动访问网页的例子
2020/02/21 Python
探秘TensorFlow 和 NumPy 的 Broadcasting 机制
2020/03/13 Python
浅谈opencv自动光学检测、目标分割和检测(连通区域和findContours)
2020/06/04 Python
动物学专业毕业生求职信
2013/10/11 职场文书
入职担保书怎么写
2014/05/12 职场文书
农民工预备党员思想汇报
2014/09/14 职场文书
高一学年自我鉴定范文(3篇)
2014/09/26 职场文书
房屋转让协议书
2014/10/18 职场文书
客户经理岗位职责
2015/01/31 职场文书
汉语拼音教学反思
2016/02/22 职场文书
网络新闻该怎么写?这些写作技巧你都知道吗?
2019/08/26 职场文书
如何用python清洗文件中的数据
2021/06/18 Python
Python爬取用户观影数据并分析用户与电影之间的隐藏信息!
2021/06/29 Python
Python制作表白爱心合集
2022/01/22 Python