这样子讲好了
我们先从普通的萤幕分辨率上面开始理解
假设我这里有一片720p的片子 要放到1080p的萤幕上
那势必要经过一个插值(interpolation)的过程
如果大家有在玩madVR的话应该都很有心得:
http://bit.ly/2HD9v6o (图片摘自万年冷冻库)
如上图的色度升频,有许多不同的插值方式
可以看到最上面的 Nearest Neighbor 就是找最邻近的像素直接拿来用,
看起来锯齿状也最明显,所以madVR作者默认是不采用的。
同样的道理也可以应用在帧数上,
今天我这里有一片24帧的片子 要放到60Hz的萤幕上
可以把时间轴当成除了萤幕长宽之外的第三个轴
那也是要插值才放得上去。
一般大家说的 AAABBCCCDD 就是最简单的Nearest Neighbor 取最邻近的帧直接拿来用。
本次争议的主角 Fluid Motion 使用的是这样的算法:
A 3/5A+2/5B 1/5A+4/5B 4/5B+1/5C 2/5B+3/5C
C 3/5C+2/5D 1/5C+4/5D 4/5D+1/5E 2/5D+3/5E
像这样 每2/5帧当作一个单位下去切 让你看起来更流畅
但是偶尔也是会有切不好的时候,你就会觉得怪怪的;
另外madVR有一种smooth motion 的算法就比较简单
A A A+B B B C C C+D D D
这样跟原本的24帧呈现的方式很像,judder也消失了 算是一个不错的方法
所以关于加料的部份,其实上面的方式都没有加其他东西进去
一样都是ABCDE 只是算法不同而已喔。
参照:
https://github.com/mpv-player/mpv/wiki/Interpolation
http://lysandria1985.blogspot.com/2013/01/3-madvr.html