浅谈GAMMA校正

浅谈GAMMA校正浅谈GAMMA校正做图像处理时需要弱化光照影响。发现Gamma校正有效果,但也仅限于知道有这个指数关系,查阅了一些博客和网站,现整理如下。1关于人眼和计算机人眼对暗部细节比较敏感。人眼不同于摄像机,接收光子来感知光线。比如:在一间小黑屋中每增加一盏灯,摄像机都能线性增加亮度。但是人眼在黑暗时增加一盏灯时感受明显,往后随着灯的个数增长人眼并不会有明显感受。如果将实验做成图表,如下图…

大家好,又见面了,我是你们的朋友全栈君。

浅谈GAMMA校正

做图像处理时需要弱化光照影响。发现Gamma校正有效果,但也仅限于知道有这个指数关系,查阅了一些博客和网站,现整理如下。


1 关于人眼和计算机

  1. 人眼对暗部细节比较敏感。

    人眼不同于摄像机,接收光子来感知光线。比如:在一间小黑屋中每增加一盏灯,摄像机都能线性增加亮度。但是人眼在黑暗时增加一盏灯时感受明显,往后随着灯的个数增长人眼并不会有明显感受。如果将实验做成图表,如下图所示,蓝色为人眼紫色为摄像机。
    img
    这种特性有一个生物学原因:它使我们的视野能够在更广泛的亮度范围内运行。否则,我们在户外遇到的典型亮度范围将太大。参考以下三图,第一幅为原始图,第二幅为 5 bits 线性编码的图像,第三幅为 5 bits Gamma编码的图像。
    smooth 8-bit gradient (256 levels)
    linearly encoded gradient
    gamma encoded gradient
    一方面,可以看出Gamma编码后的图像相比于线性编码的图像,明显有更多的暗部色阶。这是不是说明了人和数学的和谐统一?Gamma编码刚好满足了人眼对暗部细节敏感的特性。另一方面,Gamma编码后的图像色阶更均匀,可以去测试线性和Gamma编码的直方图对比也曾现出均匀分布的特性。

  2. 计算机中的图片存储和显示通常为 8 bit,也就是256个色阶。

真实自然界图像 >> 图像存储 > 显示器输出 < 人眼接受 ,通过上述两点,受限于当下有限的存储和显示,需要在图像的转移(处理)过程中尽可能保留暗部细节,用以满足人眼的暗部敏感需求。


2 Gamma 工作流程

物理显示设备上luminance的生成,通常和它输入的信号不成正比的,存在非线性的关系。例如传统的CRT电视或显示器上,是通过电子枪的发射高速电子,投射在电视平面的荧光粉上使之发光,而通过不同输出电压来调节电子束功率,就可以调节显示的Luminance。但因为电压的幂定律( power-law)响应的缘故(心理物理量和物理量并不成线性增长关系,而是幂函数的形式)。最终显示的在屏幕上的效果受电压影响大概是原理的Power 2.5左右(通常是2.35到2.55之间) 。而这个Power函数的指数数值,就是我们俗称的gamma。记作: I ∝ V s γ I \propto V_{s}^{\gamma} IVsγ

如下图所示:

img

Gamma校正工作流程其实就是一个简单的图像复现过程,因为前面提到的两个问题,所有存储时先进行Gamma压缩在显示时在Gamma还原。最后 G a m m a = = 1 \mathrm{Gamma == 1} Gamma==1

如下图所示,对输入信号做一次关于gamma的逆处理( 1 / g a m m a = 1 / 2.2 = 0.45 ) \mathrm{1/gamma = 1/2.2 = 0.45)} 1/gamma=1/2.2=0.45)),这样两个非线性的相逆的曲线使得最终的输出成为线性。

600px-GammaFunctionGraph_svg.png

流程参考该图:

img

Ref

[1-Cn Blog][https://www.cnblogs.com/TracePlus/p/4168447.html]
[2][http://www.cambridgeincolour.com/tutorials/gamma-correction.htm]

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/148591.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • GROUP BY与COUNT用法详解

    GROUP BY与COUNT用法详解聚合函数在介绍GROUPBY和HAVING子句前,我们必需先讲讲sql语言中一种特殊的函数:聚合函数,例如SUM,COUNT,MAX,AVG等。这些函数和其它函数的根本区别就是它们一般作用在多条记录上。SELECTSUM(population)FROMbbc这里的SUM作用在所有返回记录的population字段上,结果就是该查询只返回一个结果,即国家的总人口数。

    2022年5月9日
    40
  • Base64 转图片「建议收藏」

    Base64 转图片「建议收藏」Base64编码与图片互转/****版权所有:2016项目名称:ImgeBase64**类描述:将图片转化为Base64字符串类名称:cn.sanishan.util.Base64Img**@versionV1.0*/publicclassBase64Img{//将图片文件转化为字节数组字符串,并对其进行Base64编码处理…

    2025年12月2日
    3
  • java集合详解_通俗易懂java集合

    java集合详解_通俗易懂java集合ArrayDequeArrayDeque是Deque接口的一个实现,使用了可变数组,所以没有容量上的限制。同时,ArrayDeque是线程不安全的,在没有外部同步的情况下,不能再多线程环境下使用。ArrayDeque是Deque的实现类,可以作为栈来使用,效率高于Stack;也可以作为队列来使用,效率高于LinkedList。需要注意的是,ArrayDeque不支持null值。ArrayDeque初识说明书和继承关系还是按照国际惯例,先看一下ArrayDeque的说明书,其实往往很多时候你的困

    2022年9月20日
    3
  • Facebook 秘钥散列

    Facebook 秘钥散列先下载OpenSSL工具执行这个命令keytool-exportcert-aliasandroiddebugkey-keystoredebug.keystore>c:\openssl\bin\debug.txt其中androiddebugkey是你xxx.keystore文件的路径,debug是你.keystore文件的名字然后路径cd到openssl文件夹下的bin目录执行opensslsha1-binarydebug.txt>debug_sha.t

    2022年5月15日
    43
  • N皇后问题(c语言实现)

    N皇后问题(c语言实现)问题描述 有一个 n n 的棋盘 在这个棋盘中放 n 个皇后 使得这 n 个皇后 任意两个皇后不在同一行 同一列 同一条对角线 例如 当 n 等于 4 时 有两种摆法 输入只有一个整数 n 思路如果我们是从这个 n n 这个棋盘中选取 n 个方格放皇后 再去判断是否满足条件的话 则效率会非常低 这是一个组合数 complement nn nn atopn nn nn 当 n 等于 8 时 就要枚举次

    2025年9月1日
    2
  • 博客

    博客

    2021年8月20日
    58

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号