python数字图像处理之高级滤波代码详解


Posted in Python onNovember 23, 2017

本文提供许多的滤波方法,这些方法放在filters.rank子模块内。

这些方法需要用户自己设定滤波器的形状和大小,因此需要导入morphology模块来设定。

1、autolevel

这个词在photoshop里面翻译成自动色阶,用局部直方图来对图片进行滤波分级。

该滤波器局部地拉伸灰度像素值的直方图,以覆盖整个像素值范围。

格式:skimage.filters.rank.autolevel(image, selem)

selem表示结构化元素,用于设定滤波器。

from skimage import data,color
import matplotlib.pyplot as plt
from skimage.morphology import disk
import skimage.filters.rank as sfr
img =color.rgb2gray(data.lena())
auto =sfr.autolevel(img, disk(5)) #半径为5的圆形滤波器

plt.figure('filters',figsize=(8,8))
plt.subplot(121)
plt.title('origin image')
plt.imshow(img,plt.cm.gray)

plt.subplot(122)
plt.title('filted image')
plt.imshow(auto,plt.cm.gray)

python数字图像处理之高级滤波代码详解

2、bottomhat 与 tophat

bottomhat: 此滤波器先计算图像的形态学闭运算,然后用原图像减去运算的结果值,有点像黑帽操作。

bottomhat: 此滤波器先计算图像的形态学开运算,然后用原图像减去运算的结果值,有点像白帽操作。

格式:

skimage.filters.rank.bottomhat(image, selem)

skimage.filters.rank.tophat(image, selem)

selem表示结构化元素,用于设定滤波器。

下面是bottomhat滤波的例子:

from skimage import data,color
import matplotlib.pyplot as plt
from skimage.morphology import disk
import skimage.filters.rank as sfr
img =color.rgb2gray(data.lena())
auto =sfr.bottomhat(img, disk(5)) #半径为5的圆形滤波器

plt.figure('filters',figsize=(8,8))
plt.subplot(121)
plt.title('origin image')
plt.imshow(img,plt.cm.gray)

plt.subplot(122)
plt.title('filted image')
plt.imshow(auto,plt.cm.gray)

python数字图像处理之高级滤波代码详解

3、enhance_contrast

对比度增强。求出局部区域的最大值和最小值,然后看当前点像素值最接近最大值还是最小值,然后替换为最大值或最小值。

函数: enhance_contrast(image, selem)

selem表示结构化元素,用于设定滤波器。

from skimage import data,color
import matplotlib.pyplot as plt
from skimage.morphology import disk
import skimage.filters.rank as sfr
img =color.rgb2gray(data.lena())
auto =sfr.enhance_contrast(img, disk(5)) #半径为5的圆形滤波器

plt.figure('filters',figsize=(8,8))
plt.subplot(121)
plt.title('origin image')
plt.imshow(img,plt.cm.gray)

plt.subplot(122)
plt.title('filted image')
plt.imshow(auto,plt.cm.gray)

python数字图像处理之高级滤波代码详解

4、entropy

求局部熵,熵是使用基为2的对数运算出来的。该函数将局部区域的灰度值分布进行二进制编码,返回编码的最小值。

函数格式:entropy(image, selem)

selem表示结构化元素,用于设定滤波器。

from skimage import data,color
import matplotlib.pyplot as plt
from skimage.morphology import disk
import skimage.filters.rank as sfr
img =color.rgb2gray(data.lena())
dst =sfr.entropy(img, disk(5)) #半径为5的圆形滤波器

plt.figure('filters',figsize=(8,8))
plt.subplot(121)
plt.title('origin image')
plt.imshow(img,plt.cm.gray)

plt.subplot(122)
plt.title('filted image')
plt.imshow(dst,plt.cm.gray)

python数字图像处理之高级滤波代码详解

5、equalize

均衡化滤波。利用局部直方图对图像进行均衡化滤波。

函数格式:equalize(image, selem)

selem表示结构化元素,用于设定滤波器。

from skimage import data,color
import matplotlib.pyplot as plt
from skimage.morphology import disk
import skimage.filters.rank as sfr
img =color.rgb2gray(data.lena())
dst =sfr.equalize(img, disk(5)) #半径为5的圆形滤波器

plt.figure('filters',figsize=(8,8))
plt.subplot(121)
plt.title('origin image')
plt.imshow(img,plt.cm.gray)

plt.subplot(122)
plt.title('filted image')
plt.imshow(dst,plt.cm.gray)

python数字图像处理之高级滤波代码详解

6、gradient

返回图像的局部梯度值(如:最大值-最小值),用此梯度值代替区域内所有像素值。

函数格式:gradient(image, selem)

selem表示结构化元素,用于设定滤波器。

from skimage import data,color
import matplotlib.pyplot as plt
from skimage.morphology import disk
import skimage.filters.rank as sfr
img =color.rgb2gray(data.lena())
dst =sfr.gradient(img, disk(5)) #半径为5的圆形滤波器

plt.figure('filters',figsize=(8,8))
plt.subplot(121)
plt.title('origin image')
plt.imshow(img,plt.cm.gray)

plt.subplot(122)
plt.title('filted image')
plt.imshow(dst,plt.cm.gray)

python数字图像处理之高级滤波代码详解

7、其它滤波器

滤波方式很多,下面不再一一详细讲解,仅给出核心代码,所有的函数调用方式都是一样的。

最大值滤波器(maximum):返回图像局部区域的最大值,用此最大值代替该区域内所有像素值。

