为什么要使用gamma校正?

news2024/10/5 23:36:00

为什么要使用gamma校正?

  • 人眼直接观察实物
  • 相机拍摄、存储、输出到显示器上,人眼再观察该物体
    • 1. 拍摄
    • 2. 存储
    • 3. 显示

总结:在计算机时代早期,为了抵消当时主流的RTC显示器的非线性特征,拍摄图片存储过程中需要gamma校正。人眼对于亮度的感知反应也是非线性的,对暗部的特征变化更为敏感,恰好图片存储过程中的gamma校正正好能增加对暗部特征的采样,所以就算现在RTC显示器已经被淘汰,图片存储时仍然默认使用gamma校正,相应地,在现在的显示器端需要做逆gamma校正来使得最终真实物体亮度与显示器显示的亮度呈现接近1:1的关系。


人眼直接观察实物

在这里插入图片描述

(图1 实物到人眼成像的映射过程)

根据图1史蒂文斯定律可知,人眼对亮度变化的反应是非线性的——对暗部颜色变化更敏感、很难区分亮部的颜色差异(说是进化的结果,帮助人们在夜晚也能快速发现危险)。具体的表现如图2所示

在这里插入图片描述

(图2 人眼的非线性感知,截图来自:https://zhuanlan.zhihu.com/p/423301746)

人眼的这种特性近似于Log函数,若用 x x x表示亮度, x ′ x' x表示人眼反应,那么两者的对应关系为 x ′ = a ∗ l o g x x'=a*logx x=alogx,其中 a a a为常数。


相机拍摄、存储、输出到显示器上,人眼再观察该物体

在这里插入图片描述

(图3 实物从拍摄到被人眼从显示器上观看到的过程)

1. 拍摄

CCD、CMOS都是用硅作为光电转换器,他对光线强度的反应是线性的,光的亮度增加一倍,会使得感光元件接收到的光子数量增加一倍,可以简单理解成在相机对应像素点位置处的像素值也会增加一倍。

2. 存储

从图3可以发现图像捕捉设备在保存图像时会加上gamma校正,原因是:

1)CRT显示器的历史遗留问题

早期市场上几乎全是CRT(Cathode ray tube 阴极射线管)显示器,CRT在电能转为光能的时候表现的是非线性特性: I = V γ I=V^γ I=Vγ,其中 V V V为输入电压, I I I为CRT显示器在该电压下的显示亮度。由于显示器的非线性特性,为了最终在显示器上看到的和真实场景一致,所以存储的时候需要对拍摄原始数据进行gamma校正,两者非线性特征叠加正好抵消。

在这里插入图片描述

(图4 gamma校正与逆gamma校正叠加抵消非线性特性)

那么就有一个问题,现在CRT显示器基本都已经淘汰掉了,当今的显示器已经可以做到线性输出了,那么电子图像存储的时候是否可以废弃掉gamma校正?实际上,仍然还是需要伽马校正,因为他还有另外一个重要作用。

2)gamma编码图像能更有效地存储色调

自然界的光强度范围很广,但是我们磁盘的存储空间是有限的,常用的RGBA32格式,每个颜色通道有8位,最多只能表示256种亮度,所以需要一个把自然界很广的亮度范围映射到存储限制的256亮度范围的操作。

假设把亮度划分为10个等级,有两种映射方式:

  • 物理线性(Physically linear)映射,把真实亮度均匀划分为十等份进行映射,但是由于人眼感知的非线性特征,看到的亮度变化如图5左边的方块颜色变化,这样子存储下来的图像丢失了很多人眼敏感的暗部信息,这样子会造成最后显示的时候人眼认为没有还原物体真实色彩

    在这里插入图片描述

    (图5 物理线性映射)
  • 感知线性(Perceptually linear)映射,按人眼的感知亮度均匀划分亮度等级,能在不增加数据量的前提下,保留更多的暗部特征,更为真实地还原人眼所看到的真实场景

    在这里插入图片描述

    (图5 感知线性映射)

这里的感知线性映射就是gamma校正,具体的做法就是:相机捕获到现实世界真实的光的信息,然后对这些输入开n次方根(n即gamma值,一般取1.8~2.2), O u t p u t = I n p u t 1 / g a m m a Output = Input^{1/gamma} Output=Input1/gamma由于历史惯用,gamma取值2.2已成为业界标准

3. 显示

