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

二、背景介紹
運動模糊是景物影象中的移動效果。它比較明顯地出現在長時間曝光或場景內的物體快速移動的情形。


1).增強快速移動場景的真實感,使視覺上更柔和。
2).在不損失視覺流暢性的情況下,減低幀率,顯著減少功耗。
三、運動模糊演算法
1.運動模糊的型別
線性
運動模糊發生在單一方向的模糊。鏡頭的角度會影響動態模糊線條的角度;濾鏡的半徑長度會影響模糊強度,長度越長會月模糊。本文討論此種型別。

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

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

2.運動模糊的原理
在上一節我們介紹過,在攝影機中產生運動模糊的原因是因為在曝光時間內,拍攝物體產生了唯一,所以造成運動模糊的效果。而在我們現實生活中,同樣能夠看到很多運動模糊的場景。比如雨滴落下的場景。在下大雨的時候,我們看到的雨滴,並不是一顆一顆的,而是成一條直線落下,但實際雨滴只是水滴的形狀,並不是條狀。這是由於視覺暫留的現象造成的。當物體停止發光時,在人腦海中的影像資訊並不會立即小時,會有短時間的停留,而雨滴樓下的過程,由於視覺暫留的原因,雨滴每次進過的地方會在我們腦海中留下影像,既而形成一條連貫的直線,也就是我們人眼所看到的運動模糊的效果。
2.1.視覺暫留
視覺暫留現象是光對視網膜所產生的光停止作用後,仍保留一段時間的現象,原因是由視神經的反應速度造成的。視覺實際上是靠眼睛的晶狀體成像,感光細胞感光,並且將光訊號轉換成神經電流,傳回大腦引起人體視覺。感光細胞的感光是靠一些感光色素,感光色素的形成需要一定的時間,這就形成了視覺暫留的現象,也叫視覺惰性。
當物體在快速運動時,人眼所看到的影像消失後,由於視覺暫留的現象,視神經對物體的印象不會立即消失,而要延續一段時間,就形成了人眼所看到的運動模糊的景象。
基於視覺惰性的特性,當作用於人眼的光線突然消失後,亮度感覺不會立即消失,而是近似按指數規律下降而逐漸消失,如下圖:

2.2.視覺惰性與運動模糊
如下是一個物體在制定的方向上運動








3.模糊演算法
3.1.點擴散函式
我們給運動方向加上一個斜率β,如下圖所示:

則運動方向上最簡單的運動模糊模型可用直線型點擴散函式以離散卷積形式表示為:



涉及的引數有:
1)方向β
2)模糊半徑L
如下圖為一張需要處理的圖片,每個格子表示圖片中的每個畫素。紅色格子為需要處理的畫素。假設模糊半徑為r,方向角度為β


三、效能優化
減少取樣點
對於一張n1xn2畫素的圖片,採用上述運動模糊的演算法複雜度為




可見,取樣優化後的效果與優化前基本一致。