了解伽马(GAMMA、伽马值、光度、灰度系数)
- 格式:doc
- 大小:471.06 KB
- 文档页数:14
显示器屏幕怎么校色有些网友说显示器屏幕怎么校色,其实这是很简单的一个问题,那么下面就由店铺来给你们说说显示器屏幕怎么校色吧,希望可以帮到你们哦!显示器屏幕校色的方法:"校准"在英文中称为calibration,有"校准、调整、调节为正确"的意思。
在DTP(桌面出版)领域则是指补正扫描仪、显示器、图像处理软件和打印机等输入输出设备之间的,色彩及亮度等参数至统一的方法和概念。
我们这里所说的显示器色彩校准,目的是要把图片原稿忠实地显示在计算机屏幕上,以便于做下一步的处理。
在此,我们要首先清楚,现在使用于办公室和出版界的Windows、Macintosh在色彩处理的概念上有本质的区别,最明显的是Windows 采用值为2.2的灰度参数(Gamma),而苹果MacOS的灰度参数为1.8,在校正自己的显示器以前,要注意这点。
下面我们开始具体的操作介绍:(1) 事先的准备还有,使用液晶显示器的用户,也许会因硬件设计上的不同感到困惑,但是液晶显示器也有自己的设定方法,找找看。
(2) 调整显示器的亮度显示器上有关于亮度调节的按钮,特别是使用苹果机的用户,一般来说,苹果机的缺省设定都过于明亮,请注意确认。
下面的黑白条总共有11节,测试你的屏幕是否可以如数地显示出来。
但是即便可以看到11节的方格,如果左边最深色的方格显示为深灰色的话,就说明屏幕的亮度过高。
最佳的调整效果是,左边开始数第四个方格的灰色和背景色相同。
在画面左边的黑色方格里包含有一个灰色的格子,调整你的显示器亮度按钮,使黑色和灰色刚好可以互相辨认出来。
(此处是利用背景色和灰色的差来进行调整的,背景色使用了RGB 各色彩28%的比例。
在HTML中没有这个数值颜色,使用时可以找#33333代替,但是颜色会较深。
)(3) 调整显示屏的白色今天我们要校准一下显示屏的"白"色。
决定正确的白色,首先需要一张白纸,以白纸的白色为基准,对显示屏进行调整。
Gamma调节是一种在图像处理领域中非常常见的技术,它可以用于改变图像的亮度和对比度,从而使图像在视觉上更具有视觉冲击力和清晰度。
此项技术的基本原理是基于人类视觉系统的生理特性,即对亮度的感知不是线性的。
通过对图像的像素值进行非线性变换,使得图像的亮度和对比度得到更好的调整,从而使得图像在观看者的视觉中更加鲜明和清晰,同时可以增强图像的美感。
因此,在处理图像时,可以通过调整图像的伽马值来改变图像的亮度和对比度,使其更好地适应特定的观看环境和应用场景,从而提高图像的视觉效果。
灰度值是指图像中每个像素点的亮度值。
在RGB色彩空间中,每个像素点的颜色由红色、绿色和蓝色三个通道的数值共同决定,每个通道的数值范围为0到255。
当三个通道的数值都为0时,像素点的亮度为0,即为黑色;当三个通道的数值都为255时,像素点的亮度为255,即为白色;当三个通道的数值在0到255之间时,像素点的亮度介于黑色和白色之间,形成不同的灰度级别。
灰度值的计算方法有多种,常见的有以下几种:1. 平均值法:将每个通道的数值求平均值,得到的结果即为灰度值。
例如,对于一个RGB图像,其灰度值计算公式为:灰度值 = (R + G + B) / 3其中,R、G、B分别代表红色、绿色和蓝色通道的数值。
2. 最大值法:将每个通道的数值中最大的值作为灰度值。
例如,对于一个RGB图像,其灰度值计算公式为:灰度值 = max(R, G, B)3. 最小值法:将每个通道的数值中最小的值作为灰度值。
例如,对于一个RGB图像,其灰度值计算公式为:灰度值 = min(R, G, B)4. 对比度法:将每个通道的数值与255的差值的绝对值作为灰度值。
例如,对于一个RGB图像,其灰度值计算公式为:灰度值 = abs(R - 255) + abs(G - 255) + abs(B - 255)以上几种方法中,平均值法和最大值法计算出来的灰度值最接近真实情况,最小值法和对比度法计算出来的灰度值可能会存在偏差。
gamma校正算法灰度值
Gamma校正是一种非线性操作,用于调整图像的灰度值,使其更符合人眼的视觉特性。
在数字图像处理中,Gamma校正通常用于改善图像的对比度和亮度,使得图像看起来更加自然和舒适。
Gamma校正的原理是基于人眼对亮度的感知是非线性的,即人眼对亮度的感知随着亮度的增加而加速增加,随着亮度的减小而减缓减小。
因此,通过将图像的灰度值进行非线性变换,可以更好地匹配人眼的感知特性,提高图像的可视效果。
在数学上,Gamma校正通常使用以下公式实现:
O=I^gamma
其中 O 是校正后的灰度值,I 是原始灰度值,gamma 是校正系数。
当gamma 大于 1 时,图像的对比度会增强,当 gamma 小于 1 时,图像的
对比度会降低。
在实现上,通常需要将输入的灰度值进行映射变换,以得到校正后的灰度值。
这个映射关系可以用一个曲线来表示,这个曲线就是Gamma校正曲线。
Gamma校正的方法有很多种,包括简单的幂函数、分段函数、多项式函数等。
不同的方法可以适用于不同的场景和需求,需要根据具体情况选择适合的方法。
显示器的伽马是什么?显示器伽马值多少合适?显示器伽马值多少合适?大家平时在调整显示器亮度色彩的时候有没有发现“伽马”这个参数,在一些显示器评测的文章里也会经常看到伽马值的测试图,今天小编就带大家一起来认识一下显示器伽马这个参数的意义。
一、显示器的伽马是什么?有什么作用?首先要说的是,伽玛值只是一个输出结果,表示图象输出值与输入值关系的斜线。
(有时也用于描述屏幕的反差)伽玛值指印刷技术或图象处理上,输入值和显示器输出时的亮度之间的关系,其影响原稿上高光到暗调之间色调的分布。
没有彩色管理,用户可调整显示器的伽玛值,以模拟在比较显示器上与原稿上的图像的反差时的观视条件。
在使用彩色匹配软件时,系统特地指定了显示器的伽玛值。
伽玛值影响图形中间值的色调或中间层次的灰度。
通过调整伽玛值可以改变图像中间色调灰阶的亮度值,以增加图像的中间层次,而不会对暗部和亮部的层次有太大的影响。
输入一个比一大的数,将扩大中间色调的范围,这样做能使中间色调占很大比例的图像产生较小的对比度和较多的细节。
伽玛值是指处理位图的一种特殊效果的调整,检查照片的亮度也十分重要,通过与原照片比较,看照片是否太暗或太亮,太暗或太亮都无法得到理想的照片。
将太暗的照片变亮,调整伽玛值无疑是简便的方法,但这样做会使照片失去信息。
二、显示器伽马值多少合适?一般来说,伽玛值没有越高越好或者越低越好之分,主要是输出调节到适当的需要值而已,具体什么为合适,那就要根据实际图像的反馈结果来定了,下边我们以一张图片调整伽马值来举例。
↑↑↑ 伽玛值-低↑↑↑ 伽玛值-正常↑↑↑ 伽玛值-高以上就是小编为大家介绍的“显示器的伽马是什么?显示器伽马值多少合适?”全部内容,如果你对这篇文章感兴趣的话可以收藏转发,同时也欢迎网友积极在本站发文投稿。
了解伽马(GAMMA、伽马值、光度、灰度系数)了解伽马(GAMMA、伽马值、光度、灰度系数)来源:pconline ⽇期:2007-08-26 00:05⼀. 在哪见过、听说过Gamma?* 还⽤说,Adobe Gamma* 常听说MAC的默认Gamma是1.8,PC的是2.2* 我的显卡驱动程序⾥有Gamma调节* 我下载了⼀个软件,也可以调节显⽰器的Gamma* WinDVD播放器带Gamma校正功能* ACDSEE的曝光调节⾥可以调Gamma* ACDSEE的选项中有Enable Gamma Correction* XV Viewer 能以参数-gamma 2.2 启动(x window也可以)* PNG⽂件⾥有Gamma校正* Photoshop⾥当然也有* ICC Profile也和Gamma有关?* 摄像头、数码相机、扫描仪?胶⽚?……中也有提到Gamma的……这些都是怎么回事?图:显卡(驱动程序)上的Gamma设置图:ACDSEE中的曝光调节⼆. 什么是Gamma?2.1. 显⽰器Gamma曲线Gamma可能源于CRT(显⽰器/电视机)的响应曲线,即其亮度与输⼊电压的⾮线性关系。
图:⼀典型显⽰器的响应曲线,⾮常接近指数函数(说明:上图中输⼊值为数字化的,即通常的RGB值,但可以理解数/模转换是线性的,所以它和输⼊电压是等效的)归⼀化后,我们通常可以⽤⼀简单的函数来表⽰:output = input ^ gammagamma就是指数函数中的幂。
图:归⼀化的Gamma曲线注意上图曲线的⼀些特性:* 端点是不变的,即不管gamma值如何变化,0对应的输出始终是0,1的输出始终是1(这⼀特性会被⽤到)。
这可能是gamma⼜被叫作“灰度”系数的原因吧。
* gamma > 1时,曲线在gamma=1斜线的下⽅;反之则在上⽅。
另外说明⼀下,虽然是以显⽰器作为例⼦,但可扩展到⼀般的图像相关的输⼊/输出设备。
我们在《理解摄像机》里曾经提到过伽马(Gamma),说伽马就是成像物件形成画面的“反差系数”。
如果伽马曲线比较陡,则输出的画面反差比较高,如果伽马曲线比较缓,则输出的画面反差比较低。
这个概念说起来好像并不难懂,但在实际的摄像机操作中,调整伽马对画面的影响似乎远不止“调整反差”那么简单,难道说伽马还有别的什么意义吗?在一些高级的摄像机里,不但有Master Gamma(总伽马)的调整,还有R/G/B Gamma(通道伽马),甚至BLK Gamma(黑伽马)的调整,为什么一个跟反差有关的参数弄得这么复杂呢?看来似乎仅仅知道“伽马影响反差”恐怕不容易驾驭这些马仔。
好,今天我们就讲讲伽马在数字成像中的作用,以及各种不同的马仔都是怎么回事。
要说马得先说骑马的人。
人类对外界的刺激会产生反应,比如我们能感知物体重量、声音大小、味道咸淡、气温高低、光线强弱。
而人类对这些外界刺激的变化所做出的反应是“非线性”的,换种说法就是,人类“感知刺激变化的比例”与“实际的刺激变化的比例”并不一致。
举个例子,一杯水了放了一勺糖,我们会觉得甜,但放两勺糖,我们并不会觉得有“2倍甜”,顶多会觉得又甜了一点点,这就是非线性反应,但如果我们用“甜度计”去测量,那么甜度是原先的2倍,实际的物理变化是线性的,而人类是非线性的,你要加很多倍的糖,人类才能觉得“2倍甜”,这就是人类的德性。
再举个例子,比如声音,我们把音量提高2倍分贝,用响度计测量,声音的强度比原来高2倍,但人耳却听不出来强了2倍,因为我们人耳也是“非线性”,非要强N多倍,才能感受到强了2倍。
如果你玩音响,音响系统里就有个“等响度”的概念,就是把音量调节按人耳的非线性增量来设置,等响度设备调节2倍音量,我们听起来的确大了2倍,其实实际音量已经大N多倍了。
好了,人眼,人眼也是非线性的“设备”,你提高2倍的亮度,人眼根本不领情,觉得只亮了一点点,你要提高到8倍亮度,人眼就觉得“这应该比原来亮2倍了”(如果电灯是活的,它非吐血不可)。
摄影后期使用亮度蒙版修图,别忘了一个重要参数Gamma设置在摄影后期修图,特别是风光摄影后期,亮度蒙版是使用较多、功能十分强大的一个工具,它可以依据图像中不同的光线明暗层次选择你想要的选区,从而对图像进行局部处理,目前的亮度蒙版工具还扩展到依据图像的色彩颜色、色彩饱和度建立选区。
在实际修图过程中,除了自己手动创建亮度蒙版外,还有不少专门的亮度蒙版工具可以使用,能够大大提高效率,常见的有半岛雪人StarsT ail、T ony Kuyper的TKActions、杰米Raya pro Suite等。
既然是亮度蒙版,自然和图像的明暗层次密切相关,所以使用亮度蒙版得到的结果不仅与使用的工具有关,而且还与photoshop中的一个设置参数Gamma相关,这一点却常常被人们忽略了。
不同的Gamma参数直接影响到亮度蒙版结果的准确性,下面我们先通过一个具体的例子来看看。
一、Gamma伽马参数与亮度蒙版为了便于观察结果,我们在PS中新建一个1000*600像素(其它尺寸也可以)的空白图像,然后从左至右拉一个从纯黑到纯白的水平渐变,并打开PS的标尺显示便于观察,如图一。
图一:新建一个包含黑白渐变的图像1. 现在我们在新建的渐变图像中创建一个“亮调1”蒙版,方法是:在PS的通道面板中,按住Ctrl键的同时用鼠标左键单击RGB通道(或直接用Ctrl+Alt+2键盘快捷键),这样就得到了一个包含“亮调1”范围的选区,如图二。
从图中的蚂蚁线能够清楚地看出,该选区包含了图像的亮部,蚂蚁线左侧竖线在图像的中间(50像素)位置,选区正好占到全图的50%,我们可以把选区保存到通道中或直接作为蒙版使用。
图二:亮调1选区范围在PS的“颜色设置”对话框(通过菜单“编辑/颜色设置”或Shift+Ctrl+K打开)中,有一个“工作空间/灰色”设置项,就是用来设置Gamma参数的。
图二是该项设置值为“Gray Gamma 2.2”得到的结果。
gamma亮度和灰阶的关系
Gamma亮度和灰阶是数字图像处理中常用的两个概念,它们之间存在着密切的关系。
Gamma亮度是指图像中的亮度水平,通常用伽马值来表示。
伽马值是一个介于0到1之间的数值,它决定了图像的亮度和对比度。
当伽马值为1时,图像的亮度与输入信号成正比;当伽马值小于1时,图像的亮度会变得更暗;当伽马值大于1时,图像的亮度会变得更亮。
灰阶是指图像中每个像素的亮度级别,通常用8位二进制数来表示,即从0到255的整数。
在数字图像处理中,灰阶通常用来描述图像的明暗程度和细节信息。
Gamma亮度和灰阶之间的关系可以通过以下公式来表示:Y = X^γ,其中Y 表示输出亮度,X表示输入亮度,γ表示伽马值。
这个公式表明了输入亮度和输出亮度之间的关系,即输出亮度是输入亮度的γ次方。
因此,通过调整伽马值的大小,可以改变图像的亮度和对比度,从而影响灰阶的表现效果。
Gamma亮度和灰阶是数字图像处理中非常重要的概念,它们之间存在着密切的关系。
通过对伽马值的调整,可以实现对图像亮度和对比度的精确控制,从而获得更好的图像效果。
伽马校正公式伽马校正公式是遥感图像处理中常用的一种方法,它可以有效地改善图像的对比度和亮度,使图像更加清晰和易于分析。
伽马校正公式的原理是通过将原始图像的灰度值经过一个非线性变换,来调整图像的亮度和对比度。
伽马校正公式的表达式如下:I' = I^γ其中,I'表示校正后的灰度值,I表示原始图像的灰度值,γ表示伽马值。
伽马值决定了图像的对比度和亮度调整的程度。
当γ>1时,图像的对比度增加,亮度减小;当γ<1时,图像的对比度减小,亮度增加;当γ=1时,图像不发生变化。
伽马校正公式的原理是基于人眼对光的感知特性。
人眼对光的感知是非线性的,较暗的区域对亮度的变化更为敏感,而较亮的区域对亮度的变化相对不敏感。
因此,通过对图像进行伽马校正,可以使得图像在不同灰度值区域上的亮度变化更加均匀,提高图像的可视性。
伽马校正公式在遥感图像处理中有着广泛的应用。
遥感图像是通过航空或卫星等方式获取的地表信息图像,由于拍摄条件的限制以及地面特征的复杂性,图像的对比度和亮度常常不够理想。
而伽马校正公式可以对图像进行局部调整,使得图像中的细节更加清晰可见。
伽马校正公式的应用不仅限于遥感图像处理,还广泛应用于数字图像处理、计算机视觉等领域。
在数字图像处理中,伽马校正可以用来增加图像的对比度,改善图像的质量;在计算机视觉中,伽马校正可以用来提取图像中的目标区域,辅助图像分割和目标识别等任务。
伽马校正公式的应用还可以扩展到其他领域。
例如,在医学影像处理中,伽马校正可以用来增强X射线图像的对比度,帮助医生更准确地诊断疾病;在摄影中,伽马校正可以用来调整照片的色调和明暗,增强照片的艺术效果。
伽马校正公式是一种简单而有效的图像处理方法,通过调整图像的亮度和对比度,可以显著改善图像的质量和可视性。
它在遥感图像处理以及其他领域都有着广泛的应用前景。
随着科技的不断进步,伽马校正公式将会在更多的领域发挥重要作用,为我们提供更好的图像处理和分析工具。
灰度变换之伽马变换1.概述伽玛变换⼜名指数变换、幂次变换或幂律变换,是另⼀种常⽤的⾮线性变换伽马变换主要⽤于图像的校正,将灰度过⾼或者灰度过低的图⽚进⾏修正,增强对⽐度。
变换公式就是对原图像上每⼀个像素值做乘积运算:s=c⋅rγr∈[0,1]其中 c 和γ为正常数,有时考虑到偏移量,也将表达式写为:s=c⋅(r+ϵ)γr∈[0,1]与对数变换不同,伽玛变换可以根据γ的不同取值选择性地增强低灰度区域的对⽐度或是⾼灰度区域的对⽐度。
γ是图像灰度校正中⾮常重要的⼀个参数,其取值决定了输⼊图像和输出图像之间的灰度映射⽅式,即决定了是增强低灰度( 阴影区域)还是增强⾼灰度(⾼亮区域)。
其中:γ > 1 时,图像的⾼灰度区城对⽐度得到增强γ < 1 时,图像的低灰度区城对⽐度得到增强γ = 1 时,图像是线性变换,对⽐度保持不变针对于数字图像处理,我们可以将公式写为:output=(input+ϵ)γ由于幂运算值域变化范围可能太⼤,对于当前主要的8 bit显⽰器,我们采⽤归⼀化⼿段:output=255×(input+ϵ255)γ2. 补偿系数的作⽤导⼊库:In [1]:from PIL import Imageimport numpy as npimport matplotlib.pyplot as plt定义伽马变换函数:In [2]:def gamma_trans(input, gamma=2, eps=0 ):return 255. * (((input + eps)/255.) ** gamma)测试补偿系数为0时的效果:In [3]:input_arr = np.array( [ [0, 50, 100, 150],[0, 50, 100, 150],[0, 50, 100, 150],[0, 50, 100, 150]] )fig = plt.figure()ax0 = fig.add_subplot(221)ax0.set_title("input")ax0.imshow(input_arr, cmap='gray',vmin=0,vmax=255)gamma = 0.25output = gamma_trans(input_arr, gamma=gamma, eps=0)ax1 = fig.add_subplot(222)ax1.set_title("output, gamma = " + str(gamma))ax1.imshow(output, cmap='gray', vmin=0, vmax=255)gamma = 0.75output = gamma_trans(input_arr, gamma=gamma, eps=0)ax1 = fig.add_subplot(223)ax1.set_title("output, gamma = " + str(gamma))ax1.imshow(output, cmap='gray', vmin=0, vmax=255)gamma = 1.5output = gamma_trans(input_arr, gamma=gamma, eps=0)ax1 = fig.add_subplot(224)ax1.set_title("output, gamma = " + str(gamma))ax1.imshow(output, cmap='gray', vmin=0, vmax=255)print(output)plt.show()[[ 0. 22.14037214 62.62242911 115.04474833][ 0. 22.14037214 62.62242911 115.04474833][ 0. 22.14037214 62.62242911 115.04474833][ 0. 22.14037214 62.62242911 115.04474833]]由图可以看到,如果补偿系数ϵ=0,则灰度等于0的区域将不会产⽣任何变化,我们添加⼀个补偿系数ϵ=0.5:In [4]:input_arr = np.array( [ [0, 50, 100, 150],[0, 50, 100, 150],[0, 50, 100, 150],[0, 50, 100, 150]] )fig = plt.figure()ax0 = fig.add_subplot(221)ax0.set_title("input")ax0.imshow(input_arr, cmap='gray',vmin=0,vmax=255)gamma = 0.25output = gamma_trans(input_arr, gamma=gamma, eps=0.5)ax1 = fig.add_subplot(222)ax1.set_title("output, gamma = " + str(gamma))ax1.imshow(output, cmap='gray', vmin=0, vmax=255)gamma = 0.75output = gamma_trans(input_arr, gamma=gamma, eps=0.5)ax1 = fig.add_subplot(223)ax1.set_title("output, gamma = " + str(gamma))ax1.imshow(output, cmap='gray', vmin=0, vmax=255)gamma = 1.5output = gamma_trans(input_arr, gamma=gamma, eps=0.5)ax1 = fig.add_subplot(224)ax1.set_title("output, gamma = " + str(gamma))ax1.imshow(output, cmap='gray', vmin=0, vmax=255)print(output)plt.show()[[2.21403721e-02 2.24733066e+01 6.30926839e+01 1.15620451e+02][2.21403721e-02 2.24733066e+01 6.30926839e+01 1.15620451e+02][2.21403721e-02 2.24733066e+01 6.30926839e+01 1.15620451e+02][2.21403721e-02 2.24733066e+01 6.30926839e+01 1.15620451e+02]]可以看到整体的对⽐度都有变化,灰度值为0的问题可以避免3. 伽马变换矫正显⽰失真⽼式电视机CRT会有显⽰失真的问题,不同的电视有不同的失真指数我们假设某⽼式电视失真指数γ=0.5,我们使⽤伽马变换进⾏矫正,只需取矫正指数γ′=1γ原图像:In [5]:gray_img = np.asarray(Image.open('./img/intensity_ramp.tif').convert('L'))fig = plt.figure()ax0 = fig.add_subplot()ax0.set_title("origin")ax0.imshow(gray_img, cmap='gray',vmin=0,vmax=255)plt.show()失真图像和伽马矫正:In [6]:gray_img = np.asarray(Image.open('./img/intensity_ramp.tif').convert('L'))fig = plt.figure()ax0 = fig.add_subplot(131)ax1 = fig.add_subplot(132)ax2 = fig.add_subplot(133)gamma=0.5ax0.set_title("origin")ax0.imshow(gray_img, cmap='gray',vmin=0,vmax=255)ax1.set_title("distortion")distortion = gamma_trans(gray_img, gamma=gamma, eps=0)ax1.imshow(distortion, cmap='gray',vmin=0,vmax=255)ax2.set_title("correct")correct = gamma_trans(distortion, gamma=1/gamma, eps=0)ax2.imshow(correct, cmap='gray',vmin=0,vmax=255)plt.show()此处看起来是脱裤⼦放屁多此⼀举,但是实际中失真指数是不知道的,需要去得到矫正指数4. 伽马变换拉伸对⽐度对于暗⾊照⽚,我们可以进⾏伽马系数⼩于⼀的伽马变换从⽽提⾼低灰度值的对⽐度原图像:In [7]:gray_img = np.asarray(Image.open('./img/fractured_spine.tif').convert('L'))fig = plt.figure()ax0 = fig.add_subplot()ax0.set_title("origin")ax0.imshow(gray_img, cmap='gray',vmin=0,vmax=255)plt.show()伽马变换:In [8]:gray_img = np.asarray(Image.open('./img/fractured_spine.tif').convert('L'))fig = plt.figure()ax0 = fig.add_subplot(121)ax1 = fig.add_subplot(122)gamma=0.4ax0.set_title("origin")ax0.imshow(gray_img, cmap='gray',vmin=0,vmax=255)ax1.set_title("correct")correct = gamma_trans(gray_img, gamma=gamma, eps=0)ax1.imshow(correct, cmap='gray',vmin=0,vmax=255)plt.show()注意此处的伽马系数0.4是⼀种探索得出的数字,不⼀定是最佳值,下⾯的2.0同理对于亮⾊照⽚,我们可以进⾏伽马系数⼤于⼀的伽马变换从⽽提⾼低灰度值的对⽐度原图像:In [9]:gray_img = np.asarray(Image.open('./img/washed_out.tif').convert('L'))fig = plt.figure()ax0 = fig.add_subplot()ax0.set_title("origin")ax0.imshow(gray_img, cmap='gray',vmin=0,vmax=255)plt.show()伽马变换:In [10]:gray_img = np.asarray(Image.open('./img/washed_out.tif').convert('L'))fig = plt.figure()ax0 = fig.add_subplot(121)ax1 = fig.add_subplot(122)gamma = 2.0ax0.set_title("origin")ax0.imshow(gray_img, cmap='gray',vmin=0,vmax=255)ax1.set_title("correct")correct = gamma_trans(gray_img, gamma=gamma, eps=0)ax1.imshow(correct, cmap='gray',vmin=0,vmax=255)plt.show()可以看到伽马变换带来的图像增强效果还是显著的5. 参考资料[1][2][3]Processing math: 100%。
了解伽马(GAMMA、伽马值、光度、灰度系数)来源:pconline 日期:2007-08-26 00:05一. 在哪见过、听说过Gamma?* 还用说,Adobe Gamma* 常听说MAC的默认Gamma是1.8,PC的是2.2* 我的显卡驱动程序里有Gamma调节* 我下载了一个软件,也可以调节显示器的Gamma* WinDVD播放器带Gamma校正功能* ACDSEE的曝光调节里可以调Gamma* ACDSEE的选项中有Enable Gamma Correction* XV Viewer 能以参数-gamma 2.2 启动(x window也可以)* PNG文件里有Gamma校正* Photoshop里当然也有* ICC Profile也和Gamma有关?* 摄像头、数码相机、扫描仪?胶片?……中也有提到Gamma的……这些都是怎么回事?图:显卡(驱动程序)上的Gamma设置图:ACDSEE中的曝光调节二. 什么是Gamma?2.1. 显示器Gamma曲线Gamma可能源于CRT(显示器/电视机)的响应曲线,即其亮度与输入电压的非线性关系。
图:一典型显示器的响应曲线,非常接近指数函数(说明:上图中输入值为数字化的,即通常的RGB值,但可以理解数/模转换是线性的,所以它和输入电压是等效的)归一化后,我们通常可以用一简单的函数来表示:output = input ^ gammagamma就是指数函数中的幂。
图:归一化的Gamma曲线注意上图曲线的一些特性:* 端点是不变的,即不管gamma值如何变化,0对应的输出始终是0,1的输出始终是1(这一特性会被用到)。
这可能是gamma又被叫作“灰度”系数的原因吧。
* gamma > 1时,曲线在gamma=1斜线的下方;反之则在上方。
另外说明一下,虽然是以显示器作为例子,但可扩展到一般的图像相关的输入/输出设备。
Gamma曲线应该是普遍存在的,即使它不是严格的指数关系,可能还是会这么通称。
至少我知道的数码机机/摄像头里的sensor也存在gamma 曲线及gamma校正。
2.2. 检查显示系统的Gamma值在PC上,好像还没有什么软件方法可以得到系统的Gamma值(4.1会说明这一点)。
有人做了一些图片,可以粗略估计。
其原理和Adobe Gamma类似。
图:Gamma对照图使用方法:与Adobe Gamma类似,即眯着眼,或站远点,或近视眼取下眼镜,总之当左边糊成一片,而右边某栏的亮度和左边相当时。
注意:如果您没有做任何Gamma校正(没有使用Adobe Gamma之类的软件,或虽使用了但校正系数设为1.0),测得的才是显示器的Gamma,否则只能称为系统Gamma(或复合Gamma)。
如笔者的ACER AL1916W的GAMA值为2.0左右。
另外,通过显示器自带的ICC Profile是可以知道显示器的Gamma的,这个应该比较准。
三. 什么是Gamma校正?从一个数字化的图片文件,到我们最终看到的图片,中间要经过许多环节。
几乎在任何一个环节上,都可以加入一些变换,以改变最终输出和最初输入的关系(类似的,这种关系被称作系统Gamma或复合Gamma)。
比如,对gamma=2.5的显示器,在数据传递到显示器之前,将其做一个gamma=0.4的变换(比如对显卡缓存中的数据,d’ = d ^ 0.4),这样就能从总体上得到一个线性的关系。
注意这里有一点混乱。
通常我们说做一个gamma=c的校正,意思是指做output = input ^ (1/c)的变换。
有一个倒数关系。
图:Gamma校正示意图对于PC,显示器的Gamma是2.2左右(可能以前更多的是2.5,现在好像趋向2.2了),一般没有内置的校正,所以我们说Adobe Gamma对Windows系统默认的校正系数2.2。
对于MAC,显示器的Gamma是2.5,硬件内置了1.4的校正,所以它还需要2.5/1.4~=1.8的校正才成为线性的。
下文对各种系统下的gamma 校正过程有更详细的说明。
四. Gamma校正可能发生在哪里4.1. 系统级(硬件、操作系统)显示器内没有听说过有何补偿,即使有,它们也对外呈现一定的gamma值。
主要的补偿发生在显卡及其驱动程序类。
如果显卡硬件不支持,则由驱动程序软件完成。
在Windows中,上层通过调用驱动程序的一个接口函数(DrvIcmSetDeviceGammaRamp)向其传递Gamma校正表(LUT),这个表的大小是3*256项(每项16字节),对应于RGB三个通道,每个通道256级。
描述这一细节,可以对有些事情更有把握:* 这种校正实际上可以是任意函数,而不限于gamma为幂的指数函数。
* 也是因为此,不能通过驱动程序得到系统的gamma值(因为最多只能得到那个表)。
* 这一设置对整个系统有效(任何程序,任意显示的图片都受它影响)。
以前我一直不明白Adobe Gamma和驱动程序的Gamma是什么关系,它们一起出现就不知所措。
还有人说它们是共同作用的。
现在我完全明白了,没有迭加关系,最后者的设置有效。
而且,Adobe Gamma也不必是(实际上也不是)一个驻留程序,它仅在启动时将那个表传给驱动程序就完成了它的任务。
还可以用其它程序来校正/设置gamma,下面是一个方便的小工具:Gamma Panel。
(查看本文中的图片,需要经常改变gamma,最好下一个,Free的。
)图:Gamma Panel,一个校正系统Gamma的小工具4.2. 应用程序级如前提到的,某些播放软件有Gamma校正功能,ACDSEE也有。
这时,它们不是修改系统的Gamma校正表,而是在解码时对当前帧/图像作了实时的Gamma 变换。
图:ACDSEE浏览图片时可加载Gamma校正功能图中左边是由IE打开的同一图片(无Gamma校正),可以看出它们的亮度不同。
(不过,黑框和白边是相同的。
)4.3. 文件级如前面提到的(图 1-2 ACDSEE中的曝光调节),某些图像处理软件可以调整文件的Gamma,这种调整的结果将写入文件(即相当于对图像进行某种处理)。
比如,当你的PC未进行Gamma校正(你的系统Gamma=显示器的Gamma约2.2),这时你可以把文件的Gamma调为2.2保存,你以及其它未校正系统Gamma的PC 用户看到的这个图片应是正好的。
(注意,这里有一个前提即原始图片在Gamma=1的系统上看是“正好”的。
另一种方式则是将Gamma校正的系数写入文件内,而不改变文件内容,而浏览/处理软件在解码这一图像时会依据这一参数对它单独进行Gamma校正。
(这被称作“文件Gamma”。
PNG格式支持)总之,不管Gamma校正发生在哪一环节,它们是等效的(在理想情况下/或近似地看)。
明白在哪些环节Gamma发生了怎样的变化,然后做一些乘除法就可以了。
五. 改变Gamma带来的影响5.1. 影调的变化通常的感觉是,系统gamma高,图像会发暗,而校正后,画面变亮。
观察下列图片。
两个对应的File Gamma=2.5的图片是为了模拟系统Gamma的变化。
或者也可以用Gamma Panel之类的工具,将Gamma校正系数设为1.0~2.5观察(每组中的第1个图片)。
图灰度图0-128, File Gamma=1.0图灰度图0-128, File Gamma=2.5图灰度图128-255, File Gamma=1.0图灰度图128-255, File Gamma=2.5图:很直观的调整Gamma值的例子结论:* 当系统Gamma高(Gamma校正=1.0)时,看到的图像暗部影调丰富;反之,则亮部丰富。
* Gamma校正设为2.5时看到的File Gamma=2.5的图片,和校正设为1.0时看到的File Gamma=1.0的图片相当。
5.2. 颜色的变化很显然,Gamma的变化带来亮度的变化。
而单独改变某个通道的Gamma,则会则会带来色调(Hue)的变化。
Gamma Correction = 1.0 Gamma Correction = 2.5Source Output Source OutputR 80% R 57% R 80% R 80%G 20% G ~0% G 20% G 20%B 20% B ~0% B 20% B 20%当然,如果显示器本来就偏色,我们则可以改变某个通道的Gamma使其总体上保持均衡。
5.3. 其它其它影响在后面有说明或提及。
六. 校正Gamma的理由主要指是否要将系统Gamma校正到1.0。
因为校正总是存在的。
(下同)6.1. 标准化及互换性如果数码相机/扫描仪给你一个Gamma=1.0的图片,你最好是在系统Gamma=1.0的系统上查看;或者当你的数码图片要拿去输出时,对方系统Gamma=1.0;……(这部分涉及到色彩空间、ICC Profile,我还不太清楚,而且接触的设备非常有限,不多说了。
)6.2. 算法上的要求在涉及不同灰度的混合时,就会对gamma有要求。
一个简单的例子,考虑在填充时,一半的黑(0)+一半的白(255),效果应该和50%的灰(128)相同。
但这仅在系统gamma=1.0时成立。
又如,彩色转黑白时常说的:30% R + 59% G + 11% B,也是针对gamma=1.0而言。
同样,许多算法也是针对1.0的系统gamma,否则算法内要做gamma校正。
下面是一个抗距齿(anti-alias,反走样)的例子。
图:通常情况下的边缘由于只能在矩形的点阵中画斜线,而斜线的像素值为全黑,当斜线较陡(或平)时,就会有明显的锯齿感。
图:采用anti-alias后,锯齿感没有那么明显了在Photoshop中放大查看此图片,就会发现边缘不是全黑的,而是渐变的。
(这是对anti-alias的直观理解。
)注:不要用ACDSEE放大查看,它默认的放大算法是插值的,无法看清像素的原貌。
图:anti-alias并gamma校正后,锯齿感完全消失当然,如果你保持系统gamma=1.0去查看上面的图片,就会发现第2张图完全无锯齿感,第3张图反而有一点。
(这不是也可以作为一种估计系统gamma的方法吗)七. 不校正Gamma的理由7.1. 现实的非标准化假定你的图片作为Web发布,你的用户(观众)的系统Gamma会是1.0吗?即使可以假定色影无忌的泡菜会用Adobe Gamma将他们的系统Gamma校正到1.0左右,但绝大多数普通用户呢?——在接触到Photoshop前,我是不知道什么Gamma的。
也许只能折衷吧。
(MAC通过硬件只校正到1.8,SGI只校正到1.4,不知道有没有这方面的原因。
)Making Good Cross Platform And WWW Pictures而我们整天面对的操作系统,它默认用户界面的设计,又是以什么系统Gamma值为前提的呢?——似乎设为1.0并不是最舒服的。