(论文)[2012-SIG] SURE-based Optimization for Adaptive Sampling and Reconstruction

SURE-AS

  • SURE-based Optimization for Adaptive Sampling and Reconstruction
  • 主页
  • 作者:Tzu-Mao Li、Yu-Ting Wu、Yung-Yu Chuang
    • National Taiwan University
  • 我们用了 SURE,用了 cross bilateral filters,各向异性效果做得更好
    • SURE 支持对任意重建 kernel 的估计
    • 能够一起优化 AS+Recon

Introduction

  • MCPT 对于 complex scene with multiple distributed effects,很难
  • Adaptive sampling and reconstruction (or filtering) 用于加速 MCPT
    • AS:通过统计量(难得到)来分配光线
    • Recon:kernel 是 spatially-varying and anisotropic(各向异性之前人没有做)
  • 我们
    • 引入 SURE
      • SURE 可以评估任意形态的 kernel
      • SURE 计算的 error 可以用于 guide sampling
    • 渲染 distributed effects 时,提出了efficient and memory friendly 的保持高质量双边滤波的方法

Related Work

  • Adaptive sampling and reconstruction
    • image space methods
    • multidimensional methods:由于维度爆炸的问题,只会考虑一两种 distributed effects
    • adaptive filtering
  • Denoising using SURE

SURE

  • Stein’s Unbiased Risk Estimator【1981】
  • 根据中心极限定理:\(Y\) 是像素的无偏估计,\(x\) 是真值,\(\sigma\) 是有界样本方差,\(n\) 是样本数,则有

\[ Y\xrightarrow{d} N \left(x, \frac{\sigma^2}{n} \right) \]

  • SURE:Blu and Luisier’s SURE formulation 【2007】
    • 如果 \(y\)\(x\) 的一个测量值,且服从正态分布 \(N(x,\sigma^2)\), 而且 \(F\) 是一个弱可微函数,那么以下误差的估计是 \(F(y)\) 的 MSE 的无偏估计

\[ \text{SURE}((F(y)) = \|F(y) - y\|^2 + 2\sigma_y^2 \frac{dF(y)}{dy}-\sigma_y^2 \]

\[ E[\text{SURE}((F(y))] = \|F(y) - x\|^2 \]

  • 这告诉我们,如果我们能够计算出 \(\sigma_y\)\(dF(y)/dy\),那么就可以在不知道真值 \(x\) 的条件下,估计出 MSE
    • 我们希望将 \(F\) 用于任意的 kernel
  • \(y\sim N(x,\sigma^2/n)\),于是,现在只需要计算 \(dF(y)/dy\)\(\sigma_y\) 可以从样本中获得)
  • GEM 论文中也是估计 MSE,但是其二次近似只适用于对称的 kernel;我们适用于任意 kernel

Method

Initial samples

  • 8 - 16 spp 均匀采样

Filter selection using SURE

  • 实验了 3 种 filter
    • isotropic Gaussian
    • cross bilateral(这里以交叉双边滤波为例
    • modified non-local means filter with additional scene feature information
      • we call this a “cross non-local means filter”

Cross bilateral filters

  • 需要缓存辅助信息:surface normals, depths, and texture colors
    • 计算出所有辅助信息的 mean、var,作为 feature vectors
  • 双边滤波权重:像素 \(i\),邻居 \(j\)
    • \(\sigma_s,\sigma_r\):spatial、range(color)
    • \(\sigma_{fk}\):feature vector \(k\)

\[ w_{i,j}=\exp\left(-\frac{\|p_i - p_j\|^2}{2\sigma_s^2}\right) \exp\left(-\frac{\|c_i - c_j\|^2}{2\sigma_r^2}\right) \prod_{k=1}^{m} \exp\left(-\frac{D(\bar{f}_{ik}, \bar{f}_{jk})^2}{2\sigma_{f_k}^2}\right), \]

  • filtered pixel color \(\hat{c}_i\)

\[ \hat{c}_i = \frac{\sum_{j=1}^{n} w_{ij} c_j}{\sum_{j=1}^{n} w_{ij}} \]

  • 我们的实现中,filterbank 是不同 \(\sigma_s\) 的滤波器(\(\sigma_r\)\(\sigma_{f_k}\) 固定)
  • \(D\) 用于度量距离,用于 distributed effects(Depth of field and motion blur)

Depth of field and motion blur

  • 这样条件下,geometric features (surface normal and depth) 会有噪声
    • 因此需要设计 \(D\)
  • 【Sen2012】通过评估 MC random parameters、the scene features 之间的依赖性,来减少依赖性高的样本的权重
    • 需要计算样本之间的 pairwise mutual information【具体原理看论文
    • 计算慢、内存开销大
  • 建模为高斯,使用方差归一化

\[ D(\bar{f}_{ik}, \bar{f}_{jk}) = \sqrt{\frac{\|\bar{f}_{ik} - \bar{f}_{jk}\|^2}{\sigma_{ik}^2 + \sigma_{jk}^2}} \]

  • 直观上,如果有 distributed effects,则方差大,能够容忍 feature 有更大的区别

Compute SURE and select filter

  • 可以直接算出解析解

\[ \frac{dF(c_i)}{dc_i} = \frac{1}{\sum_{j=1}^{n} w_{ij}} + \frac{1}{\sigma_r^2} (F^2(c_i) - F(c_i)^2) \]

\[ F^2(c_i) = \frac{\sum_{j=1}^{n} w_{ij} c_j^2}{\sum_{j=1}^{n} w_{ij}} \]

  • 第一项是 \(j=i\) 的结果,\(w_{ii}=1\)
  • 后面展开,将 \(W_i=\sum_{j}w_{ij}\) 看作整体

\[ \frac{dw_{ij}}{dc_i} = \frac{(c_j - c_i)}{\sigma_r^2} w_{ij} \]

\[ \dfrac{dF(c_i)}{dc_i} = \left(\left(\dfrac{d(\sum_{j \neq i} w_{ij} c_j)}{dc_i}+1\right) - \dfrac{dW_i}{dc_i} F(c_i)\right)\Big/{W_i} \]

  • 噪声:使用 MC 样本会导致 noisy filter selection => noisy results
    • SURE 本身作为 estimator 有方差
  • 在 SURE 优化之前,先过一遍固定参数的交叉双边滤波
  • 如何选择最优的 filter
    • 每个 filter 都计算一遍 SURE,选最小的作为最优 filter(看流程图的解说应该是这样)
      • 所以他只用了 3 scale 的 filter

Adaptive sampling

  • SURE 估计的 MSE 可以用于 AS,理论上应该正比于 MSE
    • 但是 SURE 存在噪声(可能为负)
  • 启发式
    • 加上最后减去的一项,就不会有负数了
    • 暗处多打点光线,rel:\(I(F(c_i))^2\)​​ 表示 squared luminance
      • \(\epsilon=0.001\)

\[ S(i) = \frac{\text{SURE}(F(c_i)) + \sigma_i^2}{I(F(c_i))^2 + \epsilon} \]

  • 采样数 \(\propto S(i)\)

Results and discussions

  • 实现在 PBRT2
  • Intel dual quad-core Xeon E5420 CPU at 2.5GHz, 32GB of RAM, and using 8 threads

参数设置

  • SURE
    • \(\sigma_{fk}\)
      • normal:0.4
      • texture:0.125
      • depth:0.3
    • \(\sigma_r\):0,不用这个参数;实验效果不好
    • \(\sigma_s\):filterbank
      • intermediate iteration:\(1,2,4\)(足够了,而且效率高)(GEM 也是如此)
      • final iteration:\(1,\sqrt{2},2,\cdots,8\)
  • SURE 之前的 prefilter:\(\sigma_s=8\),其余同上

Comparisons

  • MC、GEM、RPF【Sen2012】
  • relMSE:\((y-x)^2/(x^2+\epsilon)\),0.01
  • 场景:4 scenes with a variety of effects
    • 所有方法都不能很好的保留高频 bump map

Discussions

  • GEM
    • 试图最小化 MSE,结果上说 relMSE 比 MC、RPF 更小
    • 但是由于其各向同性的高斯核,高频纹理、细节很难保留(oversmoothed artifacts)
    • 在比较黑的区域光线太少了【为啥,不太懂,人家是 \(\Delta\)relMSE
  • RPF【还没看论文】
    • produce slightly oversmoothed results
    • 很慢、内存开销大

Other filters

  • 各向同性高斯:能够实现 GEM 差不多的效果
  • non-local means filter:pixel \(i,j\) 之间的权重
    • \(N\):邻居 \([-2,2]^2\)
    • patch-based distance 只用在 color,用在 feature 会抹掉高频细节
    • 做了使用相同的 \(\sigma_r\) 和 filter-bank 的 \(\sigma_r\):filterbank 效果好
    • 有时效果比交叉双边滤波好,但是慢了10x

\[ \exp\left(-\frac{\sum_{n \in N} \|c_{i+n} - c_{j+n}\|^2}{2|N|\sigma_r^2}\right) \prod_{k=1}^{m} \exp\left(-\frac{D(\bar{f}_{ik}, \bar{f}_{jk})^2}{2\sigma_{f_k}^2}\right). \]

\[ \frac{dF(c_i)}{dc_i} = \frac{1}{W_i} + \frac{1}{|N|\sigma_r^2}(F^2(c_i) - F(c_i)^2) + \frac{1}{|N|\sigma_r^2 W_i} \sum_{n \in N} w_{i,i-n}(c_i - c_{i+n})(F(c_i) - c_{i-n}) \]

  • 没仔细推 \(\dfrac{dF(c_i)}{dc_i}\)

Limitations

  • 做不了 very high frequency texture
  • 苦于 MC noise,低 spp 细节保留不是很好
  • 尝试做时序的,每帧独立做,效果还行就是会有 flicking
    • future:temporal