Word转PDF如何保障图像质量

Word文档转PDF大抵有以下几种方法:

  1. 用Word内置的另存为PDF;
  2. 用Adobe Acrobat、PDFcreator之类的软件带的PDF Printer打印成PDF;
  3. 用Adobe Acrobat等软件转换成PDF。

Word内置的另存为PDF

一言以蔽之,Word内置的转PDF尽量避免。不过,在研究过程中发现Word这个PDF另存为有很多吊诡的地方,所以详细谈一谈。

首先,图片分辨率大于等于一定PPI阈值的会被压缩到200。注意,这里的PPI是真实PPI——也就是说用图像的像素数你在Word里设置的尺寸,而不是图像metatag里的名义DPI。譬如说,你有个3000px宽的图名义DPI是96,但是你放到Word里设成宽度2″,那他的真实PPI其实是3000/2=1500。而你另存为PDF之后,这个图就会变成一个200*2=400px宽,外加metatag为200DPI的图。那么这个阈值是多少呢?想当然的话是200,然而并不是。经过简单的测试,阈值位于(250,300]区间,因为我测试了250PPI是不会被二压尺寸的,而300的则会被二压到200PPI。具体多少没有测,可能就是300。Word的缩放算法比较一般,估计是平均像素,也不算问题很大。

其次,保存成PDF时,无损的图有可能会继续保留为无损,JPEG则必然是JPEG(所以自然会2压)。为什么说可能?在我测试过程中,出现过以下现象:

  • 一张不会被二压的图用画笔涂了几笔之后(尺寸啊DPI啊完全不变,不过这会导致PNG文件大小增加),立刻就会被二压;
  • 某个图单独帖进Word文档存PDF不会二压,结果和另一张图一起就会全都被二压;
  • 同时帖进5张尺寸不一的PNG,会出现有些被二压,有些不被二压的现象。

我的推测是,二压与否首先与图像的文件大小(可能是绝对也可能是相对)有关。凡是超过一定阈值,就会被二压(这可以解释上面第一条、第三条);另外可能还和文件总大小或者每页大小有关:超过一定阈值就全部二压,这能解释上面的第二条。

其JPEG压缩率也偏高,通过JPEGSnoop看量化表,是75%质量的4:2:0色度抽样JPEG。顺便一提,任何JPEG图像,插入Word的一瞬间就会被二压(90%质量,4:2:2)。所以请尽量避免在Word中贴JPEG图片,尤其是图表之类的用无损效果又好体积又比JPEG小。

另外,我几乎可以很确定地说,Word PDF输出的图像质量/分辨率是无法直接更改的。这里谣言终结一下几个网上经常提的方法:

另存为时右下角的工具-压缩图片:

先厘清一点:这个工具只有在你点的时候才会使用——也就是说,默认是“不使用”状态,也就是不压缩图片(相当于这个工具里的最后一个选项)的状态,而不是你点开这个工具时的默认选项。另外,这个工具其实是独立于保存/另存为的,什么意思?就是说实际过程是先压缩图片,然后另存为/保存;而不是“保存时压缩图片”。这也产生一个问题:在你点下这个工具并且选了一个非最后一个选项并确定的时候,你的当前文档里的图片就被压缩了!哪怕你最后另存为框点的是“取消”,你的图片也已经压缩过了——而且无法Ctrl+Z!所以,千万要小心不要因此把你文档里的图片毁掉!不过MS估计也想到这个问题,如果你点了压缩图片又另存为PDF之后(或者取消另存为框后)你会发现你的图变糊了,这时候不进行任何操作立刻关闭该文档,那么恭喜你不会压缩你的图片。但是如果你之后又对文档进行了修改再保存,你Word里的图就全毁掉撸(当然你可以选择关闭不保存……那就变成你压缩图片之前没保存的修改全没了)。而且不要忘了,如果是JPEG,图片会被二压多少次你自己算算:

原始图JPEG->复制进Word(二压90%)->压缩图片PPI(缩图外加再二压一次90%)->另存为PDF(再二压75%)

这效果不用我说了吧,基本处于毛都看不见的状态,这里贴个样图:

word-%e5%b7%a5%e5%85%b7-150

总而言之,压缩图片这个工具慎用!如果一定要用,先保存你的所有修改然后备份你的文档!

选项-高级-图像大小和质量里的几个选项:

这里有俩选项有关,一个是“不压缩文件中的图像”,一个是“将默认目标输出设置为:”,选项有330、220、150和96PPI。

