這樣子講好了
我們先從普通的螢幕解析度上面開始理解
假設我這裡有一片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