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中的__new__()方法的使用
Apr 09 Python
在主机商的共享服务器上部署Django站点的方法
Jul 22 Python
Python聚类算法之凝聚层次聚类实例分析
Nov 20 Python
最大K个数问题的Python版解法总结
Jun 16 Python
python解决方案:WindowsError: [Error 2]
Aug 28 Python
详解如何在python中读写和存储matlab的数据文件(*.mat)
Feb 24 Python
python在html中插入简单的代码并加上时间戳的方法
Oct 16 Python
基于python指定包的安装路径方法
Oct 27 Python
python中dir()与__dict__属性的区别浅析
Dec 10 Python
pandas数据筛选和csv操作的实现方法
Jul 02 Python
Python 如何在字符串中插入变量
Aug 01 Python
利用python3筛选excel中特定的行(行值满足某个条件/行值属于某个集合)
Sep 04 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
用php将任何格式视频转为flv的代码
2009/09/03 PHP
php的一些小问题
2010/07/03 PHP
详解PHP神奇又有用的Trait
2019/03/25 PHP
解决laravel5.4下的group by报错的问题
2019/10/16 PHP
常用js脚本
2006/12/03 Javascript
Prototype1.6 JS 官方下载地址
2007/11/30 Javascript
更优雅的事件触发兼容
2011/10/24 Javascript
Json和Jsonp理论实例代码详解
2013/11/15 Javascript
jquery如何实现锚点链接之间的平滑滚动
2013/12/02 Javascript
jQuery(js)获取文字宽度(显示长度)示例代码
2013/12/31 Javascript
jquery中ready()函数执行的时机和window的load事件比较
2015/06/22 Javascript
JS实现的另类手风琴效果网页内容切换代码
2015/09/08 Javascript
jQuery实现的简单提示信息插件
2015/12/08 Javascript
jQuery插件Validate实现自定义校验结果样式
2016/01/18 Javascript
javascript回到顶部特效
2016/07/30 Javascript
利用JS判断鼠标移入元素的方向
2016/12/11 Javascript
判断横屏竖屏(三种)
2017/02/13 Javascript
用React-Native+Mobx做一个迷你水果商城APP(附源码)
2017/12/25 Javascript
jquery ajaxfileuplod 上传文件 essyui laoding 效果【防止重复上传文件】
2018/05/26 jQuery
Angularjs Ng_repeat中实现复选框选中并显示不同的样式方法
2018/09/12 Javascript
js for终止循环 跳出多层循环
2018/10/04 Javascript
BootStrap table实现表格行拖拽效果
2018/12/01 Javascript
使用vue2.6实现抖音【时间轮盘】屏保效果附源码
2019/04/24 Javascript
JavaScript位置参数实现原理及过程解析
2020/09/14 Javascript
Python二分法搜索算法实例分析
2015/05/11 Python
python简单读取大文件的方法
2016/07/01 Python
python数据抓取分析的示例代码(python + mongodb)
2017/12/25 Python
python 3.7.0 下pillow安装方法
2018/08/27 Python
基于Python第三方插件实现西游记章节标注汉语拼音的方法
2020/05/22 Python
vscode配置anaconda3的方法步骤
2020/08/08 Python
网络事业创业计划书范文
2014/01/09 职场文书
竞选大队干部演讲稿
2014/09/11 职场文书
法学专业大学生实习自我鉴定
2014/10/05 职场文书
2014年企业党建工作总结
2014/12/18 职场文书
mysql部分操作
2021/04/05 MySQL
单机多实例部署 MySQL8.0.20
2022/05/15 MySQL