和上面的大杀器压缩图片一样,这个选项和保存PDF没直接关系。这个选项的实际作用是,如果你没有勾选第一个(也就是你想要压缩),那么每次你保存并退出该文档时,所有超过你选的PPI的图会被压缩成你选的PPI。这里(还有上面那个压缩图片)据我短暂的观察应该是不会有无损图变JPEG的劳什子,不过还是小心为妙。

我不清楚这个选项的默认状态是啥,不过我强烈推荐直接将“不压缩文件中的图像”勾上,完全不压缩你插入图像的分辨率。这样可以最大限度地保存图像的质量。真有需要,最后输出的时候再另存为一份修改该选项就是。

可以看到,这俩方法的本质都是直接修改你文档里图的分辨率,而不是仅仅修改输出的PDF里图片的分辨率。而且都有很大的局限性:依然无法解决75% JPEG的质量问题;依然无法输出大于200 PPI的图片。所以,想靠Word自带的另存为PDF来输出高质量图片的PDF是行不通的。这其实挺可惜的,因为据我观察对原始Word文档还原度最高的还是Word自带的另存为,Adobe家的多少有点出入(虽然很小啦)。

PDF打印机

PDF打印机算是一种比较万能的制作PDF的方法,这里也适用。下面以Adobe PDF printer为例,其他软件应该大同小异。

调整图像的质量是在打印-打印机-打印机属性处进行的。打开该对话框之后,在“布局”选项卡下方的高级里是可以调DPI,不过那个是给一般的物理打印机用的,这里没必要去那里改(而且那里改了也没用,那不是图片的质量)。直接进入第三个选项卡:

qq%e6%88%aa%e5%9b%be20161104002615

这里第一个Setting就是选质量了。点“Edit…”里面有详情:

qq%e6%88%aa%e5%9b%be20161104002838

这里展示的是自带的“High Quality Print”选项(Maximum=92%质量,4:4:4无色度抽样),其实一般用途已经非常不错。最好不要用默认的Standard,分辨率是150PPI不谈,那个压缩率也高了点。当然,如果还是觉得不满意,甚至可以直接把Downsample和Compression关掉,会得到你Word里原汁原味的图。

不过,PDF Printer有个问题。PDF Printer设计的目的并不是为了制作电子阅览版的PDF,而是用来打印的PDF。所以,你会发现有个问题:打印出来的PDF,图片会被拆分成一块一块的:

qq%e6%88%aa%e5%9b%be20161104003233

其原因我猜大概是为了真·打印机的Buffer大小着想。当然,单纯用来看没大问题,不过总是觉得挺别扭的,而且没法再提取完整的图像了。

另外,今天研究过程中发现了一个非常奇怪的BUG:无论我怎么选,在各种地方选,我那个Letter尺寸的文档打出来的PDF都是A4。甚至我直接把页面改成个正方形的之后,PDF打印出来还是A4。在我抓狂之际,在Adobe论坛发现了原因。原来Word里有个在我看来相当脑残的选项,叫做“缩放内容以适应 A4 或 8.5″ x 11″ 纸张大小”(后者就是Letter)在“高级”里。这个选项默认是勾选的,结果就是不管你文档是什么尺寸,打印出来永远是A4或是Letter(美国地区)。当然为啥我学校的英文版Word也是强制A4而不是Letter我就不得而知了。

另存为Adobe PDF

其实这个是我今天第一个试的方案……但是说来惭愧,当时一时没找到哪里改质量(汗)。后来发现从Word里的话就是在Acrobat那个附加工具栏里,先Preferences里选一下就是(界面和上面那个一样)。如果直接用Acrobat软件界面来搞,就要进设置里找到Convert to PDF对应Word的选项了。

这个方法的优点就是没有上面的说的图像分块的问题,每个图像还是完整的一坨。也是最推荐的。

P.S. 文中所有的JPEG图像质量检测都是通过PDF Image
Extraction Wizard(就是xpdf这个开源命令行工具的GUI)直接从PDF中无损提取图像检测。

P.S. 2 Acrobat算是我现在少数几个离不开的盗版软件了……再算上PS,Adobe你好嘢!

Word的表格样式

最近改某文章需要批量替换表格的格式,于是稍微研究了下“表格样式”这个东西。发现这玩意比想象中的恶心。这里就不给出推理过程了,单纯记录研究结果。

Word中的样式(style)想必大家都已经很熟悉了——毕竟现在应该不会有人再傻到什么格式都逐一手调了,而是套用样式。

表格其实也是一样,Word内置了一堆,你也可以自己新建/修改。表格的样式包括:一般样式所能控制的全部(包括字体、段落),另外还能控制表格的框线之类。

无标题.png

