简介
是用来针对影片或是影像系统里对于光线的辉度(luminance)或是三色刺激值(tristimulus values)所进行非线性的运算或反运算。最简单的例子里伽马校正是由下列幂定律公式所定义的。其中A是一个常量,输入和输出的值都为非负实数值。一般地来说在A=1的通常情况下,输入输出的值的范围都是在0到1之间。伽马值γ<1的情况有时被称作编码伽马值(encoding gamma),而执行这个编码运算所使用上述幂定律的过程也叫做伽马压缩(gamma compression);相对地,伽马值γ>1的情况有时也被称作解码伽马值(decoding gamma),而执行这个解码。
原理
假设图像中有一个像素,值是200,那么对这个像素进行校正必须执行如下步骤:1.归一化:将像素值转换为0~1之间的实数。算法如下:(i+0.5)/256这里包含1个除法和1个加法操作。对于像素A而言,其对应的归一化值为0.783203。预补偿:根据公式,求出像素归一化后的数据以1/gamma为指数的对应值。这一步包含一个求指数运算。若gamma值为2.2则1/gamma为0.454545,对归一化后的A值进行预补偿的结果就是0.783203^0.454545=0.894872。反归一化:将经过预补偿的实数值反变换为0~255之间的整数值。具体算法为:f*256-0.5此步骤包含一个乘法和一个减法运算。例,将A的预补偿结果0.894872代入上式,得到A预补偿后对应的像素值为228,这个228就是最后送入显示器的数据。
如上所述如果直接按公式编程的话,假设图像的分辨率为800*600,对它进行gamma校正,需要执行48万个浮点数乘法、除法和指数运算。效率太低,根本达不到实时的效果。针对上述情况,提出了一种快速算法,如果能够确知图像的像素取值范围,例如,0~255之间的整数,则图像中任何一个像素值只能是0到255这256个整数中的某一个;在gamma值已知的情况下,0~255之间的任一整数,经过“归一化,预补偿,反归一化”操作后,所对应的结果是唯一的,并且也落在0~255这个范围内。
应用
如果生产厂家不加说明,那么它的γ值大约等于2.5。用户对发光的磷光材料的特性可能无能为力去改变,因而也很难改变它的γ值。为使整个系统的γ值接近于使用所要求的γ值,起码就要有一个能够提供γ校正的非线性部件,用来补偿CRT的非线性特性。在所有广播电视系统中,γ校正是在摄像机中完成的。最初的NTSC电视标准需要摄像机具有γ=1/2.2=0.45的幂函数,采纳γ=0.5的幂函数。PAL和SECAM电视标准指定摄像机需要具有γ=1/2.8=0.36的幂函数,但这个数值已显得太小,因此实际的摄像机很可能会设置成γ=0.45或者0.5。
使用这种摄像机得到的图像就预先做了校正,在γ=2.5的CRT屏幕上显示图像时,屏幕图像相对于原始场景的γ大约等于1.25。这个值适合“暗淡环境”下观看。过去的时代是“模拟时代”,而今已进入“数字时代”,进入计算机的电视图像依然带有γ=0.5的校正,这一点可不要忘记。虽然带有γ值的电视在数字时代工作得很好,尤其是在特定环境下创建的图像在相同环境下工作。可是在其他环境下工作时,往往会使显示的图像让人看起来显得太亮或者太暗,因此在可能条件下就要做γ校正。
在什么地方做γ校正是人们所关心的问题。从获取图像、存储成图像文件、读出图像文件直到在某种类型的显示屏幕上显示图像,这些个环节中至少有5个地方可有非线性转换函数存在并可引入γ值。



















