谈谈与计算化学有关的作图的图像清晰问题

谈谈与计算化学有关的作图的图像清晰问题

文/Sobereva@北京科音  2021-Jul-16


0 前言

寡人在网上答疑的时候,总是看到有人问“得到的图像不清晰怎么办”、“怎么让图像更清晰”这种问题,语义不明,也不知道对方说的“清晰”到底指什么,对方也不说他觉得不清晰是怎么个不清晰法,也不给出个截图来说明,令人感觉很莫名其妙。笔者忍不住写个小文,把各种初学者所谓的“不清晰”的可能情况都罗列一下,便于他们自己对照判断如何解决。此文也有助于一些缺乏相关常识的计算化学工作者了解怎么改进图像质量。此文内容很多地方用流行的可视化程序VMD(http://www.ks.uiuc.edu/Research/vmd/)来举例说明,这里是针对VMD 1.9.3版而言的。


1 图片分辨率太低

关于图片分辨率的事我在《谈谈怎么正确认识论文投稿时对图像分辨率的要求》(http://163gold.cn/511)里专门做过科普。有些人所说的不清晰可能是指图片的分辨率(当前语境下等于图片的像素)太低。显然,让产生图片的程序输出更高分辨率的图像就完了。比如:
(1)Multiwfn程序(http://163gold.cn/multiwfn)保存一维、二维、三维图像的分辨率分别通过settings.ini文件里的graph1Dsize、graph2Dsize、graph3Dsize参数来设置。
(2)GaussView通过File - Save Image方式保存图片的像素由界面上的Enlarge Width and Height by控制。比如如果这里设的是3x,而窗口的大小是400*300,那么保存出的图像就是1200*900像素。
(3)VMD可以通过File - Render方式保存图片,如果渲染器选的是Snapshot或者Tachyon (internal, in-memory rendering),那么渲染得到的图片和OpenGL窗口的大小是相同的。如果想要更高分辨率的图,要么把窗口拉大再渲染,要么在用第三方渲染器POV-Ray或VMD自带的独立的Tachyon渲染器渲染的时候直接指定渲染出的图片像素。用Tachyon渲染器的时候如何通过命令行指定渲染出的图片分辨率在《用Multiwfn+VMD做RDG分析时的一些要点和常见问题》(http://163gold.cn/291)里我专门说过,这里不再累述。

有些可视化程序没有单独的保存图片的功能,你只能靠截屏来得到图片文件。此时你若要想得到高像素的图像,就应当把窗口最大化,并且把窗口里的体系也放大到尽可能大,然后再截图。如果还嫌图片像素不够高,去找个高分辨率屏幕的机子,在那上面截图。


2 过度有损压缩图像

十分常用的jpg是一种有损压缩的图像格式。Photoshop、IrfanView等像样的图片编辑或者图片观看程序在保存图像成jpg格式时,都可以选择jpg文件的质量;设得越高,则图像质量相对于原图降低得越少,但图像文件就越大。显然,如果保存时图片质量设得太低,必然得到的图像会比较模糊,并且还可能伴有色彩失真。

对于科研方面的图,特别是可能用到文章里的图,我平时都存成png格式,这是非常好的无损压缩格式,不会像jpg格式那样降低图片质量(代价是尺寸更大),又比bmp那种未经压缩的无损格式小得多得多,也比常见的tif那种无损压缩格式尺寸更小。


3 图像被拉大了

有些人在保存/生成图片的时候图像的像素并不是很高,然而他把图插入到文章里之后,还手动把图的尺寸给拉大了,这时候图片能不模糊么?只有ps、eps、wmf等格式储存的矢量图才能无损缩放,而png、bmp、tif、jpg等位图格式只要放大了图片注定会看起来模糊,这属于图像处理的最基本常识。


4 一些程序自动压缩了图片

有些人问,怎么图片原本看起来是清晰的,插入XXX程序之后就不清晰了。这看具体情况。比如powerpoint(笔者这里用的是2016),在“选项”-“高级”的“图像大小和质量”一栏中,有个选项是“不压缩文件中的图像”,这个选项默认是没有选中的。这种情况下,在保存pptx文件时,对于ppi(和《谈谈怎么正确认识论文投稿时对图像分辨率的要求》http://163gold.cn/511里说的dpi本质上相同)过高的图像,其像素就会自动压缩到特定的ppi。如果你把一个图片插入到powerpoint里,并且把图片尺寸缩小,然后保存pptx文件,此时由于图片的ppi往往会高于阈值,遂被powerpoint自动压缩,即当前pptx里的这个图片的像素已经低于原图了。之后重新打开这个pptx文件,若再把这张图拉回原先的大小,就会看到图片已经模糊了。只有把“不压缩文件中的图像”选上才可以避免powerpoint自动压缩图像。

还有其它的程序可能也有根据ppi自动压缩图片的设置,应仔细去选项菜单里仔细看看,弄不明白的话可以Google搜搜看有无别人遇到过并提供了解决方案。


5 直接截图,而不是保存图像

有些可视化程序为了显示速度比较快,直接在屏幕上显示的时候用略低的图像质量,而在保存图片的时候才自动设高图像质量。因此,可视化程序凡是有专门的保存图片的功能的话就不要直接截图。

对于Multiwfn显示的三维分子结构图、等值面图,特别是使用mesh或者solid face+mesh风格显示等值面的时候,尤其建议保存成高像素的图片文件,然后再缩成想要的尺寸,这比起直接在三维窗口里看到的图像质量好太多了,还顺带起到抗锯齿效果(见后文)。


6 保存图像的格式不合适

要分清楚矢量图和位图的区别。如果你的图片没有平滑的色彩过渡,而是以线条、文字和离散的颜色构成的,那么保存成矢量图比较好,可以无损缩放,而且线条看起来很平滑。比如在Multiwfn里按照《使用Multiwfn绘制红外、拉曼、UV-Vis、ECD、VCD和ROA光谱图》(http://163gold.cn/224)和《使用Multiwfn绘制NMR谱》
http://163gold.cn/565)绘制光谱图、按照Multiwfn手册4.4节的例子绘制等值线图,我都建议以矢量图形式保存为pdf格式的文件。如果图片有连续的色彩过渡,比如Multiwfn、VMD、ChimeraX等程序显示的等值面图,以及Multiwfn主功能4绘制的填色图,则建议用png等位图格式。

如果违背上面的建议,把线条、文字和离散的颜色构成的图保存成png等格式,线条看起来可能就不如保存成矢量格式时看着那么平滑。如果把色彩连续变化的图保存成矢量图,图片看起来就会有很难看的色阶。


7 被投稿系统降低了图像质量

在大多数期刊投稿时,在最后确认提交之前,一般投稿系统会生成一个用于预览的pdf文件。转换成pdf文件的时候会对图片自动进行处理,例如把过高分辨率的图像自动降低分辨率、适当对图片进行有损压缩从而避免pdf尺寸太大,这可能导致在预览pdf文件时发现图片清晰度变低了,有点糊了。这一般没办法避免,也不用太在意,一般也不至于影响审稿。这时候的图片清晰度和最终出版时候的图片清晰度没直接关系。


8 没用抗锯齿

显示3D物体时,如果没在可视化程序里开启抗锯齿,而且显示器的dpi又不是太高,就会明显看到3D物体边缘的线条毛毛糙糙的,可能有的人说的不清晰是指这个。很多可视化程序里都有抗锯齿(antialiasing)选项,打开之后就能让边缘锯齿感减轻很多,变得平滑不少。有些程序里抗锯齿有不同级别,越高级别抗锯齿效果越好,但代价就是对GPU性能要求越高。有些可视化程序里可能没有抗锯齿选项,但也没关系,你可以进入显卡驱动,往往在里面可以设置强行对某个程序用某种抗锯齿设定。比如VMD的抗锯齿选项(Display - Antialiasing)往往没法直接选,因此你可以在显卡驱动里直接设,具体怎么操作和你的显卡的显示芯片制造商以及驱动版本有关,自行摸索或Google。如果你的显卡驱动是Windows自带的,那么是没有显卡驱动面板的,应当自行去显示芯片的厂家官网上下载并装上。

还有一种人工对图片实现抗锯齿的做法是保存很高像素的图像,然后用Photoshop、IrfanView等程序把图片缩小(降低像素),此时程序会做重新采样,可以等效实现抗锯齿效果。


9 没有关闭雾化效果

很多程序默认都开启了雾化效果来体现物体距离屏幕的位置。比如在VMD里,默认是黑背景,并且开着雾化效果(即Display - Depth cueing是打开的)。此时距离屏幕越远的物体就显得越黑。但由于VMD对雾化的默认衰减设置不太理想,所以即便是距离屏幕较近的物体看起来也是雾蒙蒙的,在《用Multiwfn+VMD做RDG分析时的一些要点和常见问题》(http://163gold.cn/291)的一开始就有个示意图。有些初学者由于缺乏常识,就把雾化效果理解成了不清晰。我建议用VMD的人要么关闭Depth cueing,要么在Display - Display Settings里恰当设置Cue Mode,使雾化效果至少不会影响到距离屏幕较近的物体,而只对中、远距离的物体才生效。


10 绘制等值面图时格点间距太大

不管什么可视化程序,在绘制某个函数的等值面图之前都需要获得这个函数在特定一块三维空间中均匀分布的各个格点上的函数值,这叫格点数据。格点间距越大,得到的等值面就越粗糙、越有棱有角,格点间距很大时甚至有的地方的等值面可能还不连续,也许有些人说的不清晰就是指这种情况。格点间距如何影响RDG函数的等值面质量在《用Multiwfn+VMD做RDG分析时的一些要点和常见问题》(http://163gold.cn/291)的2.1节做了展现。显然,等值面效果不好的问题只要把格点间距设小一些即可缓解,在诸如Multiwfn程序里提供了非常丰富灵活的方式设定格点。但无疑减小格点间距的代价是计算的总格点数变多了,耗时增高了。


11 光源设置问题

显示3D物体时,如果光源设置不当,可能导致有些地方太暗,令有的人觉得不清晰。解决方法就是调节光源设置。比如在VMD 1.9.3里有4个光源,默认开启前两个,可以在Display里选择相应的光源来切换打开或关闭的状态。另外,在Mouse - Move Light里选择一个光源后,可以在图形窗口里拖动鼠标来调节光源位置。而在Multiwfn里,可以在窗口上方的菜单里选择Other settings - Set lightings,然后选择哪些光源打开或关闭。


12 显示风格设得不合理

大多数可视化程序里都可以设置不同的显示效果,如果设置不当可能会造成看起来不清晰。比如VMD 1.9.3程序默认用的是line方式显示,而且粗细只有1.0,因此直接显示出的体系看起来太细,如果是没有成键的单个原子,图形窗口里会显示成只有一个像素大小的点,视力不好的同志不仅根本看不清楚,还甚至会以为是VMD显示有问题,漏掉了原子,笔者在网上答疑时就见过这样的人。显然把显示方式改成诸如CPK、Licorice之类的就能看清楚了。笔者在《VMD初始化文件(vmd.rc)我的推荐设置》(http://163gold.cn/545)中推荐的默认设置中把默认的line风格的线条粗细设大到了2.0也是为了让默认的显示效果看着更清楚。