陕西哪些公司做企业网站/百度推广开户流程
(本文内容主要来自《pbrt》13.5、13.6)
如果yyy满足概率密度分布p(y)p(y)p(y),如果要随机地获取一个yyy的话,可以先获取一个随机数ttt,然后代入它的累积概率密度P(y)=tP(y)=tP(y)=t,然后求解出yyy即可。
但是很多情况需要的不仅是对单个变量做采样,往往需要对多个维度下的多个变量进行采样,而这些多个变量之间很有可能有互相关联,并且直接采样也不容易,可以考虑做一些变换来进行采样。
一切推导从一个最基本的式子出发,yyy和xxx的累积概率密度CDFCDFCDF相同,P{Y<=y(x)}=P{X<=x}P\{ Y<=y(x)\}=P\{ X <= x\}P{Y<=y(x)}=P{X<=x}
因此Py(Y)=Px(X)P_y(Y) = P_x(X)Py(Y)=Px(X)
两边做一下微分即可得:p(y)dy/dx=p(x)p(y)dy/dx =p(x)p(y)dy/dx=p(x)
那么如果y和x都是多维的情况,很容易就可以得到p(y)Jy(x)=p(x)p(y)J_y(x)=p(x)p(y)Jy(x)=p(x),Jy(x)J_y(x)Jy(x)是yyy关于xxx的雅克比行列式。
具体的例子:
1.圆面上进行均匀采样。
圆面上的任何一点可以由直角坐标系下的(x,y)(x,y)(x,y)表达,也可以由极坐标系下的(r,θ)(r,\theta)(r,θ)来表达,并且存在关系:x=rcosθ,y=rsinθx=rcos\theta,y=rsin\thetax=rcosθ,y=rsinθJ=∣cosθ−rsinθsinθrcosθ∣=rJ =\begin{vmatrix} cos\theta & -rsin\theta \\ sin\theta & rcos\theta \\ \end{vmatrix} =r J=∣∣∣∣cosθsinθ−rsinθrcosθ∣∣∣∣=r
因此可以得到关系rp(x,y)=p(r,θ)rp(x,y)=p(r,\theta)rp(x,y)=p(r,θ)
由于要求在圆面上进行均匀采样,也就是说每一点被采到的概率都应该相同,p(x,y)=1/πp(x,y)=1/\pip(x,y)=1/π,那么p(r,θ)=rπp(r,\theta)=\frac{r}{\pi}p(r,θ)=πr,进一步可以得到p(r)=∫02πrπdθ=2rp(r)=\int_{0}^{2\pi}\frac{r}{\pi}d\theta=2rp(r)=∫02ππrdθ=2r
由此p(θ∣r)=p(r,θ)/p(r)=12πp(\theta|r)=p(r,\theta)/p(r)=\frac{1}{2\pi}p(θ∣r)=p(r,θ)/p(r)=2π1
这个结果可以看出θ\thetaθ和rrr是互相独立的,因此可以分别获取两个随机数a,ba,ba,b,最终的采样结果为:r=a,θ=2πbr=\sqrt{a},\theta=2\pi br=a,θ=2πb
2.半球面上对立体角做均匀采样
立体角被定义为单位球面上的单位面积,于是dw=dA=sinθdθdϕdw=dA=sin\theta d\theta d\phidw=dA=sinθdθdϕ(dA为单位球上的微元面积),因此p(w)sinθ=p(θ,ϕ)p(w)sin\theta=p(\theta,\phi)p(w)sinθ=p(θ,ϕ)
而要求对立体角做均匀采样,于是p(w)=12πp(w)=\frac{1}{2\pi}p(w)=2π1
即p(θ,ϕ)=sinθ/2πp(\theta,\phi)=sin\theta/2\pip(θ,ϕ)=sinθ/2π
进一步p(θ)=∫02πsinθ/2πdϕ=sinθp(\theta)=\int_{0}^{2\pi}sin\theta/2\pi d \phi=sin\thetap(θ)=∫02πsinθ/2πdϕ=sinθ
于是p(ϕ∣θ)=12πp(\phi|\theta)=\frac{1}{2\pi}p(ϕ∣θ)=2π1
可取两个随机数a,ba,ba,b,这样可以得到ϕ\phiϕ和θ\thetaθ:ϕ=2πa,θ=cos−1b\phi = 2\pi a,\theta=cos^{-1}bϕ=2πa,θ=cos−1b
进一步代入直角坐标系可以得到x,y,zx,y,zx,y,z
3.半球面上对立体角做Cosine-Weighted采样
Cosine-Weighted采样指的是立体角方向与竖直方向夹角的余弦值越高,那么该立体角被采样得到的概率就越大的一种采样方式。
也就是说p(w)=cosθ⋅cp(w)=cos\theta·cp(w)=cosθ⋅c,其中ccc是一个常系数
由于对整个半球面做积分,得到值应该为1:∫H2c⋅cosθdw=1\int_{H^2}c·cos\theta dw=1∫H2c⋅cosθdw=1
代入计算可以得到c=1πc=\frac{1}{\pi}c=π1,直接使用2的推导可以得到p(θ,ϕ)=p(w)sinθ=sinθcosθπp(\theta,\phi)=p(w)sin\theta=\frac{sin\theta cos\theta}{\pi}p(θ,ϕ)=p(w)sinθ=πsinθcosθ
继续往后推导就可以得到具体采样的公式。
但是这里有一个更加简单的方法
如图所示,只需要现在圆面上进行一次采样得到黑色的点,然后把它往上投影到球面上即可。
下面来证明其正确性,也就是要证明通过这样的采样方式是符合p(θ,ϕ)=sinθcosθπp(\theta,\phi)=\frac{sin\theta cos\theta}{\pi}p(θ,ϕ)=πsinθcosθ的。
在二维球面上采样可以获得p(r,ϕ)=rπp(r,\phi)=\frac{r}{\pi}p(r,ϕ)=πr,不难发现r=sinθr=sin\thetar=sinθ,于是p(sinθ,ϕ)=rπp(sin\theta,\phi)=\frac{r}{\pi}p(sinθ,ϕ)=πr
考虑将p(sinθ,ϕ)p(sin\theta,\phi)p(sinθ,ϕ)变换至p(θ,ϕ)p(\theta,\phi)p(θ,ϕ),可得雅克比行列式J=∣cosθ001∣=cosθJ=\begin{vmatrix} cos\theta & 0 \\ 0 & 1 \\ \end{vmatrix}=cos\thetaJ=∣∣∣∣cosθ001∣∣∣∣=cosθ
因此p(θ,ϕ)=Jp(sinθ,ϕ)=sinθcosθπp(\theta,\phi)=Jp(\sin\theta,\phi)=\frac{sin\theta cos\theta}{\pi}p(θ,ϕ)=Jp(sinθ,ϕ)=πsinθcosθ
这说明这种方法采样得到的结果是符合Cosine-Weighted采样要求的。