热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

数字图像处理怎么讲yiq空间变成rgb空间_浅谈色彩空间

文章建立于20200405文章修改于20200913文章完成于未完成;如有修改会在.每次周末、闲时更新..声明:此文章为本人学习笔记。首发知
ffbcd91c6a70d489252f19244223d4a3.png

文章建立于 20200405
文章修改于 20200913
文章完成于 未完成;如有修改会在.每次周末、闲时更新........
声明:此文章为本人学习笔记。首发知乎。自己温习,也同他人分享沟通。如果文章中有侵权,错误,或者有不同的理解,本人希望在学习的路上得到更多的沟通,反馈。鄙人在此致谢。大家多指教!


文章大纲

一、色彩空间概念

二、数字图形中常见的数据处理(色彩空间转换--矫色)

正文

一、色彩空间概念:

使用三维XYZ去表示RGB。(XYZ取值范围为约定范围)

af0ac66dcbb1eea1e0089f5a88ff1250.png
图1
7eefb704c5436231ed8d0aedef3bad64.png
图2
0709437c48f46a2c2bee62fa48c54635.png
图3
6a50e4247b743e68e18025d4b02ba272.png
图4

(图4),特殊说明,当RGB值都是同一数值是,我们定义为灰色,图中我约定为值域介于(0,0,0)- (1,1,1),最黑到最白,图7、图9黑线同理。

8e6a8e178e896a433b5d081d6101cee6.png
图5
ee8a2ca596269022f8193a3401f2d7cf.png
图6

//C++

HSL色彩空间:

HSL的由来,从图7到图8,把摄相机放置(1,1,1)点看向(0,0,0)点(图4),就能得到一个圆柱图9。在图9中圆柱中心的直线为灰度L,圆平面上越往外颜色越饱和S。色相的变化就绕圆柱圆周边H。

优点:把色彩的概念分离成色相,饱和度,亮度,调色混色更方便,更加专注。(图10、图11)

eee659b68594f4863c82fe8b02d96c90.png
图7
2306d5250b842639a0b2bfe88f21dcb4.png
图8
4d771918d6fa89e0f5525db39a877e00.png
图9
be5c0f75231ae51e528b82c41d6663b0.png
图10
aa0e5692d8c0df6ae749abc2933fb752.png
图11
24c794b1ce1903505db083b49a8cf78a.png
发展与由来

//HSL的实践

CIE色度图

表示人类可以感知的所有颜色(图12)。

人眼是传感器,会把看到的颜色光当作一系列信号传送给大脑(图14,15)。特点:1、相对于亮部来说,对暗部更敏感(所以正常情况下尽量把画面需要体现细节的点放在暗部),2、相于其他两色来说,对绿色敏感,其次红色,最后是蓝色,敏感度:绿色》红色》蓝色。

科学界标准更新:1920左右(制定光谱标准(色板))

f405ba3f2ae3d9d56053e93aee70afc0.png
图12
686feb9adbfacfdc5c877a1de6151f86.png
图13

图13(图13不准确,只为更为方便的概念理解3D空间样式图)

CIE色板代表的是科学界的,但在实验室图形中都没有实现,现实中存在各种原因,在现代所有设备中都不能还原出科学上的(色板色域),更纯的颜色(硬件表现不出纯度更高更接近科学色板),我们常听说高色域显示器,就是比其他显示器的三角区域更大点,更纯的颜色,更接近科学界标准的色域(图24)。

因为人类对不同颜色频率波段的颜色感知敏感度不一样,所以科学家在制作CIE时,把最敏感的颜色画得最少,不敏感的颜色画得最多,以达到计算上的正确和人眼上看到的色彩自然和色活觉均匀性,颜色的混合都是线性的,只要在两个颜色间绘制作一条直线就能等同于现实的颜色混合(图20)右侧图。

ee08331ca7a25ea23ca6510bc9308861.png
图14
95270ba91d8202d767b5f08af841d69c.png
图15
02e3e8b3bcdb4fa8e986ce10779d0e90.png
图16
4abad033ec948b17b866aebec4dc302e.png
图17
93c7d41673674a1f00e893f4cade90e7.png
图18
f405ba3f2ae3d9d56053e93aee70afc0.png
图19
bac19e99adff8c7941a5442d7fbb5e53.png
图20

