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和php通信乱码问题解决方法
Apr 15 Python
python字符串排序方法
Aug 29 Python
改进Django中的表单的简单方法
Jul 17 Python
Python解析excel文件存入sqlite数据库的方法
Nov 15 Python
Pycharm+Scrapy安装并且初始化项目的方法
Jan 15 Python
python实现可逆简单的加密算法
Mar 22 Python
详解Python下载图片并保存本地的两种方式
May 15 Python
Python中模块(Module)和包(Package)的区别详解
Aug 07 Python
python中Lambda表达式详解
Nov 20 Python
Python网页解析器使用实例详解
May 30 Python
python多线程和多进程关系详解
Dec 14 Python
教你怎么用Python处理excel实现自动化办公
Apr 30 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性能优化的介绍
2013/06/20 PHP
PHP利用超级全局变量$_GET来接收表单数据的实例
2016/11/05 PHP
PHP载入图像imagecreatefrom_gif_jpeg_png系列函数用法分析
2016/11/14 PHP
laravel 解决groupBy时出现的错误 isn't in Group By问题
2019/10/17 PHP
javascript replace方法与正则表达式
2008/02/19 Javascript
jQuery AJAX 调用WebService实现代码
2010/03/24 Javascript
js getElementsByTagName的简写方式
2010/06/27 Javascript
jQuery.prototype.init选择器构造函数源码思路分析
2013/02/05 Javascript
用js设置下拉框为只读的小技巧
2014/04/10 Javascript
给应用部分的js代码设定一个统一的入口
2014/06/15 Javascript
Nodejs+express+html5 实现拖拽上传
2014/08/08 NodeJs
浅谈jQuery中的事件
2015/03/23 Javascript
深入理解JavaScript编程中的同步与异步机制
2015/06/24 Javascript
在JavaScript的jQuery库中操作AJAX的方法讲解
2015/08/15 Javascript
jquery操作checkbox火狐下第二次无法勾选的解决方法
2016/10/10 Javascript
nodejs集成sqlite使用示例
2017/06/05 NodeJs
微信小程序Redux绑定实例详解
2017/06/07 Javascript
lhgcalendar时间插件限制只能选择三个月的实现方法
2017/07/03 Javascript
javaScript之split与join的区别(详解)
2017/11/08 Javascript
了解javascript中变量及函数的提升
2019/05/27 Javascript
vue keep-alive 动态删除组件缓存的例子
2019/11/04 Javascript
Vue 微信端扫描二维码苹果端却只能保存图片问题(解决方法)
2020/01/19 Javascript
python 安装virtualenv和virtualenvwrapper的方法
2017/01/13 Python
python初学之用户登录的实现过程(实例讲解)
2017/12/23 Python
为什么入门大数据选择Python而不是Java?
2018/03/07 Python
python 日期排序的实例代码
2019/07/11 Python
Python 实现自动获取种子磁力链接方式
2020/01/16 Python
Python同时迭代多个序列的方法
2020/07/28 Python
日本AOKI官方商城:AOKI西装
2020/06/11 全球购物
会计电算化专业个人的自我评价
2013/11/24 职场文书
饮料业务员岗位职责
2013/12/15 职场文书
毕业生个人投资创业计划书
2014/01/04 职场文书
舞蹈比赛获奖感言
2014/02/04 职场文书
《唯一的听众》教学反思
2014/02/20 职场文书
幼儿园开学家长寄语(2016春季)
2015/12/03 职场文书
javascript数组includes、reduce的基本使用
2021/07/02 Javascript