鏡頭模糊(boken blur)- day6
什么是模糊
從圖像處理角度來看,模糊的本質(zhì)就是一個低通濾波器。一張圖片可以使用傅立葉變換將其從空間域轉(zhuǎn)換到頻率域(從函數(shù)角度來看就是將圖片函數(shù)用一系列基函數(shù)進行描述)。那么模糊就是通過將高頻的信息給去掉,只留下低頻的信息(函數(shù)角度就是拿掉高頻的基函數(shù)),然后回到空間域下,自然就可以得到模糊后的圖像了。
那在空間域下怎么做模糊呢(總不能每次都用傅立葉變換來做吧),空間域下使用的是一個卷積操作來對一定范圍內(nèi)的像素進行計算,然后計算結(jié)果應(yīng)用回中心的值。
例如:對一個像素周圍的8個點的像素值加起來(包括自身),然后除以9,再應(yīng)用回該像素點,重復(fù)的對每個像素進行該操作,就可以得到模糊后的圖了。這就是均值濾波了,或者叫均值模糊,應(yīng)用的是一個3*3的濾波核(上閆老師的圖)

濾波種類
常用的有高斯濾波,雙邊濾波,徑向模糊等。今天要介紹一個叫鏡頭模糊(或者叫散景模糊,或者叫bokeh blur)的算法。這個算法是為了模擬相機拍照時,物體不在鏡頭的焦點所拍出來的模糊效果(在焦點前后都會有模糊的現(xiàn)象,模糊的形狀還和鏡頭光圈葉片有關(guān))。
分別為焦點前,焦點上,焦點后


算法
在后處理中,通常會用各種形狀的離散的采樣點來組成各種圖形,進而模擬各種形狀的模糊,那么不難想到我們要做的就是對UV進行旋轉(zhuǎn)然后采樣,然后旋轉(zhuǎn)然后采樣(迭代下去)。

上代碼
看看效果

是不是可以看到一些旋轉(zhuǎn)的點,這就是bokeh的形狀了,如果不進行一個r的采樣位移會變成什么樣呢,看看圖

不難理解為什么是圓形,因為用的旋轉(zhuǎn)矩陣使采樣的uv做的圓周運動(也就是說,理論上我們可以有各種各樣的模糊圖形,就很酷)