通过量子化学计算和Multiwfn程序预测化学物质的颜色 您所在的位置:网站首页 cmyk曲线原理 通过量子化学计算和Multiwfn程序预测化学物质的颜色

通过量子化学计算和Multiwfn程序预测化学物质的颜色

2024-06-26 13:05| 来源: 网络整理| 查看: 265

通过量子化学计算和Multiwfn程序预测化学物质的颜色

Predicting color of chemical substances through quantum chemistry calculations and Multiwfn program

文/Sobereva@北京科音   2023-Mar-26

1 前言

颜色无疑是化学物质极其重要的特征,理论预测化学物质的颜色对于从头设计和改良化学物质有重要意义。通过量子化学计算可以模拟分子的UV-Vis光谱、通过第一性原理计算可以模拟固体和液体的UV-Vis谱,在原理上可以进而预测物质对应的颜色。一个很常见、很粗糙的预测颜色的方式是:在可见光波长范围内(一般取380-760 nm)考察吸收峰位置,根据其波长和对应的颜色的关系判断物质吸收的光的颜色,然后根据补色图得到它的补色,这就是物质实际显现的颜色,即反射或者透射光对应的颜色。每次我在北京科音初级量子化学培训班(http://www.keinsci.com/workshop/KEQC_content.html)里讲电子激发计算的时候也都举例介绍这种做法。这种做法虽然简单,但是准确度很有限,而且仅对于在一个波长处有简单的吸收峰的时候才适合。如果可见光区有不止一个吸收峰,或者需要考虑谱带形状对吸收的影响,这种做法无疑就不适用了。所以这种做法适合作为教学目的,而用于实际研究目的、试图准确预测化合物的颜色的时候,明显应当用更严格的做法。

本文将介绍Multiwfn支持的将物质的UV-Vis吸收光谱转化为物质显现的颜色的方法,具有极高的实用性,解决了很多人研究的实际困难。此方法原理严格,在Multiwfn中使用超级简单方便,只需要敲几下键盘,颜色就能立刻呈现在屏幕上!用户可以直接将诸如Gaussian、ORCA、CP2K等程序做TDDFT等电子激发计算得到的输出文件作为输入文件,从而“从头”预测物质的颜色,也可以将实验或者其它方式得到的UV-Vis光谱曲线数据作为输入文件来预测颜色。

本文在第2节将介绍光谱曲线转化为对应的颜色的原理。第3节将以预测靛青染料水溶液的颜色演示如何在Multiwfn中操作,输入文件是Gaussian程序在TDDFT下对其做电子激发计算的输出文件。第4节将示例如何用通过Multiwfn将网络上搜索到的诱惑红的实验UV-Vis谱转化为它对应的颜色,

读者必须使用在2023-Mar-26及以后更新的Multiwfn版本,否则没有本文说的功能。Multiwfn可以在官网http://sobereva.com/multiwfn免费下载,若用于发表文章必须按程序网站、手册里的明确要求以正确方式引用Multiwfn。不了解Multiwfn者可参看《Multiwfn FAQ》(http://sobereva.com/452)。

本文的例子涉及到的文件都可以在这里下载:http://sobereva.com/attach/662/file.rar。

2 由吸收光谱转化为颜色的方法

本节内容较长,如果只希望无脑地得到结果,直接看后面的例子就完了。

一种颜色对应于色彩空间里的一个点。色彩空间(color space)有不同的定义,常见的有CIE1931 XYZ、CIE xyY、CIELAB、CIE RGB、sRGB(standard RGB)、Adobe RGB、CMYK等。在这些色彩空间中,每种颜色通过特定的坐标描述,例如sRGB和Adobe RGB都用R(红)、G(绿)、B(蓝)作为分量表示,是范围为(0-255,0-255,0-255)的整数,但每个分量也经常用0到1范围的分数表示。CIE1931 XYZ通过X、Y、Z作为坐标表示颜色,CIE xyY通过x、y、Y表示颜色,CIELAB通过a*、b*、L*表示颜色。CIE各种色彩空间的分量的定义见https://en.wikipedia.org/wiki/CIE_1931_color_space和https://en.wikipedia.org/wiki/CIELAB_color_space。

下图是CIE色度图,里面的完整区域是人眼可识别的各种颜色。弧线轮廓上不同位置的颜色对应的是不同波长的单色光,而图内侧区域的颜色是不同波长的单色光混合所产生的颜色。图中横、纵坐标分别对应的是CIE xyY的x和y分量,二者一起体现的是色度(chromaticity),而Y分量对应的是亮度(luminance)。如果亮度为0,那么不管x和y是什么值颜色都为黑。亮度足够大时,图中(1/3,1/3)位置对应白色,而如果亮度不够,则这个点对应的是灰色。

并不是所有人眼可以感受的颜色都是可以在屏幕上显示出来的,也没有任何屏幕能显示出来上图里的完整色域里的所有颜色。上图中三角形包围的区域是sRGB色域,也是绝大多数消费级显示器能显示出的颜色范围。Adobe RGB色域也是上图中的一个三角形的子集,但比sRGB包围的面积更大。现在有越来越多的中档显示器能显示出Adobe RGB色域的大部分颜色,因而比只支持sRGB色域的显示器能显示出更丰富的颜色。考虑到大多数人用的显示器还是sRGB色域的,而且绝大多数图片里的颜色也是基于sRGB色域记录的,因此预测化学物质的颜色并在屏幕上呈现出来,重点就是怎么得到物质吸收的光所对应的sRGB色域里的RGB值,之后再取其补色是很简单的事。

肯定有人会问,为什么我的显示器是sRGB色域的,但上图里在三角形以外还是显示了颜色?这是因为此图是把CIE色度图转化到了sRGB空间下,在三角形以内的颜色是你的屏幕上能如实显示的,因而其中不同位置的颜色在你的屏幕上能够区分。而在三角形以外的区域(sRGB色域无法表现的区域),上图在作图时做了特殊处理。具体来说,这些区域的x,y坐标(结合特定的Y)直接转化成sRGB色域的(R,G,B)时,会出现数值为负或者超过255的分量值,将负值取0处理、超过255的当255处理之后就得到了上图。因此上图的三角形以外区域的颜色在你的屏幕上呈现的并不是其实际的颜色,而只是对应了sRGB色域三角形区域里边界位置的颜色。

下面来说一下有了UV-Vis吸收光谱曲线后,怎么得到吸收的光对应的RGB值(下文一律说的是sRGB色彩空间的情况)。更多细节参看: https://www.oceanopticsbook.info/view/photometry-and-visibility/chromaticity https://www.oceanopticsbook.info/view/photometry-and-visibility/from-xyz-to-rgb https://support.hunterlab.com/hc/en-us/article_attachments/201533555/an-1002b.pdf

下面的公式用于把依赖于波长λ的光谱曲线Λ(λ)转化为CIE1931 XYZ的X、Y、Z值(三刺激值,tristimulus values),可见算每个值就是求一维积分而已。式中Km是发光效率,是个常数。式中带上横线的x、y、z叫做三刺激值函数(tristimulus function),或称配色函数(color-matching function)。

CIE1931 2º三刺激值函数如下所示,列表数据可以在http://cvrl.ucl.ac.uk/cmfs.htm下载。显然上式就是求光谱在这仨函数上的投影来得到X、Y、Z分量。

通过红、绿、蓝三种单色光并不能组合出所有人眼可以识别的颜色,但是通过以上三种三刺激值函数所分别对应的非单色光的混合则可以产生,因此任何人眼可识别的颜色都可以用X、Y、Z坐标来表示。

有了X、Y、Z后就可以按下式计算色度坐标x、y、z。这相当于对坐标做了归一化,从而去除了对光谱强度的依赖性。由于x+y+z=1,因此只有x和y是独立的,这两个值就是前述的CIE1931 xyY色彩空间的色度值,用于描述独立于亮度的颜色。CIE1931 xyY里的Y直接对应上面说的三刺激值里的Y,靠它的大小来体现亮度。

现在有了x和y,对照CIE色度图中的相应位置,就知道光谱曲线对应的什么颜色了。当然,若要与人眼感受到的颜色相对应,还需要再额外指定亮度值Y。

光谱曲线对应的x、y色度值经常超过sRGB色域而无法在sRGB色域的显示器上显示出来,因此实际中得把X、Y、Z转化为sRGB的R、G、B坐标,这只需要按下式做一个线性变换即可。各种色域颜色之间的变换关系见http://brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html。注意此处的X、Y、Z坐标被scale到了0至1之间。

注:人眼对亮度的响应不是线性的,对深色的差异比对浅色的差异更敏感。因此很多程序将XYZ转换为RGB时还自动做Gamma校正使得RGB值被拉伸,使得0-255数值范围内能更充分地展现出人眼能分辨的颜色。具体做法是R



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有