纯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

时间: 2024-11-05 11:51:57

纯Python综合图像处理小工具(2)图像增强的相关文章

纯Python综合图像处理小工具(3)10种滤镜算法

<背景>  滤镜处理是图像处理中一种非常常见的方法.比如photoshop中的滤镜效果,除了自带的滤镜,还扩展了很多第三方的滤镜效果插件,可以对图像做丰富多样的变换:很多手机app实现了实时滤镜功能,最有名的当属Instagram. 滤镜的原理,常见的是针对数字图像的像素矩阵,使用一个nxn的方形矩阵做滤波器(即kernel,常见的如3x3,5x5等),对该像素矩阵进行遍历,遍历后的图像就是输出图像,如果算法经过优化,遍历的速度足够快,那就是实时滤镜(live filter),可以实时预览图像

纯Python 综合图像处理小工具 (1)

平时工作经常需要做些图像分析,需要给图像分通道,计算各个通道的直方图分布特点,这个事儿photoshop也能做,但是用起来不方便,且需要电脑上安装有PS软件,如果用OpenCV, 更是需要在visual studio上做很多配置工作.本文充分利用python的便携性和轻量级特点,力图实现一个脚本,到处处理的目标.           1.将待处理图片命名为1.jpg和本文python脚本文件放入同一文件夹:             2.运行python脚本,可以获得分通道图片及相应的直方图.  

纯Python综合图像处理小工具(4)图像的自定义像素处理(剪纸滤镜)

<背景>  上一节介绍了python PIL库自带的10种滤镜处理,现成的库函数虽然用起来方便,但是对于图像处理的各种实际需求,还需要开发者开发自定义的滤镜算法.本文将给大家介绍如何使用PIL对图像进行自定义的像素级操作. <效果>  本文以剪纸风格图像处理作为例子:(算法借鉴了残阳似血的博客http://qinxuye.me/,特此鸣谢.) 原图: 处理后: <怎么做> 1.首先将处理参数预先设定好.设定阈值threshold,该阈值会用来区分作为目标颜色的前景色和将

Python实现翻译小工具

一.背景 利用Requests模块获取有道词典web页面的post信息,BeautifulSoup来获取需要的内容,通过tkinter模块生成gui界面. 二.代码 fanyi.py代码如下: #!/bin/env python # -*- coding:utf-8 -*- # _author:kaliarch import requests import urllib.parse import time import random import hashlib import json clas

python: 实现sha1小工具

File1: sha1.py File2: sha1.bat ------------------ File1: sha1.py import hashlib import os,sys def CalcSha1(filepath): with open(filepath,'rb') as f: sha1obj = hashlib.sha1(); print '>', while(True): data = f.read(20971520) #20M print '.', if (data ==

Python 综合应用小项目一

数据库报错重连机制 利用异常捕获来获取mysql断开的报错,然后再重连 1 import MySQLdb as mysql 2 3 class DB: 4 def __init__(self,host,user,passwd,db_name): 5 self.conn = None 6 self.cursor = None 7 self.host = host 8 self.user = user 9 self.passwd = passwd 10 self.db_name = db_name

Python实现linux/windows通用批量‘命令/上传/下载’小工具

这阵子一直在学python,碰巧最近想把线上服务器环境做一些规范化/统一化,于是便萌生了用python写一个小工具的冲动.就功能方面来说,基本上是在"重复造轮子"吧,但是当我用这小工具完成了30多台服务器从系统层面到应用层面的一些规范化工作之后,觉得效果还不算那么low(高手可忽略这句话~~),这才敢拿出来跟小伙伴们分享一下. (注:笔者所用为python版本为3.5,其他版本未经测试~~) 其实很简单,就"一个脚本"+"server信息文件"实

OpenCV与MFC实战之图像处理 样本采集小工具制作 c++MFC课程设计

原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/12111102.html 入门不久的人可以通过opencv实战来锻炼一下学习opencv的成果,百度云链接: 链接:https://pan.baidu.com/s/1jGOD97Zx96ZDAvlkQtaPYQ 提取码:afip 运行环境VS2017,需要配置库为:opencv 题目:样本采集小工具 需求: 用MFC和opencv完成样本采集小工具. 界面功能 1.选中原图片集的目录. 2.选

Python 小工具集合

PyTools Python小工具的集合,工具彼此间无联系.基于Python 3.4. Github 地址: https://github.com/ChenZhongPu/PyTools 目前实现了: 查看新闻 查看微博 发布微博 搜索1024网站 Usage 查看新闻 python3 App.py news 使用腾讯新闻的RSS源. 查看微博 python3 App.py weibo 使用了Yahoo pipes.你需要得到要查看用户的微博ID, "` Hanhan's weibo accou