空间插值

Three.js(九)perlin 2d噪音的生成

痞子三分冷 提交于 2020-03-02 14:08:09
噪音的目的是为了增加随机性,使事物看起来更真实。但是简单的使用随机函数 并不 自然,因为随机函数产生的值与值之间并不连续。 要构造一个连续的2d噪音,简单的想法可以是: 在一个平面上所有整数点位置赋一个随机的值, 而整数网格中的点 则采用插值的方式得到值。 这里有两个问题, 一是整数格子上的值如何给, 二是插值的方式。 perlin噪声的解决方式是: 整数格子上的计算一个叫做gradient的东西,在2d空间这个gradient是2维度向量, 它的分布具有各向同性的特点,也就是每个整数格子点都有相同的概率得到某个方向的gradient。 实现的时候, gradient可以从 8个方向的向量里面获取, 具体取哪一个是需要一个随机的过程的。。 [1, 0], [1, 1], [0, 1], [-1, 1], [-1, 0], [-1, -1], [0, -1], [1, -1], 获取一个点周围4个整数定点的 gradient之后, 将gradient和 4个点到该点的 向量 的内积 作为4个点的值, 接着需要对这4个值进行插值。 简单的2维 线性插值的方法是: 首先 沿 x方向 将 n00 n10 x插值, 再将 n01 n11 x插值, 最后将结果 沿y方向插值。 def mix(u, v, a): return u*(1-a)+v*a 但是这样插值结果不光滑, 可以调整插值的系数

透视校正插值

