Date: 2018-11-08 22:48
Categories: 渲染

草稿,未完…

传输方程

对于测度方程,如果使用两个积分域,sensor使用面积,传输方程使用立体角,那么应该把两个域全部积分。如果后者使用面积测度积分,则可以包含sensor使用同一个面积测度积分。

MC

【TODO】

BDPT

【TODO】

Density Estimate

强度估计主要是用于根据有限的采样点估计在x处的pdf.包括:

  • 直方图:handbook
  • kernel方法:PBRTV3,P968
  • nn:PBRTV3,P969
  • 正交估计:handbook

DE的理论依据

对于漫反射辐射度传输:

考虑photon random walk,点x处的强度是:
χ(x)=S(x)+∫Sχ(y)T(x∣y)dAy\chi (x) = S(x)+\int_S \chi (y)T(x|y)dA_yχ(x)=S(x)+∫S​χ(y)T(x∣y)dAy​

代入S(x)=Be(x0)PeTS(x)=\frac{B_e(x_0)}{P_{eT}}S(x)=PeT​Be​(x0​)​:

χ(x)=Be(x)PeT+∫Sχ(y)K(y,x)ρ(x)dAy\chi(x)=\frac{B_e(x)}{P_{eT}}+\int_S \chi(y)K(y,x)\rho(x)dA_y χ(x)=PeT​Be​(x)​+∫S​χ(y)K(y,x)ρ(x)dAy​
→χ(x)=B(x)PeT\rightarrow \chi(x)=\frac{B(x)}{P_{eT}}→χ(x)=PeT​B(x)​

That is say, the number of particle hits per unit area expected near a surface lacation x is proportional to the radiosity B(x)B(x)B(x).

对于一般的传输还需要乘上particle权得到强度,因为强度正比于辐射度(所以光子图实际上存的是辐射度),也就是要LLL对面积和投射立体角积分. 他们之间的关系是:
L(p,ω)=d2Φn⋅ωidA(p)dωi≈ΔΦ(x,ωp)n⋅ωiΔAΔωiL(p,\omega)=\frac{d^2\Phi}{n \cdot \omega_i dA(p)d\omega_i} \approx \frac{\Delta \Phi(x,\omega_p)}{n\cdot\omega_i\Delta A \Delta \omega_i}L(p,ω)=n⋅ωi​dA(p)dωi​d2Φ​≈n⋅ωi​ΔAΔωi​ΔΦ(x,ωp​)​

把下列积分考虑为雷曼和代入上式到LiL_iLi​得到:

L(p,ωo)=∫Ωf(p.ωo,ωi)Li(p,ωi)∣cosθi∣dωi≈L_(p,\omega_o) = \int_{\Omega} f(p.\omega_o,\omega_i)L_i(p,\omega_i)|cos\theta_i|d\omega_i \approx L(​p,ωo​)=∫Ω​f(p.ωo​,ωi​)Li​(p,ωi​)∣cosθi​∣dωi​≈
∑f(p.ωo,ωi)Li(p,ωi)∣cosθi∣Δωi≈\sum f(p.\omega_o,\omega_i)L_i(p,\omega_i)|cos\theta_i|\Delta \omega_i \approx ∑f(p.ωo​,ωi​)Li​(p,ωi​)∣cosθi​∣Δωi​≈

∑p=1nfr(x,ωi,ωo)ΔΦ(x,ωp)ΔA\sum_{p=1}^nf_r(x,\omega_i,\omega_o)\frac{\Delta\Phi(x,\omega_p)}{\Delta A}p=1∑n​fr​(x,ωi​,ωo​)ΔAΔΦ(x,ωp​)​

PM系方法

