课程实验作业之图像处理图片亮度、对比度和饱和度

517 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第15天,点击查看活动详情

图像的主要指标参数:

在图像处理中,图像的主要指标参数包括亮度、对比度、饱和度等。

亮度是指图片的明亮程度,计算亮度的基准是灰度测试卡。黑色为0,白色为10,在0—10之间等间隔的排列为9个阶段。色彩可以分为有彩色和无彩色,但后者仍然存在着亮度。作为有彩色,每种色各自的亮度在灰度测试卡上都具有相应的位置值。彩度高的色对亮度有很大的影响,不太容易辨别。在明亮的地方鉴别色的亮度比较容易的,在暗的地方就难以鉴别。

对比度指的是一幅图像中明暗区域最亮的白和最暗的黑之间不同亮度层级的测量,即指一幅图像灰度反差的大小。差异范围越大代表对比越大,差异范围越小代表对比越小,好的对比率120:1就可容易地显示生动、丰富的色彩,当对比率高达300:1时,便可支持各阶的颜色。但对比率遭受和亮度相同的困境,现今尚无一套有效又公正的客观标准来衡量对比率,所以最好的辨识方式还是依靠使用者眼睛。

色彩是由于物体上的物理性的光反射到人眼视神经上所产生的感觉,颜色的不同是由光的波长的长短差别所决定的。作为色彩度,指的是这些不同波长的色的情况。波长最长的是红色,最短的是紫色。把红、黄、绿、蓝、紫和处在它们各自之间的黄红、黄绿、蓝绿、蓝紫、红紫这5种中间色——共计10种色作为色相环。在色相环上排列的色是纯度高的色,被称为纯色。这些颜色在环上的位置是根据视觉和感觉的相等间隔来进行安排的。用类似这样的方法还可以再分出差别细微的多种色来。在色相环上,与环中心对称,并在180度的位置两端的色被称为互补色

用数值表示色的鲜艳或鲜明的程度称之为饱和度,也称为纯度、彩度。有彩色的各种色都具有彩度值,无彩色的色的彩度值为0,对于有彩色的色的彩度(纯度)的高低,区别方法是根据这种色中含灰色的程度来计算的。彩度由于色相的不同而不同,而且即使是相同的色相,因为明度的不同,彩度也会随之变化的。

2)Python语句调整图片的亮度、对比度和饱和度时,首先要调用Image模块中的im=Image.open( "xxx.jpg" )语句打开指定的预处理图片,并调用ImageDraw模块记录图片的亮度、对比度和饱和度,调用ImageEnhance模块调整图片的亮度、对比度和饱和度。

此实验部分实现代码如下

import Image,ImageDraw,ImageEnhance

img = Image.open('messi.jpg')

draw = ImageDraw.Draw(img)

width,height = img.size

draw.line(((0,0),(width-1,height-1)),fill = 254)

draw.arc((0,0,width-1,height-1),0,360,fill=254)

img.save('messi2.jpg')

 

#亮度增强(adjust image brightness)

brightness = ImageEnhance.Brightness(img) #调用Brightness类

bright_img = brightness.enhance(3.0)

bright_img.save('bright_messi.jpg')

 

#图像尖锐化(adjust image sharpness)

sharpness = ImageEnhance.Sharpness(img) #调用Sharpness类

sharp_img = sharpness.enhance(6.0)

sharp_img.save('sharp_messi.jpg')

 

#对比度增强(adjust image contrast)

contrast = ImageEnhance.Contrast(img)

contrast_img = contrast.enhance(3.0)

contrast_img.save('contrast_messi.jpg')

 

#饱和度增强,(adjust image color)

color = ImageEnhance.Color(img)

color_img = color.enhance(3.0)

color_img.save('color_messi.jpg')

实验全部代码如下:

1.   **from** PIL **import** Image  

2.   **from** PIL **import** ImageDraw  

3.   **from** PIL **import** ImageEnhance  

4.     

5.     

6.   img = Image.open('G:\LLP CUIT\cuit_base.jpg')#打开图形文件  

7.   draw = ImageDraw.Draw(img)#创建绘制对象  

8.   width,height = img.size#获取图像大小  

9.   draw.line(((0,0),(width-1,height-1)),fill = 254)#绘制一个直线  

10.  #绘制弧线 圆弧的绘制,  

11.  # 第一个参数指定弧所在椭圆的外切矩形,  

12.  # 第二、三两个参数分别是弧的起始和终止角度,   

13.  # 第四个参数是填充颜色,第五个参数是线条颜色;  

14.  draw.arc((0,0,width-10,height-10),0,360,fill = 254)  

15.  img.save('G:\LLP CUIT\cuit_base4_1.jpg')  

16.    

17.  #亮度增强(adjust image brightness)  

18.  brightness = ImageEnhance.Brightness(img) #调用Brightness类  

19.  bright_img = brightness.enhance(3.0)  

20.  bright_img.save('G:\LLP CUIT\cuit_base4_bright.jpg')  

21.    

22.  #图像尖锐化(adjust image sharpness)  

23.  sharpness = ImageEnhance.Sharpness(img) #调用Sharpness类  

24.  sharp_img = sharpness.enhance(6.0)  

25.  sharp_img.save('G:\LLP CUIT\cuit_base4_sharp.jpg')  

26.    

27.  #对比度增强(adjust image contrast)  

28.  contrast = ImageEnhance.Contrast(img)  #调用Contrast类 

29.  contrast_img = contrast.enhance(3.0)  

30.  contrast_img.save('G:\LLP CUIT\cuit_base4_contrast.jpg')  

31.    

32.  #饱和度增强,(adjust image color)  

33.  color = ImageEnhance.Color(img)  #调用Color类 

34.  color_img = color.enhance(3.0)  

color_img.save('G:\LLP CUIT\cuit_base4_colors.jpg')

实验结果:

image.png