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 相关文章推荐
使用C语言来扩展Python程序和Zope服务器的教程
Apr 14 Python
Zabbix实现微信报警功能
Oct 09 Python
Python用sndhdr模块识别音频格式详解
Jan 11 Python
使用Python横向合并excel文件的实例
Dec 11 Python
使用python读取.text文件特定行的数据方法
Jan 28 Python
python安装numpy和pandas的方法步骤
May 27 Python
python 环境搭建 及python-3.4.4的下载和安装过程
Jul 20 Python
解决pycharm最左侧Tool Buttons显示不全的问题
Dec 17 Python
Tensorflow 多线程设置方式
Feb 06 Python
通过Python扫描代码关键字并进行预警的实现方法
May 24 Python
使用TensorBoard进行超参数优化的实现
Jul 06 Python
python OpenCV学习笔记
Mar 31 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数据库开发知多少
2006/10/09 PHP
php读取文件内容的方法汇总
2015/01/24 PHP
用php和jQuery来实现“顶”和“踩”的投票功能
2016/10/13 PHP
php实现文件预览功能
2017/05/23 PHP
php进行md5加密简单实例方法
2019/09/19 PHP
jQuery中live方法的重复绑定说明
2011/10/21 Javascript
JS实现点击链接取消跳转效果的方法
2014/01/24 Javascript
javascript 实现子父窗体互相传值的简单实例
2014/02/17 Javascript
jQuery中[attribute*=value]选择器用法实例
2014/12/31 Javascript
javascript事件冒泡实例分析
2015/05/13 Javascript
JS实现的鼠标跟随代码(卡通手型点击效果)
2015/10/26 Javascript
JS弹出层遮罩,隐藏背景页面滚动条细节优化分析
2016/04/29 Javascript
Nodejs中 npm常用命令详解
2016/07/04 NodeJs
浅析JavaScript中的array数组类型系统
2016/07/18 Javascript
深入浅析javascript中的作用域(推荐)
2016/07/19 Javascript
JS Select下拉框(支持输入模糊查询)
2017/02/04 Javascript
jQuery层级选择器实例代码
2017/02/06 Javascript
AngularJS实现图片上传和预览功能的方法分析
2017/11/08 Javascript
详解浏览器缓存和webpack缓存配置
2018/07/06 Javascript
Vue项目history模式下微信分享爬坑总结
2019/03/29 Javascript
JS前端模块化原理与实现方法详解
2020/03/17 Javascript
Python多线程编程(六):可重入锁RLock
2015/04/05 Python
python按行读取文件并找出其中指定字符串
2019/08/08 Python
详解Python实现进度条的4种方式
2020/01/15 Python
Kmeans均值聚类算法原理以及Python如何实现
2020/09/26 Python
Python数据分析库pandas高级接口dt的使用详解
2020/12/11 Python
真正了解CSS3背景下的@font face规则
2017/05/04 HTML / CSS
Staples加拿大官方网站:办公用品一站式采购
2016/09/25 全球购物
美国汽配连锁巨头Pep Boys官网:轮胎更换、汽车维修服务和汽车零部件
2017/01/14 全球购物
电信专业应届生自荐信
2013/09/28 职场文书
资金主管岗位职责范本
2014/03/04 职场文书
2015元旦晚会主持人开场白+结束语
2014/12/14 职场文书
时尚女魔头观后感
2015/06/04 职场文书
2015年食品安全宣传周活动总结
2015/07/09 职场文书
Mysql 文件配置解析介绍
2022/05/06 MySQL
Python+SeaTable实现计算两个日期间的工作日天数
2022/07/07 Python