上图就是修改表格样式的对话框,通过选中某个表格->工具栏上的表格工具-设计->选一个样式右键修改或者新建样式找到。简单的修改通过对话框中的选项就行,如果要进行高级的字体和段落修改,则是通过左下的格式按钮找到,这点和“样式”也是一样。

需要注意的是你可以分别设置整个表格的、标题行的、首列的、奇数列的……等等的格式。很显然,这个格式是有优先级的,这里也可以从下面的汇总框里看到。比如“整个表格”的优先级就是40。一般而言:

标题行/汇总行/首列/末列>奇数X/偶数X>整个表格

也是很容易理解,越specific的优先级越高。顺便一提是否真正开启标题行/列、或者奇偶不同等也都是可以在外面的表格工具-设计左侧的样式选项控制的。

那么问题来了:表格里的内容,其实也是会套用一般内容的“样式”的。那么两者谁优先级高?

经过研究以及参考此文,一般而言,是这样:

优先级从高到低:

  1. 直接修改的格式(比如直接选中某些文字修改的)
  2. “样式”的格式
  3. “表格样式”的格式:
    1. 标题行/汇总行/首列/末列
    2. 奇数偶数X
    3. 整个表格
  4. “正文”(normal)的格式*

也就是说,如果你的内容是默认的“正文”样式,那么它会被你“表格样式”的格式覆盖;但是如果你的表格内容套用了非“正文”的样式,那么对不起,“表格样式”会被它覆盖。当然,仅限于能覆盖的部分,“表格样式”里的关于框线的部分依然保留。其实,就和CSS有点像。

不过,这里有一个很重要的问题。如果你修改过“正文”这个样式——那么它将不再处于最低优先级,而是和其他样式一样,享有上表中的第二高优先级,从而会覆盖“表格样式”。另外注意,这里的修改,也不是说你修改了正文样式的某处,整个正文样式都会提升优先级;如果你修改了字体,那么只有字体部分会提升优先级,但是段落/间距依然如故;反之亦然。

在实践中,这个问题非常常见——一般表格肯定都是希望是上下间距都是0 pt+单倍行距(否则表格会被撑大,而且如果上下间距不一样会导致文字不在表格框中间),如果你用的是完全没修改过的“正文”样式,则没问题,因为会被“表格样式”里的0间距/单倍行距给覆盖;但是实际中由于经常会修改正文的段落样式,从而导致表格里的内容也被覆盖成正文样式,而不是表格样式了。

解决办法或者说workaround一般来说,是再在“样式”中自己新建一个对表格专用的样式,并且每次你建立一个表格后就套用这个样式。而“表格样式”仅用来控制框线以及首列/首行加粗之类的格式。

为食神探

翻译有好几种不好找,给个bangumi链接:喰いタン

不要被这标题误导了。这漫画有推理没错,不过推理只是添头。如果你是要看什么严肃的/不严肃的推理漫,找错地方了。这漫画的重点应该算是“美食”——但是这也并不能算是看点本身。其可看之处,还是出在青年单元剧漫画这种类型上。

个人认为,日本的青年单元剧漫画是一个在国内相对较被忽视的类型。近些年来我非常喜欢这种漫画,比较优秀的有《拉面王》、《孤独的美食家》、《人间交叉点》、《侦探物语》、《危险调查员》之类。单元剧,没有什么烦人难记的主线,每天睡前随时捡起来就能看;题材各异,新鲜之余还增长几分无用的见闻,满足猎奇的需求。一般剧情比较轻松,能保持着一个面带微笑的姿势一直看下去。最重要的是,总会有那么几篇,会给你一些感触,给人一种“这漫画没白看”的感觉。

本作采用了最为经典的男女混搭模式,男的犯呆女的吐槽。男主是个非常能吃、却推理能力很强的历史小说家,女主是他的秘书。实话说,这漫画的第一印象并不好:几个running joke(这玩意我不知道中文怎么翻译,就是指在一个作品中反复出现的梗),一个是男主的饭量,一个是男主拖搞(作者影射自己)猛一看觉得相当蠢。不过在过了1、2卷的适应期之后,这种体裁的作品的优点就体现出来了。几个重点刻画的角色,无论是傲娇的点心店后辈,好赌、妻管严的中华料理店大叔,形象都很鲜活且惹人喜欢。就连男主那城墙厚的脸皮也显得有几分可爱。而且这种作品有个很有趣的现象,不管画风到底是多么奇形怪状,越是看越会觉得,女主好棒!本作作者在女主上面还是蛮用心的,基本每次出场的衣服都不一样(大雾)。

image074

