由于成像系统、传输介质和记录设备等的不完善,数字图像在其形成、传输记录过程中往往会受到多种噪声的污染。另外,在图像处理的某些环节当输入的像对象并不如预想时也会在结果图像中引入噪声。因此就有了图像滤镜的概念。
图像滤镜:在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制。
Python中常用Pillow库提供的ImageFilter对图像进行滤镜处理, 包含模糊、平滑、锐化、边界增强等滤镜效果的处理。
常用的Python滤镜主要有BLUR、CONTOUR、DETAIL、EDGE_ENHANCE、EDGE_ENHANCE_MORE、EMBOSS、FIND_EDGES、SMOOTH、SMOOTH_MORE、SHARPEN
具体定义及效果如下:
滤镜名称 | 含义 |
ImageFilter.BLUR | 模糊滤镜 |
ImageFilter.SHARPEN | 锐化滤镜 |
ImageFilter.SMOOTH | 平滑滤镜 |
ImageFilter.SMOOTH_MORE | 平滑滤镜(阀值更大) |
ImageFilter.EMBOSS | 浮雕滤镜 |
ImageFilter.FIND_EDGES | 边界滤镜 |
ImageFilter.EDGE_ENHANCE | 边界加强 |
ImageFilter.EDGE_ENHANCE_MORE | 边界加强(阀值更大) |
ImageFilter.CONTOUR | 轮廓 |
具体使用如下:
from PIL import Image, ImageFilter
image = Image.open('/Users/alice/Documents/Develop/PythonCode/imagetest.JPG')
# 打开指定路径的jpg图像文件
image = image.filter(ImageFilter.BLUR)
#模糊滤镜
image.save('/Users/alice/Documents/Develop/PythonCode/blur.JPG','jpeg')
#保存图片
如果希望针对一张地图制作多张不同滤镜效果的样本,则按一起处理并保存成不同标题的样本即可。
from PIL import Image, ImageFilter
image = Image.open('/Users/alice/Documents/Develop/PythonCode/imagetest.JPG')
# 打开指定路径下的jpg图像文件
image = image.filter(ImageFilter.BLUR)
#模糊滤镜
image.save('/Users/alice/Documents/Develop/PythonCode/blur.JPG','jpeg')
#保存图片
image = Image.open('/Users/alice/Documents/Develop/PythonCode/imagetest.JPG')
# 打开指定路径下的jpg图像文件
image = image.filter(ImageFilter.SHARPEN)
#锐化滤镜
image.save('/Users/alice/Documents/Develop/PythonCode/sharpen.JPG','jpeg')
image = Image.open('/Users/alice/Documents/Develop/PythonCode/imagetest.JPG')
# 打开指定路径下的jpg图像文件
image = image.filter(ImageFilter.SMOOTH)
#平滑滤镜
image.save('/Users/alice/Documents/Develop/PythonCode/smooth.JPG','jpeg')
image = Image.open('/Users/alice/Documents/Develop/PythonCode/imagetest.JPG')
# 打开指定路径下的jpg图像文件
image = image.filter(ImageFilter.SMOOTH_MORE)
#平滑滤镜(阀值更大)
image.save('/Users/alice/Documents/Develop/PythonCode/smoothmore.JPG','jpeg')
image = Image.open('/Users/alice/Documents/Develop/PythonCode/imagetest.JPG')
# 打开指定路径下的jpg图像文件
image = image.filter(ImageFilter.EMBOSS)
#浮雕滤镜
image.save('/Users/alice/Documents/Develop/PythonCode/emboss.JPG','jpeg')
image = Image.open('/Users/alice/Documents/Develop/PythonCode/imagetest.JPG')
# 打开指定路径下的jpg图像文件
image = image.filter(ImageFilter.FIND_EDGES)
#边界滤镜
image.save('/Users/alice/Documents/Develop/PythonCode/findedge.JPG','jpeg')
image = Image.open('/Users/alice/Documents/Develop/PythonCode/imagetest.JPG')
# 打开指定路径下的jpg图像文件
image = image.filter(ImageFilter.EDGE_ENHANCE)
#边界加强
image.save('/Users/alice/Documents/Develop/PythonCode/edgeenhance.JPG','jpeg')
image = Image.open('/Users/alice/Documents/Develop/PythonCode/imagetest.JPG')
# 打开指定路径下的jpg图像文件
image = image.filter(ImageFilter.EDGE_ENHANCE_MORE)
#边界加强(阀值更大)
image.save('/Users/alice/Documents/Develop/PythonCode/edgemore.JPG','jpeg')
image = Image.open('/Users/alice/Documents/Develop/PythonCode/imagetest.JPG')
# 打开指定路径下的jpg图像文件
image = image.filter(ImageFilter.CONTOUR)
#轮廓
image.save('/Users/alice/Documents/Develop/PythonCode/contour.JPG','jpeg')
原图为:
运行完成后生成的样本为:
具体每个图的效果为:
BOUR模糊:
sharpen锐化:
smooth平滑模糊:
smoothmore平滑模糊阈值更大:
emboss浮雕:
findedge边界滤镜:
edgehance边界增强:
edgehance_more边界增强更大阈值:
contour轮廓: