专题一:欧拉视频放大(线性)------随时间改变放大系数

前言

最近有小伙伴问我怎么设置随时间改变放大因子,实现在一个视频中放大倍数不断变化的效果。现在我们来看一下。

理论推导

首先我们知道在视频处理中,时间的概念是由帧数间接体现出来的。如下图,我们打开一个视频文件,右键属性可以查看到视频的帧频Fr(frame rate)和总时长time
专题一:欧拉视频放大(线性)------随时间改变放大系数
那么总的帧数len=Fr*time就可以求得。或是时间精度的问题,这里的len在程序里读到301帧,并且放大部分是从第2帧到第291帧。舍弃了后10帧,第一帧未放大。故len=291.
本视频推荐的放大因子alpha=10,我们让alpha的波动范围在(0,max)内。我们现在来设置alpha与时间变化关系。
alpha=f(i)alpha=f(i)i=t×lentimei=t\times \dfrac{len}{time}
其中 i 是程序处理到的帧数, t 是该帧数对应的时间。
alpha=f(lentimetalpha=f(\dfrac{len}{time}t)
我们考虑以下几种变化

1.线性变化

专题一:欧拉视频放大(线性)------随时间改变放大系数
alpha=k×i+balpha=k\times i+b
将(2,0),(291,max)代入上式得到 k=max/289k=max/289b=2×max/289b=-2\times max/289
不妨令max=50,就有alpha=50/289×i100/289alpha=50/289\times i-100/289代入i=t×lentimei=t\times \dfrac{len}{time}得到alpha=50/289×t×lentime100/289alpha=50/289\times t\times \dfrac{len}{time}-100/289就有 alpha 随时间 t 的变化关系。

2.正弦函数变化

专题一:欧拉视频放大(线性)------随时间改变放大系数
这里我们不妨将MAX设为100.取T=100,w=2pi/100.得到
alpha=50×sin(2pi/100×i+50alpha=50\times sin(2pi/100\times i)+50
代入i=t×lentimei=t\times \dfrac{len}{time}也能得到与时间的关系

当然你也可以设置分段阶跃函数或是二次函数等其他形式的变化。这里不再枚举。

代码更改

在函数

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

专题一:欧拉视频放大(线性)------随时间改变放大系数