一言以蔽之,这漫画非常推荐。

电影的原理:视觉暂留还是“似动现象”?

其实实在是很不想再碰这个话题了……但是就算刻意不去想也一直在脑子里回绕,还不如写出来这样舒服一些。咳,回到正题。其实还是上次提到的那个撕逼视频又出了续集,作者这次专注于讨论电影(准确地说,motion pictures)的工作原理到底是怎样。

电影的原理,就是指一切从走马观花到电影到动画到任何视频甚至到显示器的原理——快速播放一系列稍有差异的静止图像,会让人感觉图像中的物体动了起来这一现象。

和上次一样,电影的工作原理也有所谓“主流”观点和“新”观点两种。主流观点就是视觉暂留。什么是视觉暂留(persistence of vision)?这种理论声称,人眼(准确地说是视神经)有一种生理特性,就是当一个物体被视神经看到之后,其像会在视神经上暂留一段时间,具体时长约为0.1秒至0.4秒,视光的强度而定。当然,这种说法有些含糊:这种特性的背后的原因是什么(比如是什么生理构造导致的?),“暂留”的像是稳定持续然后突然消失还是逐渐消失?不过还好,这些细节问题和今天的讨论的话题无太大关系。

可以说,视觉暂留是一种被广泛观察到并且实验可以确认的现象。一个最简单的实践例子就是CRT显示器或者是日光灯管这类频闪发光的设备——CRT显示器的原理大家应该知道,就是一个电子枪从上到下逐行扫射,其实每个“像素”的发光时间只有很短,绝大部分时间(按比例)都是黑的;但是由于扫射的频率足够高,人眼就看不出区别。但是由于是这种高频的脉冲信号,如果用其他以固定采样率采集的设备(如摄像机)去拍摄,就会看出闪烁和滚动的现象。如果人眼没有视觉暂留现象,则无可能接受这样的图像。这里需要注意的是LCD或者说电影/动画的成像原理则完全不同——这两者都是持续发光的,也就是说如果是24帧每秒的的电影,每一帧都会持续显示1/24秒,而不是CRT那样的脉冲信号。也就是说即使人眼没有视觉暂留现象,看这些设备也不会觉得“闪”(但是有个特例:传统电影胶片放映机中会用遮挡板加入黑场;这个则必须要有视觉暂留才能消除)。

但是关键问题是,是否是视觉暂留导致了人会将连续放映的静止帧视为运动。要回答这个问题,得先看看两者之间到底有什么不同,以及视觉暂留到底能否“修正”这个不同。很显然,一个真正运动的物体其像是完全连续的——具体的连续程度视人眼的“采样率”或者说时间分辨率和运动速度而定——但是motion pictures则仅仅是一堆不断变化位置的静止图像。那么,将视觉暂留的效果加在这个上面,会导致什么结果呢?如果是真实运动,以观察一个物体直线匀速运动0.5秒为例,假设运动了300单位,而视觉暂留的时间是0.1秒(假设完全暂留,没有渐隐效果),那么在最后一秒你眼中呈现的形象应该是类似下图这样的拖影效果:

%e6%9c%aa%e6%a0%87%e9%a2%98-2

如果是是静止图像组成的“运动”呢?假设帧率是20fps,那么这0.1秒内也就只有两帧,也就是一头一尾两个图像:%e6%9c%aa%e6%a0%87%e9%a2%98-2

因为中间的图像根本就不存在,所以就算你如何“残留”,也就是只有两个完全不相连的图像不断自己叠加而已。

不过,如果不断地提升帧率,最后达到一个类似这样的结果:

%e6%9c%aa%e6%a0%87%e9%a2%98-2

这样,可以说是和真实运动的“像”比较接近了。可以看到,如果两帧之间的运动足够接近,在经历视觉暂留后,可以逐渐达到一个接近真实运动(也是after 视觉暂留)的感觉。另外用类似的方法,也可以推导出动态模糊在低帧数的下的效果(注意:这里用PS滤镜模拟,运动物体的信号强度被背景给平均掉了。在真实摄影中,由于相机是持续曝光的,实际效果要强于这个。懒得作图了!):

%e6%9c%aa%e6%a0%87%e9%a2%98-2

同样只有2帧的情况下,效果要比上面那个图强不少。

至于多少FPS才算够用,还是之前的理论:物体帧间位移要足够小才行。或者分子分母同时除以个时间,物体运动速度比帧率的比值要低。这倒也算容易理解:只有够小了,整个“轨迹”才够连续,和“真实运动”的能相近似。

说了这么多,在我看来视觉暂留现象,至少逻辑上能够自洽。那么“似动现象”又是什么新理论呢?注意这里我打了个引号——因为“似动”其实就是指这种渐进的静止图像被人眼错以为是运动,所以叫似动(apparent motion或者apparent movement),是对这一“幻觉”的描述而不是解释。不过中文文献中似乎莫名地喜欢用这个名字来和“视觉暂留”相对立,这里也姑且用一下。

事实上,不止是这个名字,整个所谓“新理论”都语焉不详,或者说很难概括出中心思想。这里推荐真心感兴趣的看一下这篇为新理论摇旗呐喊的旗舰级文章,The myth of persistence of vision revisited——因为几乎所有的中文文献,都是从此综述中摘取的观点,包括这篇最为详尽的,某学报上的几乎全篇纯翻译上文的“论文”。大致上来说,此文有这么几个观点(依研究的时间顺序):

1)用“视觉暂留说”来解释运动知觉(或者说,似动幻觉)是不对的或者说至少是不全面的,应该从更“后面”(即大脑或意识层面)来分析。也就是说,争论的焦点就是到底不同像之间的“熔合”(即暂留)到底是在视网膜/视神经上发生的,还是大脑内补完的?

让我无法接受的是作者并没有给出任何解剖学或者生理学上的证据来证明这一点,只是罗列了一堆19世纪研究者的观点之后然后泛泛地说“从20世纪初起,基本心理学家研究都认为是后者(“occurring in the brain or the central nervous system”),而不是前者了”。

之所以强调证据,因为在我看来只有如此,才能区别这两者——因为如果把从人眼到大脑整个部分视为一个黑箱,两者在外表象上并无本质区别——你无法仅仅通过心理实验,就证明是A不是B。例如,上面提到的由于视觉暂留而导致人眼无法察觉到频闪的问题,也完全可以从“视神经上暂留”转移成“大脑里暂留”,没有任何区别。

2)格式塔学派的奠基人之一马科斯·韦特墨1912年提出的新理论,beta movement和phi movement。其中beta movement是指“the object at A seen as moving across the intervening space to position B”——也就是说一个物体如果从A“瞬移”到B,在一定情况下会被人眼认为是平滑运动——phi movement则是“objectless or pure motion”——无物体的或纯运动。如果不是很能理解是什么意思,可以看图说话:

(左beta,右phi,图片来自Wikipedia)

嗯等等……是不是哪里不对?这不过就是把似动现象更详细的描述了一下吧!尤其是左边那个不就是动画吗啊喂!解释呢?好像有一条来自某个学者的:“As an alternative explanation Munsterberg proposed a central “filling-in” or impletion process. In the traditional two-element display, he would argue, the two stimuli are perceived at different locations at different times, and the observer’s mind fills in the gap — movement is “not seen from without, but is superadded, by the action of the mind.””嗯大概就是说人的意识脑补了中间并没有看见的的运动?在我看来这是正确的废话:地球人都知道中间的运动并不存在,但是被人当成了存在了;你这一句mind fills in the gap根本就是把现象换了个方式再说了一遍。而且这充其量算是定性,为什么gap大了不行?gap多小才算可以?

呃那我们再看看维基吧——“[Beta movement] is caused by the fact that the human optic nerve responds to changes in light at about 10 cycles per second,[citation needed] so changes about double of this are registered as motion instead of being separate distinct images.”喂这根本又绕回去视觉暂留了吧!而且那个citation needed好刺眼!

3)第三章则有点意思。作者把似动分成了“短程似动”和“远程似动”,并且提出两者的机制是不同的。其主要论据是,实验发现当两个点先后点亮时,如果两个点相距非常远,反而会被人感知成运动;当距离逐渐缩近后,似动的错觉消失了,直到两个点足够接近才会恢复。作者也提供了一些临床证据来背书这一理论。最后作者提到,在电影中出现的似动现象,应属于短程似动,其感知的原理应该和真实的运动的感知原理一样(即对人来说,两者感知上是一样),而不是上面提到的“视觉暂留”或者“phi现象”。那么,到底是什么原理呢?这很重要还是全文引用吧:

If we viewers process the motion in a motion picture the same way we process motion in the real world, then we must ask how we process motion in the real world. The short answer to this question is that we process movement in active meaning-seeking ways. We rapidly sample the world about us, noting the things that change and the things that do not change. We turn our heads for a better view; we move left or right to gain additional information provided by a different angle. We move closer or farther away. We actively seek more information about things that interest us. We seek greater clarity of both our vision and our understanding. And our perceptual system continuously notes whether everything in our field of vision is moving or whether only certain things are moving, the former indicating that we are moving, and the latter that something else is moving. These are elements to ponder in a new theory of the motion picture.

