关于伽马校正问题是我本科毕业设计留下来的一个扩展问题。我的毕业设计是基于FPGA的全彩屏显示控制器设计,老师在实验室给我拿了一个LED全彩屏,是一个32×16的显示屏,当然这个尺寸的屏幕就别想显示什么图片了。当我完成整个设计并向指导老师汇报了完成情况时,老师说看看能不能加上伽马校正,后来我就找了一些文章看,知道校正方法但是对其中的原理还是一知半解。最近在看FPGA的图像处理方面的东西又遇到了,找了一些文章和书籍又了解了一下。本文将对图像的采样量化编码入手,说明在图像采集设备(相机)的Encoding Gamma(1/γ),在显示器控制器(CPU/DSP/FPGA)的伽马校正(Gamma Correction),人眼感受光的曲线,显示器的显示曲线四者的关系。本文未涉及到伽马校正的方法和变换的数学模型,这些可以在相关论文和期刊中找到。
本文主要回答和涉及以下几个方面:
0:伽马校正是什么
1:三原色的组合
2:从物理世界到屏幕显示过程
3:从模拟(连续)到数字(离散):采样量化编码
4:为什么要非量化编码
5:伽马校正中四种关系
0:伽马校正是什么
许多成像设备在采集光信号并将其转化为电信号的过程中会具有很多非线性特性。许多显示器、几乎所有的摄影胶片以及印刷品都具有非线性特性。幸运的是,几乎所有的非线性设备的传输函数都可以用一个简单的幂函数来近似,
y = x^γ
这个公式叫做色调曲线或者伽马曲线。将一幅图像的伽马函数从一个转换到另一个的过程叫做“伽马校正”。在大多数的数码相机当中,伽马校正在信号处理链的图像获取阶段就已经完成:每一个线性的R、G、B组成都通过RGB伽马校正函数转化为非线性信号。伽马曲线利用改变原图像直方图分布的非线性函数将输人像素值转换为其他值。对于大多数CRT显示系统而言,上式中的伽马值约为0.45.不过,对于静态数码相机而言,伽马值并不是恒定的。在数码相机中,色调曲线一般有两类实现过程,即RGB和 Ycbcr色彩空间。通常,前者存在于使用RGB色彩滤波阵列传感器的数码相机中,后者存在于使用互补色彩滤波阵列传感器的数码相机和数码摄像机中。在一些应用当中,RGB伽马校正有三个通道,分别对应于R、G、B。
RGB查找表法伽马校正
其实上图就是下面4要说的和非均匀量化结果类似。
1:颜色组合原理
初中物理我们知道颜料的三原色是红黄蓝,显示器的三原色是红绿蓝,而其他颜色可以由这三种颜色组合得到。在显示器进行显示时,不可能像真实世界用任意的比例去得到无数种颜色。这是因为我们现在用数字信号去存储数据,而在现有的计算机系统中只有01两种数值。通常每一位色度信号是8位。而这8位可以产生从00_000_000 — 11_111_111 一共2^8 = 256种亮度信息,而红绿蓝三种颜色可以组合成 2^8×2^8×2^8 = 2^24 种颜色,这就是我们常说的16兆(M)色屏。
2:从物理世界到屏幕显示过程
从真实物理世界到显示屏上的画面大致经过:传感器接收光源—— 传感器上电压(流)变化 ——> 模数转换(ADC)同时完成数据采集端的伽马转换——> 显示设备的数模转换(DAC)——> 三原色发出不同的亮度组合成不同的颜色。
下面将对模拟到数字信号转换(AD)进行说明
3:采样量化编码
模拟信号到数字信号,要进过ADC进行采样量化编码。而采样遵循的原则是奈奎斯特采样定理:采样的频率至少是所采样信号频率的两倍。下图是一个采样的简单模型,图中曲线是连续的物理量,连续的物理量(电压/电流)在数字计算机中是不能直接进行运算处理的,多亏了前人伟大的科学家给我们的理论,就是在不需要连续的信号情况下我们只要遵循奈奎斯特采样定理,以一定的周期记录离散的数值就可以恢复出原来的信号,这简直太神奇了。这也是我们所处数字世界的必要条件。
但是采样周期并非越大越好,超过一定的频率边际效用递减,一方面会带来更多的数据要处理存储再处理,另一方面这些过多的数据对于还原原来的模拟信号质量的提升微乎及微了。就像一个人在饥饿状态下,吃了两个饼感觉到饱了,如果再吃不会对之前饥饿感有太多收益。
量化编码就是用二进制数字来表示采样的值。如下图所示对于1v的电压采用8个等级来量化,其中量化会有误差量化的位数越多误差就会越小。考虑到成本并“不是”越多越好。
4:非均匀量化
非均匀量化的基本思想是,使量化间隔随信号幅度的大小变化。在大信号时,量化间隔取大一点,而小信号时,量化间隔取小一点。这样就可以保证在量化级数(编码位数)不变的条件下,提高小信号的量化信噪比,扩大输人信号的动态范围,也就是能记录更多的亮度信息。可能你会疑惑什么是更多的亮度信息,因为相机传感器在接收到光强和颜色的物理量后由AD将模拟信号转变为数字信号,红绿蓝(RGB)三色数字信号,通常每一位色度信号是8位。而这8位一共可以参数28 = 256种亮度信息常称为灰度信息(Gray)因为人眼对亮度较弱的变化很敏感,所以在低亮度可以用更多的数据去记录,而这种关系是按照人眼对环境光感受曲线来定的(1/γ)。这样最后还原的数据与更符合人的视觉体验,这是为什么要非线性编码(经过伽马校正后的)。下图这里的均匀输出是对人眼感受而言的。
非均匀量化编码
显示器的亮度大约与输入的模拟信号电压的γ次方成正比。在 CRT或者 LCD 显示器上,该值一般为 2.2~2.5。因此,相机的预补偿功能,是让 RGB的量值按照 1/γ次方的关系来变化。该效应所带来的影响是,视频摄像机和计算机图形学程序, 伽马(Gamma) 校正可以预先对其 RGB 输出流进行预校正,以便补偿所针对的显示器的非线性,并就眼睛实际感受场景的方式形成一种有现实意义的模型 。在把非线性变化(已经经过伽马校正)的数据输入到显示屏上显示后,要使输出的效果线性的,人眼感觉到从黑到白是均匀变化的。
5:伽马校正中四种关系
图像采集设备(相机)的Encoding Gamma(1/γ),在显示器的驱动器(CPU/DSP,FPGA)的伽马校正(Gamma Correction),人眼感受光的曲线,显示器的显示曲线。进行伽马校正的原因是为了让显示效果更接近人眼在实际看到的。而Encoding Gamma(1/γ)现在相机中是一定有的。这是因为显示器的伽马值是γ的话,输出的刚好是线性的。而Encoding Gamma就是尽量和人眼的伽马感受曲线就是一样。其中在处理器内部的伽马校正是根据显示器不同的情况来定的,一般相机的伽马编码的关系式是固定的。但是如果不同显示器的伽马值在2.2~2.5之间变化的话那就要进行伽马校正,例如相机采集的图像信息是按照1/2.2来编码的,如果显示器的伽马值是2.5,那这时就需要校正让其γ值一样。显示器的伽马值固定了,那这时处理数据只能按照对应关系换算成1/2.5情况下的编码数据,这一过程称作伽马校正。所以在显示端伽马校正有时是不需要的。一切的原因还是在量化光强编码时的位数少了RGB888每一通路是8位也就是256种亮度信息,而我们要更可能多的去记录那些暗部信息,所以在相机有了一次伽马校正(Encoding Gamma),而由于相机的伽马值未必与显示屏的伽马值相匹配所有在显示控制器端又有了一次伽马校正。
显示曲线表示的是输出的客观亮度和对应的像素值大小不是线性的,例如在像素为8的时候亮度不是像素为1亮度的八倍而是要大于8。
所以才有了上面非均匀量化编码那样的编码图,二者结合理想上是输出线性的光强,如下。
今天的文章伽马校正_伽马校正是什么意思[通俗易懂]分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/71649.html