標籤:
<背景>
這次分享的指令碼是對映像進行增強處理,包含對映像像素的色彩增強、亮度增強、對比增強、映像尖銳利化等增強操作,主要基於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
純Python綜合影像處理小工具(2)映像增強