分页: 1 / 1

关于在expr中加入current_frame的方法

发表于 : 2018-06-02 11:56
freesilent
每次看taro大大的文章都有新收获,其实是因为看多少学多少,剩下的没仔细看 {:husky}

想做一个根据帧号变化的mask,原画面是匀速平移,比宇宙更远的地方01话tirm(11795,11932),懒得传raw了,有原盘的菊苣可以去看看。
贴上原图
截取之后00帧
图片
截取之后137帧
图片
大图可以看到右下角线条边缘有溢出。原先讨论时,有菊苣认为也可能是特效,不过我打算处理一下。

线条是一个匀速向右平移的过程,我最先算了00帧的mask表达式(偷懒只设了一条边)

代码: 全选

y = -3.1365x + 6235.6
图片
137帧的表达式

代码: 全选

y = -3.0558x + 6205.4
图片
用avspmod看了下是否准确

代码: 全选

0f_mask=mt_lutspa( mode="absolute", expr="3.1467 x * y + 6235.6 - 0 > 255 0 ?")
137f_mask=mt_lutspa( mode="absolute", expr="x 3.0558 * y + 6205.4 - 0 > 255 0 ?")
问题不大,然后考虑通过引入当前帧号做出mask平移效果,考虑到x的斜率差不多,所以统一取3.1

代码: 全选

3.1x+y-(6235.6-a*current_frame)>0
算出a为0.2204
表达式为3.1x+y-(6235.6-0.2204cur_fra)>0
所以最后的语句为

代码: 全选

ScriptClip("""mt_lutspa(mode="absolute",expr="3.1 x * y + 6235.6 - 0.2204  "+string(current_frame)+" * + 0 > 255 0 ?")""")
但是查看觉得好像不对,137帧的mask比00帧的大了,实际应该是小啊。

求助大佬,难道中缀变后缀的时候写错了?

Re: 关于在expr中加入current_frame的方法

发表于 : 2018-06-02 17:46
lwjkk666
好吧,我看到是chorma shift的问题,还有,这段帧是静态图过渡的吗

Re: 关于在expr中加入current_frame的方法

发表于 : 2018-06-03 23:21
freesilent
回ls,是画面平移+略微放大。
后来仔细检查了一遍,发现斜率近似成3.1是不行的, 会造成很大偏差,最后我重新算了开头和结尾的mask方程

代码: 全选

y = -3.1268x + 6220.5
y = -3.1347x + 6362.5
然后近似成3.13就没啥大问题了
最后的表达式

代码: 全选

3.13 x * y + 0.9387 cf * 6225.88 + - 0 > 255 0 ?