就不完整翻译了,大致意思是,人是“主动地”去感知这个世界的。通过比较物体位置的变化,人可以区分出什么物体是在运动,或者是自己在运动。我们应该从这个角度出发去研究电影的原理(这个说法倒是让我立刻想到了坐火车的时候有时候会分不清到底是对面的车再走还是自己的车再走的问题——其实人脑还是挺容易被骗到的啦)。是不是有点抽象?

虽然前面吐槽了那么多,其实看到这里反正稍微有点可以理解作者的中心思想了。让我们假设人的视神经完全没有视觉暂留,而人脑中也不会有视觉刺激上的“暂留”——但是人显然依然可以感觉到运动:因为你记忆中(而不是在视觉信号上有残留)就知道这个物体原来在哪,而他现在又在哪。只要你的意识(自主地不自主地)比较这两个位置,自然可以知道物体的移动。不过其实还是上面那个“mind fills in the gap”的问题,说的是挺好,但是太笼统,而且似乎上升到了讨论“意识到底是什么”的哲学范畴(似乎这恰恰就是“格式塔学派”要解决的问题)。

大体来说,“视觉暂留”和新的心理学角度出发的理论感觉都有其各自的道理,而且说不定两者根本不矛盾,无非是不同的出发点。不过我的潜意识里还是觉得,既然人能把高频闪光当成连续亮光(这个好像只能用视觉暂留来解释了?),那相似位置的离散图像当成运动的单一物体似乎也挺自然而然的。所以还是更倾向于“暂留”理论。哦不过,到底“暂留”现象是不是存在在视神经层面,倒是可以用临床证据证明一下,不知道有没有相关的研究。我倒是对这点并没有什么执着,就算眼睛没有暂留,也无非是把这种现象转移到大脑内部罢了。

而且民科一下,如果假设人眼的采样率有极限,其实也能解释前面提过的远程似动问题:所以如果一个真实物体运动过快,连人眼都无法捕捉到连续的运动轨迹。与此同理,如果有两个闪光相距很远先后点亮,虽然中间“缺帧”非常严重,但是由于和现实中的超高速运动物体的表征一样,人眼反而觉得是在运动了。

最后提一下视频中的另外一个话题,critical thinking。对于这种偏冷门的或者说没有定论的消息,切勿看了一个说法就信以为真,或者觉得字多就是真。最基本的基本,要先看看逻辑说不说的通。如果逻辑都不通,那就算有真理在,至少这个版本的解释是不靠谱的。或者是一到重点问题就支支吾吾的类型,比如视觉暂留,我随便看了几篇的说法都是只提视觉暂留,就是不说视觉暂留为啥能导致似动,也说不清楚。看维基也是,虽然维基总体而言在技术条目上完全胡扯的比较少,但是你得多留点心才能搞清楚到底哪些才是“主流观点”,哪些是“新理论”。这现象在小众条目里很常见,一般来说就是一个编辑持有观点A,先把条目都编辑了一遍,后来又来了个编辑B,可能刚看了篇儿网上的“谣言终结”的文章正兴奋呢,感觉“诶你看看你,还在扯这老黄历”去其中几个条目改吧改吧……这么翻来覆去几次,互相矛盾也就不足为奇了。你看视觉暂留,里面说被beta和phi movement理论给disprove了;你看beta movement,又说他的原因是视觉暂留…

小众问题其实还有个问题就是愿意写干货就那么多,经常你交叉看了4、5个地方发现都是车轱辘话来回说,好歹自己动动脑子把线条捋一捋吧…当然更多的是直接复制直接不带脑子的,中文社区太多了就不提了。

 

游戏画面流畅的FPS需求之谜

写在前面:限于作者能力所限,不敢妄言是对这一问题的完全解答。仅仅是记录一些自己的看法。

“为什么电影只要24FPS就能很流畅,而游戏却需要非常高的帧数才流畅?”——这是一个已经讨论烂的问题。随便贴一个Quora的: 和一个知乎的

稍微看一下上面两个地址,可以看到主流观点是:电影因为是使用曝光的方式来成像,每“帧”的曝光时间是固定的,但是被拍摄事物并不是静止的。故当物体运动时,画面会产生残影(运动模糊,或称动态模糊)。而正是这一残影的存在,会让人有流畅的感觉。而游戏每帧都是单独渲染出来的,故每一帧都是精确无模糊的。缺少了中间的残影,感觉物件的运动不流畅,就会觉得很卡。这个理论我们称之为动态模糊论

如果随便找几个视频观察,确实会发现真人电影中模糊几乎无处不在:在真人拍摄的电影中,如果你逐帧播放,你会发现几乎没有一个画面是清晰的——尤其是动作片——几乎全片都是动态模糊。在播放的时候就不会有不流畅的感觉。我个人之前也一直认为这个理论就是游戏低FPS时卡顿的主因。

但是前几天在B站看到一个所谓的对代码菌撕逼的视频中,也提到了这个问题。在视频中,作者主张,真正导致游戏低帧数卡的原因,是帧分布不均匀,或者说FPS不稳定导致的。我们姑且称之为帧不均匀论。理由倒也很简单:当帧数不稳定/帧不均匀时,动作自然不符合物体的正常运动规律,例如说时快时慢,那当然会觉得流畅度大降。当帧数高的时候,虽然帧数忽高忽低的现象依然存在,但是由于总体细分的次数多,那一点点波动自然也就可以忽略了。

真正让我觉得在意的是作者提出的对动态模糊轮的几个反例。反例一,定格动画。当然这里要先说明,因为显而易见的成本和人力所限,大多数定格动画其实是1拍2甚至更低的——也就是说真实FPS只有12帧每秒。这种定格动画其实看上去感觉还是蛮“卡”的(不过感觉上倒也不是3D游戏那种难受的那种卡,见下文)。不过作者中提到的《僵尸新娘》,倒是1拍1的。由于定格动画的原理所致,很显然画面中不会有任何动态模糊存在(有例外,见下文),但是整体成片看上去也不会觉得不流畅。

另外一个反例,就是游戏录像。虽然大多数游戏要达到非常流畅都是要有60fps甚至更高,但是多数视频还是用24-30左右的fps录制(或者后期转制)的——作者表示(转述)“大家天天看这么多直播,有说过不流畅吗?又觉得卡吗?”(然后贴了个LOL的视频)。

这个理论其实我后来发现在知乎那个贴的第一个答案其实也提到了。其作者也提出了几个动态模糊论的反例——许多2D游戏,尤其是像素游戏,帧数其实很低,也没有动态模糊,就可以觉得非常流畅。

虽然作者的一些观点的细节我不太苟同——比如游戏视频24fps“不卡”这点。自从Twitch支持60fps串流之后,大部分著名主播都转向了60fps直播。其区别是巨大的,哪怕是Dota 2这种基本一个俯视视角走到底的游戏,在习惯了60fps之后,24fps的直播简直无法入眼。不过总体而言,我倾向于这个“帧数不稳定”确实是一个非常重要,可能比动态模糊更重要的导致游戏低帧数时感觉不流畅的因素。再举个有点类似的例子:由于Flash性能问题,在Twtich看直播(60fps)经常会有掉帧问题,虽然掉到最低一般也不会低于40fps,但是在掉帧发生时,流畅度感觉奇低,甚至远低于直接用24fps直播的游戏视频。另外电影自然不会有帧数不稳定的问题:因为摄像机的曝光时间长度和拍子都是精确的,能保证以稳定的采样率来记录一组本来就是真实存在的动作,而不像3D游戏,是电脑实时渲染,难以保证稳定性。

不过也不是说动态模糊理论就完全无用。事实上,我觉得游戏“卡”和帧数不足,其实是两个问题。而动态模糊解决的是第二个问题。换句话说,在3D游戏这个特例中,帧数不足时会导致帧不平均,进而导致“卡”,但是对于所有利用视觉暂留的媒介,都会有由于帧数不足产生的另一种“卡”。对我个人来说,这两种卡其实还是区别挺明显的:那种帧数不均匀的卡我稍微看一会就很不舒服,但是帧数不足的则要小于20fps才会觉得明显,而且即使看很久也不至于不能忍受。

既然说帧数不足,就得先说到底多少算“够”。很显然,不同的画面需要的帧数是不同的。最主要的因素自然是物体的运动速度——如果速度越快,就需要越多的帧来把整个运动轨迹来描述清楚。否则自然会有不连续感。换句话说,帧与帧之间位移不能太大。就好像在游戏中越是大转角,卡顿就越明显一样(另外大转角的时候游戏可能消耗更多资源来渲染,从另一个方面反而可能会导致帧数降低)。这一点被日本动画利用得淋漓尽致:有限动画很低的帧数就能让人觉得流畅,因为(这里现学现卖一下,关于有限动画和全动画的区别可以参见上面那个B站视频)有限动画本身就有意简化了很多人物的动作(例如:说话的时候只有嘴动)——所以根本不需要很高的帧数来呈现。同理,许多2D游戏动作速度稳定而单调,也不需要很高的帧数。而3D游戏就不同了:经常有360度全方位的超高速旋转,外加缩放等一些因素,本身就对帧数的要求高一些。

