基于光线追踪的全局光照及降噪处理研究
2022-09-16李学阔温佩贤方泽华杜晓荣
李学阔,温佩贤,杨 林,方泽华,杜晓荣
(1.中山大学 物理学院,广东 珠海 519000;2.金山网络科技有限公司,广东 珠海 519000)
0 引 言
近年来,随着游戏、影视、虚拟现实、增强现实等技术的发展,对计算机图形质量和渲染速度的要求也越来越高,如何使用有限的计算机硬件资源快速地渲染出复杂精细的场景、逼真的色彩和光影一直是计算机图形学领域的研究热门问题。其中在全局光照模型的研究领域中,取得了不少成果。在早期的全局光照算法中,主要使用了文献[1]中提到的光线追踪算法,但该算法能表现镜面反射或规则的折射光,追踪漫反射光消耗大、效率低。在此之后,为了解决该算法的缺点,研究人员不断进行改进,其中文献[2]提出的基于蒙特卡洛概率随机算法的光线追踪,能够从统计意义上很好地实现物体间漫反射的光照效果,然而只有当采样数为无限大时,蒙特卡洛方法才是无误差的,这将消耗大量的计算机硬件资源和时间。
随着研究的不断深入,越来越多的全局光照算法被提出,包括文献[3-4]提到的辐射度算法,该算法可以实时计算面片形状因子,但是对于面片数目较多的复杂场景,求解仍然非常耗时。文献[5-6]提到的光子映射算法可以有效地模拟焦散结果,作为一种有偏方法,光子映射在有限的迭代次数或不合适的场景配置下,总存在偏差。文中提出了一种根据颜色采样分布进行降噪处理的优化方法,该方法可以减少采样数,通过颜色采样分布来有效去除噪声,提高算法的性能以及画面表现。
1 相关工作
1.1 传统的光线追踪
为了模拟真实的场景光照,传统的光线追踪算法被提出,它能够有效地追踪光线的运动轨迹,从而在屏幕上呈现出真实的渲染效果,但传统的光线追踪算法只能够追踪镜面反射或规则的折射光,追踪漫反射光消耗太大,效率低下,对辉映、焦散等效果不能很好地模拟。传统光线追踪算法流程如下所述:
(1)从视点出发,经过投影屏幕上的每一个像素点向场景发射一条虚拟的光线,开始进入(2),若递归跟踪返回不相交信息,则该像素点的颜色渲染为背景色;若递归跟踪返回相交信息,该像素点的颜色即为递归跟踪光线得到的颜色。
(2)进入递归跟踪,若递归深度超过预设阈值或者不和任何场景物体相交,则停止递归,返回不相交信息,否则求光线与场景物体最近的交点,进入(3)。
(3)根据当前交点所在的物体表面材质信息,计算其入射光线,向其入射光线的反方向继续跟踪,若返回(2)继续递归仍然相交,则该交点的颜色根据该点物体表面的反射率对该点自身颜色和递归得到的颜色加权得到;若返回(2)继续递归不相交,则该交点的颜色为该点自身的颜色。
图1展示了传统光线追踪算法的效果。
图1 传统光线追踪渲染效果
1.2 基于蒙特卡洛概率算法的光线追踪
传统的光线追踪算法有一些突出的缺点,例如只能追踪表面属性单一情况下的光线,不考虑漫反射等。于是有研究人员通过模型的修正来解决这些问题,事实上一个物体表面的属性通常以混合的形式存在,例如20%概率的光线会进行镜面反射,30%概率的光线会进行折射,50%概率的光线会发生漫反射,通过蒙特卡洛采样算法,每次按照概率决定光线的反射属性,把半球积分方程进行近似简化,能够用少量相对重要的采样来模拟积分。蒙特卡洛光线追踪已经是一个较为完备的渲染方案,它极大地解决了传统光线追踪的缺陷和效率问题,相对于普通光线追踪,蒙特卡洛光线追踪引入了更为复杂的漫反射模型,增加了需要跟踪的光线数量,但同时它使用的采样算法减少了需要跟踪的光线数量,其核心效率取决于其采样模型。
渲染方程及其在计算机图形学中的应用在1986年被James Kajiya提出[7],蒙特卡洛光线追踪也同时在该文章中被提出,作为一种数值计算方法来计算渲染方程积分。大概十年后,Lafortune对该方法提出了许多改进,包括双向光线追踪[8]。Eric Veach和Leonidas J. Guibas提出的Metropolis light transport[9]通过扰乱先前找到的光线路径来提高在复杂场景的渲染效率。Delbracio M使用了一种resampling[10]的方式提高光线追踪效果。Moon B等使用了图像滤波[11]的方式,Bako S,Vogels T,Wong K M等人使用了时域滤波[12-14]的方式,Schied C和Chaitanya C R等人使用了深度学习[15-18]的方法去除噪声。
2 文中算法
2.1 整体流程
基于颜色采样分布降噪处理的蒙特卡洛光线追踪算法是将降低蒙特卡洛采样率后的噪声图像经过像素点采样、扩展到像素块、平均降噪等步骤,获得降噪后的图像,整体流程如图2所示。
图2 算法整体流程
2.2 基于颜色采样分布降噪处理的蒙特卡洛光线追踪
不同于传统图像处理中的去除噪声,在蒙特卡洛光线追踪的渲染场景中,拥有更多的可用信息,每个像素点的颜色是通过多条光线的路径追踪计算出来的,场景中的几何信息、光线路径、光线与物体的碰撞等信息可用被存储起来,为去除噪声提供有用信息。
正如Veach[19]指出的那样,光线传输问题可以用空间路径来描述,全局光照可以通过计算光线传输的每条路径估量。在路径积分公式中,每个像素的颜色
u(x)=(ur(x),ug(x),ub(x))
(1)
可以由
(2)
(3)
那么蒙特卡洛误差n(x)可以表示为:
(4)
图3截取了两个rgb值有较大差异的像素点,并画出了它们的颜色分布图,由于较强的光照,第一个像素点较亮,若仅仅对比像素点颜色,不可能将它们判断为相似的像素点,而通过结合了渲染采样信息的颜色分布图可以发现,这两个像素点其实有着共同的颜色分布特性,而这个结论不可能由通过对比它们的平均值得到。
图3 像素颜色采样分布
为了得到更好的效果,对比像素块之间的相似度而不是通过对比单一像素的相似度,那么除噪将会通过平均相似像素块的颜色来实现,因此能够得到更为柔和的除噪效果。给定在像素点x和像素点y的采样颜色cx和cy,以及它们对应的颜色分布h(x)=(h1(x),h2(x),…,hnB(x))和h(y)=(h1(y),h2(y),…,hnB(y)),可以基于卡方距离公式[20]做如下定义:
dχ2(Cx,Cy)=
(5)
其中,nx=∑ihi(x),ny=∑ihi(y)。k(x,y)为hi(x)+hi(y)中的非空颜色分布,以上表示的为像素点间的相似度距离,下面将其扩展为边长为2ω+1的像素块。
(6)
对于每个像素点x,定义Nk(x)为满足dχ2(Px,Py)≤k的所有像素点y的集合,那么经过除噪后的颜色可以表示为:
(7)
上式只对像素块的中心点进行平均,若要对整个像素块进行平均,则计算出除噪后的像素块:
(8)
至此,已经计算出除噪后的像素块,再通过它来计算每个像素点,因为每个像素块包含2ω+1个像素,反过来每个像素点被2ω+1个像素块所包含,那么最终的除噪图像可以由下式得到:
(9)
2.3 算法框架
基于前两小节的阐述,可以得到程序的大体框架如算法1所示。
ALGORITHM 1:Single-Scale Ray Histogram Fusion
2:n←0 //auxiliary counter at each pixel in the image
3:for every pixelido
4:Pi←patch centered at pixeli
5:Wi←search window with sizebfor pixeli
6:c←0 andV←0
7: for everyj∈Wido
8:Qj←patch centered at pixelj
9:d←ChiSquareDistance(h(Pi),h(Qj))
10: ifd 12:c←c+1 13: end if 14: end for 15:V←V/c 16:n(Pi)←n(Pi)+1// +1 for each pixel inPi (Pi))./n(Pi) 18:end for 使用C++语言进行程序编写,实验运行在以下环境:CPU Intel i7 主频2.40 GHz,内存8 G。基于蒙特卡洛的光线追踪算法的采样率决定了画面质量,当物体表面属于漫反射属性时,基于蒙特卡洛的光线追踪算法向随机方向发射一定数量的光线进行采样,光线的数量决定着画面的真实度,发射的光线数量越多,效率越低,但画面越真实,而发射的光线数量越少,画面失真越严重,噪声越多。因此在实际应用中,采样率是一个需要调整平衡的重要参数,通过调整采样率来平衡实际渲染效果的性能和质量。 峰值信噪比(PSNR)是一种评价图像的有效标准,它的公式为: (10) 其中n表示每个采样值的比特数,MSE指的是Mean Square Error。PSNR的单位为dB。图4根据采样数与渲染耗时和PSNR的关系数据绘制,阐述了随着每个像素点采样数的增加,渲染耗时呈指数级增加,而画面真实度逐渐提高。 图4 采样数(spp:sample per pixel)与渲染耗时和PSNR的关系 图5中,球表面为100%漫反射属性,图5(a)只随机发射一条光线,图5(b)随机发射五条光线,图5(c)随机发射二十条光线。可以发现,蒙特卡洛概率采样方法的采样率越高,渲染出来的图像越接近真实场景,噪声越低。 图5 不同采样率下的蒙特卡洛光线追踪 图6对比了固定8 spp下未除噪、非局部均值除噪、基于颜色分布除噪三种渲染效果。 图6 未除噪、非局部均值除噪、基于颜色分布除噪的渲染效果对比 图7根据未除噪、基于颜色分布除噪、非局部均值除噪三种情况下的PSNR进行对比数据绘制,表明基于颜色分布的除噪方法能够比非局部均值除噪算法更好地得到真实的渲染图像。 图7 未除噪、基于颜色分布除噪、非局部均值除噪的PSNR对比 在基于颜色分布的除噪方法中,随着式子dχ2(Px,Py)≤k中k阈值的增大,除噪效果更为明显。图8分别列出k=0.1,k=0.3,k=0.7以及k=1.0的除噪效果(固定5 spp采样率)。但随着k的增大,过多的像素会被融合,因此得到的渲染图像会趋于模糊,虽然像素颜色值的方差会减小,但k过大会引入新的误差,导致MSE值反而变大。式(10)中的MSE可以化简为除噪后像素颜色值的方差加上除噪后的像素颜色偏差,如下式所示: 图8 基于颜色分布的除噪效果 (11) 图9 MSE与k的关系曲线 文中介绍了使用光线追踪方法实现的全局光照算法,阐述了传统的光线追踪算法以及基于蒙特卡洛概率采样算法的光线追踪的优缺点,提出了一种基于颜色采样分布降噪处理的蒙特卡洛光线追踪的方法。在实验中通过设置不同的采样率以及物体表面反射属性占比,对比了不同情况下的渲染效果以及渲染效率。实验结果表明,使用基于颜色采样分布降噪处理的蒙特卡洛光线追踪的方法除噪效果更为明显,可以在更小的采样数下有效提升画面表现,从而提高整个算法的性能。3 实验及运行结果
4 结束语