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找出9个连续的空闲端口
Feb 01 Python
在Ubuntu系统下安装使用Python的GUI工具wxPython
Feb 18 Python
Python 中的lambda函数介绍
Oct 10 Python
Python 给某个文件名添加时间戳的方法
Oct 16 Python
用Python解决x的n次方问题
Feb 08 Python
Python面向对象程序设计中类的定义、实例化、封装及私有变量/方法详解
Feb 28 Python
实例讲解Python中整数的最大值输出
Mar 17 Python
运用PyTorch动手搭建一个共享单车预测器
Aug 06 Python
TensorFlow dataset.shuffle、batch、repeat的使用详解
Jan 21 Python
基于Tensorflow使用CPU而不用GPU问题的解决
Feb 07 Python
解决python的空格和tab混淆而报错的问题
Feb 26 Python
Python面试不修改数组找出重复的数字
May 20 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数组排序函数合集 以及它们之间的联系分析
2013/06/27 PHP
php 删除cookie方法详解
2014/12/01 PHP
php网页版聊天软件实现代码
2016/08/12 PHP
js 数组实现一个类似ruby的迭代器
2009/10/27 Javascript
打开新窗口关闭当前页面不弹出关闭提示js代码
2013/03/18 Javascript
jQuery设置div一直在页面顶部显示的方法
2013/10/24 Javascript
javascript中substring()、substr()、slice()的区别
2015/08/30 Javascript
总结JavaScript中布尔操作符||与&&的使用技巧
2015/11/17 Javascript
轻松掌握jQuery中wrap()与unwrap()函数的用法
2016/05/24 Javascript
BootStrap Typeahead自动补全插件实例代码
2016/08/10 Javascript
JavaScript 中调用 Kotlin 方法实例详解
2017/06/09 Javascript
使用JS判断移动端手机横竖屏状态
2018/07/30 Javascript
jQuery 操作 HTML 元素和属性的方法
2018/11/12 jQuery
node.js 基于cheerio的爬虫工具的实现(需要登录权限的爬虫工具)
2019/04/10 Javascript
vue设置动态请求地址的例子
2019/11/01 Javascript
JavaScript ES6 Class类实现原理详解
2020/05/08 Javascript
vue同个按钮控制展开和折叠同个事件操作
2020/07/29 Javascript
[14:24]Optic Gaming vs PSG LGD BO3
2018/06/07 DOTA
Python封装shell命令实例分析
2015/05/05 Python
使用Nginx+uWsgi实现Python的Django框架站点动静分离
2016/03/21 Python
python中hashlib模块用法示例
2017/10/30 Python
python3安装speech语音模块的方法
2018/12/24 Python
python代码实现逻辑回归logistic原理
2019/08/07 Python
python实现图片压缩代码实例
2019/08/12 Python
CSS3悬停效果案例应用
2012/11/21 HTML / CSS
浅谈html5增强的页面元素
2016/06/14 HTML / CSS
HTML块级标签汇总(小篇)
2016/07/13 HTML / CSS
Chantelle仙黛尔内衣美国官网:法国第一品牌内衣
2018/07/26 全球购物
小学数学教学反思
2014/02/02 职场文书
新郎婚礼答谢词
2015/01/04 职场文书
春节慰问信范文
2015/02/15 职场文书
单位工资证明范本
2015/06/12 职场文书
python numpy中multiply与*及matul 的区别说明
2021/05/26 Python
SpringBoot 集成Redis 过程
2021/06/02 Redis
CSS中实现动画效果-附案例
2022/02/28 HTML / CSS
Docker容器harbor私有仓库部署和管理
2022/08/05 Servers