浅谈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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 硬核!用Mac Mini翻新了一台12年前的电脑

    硬核!用Mac Mini翻新了一台12年前的电脑本文转载自差评君有这么一位差友,不知道从哪儿加到了托尼的微信,都还没打招呼呢,上来就向我展现了他最近的硬核杰作。他将M1款的MacMini塞进了09年款27寸iMac,并把详细过程一股脑发给了我。尽管不清楚这样做有什么意义,但确实是做的很硬核,手法也相当专业,简单来说,他愣是把一台新电脑,塞进了一台老电脑。。。整理了一下他发过来的内容,大致弄清了这事儿的前因后果。把M1款的Macmini,塞进了09年iMac的想法,是他在看到了油管上有一位叫L…

    2022年5月30日
    88
  • springboot的启动流程图_springboot运行流程

    springboot的启动流程图_springboot运行流程文章目录前言springboot启动流程图第一部分newSpringApplication()第二部分工厂对象构建实例第三部分SpringApplication.run(启动此应用)第四部分SpringApplicationRunListener第五部分banner彩蛋前言研究springboot启动的整个流程。springboot启动流程图第一部分newSpringApplication()第二部分工厂对象构建实例第三部分SpringApplication.

    2022年8月20日
    7
  • NFS服务器搭建与配置[通俗易懂]

    NFS服务简介什么是NFS?NFS就是NetworkFileSystem的缩写,它最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。​ NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,而在本地端的系统中来看,那个远程主机的目录就好像是自己的一个磁盘分区一样,在使用上相当便利;NFS一般用来存储共享视频,图片等静态数据。NFS挂…

    2022年4月18日
    115
  • SpringBoot面试总结「建议收藏」

    SpringBoot面试总结「建议收藏」SpringBoot面试总结一.SpringBoot是什么?Springboot是一个脚手架(而非框架),构建于Spring框架(Framework)基础之上,基于快速构建理念,提供了自动配置功能,可实现其开箱即用特性(创建完一个基本的项目以后,可零配置或者少量配置即可运行我们的项目)。2.SpringBoot的核心特性是什么?起步依赖自动配置健康检查3.SpringBoot项目启动原理?SpringBoot项目在启动时,首先基于启动入口类上的注解描述,进行自动配置并扫描启动类所在

    2022年6月7日
    32
  • Gradle教程–基础篇

    Gradle教程–基础篇Gradle是什么Gradle是一种依赖管理工具,基于Groovy语言,面向Java应用为主,它抛弃了基于XML的各种繁琐配置,取而代之的是一种基于Groovy的内部领域特定(DSL)语言。安装Gradle在AndroidStudio中新建项目成功后会下载Gradle,貌似这个过程不翻墙也是可以下载,但是访问特别慢,建议翻墙下载。那么下载的Gradle到什么地方呢,或者说Gradle的本

    2022年6月28日
    34
  • && 运算符的使用

    && 运算符的使用

    2022年2月19日
    42

发表回复

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

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