在常用图形DCC中,常看到的是HSL(HSV)上图左侧圆形色域表示法。而从CIE转到HSV中,会发现混合颜色是不怎么正确的,这也是一种弊端。

二、数字图形中常见的数据处理(a、先色彩空间转换,b、转换完成后的矫色)

对数据转换后,需要的任务便是矫色,使之在不同设备间保持大体一样的颜色。

现代设备问题:

5973f06a3e05f7f687aa0748a23b9ba3.png
图21

图21中,左一为高色域显示设备,中间大屏为电影激光显示设备,右为普通显示设备。

图22中,几种常见的硬件在CIE中的色域大小。图23为同份资源在不同硬件空间下的表现。

7a921bcdbeb489ff1808d1b26bc018e7.png
图22
ee574b96f225bb7ed1438c592a27b35a.png
图23
9a00e1347e85bd804384876b35b5dbcd.png
图24

在图24中,注意不同色域的定义,起点位置都指上最纯色,只看最纯色的不同,代表着色域的不同,不同硬件的色域定义。

a787ec4864082133b0b22ad0b56f2b37.png
图25

在上图左右能对比出因不同色域的区别,而我们要做的,就是矫正调色。把右图矫正调色到好的效果成品左图。

LDR

由于硬件设备的局限性和不统一性,所以国际做了一个标准的统一性--LDR。

数据处理:类似方法,RGBA为0-255,M 浮点系数为1/255。把0-255整数范围映射到0-1浮点范围。目的是方便图形计算,方便硬件显示。(浮点可以为float half)

HDR

比LDR更宽的范围,也属约定统称。像图22中三种不同的范围也都属于HDR。只是也在CIE中不同的范围。LDR没在CIE中画出来,他的范围会小太多。

怎么开启HDR,以unity为例:

A、在项目设置中开启HDR

B、在摄相机上开启HDR

C、RT处理(RT会把LDR转成HDR的数据,注0)

优点:

在高强度区域不会丢失颜色

更好地支持泛光和发光效果

减少低频光照区域的条带

(见下文章的细节说明,主要思路是:保证高亮区域的信息正常(图26),并保持其他亮度区域无变化。)

缺点:

使用浮点渲染纹理(渲染速度较慢,需要更多 VRAM)

不支持硬件抗锯齿(但您可以使用抗锯齿后期处理效果来平滑边缘,采样后的抗锯齿效果欠佳)

并非所有硬件都支持

95fb823c9832e1e483d6610bc0e907f2.png
图26

线性空间与伽马空间

Gamma 跟人类眼睛看到类似,而自然界现实中是类线性的,从自然界说Gamma空间其实是错误的,但从人眼看到Gamma是正确的。在图形计算里把,把颜色放在线性空间计算得到的结果更为正确,所以更高级而又复杂的图形计算都是把颜色放进线性空间内。

cefd166a8ca945d6025af4606a9348ab.png
图27
72a74a304587b2cf6bd97efe249e8828.png
图28
ecf389d39b5d4b35eee28707b2b8d324.png
图29
1240e673fc781366ca02ea105f398d6f.png
图30
e6ff494c059ec77363a5667acc67310b.png
图31

总结:

思路导图

b70af6f90b18285b650e3698f0d95e81.png
图32

数据转换理论:

生成HDR:普便见的操控数据两种方法。A、把数值0-1转存到0-无限,这个无限属于约定数值(约定的标准);B、提高浮点位数,示例:0-0.1*e-10-1转成更高的浮点数0-0.1*e-300-1,这个e就是浮点位数。

从HDR生成再转成LDR,分两步:一、写到高范围高精度;二、解压到0-1低范围内。

这两步不同的地方就在于他们的M值系数不一样,第一步M乘上第二步M值=1,一个数是另一个数的倒数。