要计算场景中某一点的出射辐射度,根据测度方程:
∫A∫S2We(p,ω)Li(p,ω)∣cos⁡θ∣dAdω\int_A \int_{S^2}W_e(p,\omega)L_i(p,\omega)|\cos\theta|dA d\omega∫A​∫S2​We​(p,ω)Li​(p,ω)∣cosθ∣dAdω
这里We=δ(p−p′)f(p,ωo,ω)W_e=\delta(p-p')f(p,\omega_o,\omega)We​=δ(p−p′)f(p,ωo​,ω)
这个式子使用下列估计量来计算:
1N∑j=1NβjWe(pj,ωj)\frac{1}{N}\sum_{j=1}^N \beta_j W_e(p_j,\omega_j)N1​j=1∑N​βj​We​(pj​,ωj​)
其中βj\beta_jβj​是photon带来的累计贡献。(PBRTV3 P964)
对于PM来说,这个方程意味着,必须在后续的RT中击中这一点,但是这一点的概率强度为0,所以永远都不可能被采样,故而此方法将无法计算,于是我们考虑将这个狄拉克分布更换为一个过滤函数,使用kernel方法根据周围一个范围内的photon来对采样到的点进行强度估计。但这里引入了偏.
强度估计做LT都是基于这个idea:
1N∑j=1NβjK(p,pj)f(p,ωo,ω)\frac{1}{N}\sum_{j=1}^N \beta_j K(p,p_j) f(p,\omega_o,\omega)N1​j=1∑N​βj​K(p,pj​)f(p,ωo​,ω)
我们将常数kernel函数C=Nπr2C=\frac{N}{\pi r^2}C=πr2N​[Robust Light Transport Simulation using Progressive Density Estimation P45]更换狄拉克函数,得到:
1N∑j=1NβjCf(p,ωo,ω)\frac{1}{N}\sum_{j=1}^N \beta_j C f(p,\omega_o,\omega)N1​j=1∑N​βj​Cf(p,ωo​,ω)
1πr2∑j=1Nβjf(p,ωo,ω)\frac{1}{\pi r^2}\sum_{j=1}^N \beta_j f(p,\omega_o,\omega)πr21​j=1∑N​βj​f(p,ωo​,ω)
用于PPM要做一些改进,参考:【Progressive Photon Mapping】

PM另外一种推导:
L(p,ω)=d2Φdot(n,ωi)dA(p)dωiL(p,\omega)=\frac{d^2\Phi}{dot(n,\omega_i) dA(p)d\omega_i}L(p,ω)=dot(n,ωi​)dA(p)dωi​d2Φ​
【RTE到LTE,ME作者PHD Thesis.】
在估计光子图上某一处p的出射的L时,就搜索位置p附近最近的n个光子(每个光子都携带一个微小的入射流),上式带入反射方程的LiL_iLi​,约分后得到
L(p,ω)=∫Ωxfr(x,ωi,ωo)d2Φ(x,ωi)dAiL(p,\omega)=\int_{\Omega_x}f_r(x,\omega_i,\omega_o)\frac{d^2\Phi(x,\omega_i)}{dA_i}L(p,ω)=∫Ωx​​fr​(x,ωi​,ωo​)dAi​d2Φ(x,ωi​)​
=∑p=1nfr(x,ωi,ωo)ΔΦ(x,ωp)ΔA=\sum_{p=1}^nf_r(x,\omega_i,\omega_o)\frac{\Delta\Phi(x,\omega_p)}{\Delta A}=p=1∑n​fr​(x,ωi​,ωo​)ΔAΔΦ(x,ωp​)​
let ΔA=πr2\Delta A=\pi r^2ΔA=πr2

VCM/UPS

VM

PM可以很好的处理焦散等现象,BDPT则

MCMC

Metropolis Sampling

一般要采样一个未知分布,比如缺参数,或者f只是一个黑盒(仅仅能计算出值),就可以采用Metropolis采样。

Metroplis的精髓在于能够逐步逼近目标pdf,但是Metropolis不是精确采样。他的样本值之间不是独立的,而是相关的,也就是一个马尔科夫链。

目标pdf主要作用在接收概率的计算中,使用新采样的pdf除以老采样的pdf,截断到1。值得注意的是,因为可以约分,采样并不需要真正的计算f,只需要与f成正比的函数即可,于是在mlt中我们使用path contribution作为cf,他正好正比于path space的path强度分布。

都希望变异步长更大,以便更快遍历整个采样空间。但是大的变异导致f本身的变化过大,新的f过小接受概率过小(如果新的概率变大接受概率是1,只有新概率变小才有可能使得变化过大的新概率影响接受概率(使它变得很小)),容易拒绝,将会增大方差。变化太小则导致原地采样,也会增大方差。(一个实例PBRT P770上图)

主要变异方法:

  • 随机数加减
  • 变成新的随机数
  • 找一个与目标f的一部分相似的p,直接采样整个p称为新状态,注意此时新状态转移概率仅仅与新的x相关

初始化采样如果使用一个不符合f的采样(你要同时取得他的值和pdf)将会产生start-up bias增大Error,处理这个有几种方法:

  • 使用预热期,移除预热期的采样,缺点是不知道预热期长度,效率不高
  • 随便采样一个pdf : p0p_0p0​,得到一个weight(w=f(x0)p0(x0)w = \frac{f(x_0)}{p_0(x_0)}w=p0​(x0​)f(x0​)​),为了防止这个东西是0,可以多求几个取平均值,然后在之后大的采样上都乘以这个平均的weight
    【to detail:On the start-up bais Problem of metropolis sampling】

Error = Bias^2 + Variance + Noise
Error反映的是整个模型的准确度,Bias反映的是模型在样本上的输出与真实值之间的误差,即模型本身的精准度,Variance反映的是模型每一次输出结果与模型输出期望之间的误差,即模型的稳定性。Noise是不可避免误差,任何模型都无法消除,他可能准守一个均值为0的正态分布。
如果我们通过X估计Y,则Y=f(X)+ϵY = f(X) + \epsilonY=f(X)+ϵ
Err(x)=E[(Y−f^(x))2]Err(x) = E\left[(Y-\hat{f}(x))^2\right]Err(x)=E[(Y−f^​(x))2]
将其展开:
Err(x)=(E[f^(x)]−f(x))2+E[(f^(x)−E[f^(x)])2]+σe2Err(x) = \left(E[\hat{f}(x)]-f(x)\right)^2 + E\left[\left(\hat{f}(x)-E[\hat{f}(x)]\right)^2\right] +\sigma_e^2Err(x)=(E[f^​(x)]−f(x))2+E[(f^​(x)−E[f^​(x)])2]+σe2​
E⁡[(y−f^)2]=E⁡[y2+f^2−2yf^]=E⁡[y2]+E⁡[f^2]−E⁡[2yf^]\operatorname{E}\big[(y - \hat{f})^2\big] = \operatorname{E}[y^2 + \hat{f}^2 - 2 y\hat{f}] = \operatorname{E}[y^2] + \operatorname{E}[\hat{f}^2] - \operatorname{E}[2y\hat{f}] E[(y−f^​)2]=E[y2+f^​2−2yf^​]=E[y2]+E[f^​2]−E[2yf^​]
=Var⁡[y]+E⁡[y]2+Var⁡[f^]+E⁡[f^]2−2fE⁡[f^]= \operatorname{Var}[y] + \operatorname{E}[y]^2 + \operatorname{Var}[\hat{f}] + \operatorname{E}[\hat{f}]^2 - 2f\operatorname{E}[\hat{f}] =Var[y]+E[y]2+Var[f^​]+E[f^​]2−2fE[f^​]
=Var⁡[y]+Var⁡[f^]+(f2−2fE⁡[f^]+E⁡[f^]2)= \operatorname{Var}[y] + \operatorname{Var}[\hat{f}] + (f^2 - 2f\operatorname{E}[\hat{f}] + \operatorname{E}[\hat{f}]^2) =Var[y]+Var[f^​]+(f2−2fE[f^​]+E[f^​]2)
=Var⁡[y]+Var⁡[f^]+(f−E⁡[f^])2= \operatorname{Var}[y] + \operatorname{Var}[\hat{f}] + (f - \operatorname{E}[\hat{f}])^2 =Var[y]+Var[f^​]+(f−E[f^​])2
=σ2+Var⁡[f^]+Bias⁡[f^]2= \sigma^2 + \operatorname{Var}[\hat{f}] + \operatorname{Bias}[\hat{f}]^2=σ2+Var[f^​]+Bias[f^​]2
https://en.wikipedia.org/wiki/Bias%E2%80%93variance_tradeoff
http://scott.fortmann-roe.com/docs/BiasVariance.html

在光线传输中,状态空间是path space,状态点就是每一个path,目标概率正比于path对最终图像的贡献。

当有一些表面是高光的时候,所有path的贡献都来自于遵循高光反射和高光折射的path,而这些path所在的空间维度比full path space更低(约束更多)。

要把MLT用到光线传输就要解决图像贡献函数(path space对第j个像素值的贡献):

Ij=∫Ωhj(X)L(X)dΩI_j = \int_{\Omega}h_j(X)L(X)d\OmegaIj​=∫Ω​hj​(X)L(X)dΩ

注意积分域是path space维度为无穷大,hjh_jhj​是像素过滤函数,只与X中关于光栅位置的那两个采样有关,对于大多数像素都是0,因为比如高斯函数下降的很快。另外要注意,即使采样点不在j像素的位置,对于j像素也是有贡献的,也就是说所有path无论在哪儿都对每个像素都有贡献。

两个主要问题:

  • 为每个像素解算一个单独的积分
  • 变波谱值函数为标量函数

解决第二个使用明度即可,一般地使用任何函数,只要L不为0是它也不为0,都能产生正确结果,只是效率问题而已。
意思就是对于下列和式:
Ij=1N∑i=1Nhj(Xi)L(Xi)p(Xi)I_j = \frac{1}{N}\sum_{i=1}^N{\frac{h_j(X_i)L(X_i)}{p(X_i)}}Ij​=N1​i=1∑N​p(Xi​)hj​(Xi​)L(Xi​)​
其中p(Xi)p(X_i)p(Xi​)可以任意选择函数,当对于标量贡献函数I(X)I(X)I(X)有下列关系时:
p(X)=I(X)∫ΩI(X)dΩp(X)=\frac{I(X)}{\int_{\Omega}I(X)d\Omega}p(X)=∫Ω​I(X)dΩI(X)​
I(X)I(X)I(X)可以任意选择,但是为了高效,必须选择标量贡献函数,也就是和贡献成正比。

将其带入原始和式,得:
Ij=1N∑i=1Nhj(Xi)L(Xi)I(Xi)(∫ΩI(X)dΩ)I_j = \frac{1}{N}\sum_{i=1}^N{\frac{h_j(X_i)L(X_i)}{I(X_i)}} (\int_\Omega I(X)d\Omega)Ij​=N1​i=1∑N​I(Xi​)hj​(Xi​)L(Xi​)​(∫Ω​I(X)dΩ)

后面那一坨积分可以使用一般的诸如纯PT,BDPT来计算.

给定一个

Path Space MLT

Primary Sample Space MLT

原始的MLT在path space采样,实现起来相对麻烦,而PSSMLT(Primary Sample Space MLT)在一个无穷维度边长为1的超cube中采样和变异,然后把采样好的随机数用于L函数直接返回贡献,多个L解算求均值就解算出了积分。他与传统的PT类采样方法的主要区别就在于,PT类采样的L函数是一个随机函数,在构造path的过程中不断采样随机数,而PSSMLT事先使用Metropolis采样在PSS采样出一组随机数,然后L就完全变成了一个没有随机性的函数,直接使用这一组随机数,构造Path,然后返回贡献。所有的变异摄动操作都在事先的PSS中来做(这样T函数就可以对称)。他主要有两种变异方案,大步长变异,也就是把所有采样点全部随机换掉成新的uniform采样(就想类pt方法采样一样,事先准备好的都是uniform采样,到了L中再重要性采样,但注意PSSMLT在L中还是要重采的)。小步长,用于探索贡献临近区域,将现有的PSS采样点摄动。值得注意的是,PSS方法原则上是可以用于任何基于mc积分框架的采样,而且它甚至可以用于任何mc方法。
PSSMLT方法一般实现于一个现成的BDPT上,每次迭代都会生成一个新的采样状态用于L函数,但是对于低贡献的path space区域他会花费很多时间,所以很低效。

Multiplexed MLT

MMLT不改变PSSMLT的外层PSS迭代,但是在解算BDPT的L函数的时候,不会无脑考虑所有的连接策略,而是根据一个额外的采样状态维度来选择一个单一的连接策略,然后返回他的贡献除以选择概率。这个额外的维度也和其他维度一样可以使用两种方法进行变异摄动。这样做就会使得采样器把主要精力放到那些产生MIS大weight的重要的连接方案上。

ERPT

ERPT的基本思路是:首先使用PT低采样创建一个path,然后对这个path做变异形成新的path,然后把原本那个mc path的能量贡献转移到新生成的path上去(或者说是加权)(这个叫做能量重分布,注意他不是重新计算贡献,而是转移贡献)。
**注意:原始MLT方法通过一个种子变异出所有的path,他没有MC方法Trace从像素平面出发的那一套东西而是采样的path在哪个像素位置就写哪个像素,因此分层性不好.**原始的MLT的马尔科夫链长度通常大于10610^6106,以便保证遍历性,而且大步变异往往会具有相当低的拒绝率。ERPT一个主要优点就是他可以利用MC方法降低方差的方法来作为马尔科夫链的种子(例如利用PT中的分层采样策略等)

镜面上的焦散,不是看不到,而是因为你看的方向不对.漫反射表面上,在任何方向都能看到焦散,但是类镜面上只能在那个反射范围内看见焦散.当然,焦散和普通反射的成因是一样的,是统一的,当使用纯镜面时,当把视线转到焦散反射方向,焦散会恰好与物体表面的亮部重合。

看下图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ShQx6r4G-1605236942768)(https://github.com/wubugui/FXXKTracer/raw/master/comp/1.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jAoZ4RQv-1605236942771)(https://github.com/wubugui/FXXKTracer/raw/master/comp/2.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xFD2P48C-1605236942773)(https://github.com/wubugui/FXXKTracer/raw/master/comp/3.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eK79LSuI-1605236942775)(https://github.com/wubugui/FXXKTracer/raw/master/comp/11.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YUoRO3LY-1605236942777)(https://github.com/wubugui/FXXKTracer/raw/master/comp/22.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PH4KoJ5s-1605236942778)(https://github.com/wubugui/FXXKTracer/raw/master/comp/33.png)]

其他方法

Guided 方法

基本方法是,保持原算法不变,使用全局信息来指导path采样。
L(p,ω)=∫Ωxfr(x,ωi,ωo)d2Φ(x,ωi)dAidωidωiL(p,\omega)=\int_{\Omega_x}f_r(x,\omega_i,\omega_o)\frac{d^2\Phi(x,\omega_i)}{dA_i d\omega_i}d\omega_iL(p,ω)=∫Ωx​​fr​(x,ωi​,ωo​)dAi​dωi​d2Φ(x,ωi​)​dωi​
对于near specular表面,其他方向的li本身贡献不大,所以无论li偏向于于哪个方向入射,都不会有什么大问题,仅仅根据brdf采样没什么问题,但是对于漫反射表面,如果li从一个非常狭窄的角度照射过来,那么现在仅采样bsdf显然是有问题的。根据上面的公式,我们可以考虑采样概况分布最好正比于fr(x,ωi,ωo)d2Φ(x,ωi)dAidωif_r(x,\omega_i,\omega_o)\frac{d^2\Phi(x,\omega_i)}{dA_i d\omega_i}fr​(x,ωi​,ωo​)dAi​dωi​d2Φ(x,ωi​)​.

所以我们其实可以是用光子图来指导path采样。
【Importance Driven Path Tracing using the Photon Map】在交点处使用一个二维table建立的辐射度分布using inflexible representations of the distributions. The targeting precision into important directions is therefore limited to the resolution of the grid, and the grid resolution is limited to the number of nearest neighbor photons.
【Importance Sampling with Hemispherical Particle Footprints】incur significant overhead。

Most importantly, these methods rely on a limited number of particles, which is usually insufficient to recover useful sampling distributions in highly occluded scenes.

困难光路

注意

注意,路径空间的path还有方向,方向不一样采样概率不一样,即使所有顶点都一模一样。
BDPT是这样一个操作,假如生成了S、T两个长度的子path,就使用for(int i=1;i<S;++i),for(int j=0;j<T;++j)连遍历地去顶点链接这些子path,每两个链接上的subpath,都形成新的full path,计算这条full path的contribution,然后使用面积测度的pdf加权ps∑ipi\frac{p_s}{\sum_i p_i}∑i​pi​ps​​,其中psp_sps​是当前full path的area pdf,pip_ipi​是每一条长度为i+j的full path的pdf,所以这个路径的contribution实际被缩放了,但是这些权是不可能求和到1的。因为MIS提出的求和到1是公式上的求和到1,实际采样的时候你不可能求和到1.这个情况在MIS直接光的时候更加简单,直接光的时候前后两个bsdf求出来的权显然并不能求和到1,但是从统计上讲,无穷多采样后,当前计算出来的灯光weight可能和另外一次采样中的bsdf weight求和到1,这就是MIS只具有统计意义!

问题

  • mitsuba渲染焦散球康纳尔盒,镜子里的焦散使用pt和sppm差别不大。
  • 困难光路是绝对不可采样还是难以采样?
  • MLT点光源不可采样?MLT除了效率低下之外还有哪些完全无法处理的path?
  • PM分析性解的近似公式

几个概念的理解

PathTracing和LightTracing的数值统一:
之前测量遇到个问题,path tracing方法测出来的radiance和light tracing测出来的radiance不同,而且结果相差在数量级上就非常巨大,看了一下,如果都不考虑next event也就是都不主动采样另外一边的emitter(sensor和light都是一种emitter),只考虑random walk,击中目标emitter才结算贡献,对于一定长度后没有击中的path作为0贡献处理,则,在发射第一个ray的时候,会采样emitter,得到一个位置和一个方向,这样会得到一个pdf,如果是均匀采样上半球和emitter面积,则就是要乘以一个SπS\piSπ,对于从light发射的ray,这个S可能十分巨大,而对于seneor这个值可能很小,这就直接造成了单个采样的contribution差距巨大,于是造成了正反两个方向最终值的不一致。但是我们考虑一下测量的理论依据,measurement equation:

M=∫LiWedμ=∫LeWidμM = \int_{}^{} L_i W_e d\mu = \int_{}^{} L_e W_i d\muM=∫​Li​We​dμ=∫​Le​Wi​dμ

对于最终测量的值,不能以单个sample path来决定,而是以大量的path求平均得到统计正确的值。这样一想,就发现,大的light虽然发射的path contribution很大,但是并不容易击中sensor,而sensor的contribution虽然小,但是却很容易击中light,于是对于相同的一个相当大的N这么多个path,则从sensor出发的path击中概率很高,求和为0的很少,而从light出发求和很多0,所以最终两边达到了数值上的平衡,所以正反方向的最终统计结果是一致的。
为了解算sensor区域S的measurement,我们都只考虑这个过程:
从sensor或者emitter发射光线,然后在环境中根据一定的分布random walk,当击中emitter或者sensor时解算贡献。
考虑measurement方程:

光线传输Review相关推荐

  1. 学习Scratchapixel--(6)光线模拟器

    反射 当光线和完美的镜面接触时,我们可以预知它返回的方向.这可以用反射定律计算出来.(公式简单,不赘述) 水虽然看上去像镜子,但是水和玻璃比起金属来说,只能算是很弱的镜面了. 透明度 当光线和透明物体 ...

  2. 照片你随便拍,「光影」我任意调,MIT谷歌新研究,器材党老法师看了会沉默...

    金磊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 在摄影这件事上,「光影」简直不要太重要. 毕竟大师们摄影作品,大多都是对「光」和「影」的拿捏. △来自俄罗斯摄影师George Mayer ...

  3. 墙面也能变镜子,只看影子就能还原视频,MIT新算法让摄像头无死角

    边策 十三 发自 凹非寺 量子位 报道 | 公众号 QbitAI 你在看电影,墙上的影子也在动.如果只让你看到这样一段视频,你能猜出来屏幕上播放的是什么吗? 最近MIT人工智能实验室(CSAIL)开发 ...

  4. 测试晶面间距软件_超逼真动图解析常用15大分析测试仪器,必收藏!SEM, 红外,紫外,核磁,质谱,TEM,ICP等...

    紫外吸收光谱 UV 分析原理:吸收紫外光能量,引起分子中电子能级的跃迁 谱图的表示方法:相对吸收光能量随吸收光波长的变化 提供的信息:吸收峰的位置.强度和形状,提供分子中不同电子结构的信息 物质分子吸 ...

  5. 核磁共振波谱分析_实验室各种仪器原理动图剖析,这么多分析仪器原理,1次搞清楚了...

    1.紫外分光光谱UV 分析原理:吸收紫外光能量,引起分子中电子能级的跃迁 谱图的表示方法:相对吸收光能量随吸收光波长的变化 提供的信息:吸收峰的位置.强度和形状,提供分子中不同电子结构的信息 物质分子 ...

  6. 双目立体视觉及正交偏振 3D 显示

    人眼的双目立体视觉成像人类最神秘最完美的身体构造之一,了解人眼的基本构造和视觉成像处理过程,对于 3D 显示技术具有极大的启发.本文主要对人眼的基本构造.视觉成像系统进行简单介绍,并对基于此立体视觉原 ...

  7. devc++鼠标变成了光标_游戏鼠标到底能不能提升你的实力?

    hupu id:Nagisa bilibili:大荒玫瑰MaLimeiya 前言: 很多人说,高手用辣鸡鼠标也能分分钟打爆你.就以CSGO这款游戏来说,如果让两个水平相同的玩家,一个用19块包邮的鼠标 ...

  8. (*长期更新)软考网络工程师学习笔记——Section 3 宽带接入技术和导引型传输媒体

    目录 一.宽带接入技术 (一)xDSL技术 1.xDSL技术的简介 2.常见的ADSL接入方式 (二)HFC混合光纤--同轴电缆 (三)FTTx技术 1.FTTx的定义 2.FTTx的分类 3.无源光 ...

  9. [译]基于GPU的体渲染高级技术之raycasting算法

    [译]基于GPU的体渲染高级技术之raycasting算法 PS:我决定翻译一下<Advanced Illumination Techniques for GPU-Based Volume Ra ...

最新文章

  1. 使用指针输入输出一维数组
  2. node.js koa 实现长轮询
  3. [leetcode]Divide Two Integers
  4. cad细等线体不显示_CAD打印文字不显示?很多人不知道这个知识点!
  5. sql中使用“where 1=1 and ....“ 到底影响效率吗,回答不会也永远不会
  6. java线程的优点_Java使用多线程的优势
  7. jvm--Garbage Collection
  8. java重新_Java程序重新配置教程
  9. 前端模拟数据(mock数据)的方法一:访问该项目的静态资源目录
  10. c++程序无法进入断点的原因
  11. Part2 Movielens介绍
  12. java 填充图片_java图片缩放实现图片填充整个屏幕
  13. 免费福利 Unity3D 项目资源分享链接(消消乐、斗地主、AR等)
  14. 案例-使用python实现基于opencv的形状识别
  15. Failed to load module “canberra-gtk-module“
  16. Java核心编程(22)
  17. 一个程序员的奋斗历程(偶像程序员)
  18. 核心层,汇聚层,接入层,交换机性能差别
  19. nz-select不能写在label标签里面
  20. springboot vue考试问卷源码

热门文章

  1. 【白板动画制作软件】万彩手影大师教程 | 添加声音
  2. 想做好网红品牌,一定要用好用户的左右脑!
  3. deeplinux 热点_deepin使用笔记,安装steam客户端
  4. 如何看待中科院自动化所的博士论文致谢?
  5. 奥林巴斯新款便携相机Stylus SH-1发布 具备五轴防抖哟
  6. vue-ssr的使用方法
  7. C语言编写生成无限长度的正/倒三角形
  8. 中国大学MOOC-陈越、何钦铭-数据结构-2019夏期末考试
  9. 杰里之双麦降噪原理篇
  10. 阮一峰php博客,在PHP语言中使用JSON – 阮一峰的网络日志