镜头模糊(boken blur)- day6
2023-03-05 21:34 作者:DaydreamLin | 我要投稿
什么是模糊
从图像处理角度来看,模糊的本质就是一个低通滤波器。一张图片可以使用傅立叶变换将其从空间域转换到频率域(从函数角度来看就是将图片函数用一系列基函数进行描述)。那么模糊就是通过将高频的信息给去掉,只留下低频的信息(函数角度就是拿掉高频的基函数),然后回到空间域下,自然就可以得到模糊后的图像了。
那在空间域下怎么做模糊呢(总不能每次都用傅立叶变换来做吧),空间域下使用的是一个卷积操作来对一定范围内的像素进行计算,然后计算结果应用回中心的值。
例如:对一个像素周围的8个点的像素值加起来(包括自身),然后除以9,再应用回该像素点,重复的对每个像素进行该操作,就可以得到模糊后的图了。这就是均值滤波了,或者叫均值模糊,应用的是一个3*3的滤波核(上闫老师的图)

滤波种类
常用的有高斯滤波,双边滤波,径向模糊等。今天要介绍一个叫镜头模糊(或者叫散景模糊,或者叫bokeh blur)的算法。这个算法是为了模拟相机拍照时,物体不在镜头的焦点所拍出来的模糊效果(在焦点前后都会有模糊的现象,模糊的形状还和镜头光圈叶片有关)。
分别为焦点前,焦点上,焦点后


算法
在后处理中,通常会用各种形状的离散的采样点来组成各种图形,进而模拟各种形状的模糊,那么不难想到我们要做的就是对UV进行旋转然后采样,然后旋转然后采样(迭代下去)。

上代码
看看效果

是不是可以看到一些旋转的点,这就是bokeh的形状了,如果不进行一个r的采样位移会变成什么样呢,看看图

不难理解为什么是圆形,因为用的旋转矩阵使采样的uv做的圆周运动(也就是说,理论上我们可以有各种各样的模糊图形,就很酷)