Python PIL ImageFilter模块:10种内置滤波器与7个高级函数详解

Mia
Mia
发布时间:2026-10-13 | 5人浏览过
原创

本文详细介绍Python图像处理库PIL中ImageFilter模块的用法。涵盖BLUR、CONTOUR等10种内置滤波器,以及Kernel、RankFilter等7个高级函数。通过代码示例与效果对比,解析模糊、锐化、浮雕及中值滤波等技术的实现原理与参数配置,帮助开发者快速掌握图像预处理技巧。

ImageFilter模块概述

ImageFilter模块定义了多种滤波器,这些滤波器主要服务于Image类的filter()方法,用于对图像进行各种处理。

内置滤波器详解

一、ImageFilter模块支持的内置滤波器

在当前的PIL版本中,ImageFilter模块提供了十种常用的内置滤波器供选择:

1、BLUR(模糊滤波)

ImageFilter.BLUR用于实现图像的整体模糊效果,处理后图像会变得柔和且细节减少。

示例代码与效果如下:


>>> from PIL importImageFilter
>>> im02 =Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")
>>> im = im02.filter(ImageFilter.BLUR)

原始图像im02如下所示:

                          

经过模糊滤波处理后的图像im,其清晰度明显低于原始图像,具体对比见下图:

2、CONTOUR(轮廓滤波)

ImageFilter.CONTOUR用于提取图像中的轮廓信息,将图像转化为线条勾勒的轮廓图。

示例代码与效果如下:


>>>from PIL import ImageFilter
>>>im02 = Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")
>>> im= im02.filter(ImageFilter.CONTOUR)

处理后的图像im展示了提取出的轮廓信息,如下图所示:

3、DETAIL(细节增强滤波)

ImageFilter.DETAIL用于增强图像细节,使图像中的纹理和细微结构更加清晰可见。

示例代码与效果如下:


>>>from PIL import ImageFilter

>>>im02 = Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")

>>> im= im02.filter(ImageFilter.DETAIL)

处理后的图像im在细节表现上更加丰富,如下图所示:

4、EDGE_ENHANCE(边缘增强滤波)

ImageFilter.EDGE_ENHANCE通过突出和加强图像中不同灰度区域之间的边界,改善图像质量。处理后的图像边缘表现为灰度的突变,从而提升人眼对边缘的识别能力。

示例代码与效果如下:


>>>from PIL import ImageFilter

>>>im02 = Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")

>>> im= im02.filter(ImageFilter.EDGE_ENHANCE)

处理后的图像im突出了边缘信息,如下图所示:

5、EDGE_ENHANCE_MORE(深度边缘增强滤波)

ImageFilter.EDGE_ENHANCE_MORE是边缘增强的加强版,会使图像中的边缘部分更加显著和清晰。

示例代码与效果如下:


>>>from PIL import ImageFilter
>>>im02 = Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")
>>> im= im02.filter(ImageFilter.EDGE_ENHANCE_MORE)

处理后的图像im边缘特征更为强烈,如下图所示:

6、EMBOSS(浮雕滤波)

ImageFilter.EMBOSS用于生成浮雕效果,使图像呈现出具有立体感的浮雕外观。

示例代码与效果如下:


>>>from PIL import ImageFilter
>>>im02 = Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")
>>> im= im02.filter(ImageFilter.EMBOSS)

处理后的图像im呈现出明显的浮雕质感,如下图所示:

        

7、FIND_EDGES(寻找边缘滤波)

ImageFilter.FIND_EDGES用于检测并提取图像中的边缘信息,生成以边缘为主的图像。

示例代码与效果如下:


>>>from PIL import ImageFilter
>>>im02 = Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")
>>> im= im02.filter(ImageFilter.FIND_EDGES)

处理后的图像im仅保留了边缘信息,如下图所示:

8、SMOOTH(平滑滤波)

ImageFilter.SMOOTH用于突出图像的宽大区域、低频成分或主干部分,同时抑制噪声和高频干扰。该滤波使图像亮度平缓渐变,减小突变梯度,从而改善图像整体质量。

示例代码与效果如下:


>>>from PIL import ImageFilter
>>>im02 = Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")
>>> im= im02.filter(ImageFilter.SMOOTH)

处理后的图像im平滑度提升,如下图所示:

9、SMOOTH_MORE(深度平滑滤波)

ImageFilter.SMOOTH_MORE是平滑滤波的加强版,会使图像变得更加平滑,进一步消除细节。

示例代码与效果如下:


>>> from PIL importImageFilter
>>> im02 =Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")
>>> im =im02.filter(ImageFilter.SMOOTH_MORE)

处理后的图像im平滑效果更为彻底,如下图所示:

10、SHARPEN(锐化滤波)

ImageFilter.SHARPEN用于补偿图像轮廓,增强边缘及灰度跳变部分,从而使图像看起来更加清晰锐利。

示例代码与效果如下:


>>>from PIL import ImageFilter
>>> im02 =Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")
>>> im =im02.filter(ImageFilter.SHARPEN)

处理后的图像im清晰度得到提升,如下图所示:

高级滤波器函数

二、ImageFilter模块的高级函数

1、Kernel(卷积核)

定义:Kernel(size, kernel, scale=None, offset=0)

含义:(自1.1.5版本引入)生成指定尺寸的卷积核。当前版本中,size参数必须为(3, 3)或(5, 5)。kernel参数必须是一个包含9个或25个整数或浮点数的序列,其长度需与size对应。

若设置scale参数,卷积核作用于每个像素值后的结果将除以该变量。默认值为卷积核权重的总和。

若设置offset参数,该值将加到卷积核作用的结果上,然后再除以scale变量。

示例代码与效果如下:


>>>from PIL import ImageFilter
>>> im02 =Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")
>>> im=im02.filter(ImageFilter.Kernel((3,3),(1,1,1,0,0,0,2,0,2)))

处理后的图像im应用了自定义卷积核,如下图所示:

2、RankFilter(等级滤波器)

定义:RankFilter(size, rank)

含义:(自1.1.5版本引入)生成指定尺寸的等级滤波器。对于输入图像的每个像素点,该滤波器在(size, size)区域内对所有像素值进行排序,并将排序后对应等级rank的值复制到输出图像中。

示例代码与效果如下:


>>>from PIL import ImageFilter
>>>im02 = Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")
>>> im=im02.filter(ImageFilter.RankFilter(5,24))

处理后的图像im在5x5区域(共25个像素)中选取排序第24位的像素值作为新值,如下图所示:

3、MinFilter(最小滤波器)

定义:MinFilter(size=3)

含义:(自1.1.5版本引入)生成指定尺寸的最小滤波器。对于输入图像的每个像素点,该滤波器在(size, size)区域内选取最小的像素值复制到输出图像中。

示例代码与效果如下:


>>> from PIL importImageFilter
>>> im02 =Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")
>>> im=im02.filter(ImageFilter.MinFilter(5))

处理后的图像im在5x5区域(共25个像素)中选取最小像素值作为新值,如下图所示:

4、MedianFilter(中值滤波器)

定义:MedianFilter(size=3)

含义:(自1.1.5版本引入)生成指定尺寸的中值滤波器。对于输入图像的每个像素点,该滤波器在(size, size)区域内选取中值对应的像素值复制到输出图像中。

示例代码与效果如下:


>>>from PIL import ImageFilter
>>>im02 = Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")
>>> im=im02.filter(ImageFilter.MedianFilter(5))

处理后的图像im在5x5区域(共25个像素)中选取中值作为新值,如下图所示:

5、MaxFilter(最大滤波器)

定义:MaxFilter(size=3)

含义:(自1.1.5版本引入)生成指定尺寸的最大滤波器。对于输入图像的每个像素点,该滤波器在(size, size)区域内选取最大的像素值复制到输出图像中。

示例代码与效果如下:


>>>from PIL import ImageFilter
>>> im02 =Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")
>>> im=im02.filter(ImageFilter.MaxFilter(5))

处理后的图像im在5x5区域(共25个像素)中选取最大像素值作为新值,如下图所示:

6、ModeFilter(模式滤波器)

定义:ModeFilter(size=3)

含义:(自1.1.5版本引入)生成指定尺寸的模式滤波器。对于输入图像的每个像素点,该滤波器在(size, size)区域内选取出现次数最多的像素值复制到输出图像中。若没有像素值出现两次或以上,则保留原始像素值。

示例代码与效果如下:


>>>from PIL import ImageFilter
>>>im02 = Image.open("D:\\Code\\Python\\test\\img\\test02.jpg")
>>> im=im02.filter(ImageFilter.ModeFilter(5))

处理后的图像im在5x5区域(共25个像素)中选取出现频率最高的像素值作为新值,如下图所示:

以上为Python图像处理库PIL中ImageFilter模块的详细介绍,更多相关技术资料请持续关注本站后续文章。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表