運動模糊算法推論

運動模糊是photoshop中的一種濾鏡,也是AE中的一種動效。本文提出了該效果的一種算法實現及原理推論。演示demo見githubgit

1、效果演示

2、背景介紹

運動模糊是景物圖像中的移動效果。它比較明顯地出如今長時間曝光或場景內的物體快速移動的情形。github

在即時電腦動畫中,每一幀顯示的是瞬時畫面,沒有動態模糊。所以每秒24-30張畫面的電玩遊戲看起來斷斷續續的並不天然,而使用畫面更新頻率更快的攝影機拍攝天然動做看起來倒是連續的。所以不少電玩遊戲會以運動模糊爲特點,尤爲是賽車模擬遊戲:在預先運算生成的電腦圖像中,給出逼真的運動模糊效果,在時間上避免失真需依照許多瞬間的組合來製造畫面,渲染器也有更多的時間來繪製每一個畫面。

因此,在動畫中加入運動模糊效果的目的:
1).加強快速移動場景的真實感,使視覺上更柔和。
2).在不損失視覺流暢性的狀況下,減低幀率,顯著減小功耗。

3、運動模糊算法

1.運動模糊的類型

線性
運動模糊發生在單一方向的模糊。鏡頭的角度會影響動態模糊線條的角度;濾鏡的半徑長度會影響模糊強度,長度越長會月模糊。本文討論此種類型。算法


旋轉
產生像物體在旋轉的環狀動態模糊。此類型的模糊以鏡頭爲準的點爲中心,角度爲主要影響因素,角度變化越大越模糊。性能優化


縮放
縮放型的動態模糊是以圖片中心爲中心輻射開來的模糊。圖片中心未發生模糊但以圖片中心爲準的外圍卻會模糊,會讓人有凸顯圖片中心的動態感受。鏡頭的縮放長度爲主要影響因素。函數

2.運動模糊的原理

在上一節咱們介紹過,在攝影機中產生運動模糊的緣由是由於在曝光時間內,拍攝物體產生了惟一,因此形成運動模糊的效果。而在咱們現實生活中,一樣可以看到不少運動模糊的場景。好比雨滴落下的場景。在下大雨的時候,咱們看到的雨滴,並非一顆一顆的,而是成一條直線落下,但實際雨滴只是水滴的形狀,並非條狀。這是因爲視覺暫留的現象形成的。當物體中止發光時,在人腦海中的影像信息並不會當即小時,會有短期的停留,而雨滴樓下的過程,因爲視覺暫留的緣由,雨滴每次進過的地方會在咱們腦海中留下影像,既而造成一條連貫的直線,也就是咱們人眼所看到的運動模糊的效果。性能

2.1.視覺暫留

視覺暫留現象是光對視網膜所產生的光中止做用後,仍保留一段時間的現象,緣由是由視神經的反應速度形成的。視覺其實是靠眼睛的晶狀體成像,感光細胞感光,而且將光信號轉換成神經電流,傳回大腦引發人體視覺。感光細胞的感光是靠一些感光色素,感光色素的造成須要必定的時間,這就造成了視覺暫留的現象,也叫視覺惰性。
當物體在快速運動時,人眼所看到的影像消失後,因爲視覺暫留的現象,視神經對物體的印象不會當即消失,而要延續一段時間,就造成了人眼所看到的運動模糊的景象。 基於視覺惰性的特性,看成用於人眼的光線忽然消失後,亮度感受不會當即消失,而是近似按指數規律降低而逐漸消失,以下圖:優化

2.2.視覺惰性與運動模糊

以下是一個物體在制定的方向上運動動畫

其中物體下方所標的序號1,2,……表示物體的該部分在1s,2s,……時間前曾通過標記位所處的位置。咱們假設物體是勻速運動的,視覺惰性的亮度衰減函數爲f(x),每一個部分的最大亮度值爲B(t),在標記位所看到的綜合感官顏色殘影位rest(t).這裏爲了簡化計算,咱們假設f(t)爲線性關係,且B(t)爲10.

則各部分在標記位殘留的亮度位:

從上述分析可得,假設n爲感光亮度消失的最大時間,人眼在比標記處看到的感官顏色值爲:

這裏爲了簡化計算,從亮度的峯值開始疊加各個衰減的殘影。由以前的視覺殘留數據咱們能夠知道,衰減函數在上升和降低階段基本是堆成的,因此加上這階段的殘影疊加,咱們能夠獲得:

即對於一張體現勻速運動的圖片y(x)來講,咱們將上述殘影疊加映射到每一個像素的計算,則產生運動模糊以後的圖片能夠表示爲:

*表示卷積,psf即點擴散函數,而運動方向上感光亮度消失的最大距離點則爲運動模糊的模糊半徑。

3.模糊算法

3.1.點擴散函數

咱們給運動方向加上一個斜率β,以下圖所示:3d

圖中的實心圓點爲圖片上受視覺惰性影響的像素點,(x0,y0)爲像素點的座標,L爲模糊半徑,即運動方向上感光亮度消失的最大距離,由運動速率決定。
則運動方向上最簡單的運動模糊模型可用直線型點擴散函數以離散卷積形式表示爲:

###3.2.圖片處理 將運動模糊的點擴散函數代入以前介紹的模糊公式,設r=L/2,則

因爲圖片的像素是離散的,則上述模型能夠表示爲:

由上述模型咱們能夠知道,將一張圖片進行運動模糊的處理, 實際是獲取每一個像素在運動方向上的L個採樣點,取其平均值,做爲相信的像素值賦值給當前計算的像素。
涉及的參數有:
1)方向β
2)模糊半徑L
以下圖爲一張須要處理的圖片,每一個格子表示圖片中的每一個像素。紅色格子爲須要處理的像素。假設模糊半徑爲r,方向角度爲β

則須要處理的像素顏色值爲:

3、性能優化

減小採樣點

對於一張n1xn2像素的圖片,採用上述運動模糊的算法複雜度爲 rest

其中L爲模糊半徑,也爲採樣點的個數,圖片模糊處理的計算時間隨採樣點個數呈線性增加。模糊的力度與模糊半徑呈正比。因此咱們能夠在保證模糊半徑不變的狀況下,相應的減小採樣點的個數:

因爲在demo裏咱們處理的對象是文本圖片,在文字內部,連續的兩個像素值很是接近,將連續採樣改爲間隔採樣對於文原本說在效果上的影響很是小,可是卻能夠減小一半的計算時間成本。 以下是減小採樣前跟減小採樣後的效果對比圖:

可見,採樣優化後的效果與優化前基本一致。
相關文章
相關標籤/搜索