既然我们说到了高速移动,那真人摄影自然也有这些东西。为什么不卡呢?动态模糊的作用这里就出来了:动态模糊在我看来,其作用是:让帧数不高的快速动作看起来流畅。比如一个超长距离的移动,如果只有两帧显示一头一尾的俩位置,那肯定是感觉跳跃;但是如果加上了前后的拖影,那就会好很多。毕竟人眼看视频的原理本来就是视觉暂留;利用残影,可以出一种中间缺的帧似乎存在的错觉。事实上,上面提到的定格动画《僵尸新娘》,在一些大转场(比如镜头围绕着人物快速旋转的时候),也会专门对背景加上(或者是拍摄出?)动态模糊。

但是动态模糊这种方法也是有极限的。自从戴眼镜以来(虽然不知道有没有什么关系,可能是视野变小导致注意点更集中?),我看电影就感觉,凡是动态的时候,虽然确实倒不“卡”,但是其实根本看不清东西——因为实际上根本也就没有清晰的画面,基本每帧都是模糊的一片。人眼其实还是有不错的追踪能力的——比如一个虫子在你眼前飞过,你基本还是可以用眼睛追踪他得到一个不错的清晰的像的。但是电影中就经常出现哪怕是跟拍的镜头中的前景,暂停之后也是模糊一片的现象。其实某种意义上还是不太真实。所以就算是真人摄影,现在也有向高FPS转变的趋势。

那么是时候总结一下了:

游戏需要更高帧数才能流畅是因为

  1. 一般而言游戏帧数不稳定,低帧数时波动会更明显,导致动作不自然从而感觉卡;
  2. 游戏尤其是3D动作游戏,镜头运动速度极快,本身就需要相对更高帧数才能感觉流畅;
  3. 游戏缺乏动作模糊导致高速场景缺帧严重的情况下缺乏拯救(读作hunong)的手段。

当然还有很多别的因素,比如游戏需要输入,而输入也会有延迟啦,电影(特指胶片放映,所以我觉得这个论据没啥说服力…)中间会插黑场啦之类的,如果想了解可以自行搜索一下。

在最后,我贴几个视频,算是我之前做的小小实验。游戏是WOW,首先我先锁60fps然后用60fps录像,那自然是超级流畅。

然后我比较一下以下三种情况:

  1. 60fps游戏录制成60fps视频后转24fps视频
  2. 24fps游戏录制成60fps视频
  3. 24fps游戏录制成60fps视频然后转24fps的视频

这里我是想比较什么呢?因为24fps是通过WOW限制帧数的功能强制达成的,所以我的目的就是希望能达成一个相对比较稳定的帧数(毕竟24fps远远低于我电脑能渲染的能力)。然后来和高帧数游戏转录成的24fps视频相比较,看“卡度”有没有很大区别。如果上面的理论正确,那么只要能保证帧数稳定,24fps的游戏也算可以接受——至少和24fps的游戏录制视频的感觉差不多。

这里先说明一下实验的局限性:首先限帧之后,其实帧数还是有波动:如果把成品视频逐帧播放,会发现偶尔还是会有两帧一样的问题。另外24和60互相转换也是个注定会引发问题的点:从理论上来讲,24fps录制成60fps视频(#2)和拿#2再转24fps视频(#3)应该是完全一样(毕竟真实fps只有24);但是事实上,60fps的效果还是要稍好一点——毕竟是二次转换抽帧,我觉得还是会有额外损失的。所以推荐对#1和#2进行比较。当然我也可以直接录制24fps的视频(我是用shadow play录制的)——但是屏幕刷新率就是60hz,我觉得还是直出60fps最稳定,鬼知道shadow play的实现是不是24fps游戏->60fps显卡输出(匹配屏幕)->24fps视频,不想再引入更多次的转换等后期的幺蛾子来干扰结论了。

但是总体而言,还是达到了我想要的目的:24fps的游戏(保证帧数稳定)->24fps的视频和60fps的游戏->24fps的视频的总体观感接近,都是那种“微卡”的感觉。在大转角的时候,自然掉帧就更明显。但是看上去还是不错的。

(请用最高画质1080p观看)

↑60fps游戏->60fps视频

↑#1 60fps游戏->60fps视频->24fps视频

↑#2 24fps游戏->60fps视频

↑#3 24fps游戏->60fps视频->24fps视频