PIL图像处理方法总结

#-*- coding: UTF-8 -*-     
from PIL import Image
from PIL import ImageFilter
import numpy  as np
from matplotlib import pyplot as plt
def image_filters():
    plt.rcParams['font.sans-serif']=['SimHei']
    plt.rcParams['axes.unicode_minus'] = False
    img_data = Image.open("timg.jpeg")
     
    #0,原始图像
    fig = plt.figure(figsize=(10,25))#创建多个子图
    fig.add_subplot(3,4,1)
    plt.title("原图")
    plt.imshow(img_data )

    #1,mageFilter.DETAIL为细节增强滤波,会使得图像中细节更加明显。
    deltail = img_data.filter(ImageFilter.DETAIL)
    fig.add_subplot(3,4,2)
    plt.title("增强滤波")
    plt.imshow(deltail )

    #2, #BLUR就是均值滤波,ImageFilter.BLUR为模糊滤波,处理之后的图像会整体变得模糊。
    avg = img_data.filter(ImageFilter.BLUR)
    fig.add_subplot(3,4,3)
    plt.title("模糊滤波")
    plt.imshow(avg)
    
    #3,CONTOUR找轮廓,ImageFilter.CONTOUR为轮廓滤波,将图像中的轮廓信息全部提取出来。
    contour = img_data.filter(ImageFilter.CONTOUR)
    fig.add_subplot(3,4,4)
    plt.title("轮廓滤波")
    plt.imshow(contour)

    #4,#FIND_EDGES边缘检测,突出、加强和改善图像中不同灰度区域之间的边界和轮廓的图像增强方法
    edge = img_data.filter(ImageFilter.FIND_EDGES)
    fig.add_subplot(3,4,5)
    plt.title("边缘检测")
    plt.imshow(edge)


    #5,ImageFilter.EDGE_ENHANCE_MORE为深度边缘增强滤波,会使得图像中边缘部分更加明显。
    edge_more = img_data.filter(ImageFilter.EDGE_ENHANCE_MORE)
    fig.add_subplot(3,4,6)
    plt.title("深度增强滤波")
    plt.imshow(edge_more)

    #6,ImageFilter.EMBOSS为浮雕滤波,会使图像呈现出浮雕效果。
    emboss = img_data.filter(ImageFilter.EMBOSS)
    fig.add_subplot(3,4,7)
    plt.title("浮雕滤波")
    plt.imshow(emboss)

    #7,ImageFilter.SMOOTH为平滑滤波,突出图像的宽大区域、低频成分、主干部分或抑制图像噪声和干扰高频成分,使图像亮度平缓渐变,减小突变梯度,改善图像质量。
    smooth = img_data.filter(ImageFilter.SMOOTH)
    fig.add_subplot(3,4,8)
    plt.title("平滑滤波")
    plt.imshow(smooth )

    #8,ImageFilter.SMOOTH_MORE为深度平滑滤波,会使得图像变得更加平滑。
    smooth_more = img_data.filter(ImageFilter.SMOOTH_MORE)
    fig.add_subplot(3,4,9)
    plt.title("深度平滑滤波")
    plt.imshow(smooth_more )

    #9,ImageFilter.SHARPEN为锐化滤波,补偿图像的轮廓,增强图像的边缘及灰度跳变的部分,使图像变得清晰。
    sharpen = img_data.filter(ImageFilter.SHARPEN)
    fig.add_subplot(3,4,10)
    plt.title("锐化滤波")
    plt.imshow(sharpen)

    #10,ImageFilter.EDGE_ENHANCE为边缘增强滤波,突出、加强和改善图像中不同灰度区域之间的边界和轮廓的图像增强方法。经处理使得边界和边缘在图像上表现为图像灰度的突变,用以提高人眼识别能力。
    edge_enhance= img_data.filter(ImageFilter.EDGE_ENHANCE)
    fig.add_subplot(3,4,11)
    plt.title("边缘增强滤波")
    plt.imshow(edge_enhance)

    plt.show()

def Kernel_filters():
    plt.rcParams['font.sans-serif']=['SimHei']
    plt.rcParams['axes.unicode_minus'] = False
    #0,原始图像
    pic =Image.open("timg.jpeg")
    fig = plt.figure(figsize=(10,25))#创建多个子图
    fig.add_subplot(2,4,1)
    plt.title("原图")
    plt.imshow(pic)

    #1,Kernel(size,kernel, scale=None, offset=0)如果设置了变量scale,那将卷积核作用于每个像素值之后的数据,都需要除以这个变量。默认值为卷积核的权重之和。
    image=pic.filter(ImageFilter.Kernel((3,3),(1,1,1,0,0,0,2,0,2)))
    fig.add_subplot(2,4,2)
    plt.title("Kernel")
    plt.imshow(image)

    #2,RankFilter(size,rank)于输入图像的每个像素点,等级滤波器根据像素值,在(size,size)的区域中对所有像素点进行排序,然后拷贝对应等级的值存储到输出图像中。
    #在每个像素点为中心的nxn区域nxn个像素点中选择排序第y位的像素作为新的值。
    image=pic.filter(ImageFilter.RankFilter(3,6))
    fig.add_subplot(2,4,3)
    plt.title("Kernel1")
    plt.imshow(image)

    #MinFilter(size=3)
    #生成给定尺寸的最小滤波器。对于输入图像的每个像素点,该滤波器从(size,size)的区域中拷贝最小的像素值存储到输出图像中。
    image=pic.filter(ImageFilter.MinFilter(5))
    fig.add_subplot(2,4,4)
    plt.title("min")
    plt.imshow(image)

    #MaxFilter(size=3)
    #生成给定尺寸的最大滤波器。对于输入图像的每个像素点,该滤波器从(size,size)的区域中拷贝最小的像素值存储到输出图像中。
    image=pic.filter(ImageFilter.MinFilter(7))
    fig.add_subplot(2,4,5)
    plt.title("max")
    plt.imshow(image)


    #MedianFilter(size=3)
    #生成给定尺寸的中值滤波器。对于输入图像的每个像素点,该滤波器从(size,size)的区域中拷贝中值对应的像素值存储到输出图像中。
    image=pic.filter(ImageFilter.MedianFilter(3))
    fig.add_subplot(2,4,6)
    plt.title("中值滤波")
    plt.imshow(image)


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

    image=pic.filter(ImageFilter.ModeFilter(3))
    fig.add_subplot(2,4,7)
    plt.title("模式滤波")
    plt.imshow(image)
    plt.show()
    
image_filters()
Kernel_filters()

在这里插入图片描述

在这里插入图片描述

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

佐倉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值