python filter过滤器的使用_Python图像处理之Pillow-ImageFilter

应老师的的要求,试用pillow把图像的边缘提取出来,其实就是简单的图片过滤(说的那么神乎)

ImageFilter:Python中的图像滤波,主要对图像进行平滑、锐化、边界增强等滤波处理。

过滤器,说直白一点,就是去除一些无用的信息,把那些有价值、重要的数据信息保留下来.

首先,安装Pillow,在虚拟环境中输入命令pip install Pillow

接下来,开始操作图像

pillow中有个module——ImageFilter,就叫图片过滤器,里面现成的图片加强过滤器有这么几个:

BLUR 模糊 CONTOUR 轮廓 DETAIL 细节 EDGE_ENHANCE 边缘强化 EMBOSS 浮雕 FIND_EDGES 边缘突出 SHARPEN 锐化(至于锐化的效果,这幅图不明显,不过线条是略有清晰的,和DETAIL差不多) SMOOTH 平滑(效果会把你的图片往一个中间值拉,让整张图看起来没那么突出,或者说更模糊?) SHARPEN(GaussianBlur(高斯模糊)、UnsharpMask(反锐化掩码滤波)、Kerne(卷积核滤波)、RankFilter(排序滤波)、MedianFilter(最小值滤波器)、MinFilter(中值滤波)、MaxFilter(最大值滤波)、ModeFilter(模式滤波))

代码:

from PIL import Image
from PIL import ImageFilter
im = Image.open('Unknown.jpg')
im1 = im.filter(ImageFilter.EMBOSS)
im1.save('find_edges.jpg')
im1.close()

效果展示

模糊:

a83083a52a9a87b4713cebdf6a88c523.png

轮廓:

8b9d3dfef7f030fb6f6cd55cc10853aa.png

细节:

a57dcfbb94aa860848d698cabe8a8129.png

边缘强化:

726b9a38e27ca447f24055c65f4ca06b.png


GaussianBlur:高斯模糊

 from PIL import Image, ImageFilter
im = Image.open('Unknown.jpg')
gbF = im.filter(ImageFilter.GaussianBlur(radius=10))
gbF.show()

UnsharpMask:反锐化掩码滤波

from PIL import Image, ImageFilter
im = Image.open('Unknown.jpg')
umF = im.filter(ImageFilter.UnsharpMask(radius=2, percent=150, threshold=3))
umF.show()

①radius:模糊半径

②percent:反锐化强度(百分比)

③threshold:被锐化的最小亮度


Kernel:卷积核滤波

from PIL import Image, ImageFilter
im = Image.open('Unknown.jpg')
kF = im.filter(ImageFilter.Kernel((3, 3), (1, 2, 2, 2, 0, 0, 1, 2, 2), scale=None, offset=10))
kF.show()

①size:核的大小(width, height)

②kernel:核权值序列如3*3的为(1, 2, 2, 2, 0, 0, 1, 2, 2)

③scale:缩放因子

④offset:偏移量(使用的话,则将该值加到缩放后的结果上)


RankFilter:排序滤波

对于输入图像的每个像素点,等级滤波器根据像素值,在(size,size)的区域中对所有像素点进行排序,然后拷贝对应等级的值存储到输出图像中

from PIL import Image, ImageFilter
im = Image.open('Unknown.jpg')
rfF = im.filter(ImageFilter.RankFilter(5, 8))
rfF.show()

①size:核的大小(width, height)

②rank:如例子,在每个像素点为中心的5x5区域25个像素点中选择排序第8位的像素作为新的值


MinFilter:最小值滤波器

对于输入图像的每个像素点,该滤波器从(size,size)的区域中拷贝最小的像素值存储到输出图像中

from PIL import Image, ImageFilter
im = Image.open('Unknown.jpg')
minF = im.filter(ImageFilter.MinFilter(5))
minF.show()

①size:核的大小(size=N)


MedianFilter:中值滤波

对于输入图像的每个像素点,该滤波器从(size,size)的区域中拷贝中值对应的像素值存储到输出图像中

from PIL import Image, ImageFilter
im = Image.open('Unknown.jpg')
medF = im.filter(ImageFilter.MedianFilter(5))
medF.show()

①size:核的大小(size=N)


MaxFilter:最大值滤波

对于输入图像的每个像素点,该滤波器从(size,size)的区域中拷贝最大的像素值存储到输出图像中

from PIL import Image, ImageFilter
im = Image.open('Unknown.jpg')
maxF = im.filter(ImageFilter.MaxFilter(5))
maxF.show()

①size:核的大小(size=N)


ModeFilter:模式滤波

对于输入图像的每个像素点,该滤波器从(size,size)的区域中拷贝出现次数最多的像素值存储到输出图像中。如果没有一个像素值出现过两次极其以上,则使用原始像素值。

from PIL import Image, ImageFilter
im = Image.open('Unknown.jpg')
modF = im.filter(ImageFilter.ModeFilter(5))
modF.show()

①size:核的大小(size=N)


剩下的效果大家可以自己去试试.,我就不再一一为大家展示了.保留一些神秘性,哈哈哈···

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值