[cg] Games202-realtime raytrcing

本文探讨了高斯滤波的局限性,介绍了双边滤波通过颜色突变检测边界的方法,以及联合双边滤波和SVGF在考虑深度、法线和颜色差异的同时解决噪声问题。重点介绍了如何通过G-buffer指导滤波和处理firefly问题,以及SVGF在实时降噪领域的里程碑地位。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

高斯滤波

    

        缺点:所有像素都会糊掉,无法保持边缘

双边滤波

         表示像素之间的距离,表示颜色之间的距离

优点:通过颜色突变找到图像边界

        如果两个像素(i,j),(k,l)颜色相差不大-->正常高斯核滤波

        如果两个像素(i,j),(k,l)S颜色相差太大-->高斯权重减小

         缺点:噪声多的场景中,通过颜色突变无法区分是噪声还是边界

联合双边滤波

一种 spatial filtering 方法,通过充分利用 G-buffer 的各种属性作为参考(双边滤波公式基础上多乘以几个指标),来控制滤波的核和权重。实际关键就是在判断高频信息属于噪声还是图像信息,而 G-buffer 是光栅化过程生成的完全没有噪声,因此作为滤波的指导是非常有用的。

考虑的点有:

  • 联合考虑深度差异和法线(不能简单的单纯考虑深度差异)
    • 实际上就是考虑沿平面的深度差距

大滤波核带来的问题

使用大滤波核,如128x128, 每个像素都要取它周围的128x128个像素点,会耗费巨大性能

解决方法一 -seperate passes

1. 先横向滤波,取每个像素周围的(1xN)个像素

2. 再纵向滤波,取每个像素周围的(Nx1)个像素

N^2-->优化到N+N

原理:

高斯二维函数是可拆分的,(但双边滤波理论上不可分,工业界近似处理)

解决方法二 - a-trous wavelet

渐进增大filter大小

比如:每次取像素周围的5个sample, 但这些sample间隔会随着次数以2^i次方递增

 原理:

逐步去掉: 高频-->中频-->低频噪声

firefly 解决 

问题:图像中如果存在特别亮的点(firefly/outliner) ,需要先把这些点去掉,再去滤波

去掉的方法-->clamp操作(大于最大值取最大值,小于最小值取最小值)

取像素周围的7x7区域,获取一个颜色范围(根据均值和方差取),把超出这些范围的颜色clamp到这个范围内

同理,在temperal filter里,为防止上一帧的取值去到了颜色差异巨大的值,可对上一帧的颜色做clamp, clamp到当前帧的7x7颜色范围内

SVGF 

SVGF(Spatio-Temporal Variance Guided Filter)主要是采用了更聪明也更符合现代 G-Buffer 管线的 spatial filtering 方法,再搭配上 temporal filtering,可以说是 real-time denoising 的里程碑。

SVGF = Joint Bilateral Filtering + Temporal Filtering。SVGF 算是 real-time denoising 的经典方案了,后续的降噪方案大都基于此去改进或创新。

公式:

考虑的metrix: 1.深度, 2.normal 3.颜色差异

1.深度差异

考虑A,B点之间深度的梯度--深度沿着AB方向的变化率 

-->同一平面上的两个点可以做混合

2.normal差异

 3.颜色差异

问题:

在有噪声的图像中,如果直接判断两个像素之间的颜色差,有可能取到的是有噪声的像素点。

解决方法:

--考虑标准差来衡量噪声程度, 标准差越大,颜色差异就不可信

参考自:实时光线追踪(1)降噪:Spatio-Temporal Filtering - KillerAery - 博客园 (cnblogs.com)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值