Python图像滤波处理操作示例【基于ImageFilter类】


Posted in Python onJanuary 03, 2019

本文实例讲述了Python图像滤波处理操作。分享给大家供大家参考,具体如下:

在图像处理中,经常需要对图像进行平滑、锐化、边界增强等滤波处理。在使用PIL图像处理库时,我们通过Image类中的成员函数filter()来调用滤波函数对图像进行滤波,而滤波函数则通过ImageFilter类来定义的。

下面先直接看一个样例:

#-*- coding: UTF-8 -*-
from PIL import Image
from PIL import ImageFilter
def image_filters_test():
  im = Image.open("lena.jpg")
  #预定义的图像增强滤波器
  im_blur = im.filter(ImageFilter.BLUR)
  im_contour = im.filter(ImageFilter.CONTOUR)
  im_min = im.filter(ImageFilter.MinFilter(3))
  im.show()
  im_blur.show()
  im_contour.show()
  im_min.show()
  return
image_filters_test()

ImageFilter类中预定义了如下滤波方法:

BLUR:模糊滤波

CONTOUR:轮廓滤波

DETAIL:细节滤波

EDGE_ENHANCE:边界增强滤波

EDGE_ENHANCE_MORE:边界增强滤波(程度更深)

EMBOSS:浮雕滤波

FIND_EDGES:寻找边界滤波

SMOOTH:平滑滤波

SMOOTH_MORE:平滑滤波(程度更深)

SHARPEN:锐化滤波

• GaussianBlur(radius=2):高斯模糊

>radius指定平滑半径。

 UnsharpMask(radius=2, percent=150, threshold=3):反锐化掩码滤波

>radius指定模糊半径;

>percent指定反锐化强度(百分比);

>threshold控制被锐化的最小亮度变化。

• Kernel(size, kernel, scale=None, offset=0):核滤波

当前版本只支持核大小为3x3和5x5的核大小,且图像格式为“L”和“RGB”的图像。

>size指定核大小(width, height);

>kernel指定核权值的序列;

>scale指定缩放因子;

>offset指定偏移量,如果使用,则将该值加到缩放后的结果上。

• RankFilter(size, rank):排序滤波

>size指定滤波核的大小;

>rank指定选取排在第rank位的像素,若大小为0,则为最小值滤波;若大小为size * size / 2则为中值滤波;若大小为size * size - 1则为最大值滤波。

• MedianFilter(size=3):中值滤波

>size指定核的大小

• MinFilter(size=3):最小值滤波器

>size指定核的大小

• MaxFilter(size=3):最大值滤波器

>size指定核的大小

• ModeFilter(size=3):波形滤波器

选取核内出现频次最高的像素值作为该点像素值,仅出现一次或两次的像素将被忽略,若没有像素出现两次以上,则保留原像素值。

>size指定核的大小

原图lena.jpg如下:

Python图像滤波处理操作示例【基于ImageFilter类】

上例的滤波处理结果如下:

Python图像滤波处理操作示例【基于ImageFilter类】

更多关于Python相关内容可查看本站专题:《Python数学运算技巧总结》、《Python图片操作技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python中for循环详解
Jan 17 Python
如何搜索查找并解决Django相关的问题
Jun 30 Python
零基础学Python(一)Python环境安装
Aug 20 Python
python去除文件中空格、Tab及回车的方法
Apr 12 Python
Python设计模式之门面模式简单示例
Jan 09 Python
VSCode下配置python调试运行环境的方法
Apr 06 Python
教你利用Python玩转histogram直方图的五种方法
Jul 30 Python
python+opencv实现摄像头调用的方法
Jun 22 Python
python增加图像对比度的方法
Jul 12 Python
Numpy将二维数组添加到空数组的实现
Dec 05 Python
python os模块在系统管理中的应用
Jun 22 Python
python开发制作好看的时钟效果
May 02 Python
python 调用有道api接口的方法
Jan 03 #Python
对python调用RPC接口的实例详解
Jan 03 #Python
Python图像的增强处理操作示例【基于ImageEnhance类】
Jan 03 #Python
Python多图片合并PDF的方法
Jan 03 #Python
python对于requests的封装方法详解
Jan 03 #Python
python使用suds调用webservice接口的方法
Jan 03 #Python
Python调用服务接口的实例
Jan 03 #Python
You might like
php实现字符串翻转的方法
2015/03/27 PHP
PHP5.3以上版本安装ZendOptimizer扩展
2015/03/27 PHP
PHP 7.1新特性的汇总介绍
2016/12/16 PHP
php使用flock阻塞写入文件和非阻塞写入文件的实例讲解
2017/07/10 PHP
用javascript实现的图片马赛克后显示并切换加文字功能
2007/04/21 Javascript
javascript mouseover、mouseout停止事件冒泡的解决方案
2009/04/07 Javascript
javascript的渐进增强与平稳退化浅谈
2013/11/12 Javascript
js jquery分别实现动态的文件上传操作按钮的添加和删除
2014/01/13 Javascript
AngularJS 输入验证详解及实例代码
2016/07/28 Javascript
canvas 实现中国象棋
2017/02/17 Javascript
JavaScript登录记住密码操作(超简单代码)
2017/03/22 Javascript
vue组件父子间通信之综合练习(聊天室)
2017/11/07 Javascript
vue防止花括号{{}}闪烁v-text和v-html、v-cloak用法示例
2019/03/13 Javascript
JS实现查找数组中对象的属性值是否存在示例
2019/05/24 Javascript
Vue商品控件与购物车联动效果的实例代码
2019/07/21 Javascript
vue.js实现二级菜单效果
2019/10/19 Javascript
JS数据类型(基本数据类型、引用数据类型)及堆和栈的区别分析
2020/03/04 Javascript
[01:34]DOTA2 7.22版本新增神杖效果一览(敏捷英雄篇)
2019/05/28 DOTA
Python多进程并发(multiprocessing)用法实例详解
2015/06/02 Python
python实现在pandas.DataFrame添加一行
2018/04/04 Python
Python3.5 创建文件的简单实例
2018/04/26 Python
Python的bit_length函数来二进制的位数方法
2019/08/27 Python
python脚本之一键移动自定格式文件方法实例
2019/09/02 Python
解决python使用list()时总是报错的问题
2020/05/05 Python
查看keras各种网络结构各层的名字方式
2020/06/11 Python
Jupyter Notebook安装及使用方法解析
2020/11/12 Python
Python模拟登录requests.Session应用详解
2020/11/17 Python
女性时尚网购:Chic Me
2019/07/30 全球购物
介绍一下Python下range()函数的用法
2013/11/07 面试题
雏鹰争章活动总结
2014/05/09 职场文书
婚育证明格式
2015/06/17 职场文书
高一英语教学反思
2016/03/03 职场文书
Java实现房屋出租系统详解
2021/10/05 Java/Android
Vue监视数据的原理详解
2022/02/24 Vue.js
Android开发之WECHAT微信小程序路由跳转的两种形式
2022/04/12 Java/Android
vue.js 使用原生js实现轮播图
2022/04/26 Vue.js