从图3和图4我们可以知道,如果gamma校正与逆gamma校正中的 n n n值和 m m m值相等的话,最终真实物体亮度与显示器显示的亮度呈现1:1的关系。在实际应用场景中,也可以通过调节显示器逆gamma校正中的gamma值(即图3中的 m m m)来提升图片中的某些细节的清晰度,但同时会使得另一部分不容易分辨细节:

  • 调大 m m m值,表现为总体提亮,原暗部占据更多明暗范围、易于分辨细节,原亮部变得更亮(白茫茫,占据明暗范围减小)且细节分辨变得困难。
  • 调小 m m m值,表现为总体压暗,原亮部占据更多明暗范围、易于分辨细节,原暗部变得更暗(黑乎乎,占据明暗范围减小)且细节分辨变得困难。

不同显示器的gamma值不同就会造成同一张图在不同显示器上颜色有出入,所以一般图像在存储的时候会同时保存图像的color profile,该文件用于描述图像颜色特征,它包含了一系列的参数,如颜色空间、颜色深度、色彩饱和度和亮度等信息,color profile文件有不同的编写标准,其中sRGB是应用比较广的一个通用标准。


参考:

Gamma空间和Linear空间 全解析

彻底搞懂Gamma矫正

gamma校正

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1622186.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

蓝桥杯-网络安全-练习题-crypto-rsa

共模攻击 直接脚本即可 import libnum import gmpy2import random random.seed(123456)e1 random.randint(100000000, 999999999) print(e1) e2 65537 n 7265521127830448713067411832186939510560957540642195787738901620268897564963900603849624938868472135068795683…

【blog项目】layui与jquery冲突导致鼠标悬停事件失效、如何调用layui.use()作用域里的方法

blog项目前台展示——查询数据库中的文章类型并展示时出现的bug 1 正常演示 2 用jquery查询数据库并添加到页面后 3 相关代码 <script src"/static/jquery-2.1.4.js"></script> <script src"/static/layui/layui.js"></script> …

信息系统项目管理师——质量管理论文写法以及子题目

质量管理概论 过程组过程名称含义输入工具和技术输出规划过程组规划质量管理制定质量管理策略、明确质量标准与过程&#xff0c;以确保项目满足既定质量要求。- 项目管理计划- 干系人登记册- 需求文档- 组织过程资产1.专家判断 2.数据收集 标杆对照 头脑风暴 访谈 3.数据分析 …

【网络安全】跨站脚本攻击(XSS)

专栏文章索引&#xff1a;网络安全 有问题可私聊&#xff1a;QQ&#xff1a;3375119339 目录 一、XSS简介 二、XSS漏洞危害 三、XSS漏洞类型 1.反射型XSS 2.存储型XSS 3.DOM型XSS 四、XSS漏洞防御 一、XSS简介 XSS&#xff08;Cross-Site Scripting&#xff09; XSS 被…

机器视觉系统-工业光源什么是高角度光,以及发光角度得分类

光路描述&#xff1a;光线与水平面角度>45称为高角度光。 效果分析&#xff1a;高角度照射&#xff0c;光线经 被测物表面平整部分反射后进入镜头&#xff0c;图像效果表现为灰度值较高&#xff1b;不平整部分反射光进入不了镜头&#xff0c;图像效果表现为灰度值较低。 主要…

高薪诱惑下,跳槽真的是明智选择吗?

跳槽是职场生涯中不可避免的一部分&#xff0c;许多人在考虑是否换工作时&#xff0c;往往会被潜在的高薪所吸引。然而&#xff0c;决定是否接受一个高薪职位的邀请并非易事&#xff0c;它涉及到多个层面的权衡和考量。 我们要认识到薪酬仅是工作回报的一个方面。虽然高薪资往往…

springboot:java操作docker(docker-java)的基本使用

文章目录 dokcer-java使用xmlping拉取镜像创建容器查看所有容器信息启动容器查看日志删除容器删除镜像 dokcer-java使用 xml 引入依赖 <!-- https://mvnrepository.com/artifact/com.github.docker-java/docker-java --> <dependency><groupId>com.github…

【漏洞复现】通天星CMSV6车载监控平台Login弱口令漏洞

漏洞描述&#xff1a; 通天星CMSV6车载定位监控平台拥有以位置服务、无线3G/4G视频传输、云存储服务为核心的研发团队&#xff0c;专注于为定位、无线视频终端产品提供平台服务&#xff0c;通天星CMSV6产品覆盖车载录像机、单兵录像机、网络监控摄像机、行驶记录仪等产品的视频…

智慧物流时代:数字化转型下的物流新篇章

一、什么是智慧物流&#xff1f; 智慧物流是一种利用先进科技和信息技术优化物流供应链系统的新型模式。以数据为核心&#xff0c;智慧物流通过物联网、云计算、大数据和人工智能等技术手段实现物流信息的全面记录、无缝对接和智能化处理。其核心在于实现物流各环节的精细化、…