别说谁变了你拦得住时间么 提交于 2020-02-07 21:09:10
在投影变换视口变换后,需要对投影到屏幕上的平面三角形顶点属性进行线性插值,例如颜色,纹理,深度等。但对于投影前在3D空间的三角形来说,这个插值并不是线性的。下面来推导一下这个插值。 假设屏幕空间的三角形的三个顶点分别为 \(v_0,v_1,v_2\) , \(v_p\) 是位于三角形一边上的点 \(v_0 + t(v_1 - v_0)\) 。 那么有: \[ x_p = x_0 + t(x_1 - x_0) \] 其中,$ 0 \leq t \leq 1$。对于投影前的三角形,根据投影变换则有: \[ \dfrac{x'}{x} = \dfrac{z'}{d} \] 其中, \(x',z'\) 为投影前三角形的坐标, \(d\) 为到投影平面的距离。代入可得: \[ \dfrac{x'_p}{z'_p} = \dfrac{x'_0}{z'_0} + t(\dfrac{x'_1}{z'_1} - \dfrac{x'_0}{z'_0}) \] 另外,我们已知 \(v'_0,v'_1,v'_p\) 三点共线,假设直线方程为 \(ax'+bz'=c\) ,代入化简可得到: \[ \dfrac{1}{z'_p} = \dfrac{1}{z'_0} + t(\dfrac{1}{z'_1} - \dfrac{1}{z'_0}) \] 可见,对于投影前在3D空间的三角形来说, \(z\)

普通克里金插值

冷暖自知 提交于 2020-01-15 00:43:30
最近因为项目需要,研究了下克里金插值算法。在地质学中,克里金插值算法是一种使用的空间属性估计技术,克里金插值说到底是个回归问题,且依据的因素只有两个位置之间的距离。 克里金插值算法又分为很多中,比如普通克里金插值,简单克里金插值等,不同的克里金插值算法只是假设条件不同。下面以普通克里金为例来说明其原理。 普通克里金插值算法的假设条件是:空间属性是均匀的,对于空间任意一点(x,y)都有同样的数学期望和方差。普通克里金插值的目的是对于空间一点(x,y)找到一组系数 ,估计其属性值为: , 为已知的属性值,在求解系数 需满足两个条件: 无偏性: 最优性: 参考: https://blog.csdn.net/sinat_23619409/article/details/79974990 ,易知,无偏性可以推出 ,最终问题转化为一个带约束条件的最优化问题: 最终,可以写成: 定义 为半方差函数,在地质学上,一般 ,所以,上面的等号左边的 都是已知的,因为属性值是已知的。所以逆也是可以求得的。只有能够求得右边的 ,那么系数 便可以求得,普通克里金插值任务也就完成了。 如何求 ?对所有已知属性的空间点,求两两的距离以及半方差函数值。用一个函数式模拟二者的关系,可以是多项式关系,可以是线性关系,可以是指数,对数关系。 然后用高斯牛顿迭代法,进行迭代,求出拟合系数。 用拟合的关系式,求出

透视校正插值(Perspective-Correct Interpolation)

时间秒杀一切 提交于 2020-01-06 04:33:52
在 3D 图形处理器绘制三角形时,每个像素处的属性信息(包括颜色、纹理坐标等)是对扫描线左右端点对应的顶点属性信息进行插值运算得到的。 如下图所示对投影面上相等的空间步长 L 与 R ,它们在三角形面上对应的步长会随着离摄像机的距离的增加而变长,即 L’>R’ 。因此对于处于 L 与 R 之间的那个像素点,虽然在投影面上其坐标处于 P1 与 P2 之间的 3/4 处,但是其在眼空间中的对应点并非处于 X1 与 X2 之间的 3/4 处,而顶点的属性信息却又都是在投影变换前的空间中指定的。 因此对像素属性信息的插值不能是简单的线性,尤其是纹理坐标在用线性插值时会出现明显的失真。那么应该怎么办呢?方法就是如下的“透视校正插值”。 可以证明,深度值 z 坐标的倒数恰好是按线性方式进行插值的:如上图,眼坐标系下端点坐标为 、 ,其在投影面上投影坐标为 、 , 如果有一个插值点 ,则其眼坐标系下的深度值关系为式(1): (1) 推导过程见《 3D 游戏与计算机图形学中的数学方法》 66 页,或英文版《 Mathematics for 3D Game Programming and Computer Graphics 》 Second Edition, pp118 。 在网格模型中顶点属性是与顶点的坐标值成线性关系,因此利用此特性对顶点属性如纹理坐 标进行插值: (2) 其中 由上述公式( 1

转Python SciPy库——拟合与插值

孤人 提交于 2019-12-28 17:00:46
1.最小二乘拟合 实例1 import numpy as np import matplotlib.pyplot as plt from scipy.optimize import leastsq plt.figure(figsize=(9,9)) x=np.linspace(0,10,1000) X = np.array([8.19, 2.72, 6.39, 8.71, 4.7, 2.66, 3.78]) Y = np.array([7.01, 2.78, 6.47, 6.71, 4.1, 4.23, 4.05]) #计算以p为参数的直线和原始数据之间的误差 def f(p): k, b = p return(Y-(k*X+b)) #leastsq使得f的输出数组的平方和最小,参数初始值为[1,0] r = leastsq(f, [1,0]) k, b = r[0] print("k=",k,"b=",b) plt.scatter(X,Y, s=100, alpha=1.0, marker='o',label=u'数据点') y=k*x+b ax = plt.gca() #gca获取轴这个对象 ax.set_xlabel(..., fontsize=20) ax.set_ylabel(..., fontsize=20) #设置坐标轴标签字体大小 plt.plot(x, y,

通过自适应卷积的视频帧插值——CGB

我的梦境 提交于 2019-12-03 04:36:27
论文链接:https://arxiv.org/abs/1703.07514 论文题目: Video Frame Interpolation via Adaptive Convolution (通过自适应卷积的视频帧插值) 发表时间: 2017 年 CVPR 作者及其背景: Simon Niklaus, Long Mai, Feng Liu (波特兰州立大学 Portland State University ) 1.提出问题    传统视频帧插值方法是两步走:运动估计和像素合成。运动估计一般使用光流法 optical flow ,光流法的难点在于遮挡,污渍和突然的光环境变化。基 于流的像素综合也不能很可靠地处理遮挡的问题。 2.解决办法     之前的插值是两步走的:运动估计 motion estimation 和像素合成 pixel synthesis 。文章提出了一种鲁棒的视频帧插值方法,该方法使用深度卷积 神经网络实现帧插值,而无需将其明确划分为单独的步骤。这个方法中用来生成插值帧 interpolated frame 的“像素合 成”法 pixel synthesis ,就是作用在 两个输入图像之间局部卷积 local convolution ( 也就是说,对两张输入图片进行像素级别的卷积,可以生成一张 插值图片 )。这个卷积核作者号称可以捕获两帧图片之间的局部运动

插值:用于生成空间分布图

我们两清 提交于 2019-11-30 16:13:34
1、反距离函数和样条函数都属于精确性插值,插值表面均通过采样点。在采样点微小邻域,两者的插值结果比较接近。 2、反距离函数和样条函数插值受采样点的密度影响较大。在采样点分布比较密集的区域,插值结果差异较小,在采样点分布比较稀疏的区域,插值的结果差异较大。 3、反距离权重是一个加权平均距离,一般需要大量的采样点 4、样条函数适合空间连续变化且光滑表面的生成。 来源: https://www.cnblogs.com/my-rw/p/11603483.html

[AI] 论文笔记 - CVPR2018 Super SloMo: High Quality Estimation of Multiple Intermediate Frames for Video Interpolation

自作多情 提交于 2019-11-28 13:25:41
写在前面 原始视频(30fps) 补帧后的视频(240fps)   本文是博主在做实验的过程中使用到的方法,刚好也做为了本科毕设的翻译文章,现在把它搬运到博客上来,因为觉得这篇文章的思路真的不错。   这篇文章的简要思路:整个网络由两个U-Net构成,第一个U-Net负责计算光流,第二个U-Net负责矫正光流(有点借鉴了残差的意思),从而对视频进行补帧。   参考资料: 原文: Super SloMo: High Quality Estimation of Multiple Intermediate Frames for Video Interpolation ( https://arxiv.org/abs/1712.00080 ) 代码: https://github.com/avinashpaliwal/Super-SloMo    转载请注明出处,谢谢。    PS:文章有些内容涉及到公式,不方便搬运,所以采用了图片的方式。 摘要   在给定两个连续帧的情况下,视频插值的目标是生成中间帧,形成时空相干的视频序列。大多数现有的视频插值方法都集中在单帧插值上,我们提出了一种端到端的卷积神经网络,用于任意多帧的视频插值,该网络中的运动解释和遮挡推理是联合建模的。我们首先使用U-Net结构来计算相邻输入图像之间的双向光流。然后,在每个时间步长上对这些光流进行线性拟合