专题一:欧拉视频放大(线性)------随时间改变放大系数
前言
最近有小伙伴问我怎么设置随时间改变放大因子,实现在一个视频中放大倍数不断变化的效果。现在我们来看一下。
理论推导
首先我们知道在视频处理中,时间的概念是由帧数间接体现出来的。如下图,我们打开一个视频文件,右键属性可以查看到视频的帧频Fr(frame rate)和总时长time。
那么总的帧数len=Fr*time就可以求得。或是时间精度的问题,这里的len在程序里读到301帧,并且放大部分是从第2帧到第291帧。舍弃了后10帧,第一帧未放大。故len=291.
本视频推荐的放大因子alpha=10,我们让alpha的波动范围在(0,max)内。我们现在来设置alpha与时间变化关系。
令 而
其中 i 是程序处理到的帧数, t 是该帧数对应的时间。
则
我们考虑以下几种变化
1.线性变化
将(2,0),(291,max)代入上式得到
不妨令max=50,就有代入得到就有 alpha 随时间 t 的变化关系。
2.正弦函数变化
这里我们不妨将MAX设为100.取T=100,w=2pi/100.得到
代入也能得到与时间t的关系
当然你也可以设置分段阶跃函数或是二次函数等其他形式的变化。这里不再枚举。
代码更改
在函数
amplify_spatial_lpyr_temporal_iir(inFile, resultsDir, 10, 16, 0.4, 0.05, 0.1);
中的
for i=startIndex+1:endIndex
语句前后加上
max=200;
w=0.0628;
for i=startIndex+1:endIndex
%线性变化
alpha=max/289.*i-2*max/289;
%正弦变化
%alpha=max/2.*sin(w.*i)+max/2;
其中的max和w自己设定。
实际效果
想要查看具体效果可点击这里下载观看。
提取码:dq3p