本文主要是介绍数字图像处理 | 对比度在图像中起到什么作用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
你真的了解对比度吗?对比度是数字图像中非常基本的概念,一幅图像中明暗区域最亮的白和最暗的黑之间不同亮度层级的测量,即指一幅图像灰度反差的大小。直白的说就是:对比度大整体的色彩更鲜艳,对比度小色彩感更平淡。接下来我们用像素直方图的例子来形象的展示对比度大小在图像上的差异。
1.整体实现代码
from PIL import Image
from PIL import ImageEnhance
import matplotlib.pyplot as plt
import numpy as npdef get_piexl_list(img):w, h = img.size[0], img.size[1]img_list = img.load()r_list = []g_list = []b_list = []for i_w in range(w):for j_h in range(h):r, g, b = img_list[i_w, j_h]r_list.append(r)g_list.append(g)b_list.append(b)r_list = np.asarray(r_list)g_list = np.asarray(g_list)b_list = np.asarray(b_list)return r_list,g_list,b_listdef draw_mulit_pic(r_list,g_list,b_list):fig, ax = plt.subplots()ax = fig.add_subplot(311)ax2 = fig.add_subplot(312)ax3 = fig.add_subplot(313)ax.hist(r_list, bins=256, normed=True, color='yellow')ax2.hist(g_list, bins=256, normed=True, color='red')ax3.hist(b_list, bins=256, normed=True, color='blue')plt.show()def enhance_contrast(img):enh_con = ImageEnhance.Contrast(img)contrast = 1.5img_contrasted = enh_con.enhance(contrast)img_contrasted.show()return img_contrastedif __name__ == "__main__":img = Image.open('D:\\1.jpeg')# 原始图像直方图r_list,g_list,b_list = get_piexl_list(img)draw_mulit_pic(r_list, g_list, b_list)# 对比度增强img_contrasted = enhance_contrast(img)# 对比度增强后图像直方图r_list,g_list,b_list = get_piexl_list(img_contrasted)draw_mulit_pic(r_list, g_list, b_list)
2.原始图像直方图
img = Image.open('D:\\1.jpeg')# 原始图像直方图r_list,g_list,b_list = get_piexl_list(img)draw_mulit_pic(r_list, g_list, b_list)
利用上述代码画出原始图像的像素直方图,从下图的直方图中可以观察到,直方图差异比较大,起伏比较大。
3.增强后图像直方图
# 对比度增强img_contrasted = enhance_contrast(img)# 对比度增强后图像直方图r_list,g_list,b_list = get_piexl_list(img_contrasted)draw_mulit_pic(r_list, g_list, b_list)
利用PIL库自带的对比度增强策略对图像进行增强,并重新将直方图画出来,从增强后的直方图可以看到,整体的像素分布会比较均匀。
4.对比度增强结果显示
我乔神和奥胖仿佛做了美黑!
这篇关于数字图像处理 | 对比度在图像中起到什么作用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!