dst =sfr.maximum(img, disk(5))

最小值滤波器(minimum):返回图像局部区域内的最小值,用此最小值取代该区域内所有像素值。

dst =sfr.minimum(img, disk(5))

均值滤波器(mean) : 返回图像局部区域内的均值,用此均值取代该区域内所有像素值。

dst =sfr.mean(img, disk(5))

中值滤波器(median): 返回图像局部区域内的中值,用此中值取代该区域内所有像素值。

dst =sfr.median(img, disk(5))

莫代尔滤波器(modal) : 返回图像局部区域内的modal值,用此值取代该区域内所有像素值。

dst =sfr.modal(img, disk(5))

otsu阈值滤波(otsu): 返回图像局部区域内的otsu阈值,用此值取代该区域内所有像素值。

dst =sfr.otsu(img, disk(5))

阈值滤波(threshhold): 将图像局部区域中的每个像素值与均值比较,大于则赋值为1,小于赋值为0,得到一个二值图像。

dst =sfr.threshold(img, disk(5))

减均值滤波(subtract_mean): 将局部区域中的每一个像素,减去该区域中的均值。

dst =sfr.subtract_mean(img, disk(5))

求和滤波(sum) :求局部区域的像素总和,用此值取代该区域内所有像素值。

dst =sfr.sum(img, disk(5))

总结

以上就是本文关于python数字图像处理之高级滤波代码详解的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:

如有不足之处,欢迎留言指出。

Python 相关文章推荐
python协程用法实例分析
Jun 04 Python
Python自定义一个类实现字典dict功能的方法
Jan 19 Python
Python 移动光标位置的方法
Jan 20 Python
python使用pygame模块实现坦克大战游戏
Mar 25 Python
python对csv文件追加写入列的方法
Aug 01 Python
Numpy与Pytorch 矩阵操作方式
Dec 27 Python
Jupyter notebook 启动闪退问题的解决
Apr 13 Python
keras实现多种分类网络的方式
Jun 11 Python
python os模块在系统管理中的应用
Jun 22 Python
Pythonic版二分查找实现过程原理解析
Aug 11 Python
matplotlib实现数据实时刷新的示例代码
Jan 05 Python
如何利用python实现Simhash算法
Jun 28 Python
Python3网络爬虫之使用User Agent和代理IP隐藏身份
Nov 23 #Python
python网络爬虫之如何伪装逃过反爬虫程序的方法
Nov 23 #Python
Python实现的基数排序算法原理与用法实例分析
Nov 23 #Python
Scrapy抓取京东商品、豆瓣电影及代码分享
Nov 23 #Python
python简单图片操作:打开\显示\保存图像方法介绍
Nov 23 #Python
python分析作业提交情况
Nov 22 #Python
Python分析学校四六级过关情况
Nov 22 #Python
You might like
绿山咖啡和蓝山咖啡
2021/03/04 新手入门
使用PHP遍历文件夹与子目录的函数代码
2011/09/26 PHP
PHP中文件读、写、删的操作(PHP中对文件和目录操作)
2012/03/06 PHP
PHP的Laravel框架结合MySQL与Redis数据库的使用部署
2016/03/21 PHP
php实现微信公众平台发红包功能
2018/06/14 PHP
动态加载js文件 document.createElement
2006/10/14 Javascript
弹出广告特效代码(一个IP只弹出一次)
2007/05/11 Javascript
用JavaScript调用WebService的示例
2008/04/07 Javascript
从数据结构分析看:用for each...in 比 for...in 要快些
2013/04/17 Javascript
关于js数组去重的问题小结
2014/01/24 Javascript
JavaScript二维数组实现的省市联动菜单
2014/05/08 Javascript
javascript面向对象程序设计(一)
2015/01/29 Javascript
jQuery结合CSS制作漂亮的select下拉菜单
2015/05/03 Javascript
Jquery判断form表单数据是否变化
2016/03/30 Javascript
angular4 JavaScript内存溢出问题
2018/03/06 Javascript
JS使用Date对象实时显示当前系统时间简单示例
2018/08/23 Javascript
Layui数据表格之单元格编辑方式
2019/10/26 Javascript
Vue组件通信中非父子组件传值知识点总结
2019/12/05 Javascript
ES6学习笔记之let与const用法实例分析
2020/01/22 Javascript
python目录操作之python遍历文件夹后将结果存储为xml
2014/01/27 Python
pyenv命令管理多个Python版本
2017/03/26 Python
使用pandas将numpy中的数组数据保存到csv文件的方法
2018/06/14 Python
Python Django2.0集成Celery4.1教程
2019/11/19 Python
Keras框架中的epoch、bacth、batch size、iteration使用介绍
2020/06/10 Python
20佳惊艳的HTML5应用程序示例分享
2011/05/03 HTML / CSS
美国环保婴儿用品公司:The Honest Company
2017/11/23 全球购物
交通事故私了协议书
2014/04/16 职场文书
祖国在我心中演讲稿500字
2014/05/04 职场文书
学习党代会心得体会
2014/09/05 职场文书
党员倡议书
2015/01/19 职场文书
自主招生自荐信范文
2015/03/04 职场文书
农村党员干部承诺书
2015/05/04 职场文书
90条交通安全宣传标语
2019/10/12 职场文书
什么是检讨书?检讨书的格式及范文
2019/11/05 职场文书
golang中的并发和并行
2021/05/08 Golang
详解nginx进程锁的实现
2021/06/14 Servers