加入比較的4種方法有:
1. 快速高斯模糊。
2. 二次Summed Area Table Blur(適合gpu, 常用于DOF,http://www.gamasutra.com/view/feature/3102/four_tricks_for_fast_blurring_in_.php)
3. Alpha Blur(motionblur變種,優(yōu)化過(guò)后的算法,嚴(yán)重依賴相鄰像素之間累積關(guān)系,不適合gpu, http://freespace.virgin.net/hugo.elias/graphics/x_motion.htm)
4. SuperFastBoxBlur(http://incubator.quasimondo.com/processing/superfast_blur.php)
其中,這四種方法內(nèi),除了高斯模糊是O(n)之外,其他都是O(1)效率。也就是說(shuō),運(yùn)算速度和模糊半徑?jīng)]有關(guān)系,只和圖片大小有關(guān)。

圖上時(shí)間僅供參考,除了AlphaBlur代碼優(yōu)化過(guò),其它方法僅僅是基本實(shí)現(xiàn)原理。SuperFastBoxBlur和SummedAreaTable實(shí)際使用中,要比圖上更快些。
以下方法沒(méi)有列入比較范圍
1. 直接基于O(n*n)的高斯模糊核,速度太慢。圖上方法采用縱向和橫向高斯核分解。
2. Stack Blur, 比高斯快的方法,并且效果和效率兼?zhèn)洹?http://www.codeproject.com/KB/graphics/blurringwithcuda.aspx)
3. FFT gaussian blur
4. High-Dimensional Gaussian Filtering (bilateral)
5. constant time filters - heat diffusion.(Kass, 2006)
6. constant time filters - SVD, singular value decomposition (Gotsman 1994)
7. SAT衍生出來(lái)的一些方法,F(xiàn)ast Filter Spreading,Linear Filters and their Transposes。
---------------------------------------------------
關(guān)于2次Summed Area Table實(shí)現(xiàn)。
一次SAT采樣4個(gè)點(diǎn),二次SAT則需要9個(gè)點(diǎn),三次需要16個(gè)點(diǎn),以此類(lèi)推。并且乘上對(duì)應(yīng)的Weight Function,除以(面積^n, n = 幾次). 詳細(xì)公式見(jiàn):Filtering By Repeated Integration
posted on 2011-01-11 01:33
foxriver 閱讀(5100)
評(píng)論(0) 編輯 收藏 引用