真实世界的亮度对比度都是无穷小(黑-0,注1)到无穷大(亮-无穷大),而解决这项任务,因硬件问题,我们需要做一个曲线矫正,把所有HDR的颜色空间转换到LDR GAMMA空间0-1范围内。这步操作计算通常被大家叫做Tone-Mapping(色调映射),其实就是数据的转换。图33。

真实世界是线性变化的,为了模拟人视眼的非线性化感观,做出了类人眼的显示器,为了达到并贴近类人眼效果就要做各种相关的模拟计算,这里面有很多部分是非线性计算的,并且都是为了简洁化的运算,所以又把计算内的大部分转成线性计算,再在最后的显示中转成标准LDR。

0609f67577633fd77a2604fa2252fe6b.png

图33:亮度从0到无穷大小。图中曲线示意Tone-Mapping矫正。

特性1:如果画面对比度不是太强,HDR的效果并不明显(图34);当对比度非常高,已高到亮部细节丢失的情况下(已超出1范围),采用HDR并使用Tone-Mapping,将会重到一个高亮范围正常的,更接近人眼所观查的现实类似图像(图35)。

4352bf0e862130d40d309dc0c2cac733.png

图34:右图经过HDR处理后的,左边为源图未经过处理的。

1eded60c1af9a931d5b0d218d39eaec5.png
图35:线性(亮部细节全无)
2c5b08c270eee3f9e87e0b0a76917d51.png
图35:亮部细节正常,并且其他区域也是正常。

对于Bloom和HDR的关联性:在HDR 高精度内使用Bloom计算来模拟泛光,计算完成后混合前源图,得到结果的HDR图,然后经过Tone-Mapping得到LDR图;而Bloom放在HDR里面计算时有个好处是高亮处不会失去细节和颜色,所以常常都会绑定使用。正常情况下Bloom和Tone-Mapping两个功能都会拆分出来,让艺术家自己去选择打开和关闭调校好艺术性。并且后现代的Tone-Mapping ACES 做完,不需要再次Pow(x,0.4545)到Gamma颜色空间了。

打印机色彩空间



推荐阅读
  • 提升Python编程效率的十点建议
    本文介绍了提升Python编程效率的十点建议,包括不使用分号、选择合适的代码编辑器、遵循Python代码规范等。这些建议可以帮助开发者节省时间,提高编程效率。同时,还提供了相关参考链接供读者深入学习。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了logistic回归(线性和非线性)相关的知识,包括线性logistic回归的代码和数据集的分布情况。希望对你有一定的参考价值。 ... [详细]
  • Principle for Mac(交互式屏幕设计软件)免激活版
    Mac上好用的交互式屏幕设计软件,PrincipleforMac是一款交互式屏幕设计软件,principle mac让您的设计将以原则出现,随时为您注入新的活力。如果您进行更改,再 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文介绍了在Pygame中使用矩形对表面进行涂色的方法。通过查阅Pygame文档中的blit函数,可以了解到如何将一个表面的特定部分复制到另一个表面的指定位置上。具体的解决方法和参数说明在文中都有详细说明。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • IB 物理真题解析:比潜热、理想气体的应用
    本文是对2017年IB物理试卷paper 2中一道涉及比潜热、理想气体和功率的大题进行解析。题目涉及液氧蒸发成氧气的过程,讲解了液氧和氧气分子的结构以及蒸发后分子之间的作用力变化。同时,文章也给出了解题技巧,建议根据得分点的数量来合理分配答题时间。最后,文章提供了答案解析,标注了每个得分点的位置。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了[从头学数学]中第101节关于比例的相关问题的研究和修炼过程。主要内容包括[机器小伟]和[工程师阿伟]一起研究比例的相关问题,并给出了一个求比例的函数scale的实现。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • 本文介绍了如何将CIM_DateTime解析为.Net DateTime,并分享了解析过程中可能遇到的问题和解决方法。通过使用DateTime.ParseExact方法和适当的格式字符串,可以成功解析CIM_DateTime字符串。同时还提供了关于WMI和字符串格式的相关信息。 ... [详细]
author-avatar
252575936_8ea84a
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有