• 纯Python综合图像处理小工具(2)图像增强


    <背景>

    这次分享的脚本是对图像进行增强处理,包含对图像像素的色彩增强、亮度增强、对比度增强、图像尖锐化等增强操作,主要基于PIL包的lambda和ImageEnhance模块。

    使用方法和上一贴一样,本文脚本进行了多项功能的集成,一键完成所有处理,图像会即刻显示处理后的效果,并全部保存成特定名称jpeg。

     下图是对处理后的图片的二维比较,为了更直观地比较,将处理项(亮度,颜色,对比度,锐度)作为横坐标,处理强度参数作为纵坐标(0,0.25,0.5,0.75,1)。当处理强度参数为1的时候,实际不对图像进行任何修改。

    <效果> 

    原图:

     

     

    处理后: 

    lambda增强40%(0.4)

     

    <源码分析> 

    本文用到的是PIL的图像增强模块,即ImageEnhance 模块,这个模块可以快速对图像进行增强处理,包括色彩增强、亮度增强、对比度增强、图像尖锐化等等增强操作,所有操作都有相同形式的接口。通过相应类的enhance方法实现:色彩增强通过Color类的enhance方法实现;亮度增强通过Brightness类的enhance方法实现;对比度增强通过Contrast类的enhance方法实现;尖锐化通过Sharpness类的enhance方法实现。所有的操作都需要向类的构造函数传递一个Image对象作为参数,这个参数定义了增强作用的对象。同时所有的操作都返回一个新的Image对象。

    如果传给enhance方法的参数是1.0,则不对原图像做任何改变,直接返回原图像的一个拷贝。

    此外,lambda表达式可以(也仅限于)进行图像的亮度增强, imgbri=img.point(lambda i : i*1.4),代表对原图亮度增强40%。

    irange代表图像增强参数的调整范围; 

    istep代表图像按照等步长增强后输出的图片张数;

    factor代表图像增强强度参数; 

    img_enhance_color.show("Color %f" %factor)显示图像增强效果;
    img_enhance_color.save("Color_%.2f.jpg" %factor) 保存增强后的图像。

      <全部源码> 

    #start
    #
     -*- coding: cp936 -*-
    #
    阿瓦图像村出品,转载请注明出处
    #
    QQ:576916092
    import Image,ImageDraw
    import ImageFilter,random,sys
    import ImageEnhance
    img = Image.open("1.jpg")

    ##图像处理##

    #转换为RGB图像
    img = img.convert("RGB")              


    #PIL图像增强lambda
    imgbri=img.point(lambda i : i*1.4) #对每一个像素点进行增强
    imgbri.save("1bri.jpg")
    imgbri.show()

    #PIL图像增强ImageEnhance
    istep=4
    irange=4.0

    imgenhancer_Color=ImageEnhance.Color(img)
    for i in range(istep):
            factor=i/irange
            img_enhance_color=imgenhancer_Color.enhance(factor)
            img_enhance_color.show("Color %f" %factor)
            img_enhance_color.save("Color_%.2f.jpg" %factor) 
            
    imgenhancer_Brightness=ImageEnhance.Brightness(img)
    for i in range(istep):
            factor=i/irange
            img_enhance_Brightness=imgenhancer_Brightness.enhance(factor)
            img_enhance_Brightness.show("Brightness %f" %factor)
            img_enhance_Brightness.save("Brightness_%.2f.jpg" %factor) 
            
    imgenhancer_Contrast=ImageEnhance.Contrast(img)
    for i in range(istep):
            factor=i/irange
            img_enhance_Contrast=imgenhancer_Contrast.enhance(factor)
            img_enhance_Contrast.show("Contrast %f" %factor)
            img_enhance_Contrast.save("Contrast_%.2f.jpg" %factor) 
            
    imgenhancer_Sharpness=ImageEnhance.Sharpness(img)
    for i in range(istep):
            factor=i/irange
            img_enhance_Sharpness=imgenhancer_Sharpness.enhance(factor)
            img_enhance_Sharpness.show("Sharpness %f" %factor)
            img_enhance_Sharpness.save("Sharpness_%.2f.jpg" %factor) 
    #end
  • 相关阅读:
    web api的新玩法
    发送邮件的小功能(.net core 版)
    Docker入门命令备份
    在控制台进行依赖注入(DI in Console)
    .net Core 2.0使用NLog
    .Net Core下使用WCF
    C#枚举最优雅的用法
    Jquery.Ajax的使用方法
    PuTTY+Xming实现X11的ssh转发
    使用XMing+putty运行linux图形界面程序
  • 原文地址:https://www.cnblogs.com/sopic/p/4537718.html
Copyright © 2020-2023  润新知