春游江淮 | 遇见花海, 郎溪第二届绣球花卉节即将开启

郎溪美迪花世界 各种颜色的绣球花海已初露花容 一团团、一簇簇 或淡粉、或淡紫、或淡蓝 以及各种渐变色的花球 景色可谓是浓淡相宜 在暮春时节 2024中国郎溪第二届绣球花卉节 正式官宣啦 郎溪邀您来遇见花海的浪漫 敬请期待吧 活动主题 花开中国梦,绣球美郎川 活动…

springboot 集成 activemq

文章目录 一&#xff1a;说明二&#xff1a;e-car项目配置1 引入activemq依赖2 application启动类配置消息监听3 application.yml配置4 MQConfig.java 配置类5 ecar 项目中的监听6 junit 发送消息 三&#xff1a;tcm-chatgpt项目配置5 MQListener.java 监听消息 测试启动active…

安卓玩机工具推荐----MTK芯片 简单制作线刷包 备份分区 备份基带 去除锁类 推荐工具操作解析

工具说明 在前面几期mtk芯片类玩机工具中解析过如何无官方固件从手机抽包 制作线刷包的步骤&#xff0c;类似的工具与操作有很多种。演示的只是本人片面的理解与一些步骤解析。mtk芯片机型抽包关键点在于..mt*****txt的分区地址段引导和 perloader临时分区引导。前面几期都是需…

信息化工作人员必备常识7——DNS【域名解析详解】

信息化工作人员必备常识7——DNS【域名解析详解】 前言信息化人员必备常识回顾&#xff08;不想看回顾的直接往下滑哦~&#xff09;pingtelnetnslookup命令ipconfig命令域名 DNS为什么需要DNS解析域名为IP地址&#xff1f;域名解析DNS服务器DNS服务器分类表格 DNS客户端DNS中继…

书生·浦语 大模型(学习笔记-3)茴香豆 --> 零代码搭建你的 RAG 智能助理

目录 一、首先了解什么是RAG 二、RAG的工作原理 三、进一步了解&#xff1a;Vector-DB 四、RAG流程 五、RAG的发展进程&#xff08;三种模式&#xff09; 六、RAG的常见优化方法 七、RAG与微调的区别是什么 八、模型优化方法比较 九、评价测试 十、总结一下 十一、…

网络隔离的最小配置

作者&#xff1a;任云康&#xff0c;青云科技研发工程师 前言 对于项目下的网络隔离&#xff0c;有用户提出了以下疑问&#xff1a; 网络隔离是针对 Pod 的吗&#xff1f;网络隔离的最小配置是什么&#xff1f; 配置后&#xff0c;哪些是可以访问的&#xff0c;哪些是不可以访…

[笔试训练](六)

016 大数加法_牛客题霸_牛客网 (nowcoder.com) 题目&#xff1a; 题解&#xff1a; 由于相加超过10要进位&#xff0c;因此需要从从后往前将每个数相加得到tmp&#xff0c;超过10时&#xff0c;该位只放tmp%10后的结果&#xff0c;同时将tmp/10&#xff0c;进入下一位的相加…

冯老师降维打击申论课

冯老师降维打击申论课&#xff0c;以其独到的见解和精湛的教学技巧&#xff0c;将复杂的申论知识变得简单易懂。通过深入浅出的讲解&#xff0c;帮助考生迅速掌握申论精髓&#xff0c;轻松应对考试。课程内容丰富实用&#xff0c;深受考生好评&#xff0c;是备考申论的不二之选…

观鸟,一场真实世界的宝可梦游戏

点击文末“阅读原文”即可参与节目互动 剪辑、音频 / 卷圈 运营 / SandLiu 卷圈 监制 / 姝琦 封面 / 卷圈 姝琦 产品统筹 / bobo 场地支持 / 声湃轩天津录音间 春天来了&#xff0c;是时候出门观鸟了&#xff01; 如果说城市公园20分钟效应是短暂逃离生活压力的手段。 那…

一些常见的Windows命令

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言看版本号查找端口启动程序杀死某个端口查看全部端口看ip进入目录就是总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 例如&#x…

MessageBox的模版语法上如何注册事件

目标&#xff1a; 想要在MessageBox中的文本中写一些事件&#xff0c;如何处理 在vue中进行操作&#xff1a; coding // 弹窗提示 this.$confirm({customClass: "add-fail",title: this.$t(add_error),type: error,dangerouslyUseHTMLString: true, // 将消息使用…