天天看点

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

目录

  • 前言
    • 理论推导
      • 1.线性变化
      • 2.正弦函数变化
    • 代码更改
    • 实际效果

前言

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

理论推导

首先我们知道在视频处理中,时间的概念是由帧数间接体现出来的。如下图,我们打开一个视频文件,右键属性可以查看到视频的帧频Fr(frame rate)和总时长time。

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

那么总的帧数len=Fr*time就可以求得。或是时间精度的问题,这里的len在程序里读到301帧,并且放大部分是从第2帧到第291帧。舍弃了后10帧,第一帧未放大。故len=291.

本视频推荐的放大因子alpha=10,我们让alpha的波动范围在(0,max)内。我们现在来设置alpha与时间变化关系。

令 a l p h a = f ( i ) alpha=f(i) alpha=f(i) 而 i = t × l e n t i m e i=t\times \dfrac{len}{time} i=t×timelen​

其中 i 是程序处理到的帧数, t 是该帧数对应的时间。

则 a l p h a = f ( l e n t i m e t ) alpha=f(\dfrac{len}{time}t) alpha=f(timelen​t)

我们考虑以下几种变化

1.线性变化

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

a l p h a = k × i + b alpha=k\times i+b alpha=k×i+b

将(2,0),(291,max)代入上式得到 k = m a x / 289 k=max/289 k=max/289 b = − 2 × m a x / 289 b=-2\times max/289 b=−2×max/289

不妨令max=50,就有 a l p h a = 50 / 289 × i − 100 / 289 alpha=50/289\times i-100/289 alpha=50/289×i−100/289代入 i = t × l e n t i m e i=t\times \dfrac{len}{time} i=t×timelen​得到 a l p h a = 50 / 289 × t × l e n t i m e − 100 / 289 alpha=50/289\times t\times \dfrac{len}{time}-100/289 alpha=50/289×t×timelen​−100/289就有 alpha 随时间 t 的变化关系。

2.正弦函数变化

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

这里我们不妨将MAX设为100.取T=100,w=2pi/100.得到

a l p h a = 50 × s i n ( 2 p i / 100 × i ) + 50 alpha=50\times sin(2pi/100\times i)+50 alpha=50×sin(2pi/100×i)+50

代入 i = t × l e n t i m e i=t\times \dfrac{len}{time} i=t×timelen​也能得到与时间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

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

继续阅读