天天看點

專題一:歐拉視訊放大(線性)------随時間改變放大系數前言

目錄

  • 前言
    • 理論推導
      • 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

專題一:歐拉視訊放大(線性)------随時間改變放大系數前言

繼續閱讀