九种常见的二维插值方法

1、Bilinear interpolation双线性插值

双线性插值在数学上,双线性插值是线性插值的一种推广,用于在二维直线网格上插值两个变量(如x和y)的函数。

双线性插值首先在一个方向上使用线性插值,然后在另一个方向上使用线性插值。虽然每一步在采样值和位置上都是线性的,但是插值作为一个整体在采样位置上不是线性的而是二次的。

双线性插值是计算机视觉和图像处理中最基本的重采样技术之一,也称为双线性滤波或双线性纹理映射

2、Bicubic interpolation双三次插值

在数学中,双三次插值是三次插值(不要与三次样条插值混淆,请参阅三次样条)的一种扩展,用于在二维规则网格上插值数据点。该插值曲面比双线性插值或最近邻插值得到的相应曲面更为光滑。双三次插值可以使用拉格朗日多项式、三次样条或三次卷积算法来实现。

在图像处理中,当速度不是一个问题时,在图像重采样中通常选择双三次插值而不是双线性插值或最近邻插值。与仅考虑4个像素(2×2)的双线性插值不同,双三次插值考虑16个像素(4×4)。使用双三次插值重采样的图像更平滑,插值伪影更少。

3、Non-uniform rational B-spline(NURBS)非均匀有理B样条插值

非均匀有理基样条(NURBS)是计算机图形学中常用的一种基于基样条(B样条)表示曲线曲面的数学模型。它提供了极大的灵活性和精度来处理分析(由通用数学公式定义)和模型形状。它是一种曲线造型,与多边形造型或数字雕刻相对。NURBS曲线常用于计算机辅助设计(CAD)、制造(CAM)和工程(CAE)中。它们是众多行业标准的一部分,如IGES、STEP、ACIS和PHIGS。用于创建和编辑NURBS曲面的工具可以在各种三维图形和动画软件包中找到。
它们可以由计算机程序有效地处理,但也允许简单的人机交互。NURBS曲面是三维空间中两个参数映射到一个曲面上的函数。曲面的形状由控制点决定。在紧凑的形式中,NURBS曲面可以表示简单的几何形状。对于复杂的有机形状,T样条曲线和细分曲面更适合,因为与NURBS曲面相比,它们将控制点的数量减少了一半。

4、Inverse Distance Weighted反距离加权插值

反距离加权法是一种常用而简单的空间插值方法,IDW是基于“地理第一定律”的基本假设:即两个物体相似性随他们见的距离增大而减少。它以插值点与样本点间的距离为权重进行加权平均,离插值点越近的样本赋予的权重越大,此种方法简单易行,直观并且效率高,在已知点分布均匀的情况下插值效果好,插值结果在用于插值数据的最大值和最小值之间,但缺点是易受极值的影响。

5、样条插值法(Spline)

样条插值是使用一种数学函数,对一些限定的点值,通过控制估计方差,利用一些特征节点,用多项式拟合的方法来产生平滑的插值曲线。这种方法适用于逐渐变化的曲面,如温度、高程、地下水位高度或污染浓度等。该方法优点是易操作,计算量不大,缺点是难以对误差进行估计,采样点稀少时效果不好

样条插值法又分为:张力样条插值法(Spline with Tension),规则样条插值法(Regularized Spline)

薄板样条插值法 (Thin-Plate Splin)

6、Minimum Curvature最小曲率法

最小曲率法,广泛用于地球科学,试图在尽可能严格地尊重数据的同时,生成尽可能圆滑的曲面。

最小曲率法广泛用于地球科学。用最小曲率法生成的插值面类似于一个通过各个数据值的,具有最小弯曲量的长条形薄弹性片。最小曲率法,试图在尽可能严格地尊重数据的同时,生成尽可能圆滑的曲面。 使用最小曲率法时要涉及到两个参数:最大残差参数和最大循环次数参数来控制最小曲率的收敛标准。

对于离散点曲面插值问题,最小曲率法所采用的插值约束条件为:

E=int ( k_1^2 + k_2^2 ) rightarrow min

即要求对通过已知点集(xi,yi,zi),i=1,2,3,…,n的插值曲面上两主曲率k1,k2的平方和的积分值为最小。上述积分被成为曲面能(blending energy)或粗糙度(roughness)。由于曲面率具有不依赖于坐标空间系统的内在独立性,因而它是衡量曲面弯曲变化程度的最佳参数。符合上述准则的曲面将是通常所期望的“最光滑”的理想曲面。但事实上考虑到曲面曲率计算的复杂性,一般采用下式作为替代的约束条件:

即要求对曲面函数的二次偏导函数项的平方和在插值区域内的积分值为最小。对它的显式全局解即常见的样条插值(tin plate spline, TPS),可以写作:

7、Dscrete Smoothing Interpolation, DSI,离散光滑插值

DSI方法是法国南锡大学J.L.Mallet教授提出的,该方法依赖于网格结点的拓扑关系,不以空间坐标为参数,是一种不受维数限制的差值方法。DSI插值基本思想:欲在一个离散化数据点间建立相互联络的网络,如果网络上的已知节点值满足某种约束条件,则未知节点上的值可以通过解线性方程而得到。

DSI方法建立了计算网格结点上最优解的目标函数 ,其中为全局粗糙度函数, 为线性约束违反度函数。通过使用目标函数 达到最小,实现两方面的目标:

①使全局粗糙度函数 达到最小,从而尽可能使 在任意结点上的函数值逼近该点邻域内结点 值的均值,也就是使每个结点的 值尽可能平滑:

②将原始采样数据转化成定义在一些结点上的线性约束,使线性约束的违反度函数 达到最小,也就是说线性约束的符合程度达到最大,从而使相关结点的 值竟可能逼近采样数据。

DSI插值算法的数学描述:在有节点连接构成的网格Ω内部,已知网络节点集成为L,未知网络节点集为I(I+L=Ω);f(*)为Ω内的一个分段连续函数,函数f(*)在节点集合L上假设一直,插值算法的目的通过f(*)推测出在集合I上的内插值函数Φ(*)表达式。

显然,插值函数只能无穷逼近未知网格节点,为了选择一个“最优”表达式,DSI算法利用二次检验函数(全局平滑度函数)R(ψ)来检验一个可能的插值函数,二次检验函数如下式所示。R(ψ)=ψ*[W]* ψ 其中[W]是给定的正定对称矩阵,R(ψ)由多个局部平滑度函数在线性约束下确定,通过检验函数的约束,可以得到最优的插值函数表达式,进而求得内插值函数Φ(*)集,在实际应用中,可以结合专家经验来现则合适的插值函数。

8、克里金法(Kriging)

克里金方法最早是由法国地理学家Matheron和南非矿山工程师Krige提出的,用于矿山勘探。这种方法认为在空间连续变化的属性是非常不规则的,用简单的平滑函数进行模拟将出现误差,用随机表面函数给予描述会比较恰当。(克里金中包括几个因子:变化图模型、漂移类型和矿块效应)

克里金方法的关键在于权重系数的确定,该方法在插值过程中根据某种优化准则函数来动态地决定变量的数值,从而使内插函数处于最佳状态。克里金方法考虑了观测的点和被估计点的位置关系,并且也考虑各观测点之间的相对位置关系,在点稀少时插值效果比反距离权重等方法要好。所以利用克里金方法进行空间数据插值往往取得理想的效果。

在地质统计学中,根据应用目标的区别,发展了多种克里格方法如:简单克里格(Simple-Kriging)、

普通克里格(Ordinary-Kriging)、泛克里格(Universal-Kriging)、对数正态克里格(Log-Normal Kriging)、协同克里格(Cokriging)、拟协克里格(Pseudo-Kriging)、指示克里格(Indicator-Kriging)、

离析克里格(Disjunctive-Kriging)

在三维地质建模过程中,克里格被作为插值方法,能过最大的程度的保证地质界面与原始数据的吻合,且不依赖于网络。

9、趋势面光滑插值(Trend Surface)

作为一个非精确的插值方法,趋势面插值用多项式表示的线或面按最小二乘法原理对数据点进行拟合,并用于估算其它值的点,线和面多项式的选择取决于数据是一维还是二维。包括线性或一阶次趋势面的数学模拟模型、二次趋势面的数学模拟模型、三次趋势面的数学模拟模型(二维)。

趋势面分析的优点:它是一种极易理解的技术,至少在计算方法上易于理解。另外,大多数数据特征可以用低次多项式来模拟。

 

参考文献

https://www.docin.com/p-795224773.html

http://blog.sina.com.cn/s/blog_6316e2af0101l548.html

 

  • 9
    点赞
  • 90
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
08-07
本资源是一个包含10个STM32控制器中常见算法的综合资源。这些算法广泛应用于嵌入式系统、自动控制、信号处理等领域。在该资源中,我们提供了一系列基于STM32平台的算法实现,涵盖了从基本的数据处理到高级控制算法的多个方面。这些算法能够帮助开发人员在STM32控制器上快速实现复杂的功能,并优化系统性能。以下将详细描述这10个常见算法的特点和适用场景。 一、PID控制算法: PID控制算法是一种常用的反馈控制算法,能够在嵌入式系统中实现精确的控制。适用于电机控制、温度控制等场景。 二、滤波算法: 滤波算法用于消除信号中的噪声和干扰,提高信号质量。适用于传感器信号处理、数据采集等应用。 三、正弦波生成算法: 正弦波生成算法能够产生稳定的正弦波信号,用于驱动交流电机、音频合成等。 四、快速傅里叶变换(FFT): FFT算法用于高效地进行频域分析,适用于音频处理、振动分析等领域。 五、二维插值算法: 二维插值算法用于图像处理、传感器数据补偿等场景,实现平滑数据转换。 六、运动控制算法: 运动控制算法用于实现直线插补、圆弧插补等运动路径规划,适用于机器人控制、CNC等应用。 七、遗传算法: 遗传算法是一种优化算法,用于求解复杂问题的全局最优解,适用于参数优化、路径规划等。 八、无线通信协议: 无线通信协议如BLE、WiFi、LoRa等,用于实现STM32控制器与其他设备的通信。 九、数据压缩算法: 数据压缩算法用于将大量数据压缩存储,适用于嵌入式设备存储资源有限的场景。 十、人工智能算法: 人工智能算法如神经网络、深度学习等,用于图像识别、语音识别等智能应用。 适用场景: 本资源涵盖了STM32控制器应用中常见的算法,适用于多个领域,包括但不限于: 工业控制:如电机控制、传感器数据处理、运动规划等。 无线通信:使用不同的通信协议实现与其他设备的无线通信。 嵌入式系统:优化系统性能、节约存储资源、提高算法执行效率。 图像与信号处理:图像处理、音频处理、频域分析等应用。 总结: 该STM32常见算法资源为开发人员提供了丰富的工具,帮助他们在STM32控制器上快速实现各种复杂的功能。这些算法广泛应用于多个领域,为嵌入式系统提供了更多的功能和优化选择。通过使用这些算法,开发人员可以大大提高系统的性能,并实现更多创新的应用。希望这个资源能够为STM32开发者带来便利和灵感,推动嵌入式系统的发展。
Python中的流场二维样条插值方法可以通过SciPy库中的`scipy.interpolate.griddata`函数实现。该函数可以根据给定的离散数据点和对应的向量场值,计算出任意位置处的向量值。 首先,需要安装SciPy库。可以通过以下命令来安装: ``` pip install scipy ``` 然后,导入所需的库: ```python import numpy as np from scipy.interpolate import griddata ``` 准备好输入数据。首先,需要提供离散的数据点的坐标位置和对应的向量场值。可以使用二维数组来表示这些数据点: ```python points = np.array([[x1, y1], [x2, y2], ...]) values = np.array([[u1, v1], [u2, v2], ...]) ``` 其中,`[x1, y1]`是第一个数据点的坐标位置,`[u1, v1]`是对应的向量场值。将所有数据点的坐标和向量场值都组织在`points`和`values`中。 接下来,定义插值网格。这里可以使用`numpy.mgrid`函数生成一组均匀的网格点: ```python xi, yi = np.mgrid[x_min:x_max:100j, y_min:y_max:100j] ``` 其中,`x_min`和`x_max`是x坐标的范围,`y_min`和`y_max`是y坐标的范围,`100j`表示生成100个点。 然后,使用`griddata`函数进行样条插值,计算出任意位置处的向量值: ```python zi = griddata(points, values, (xi, yi), method='cubic') ``` 这里的`method='cubic'`表示使用三次样条插值方法。 最后,可以根据插值结果显示流场。可以使用`matplotlib.pyplot`库来绘制: ```python import matplotlib.pyplot as plt plt.figure() plt.quiver(xi, yi, zi[:, :, 0], zi[:, :, 1]) plt.show() ``` 这里的`zi[:,:,0]`和`zi[:,:,1]`分别表示x和y方向上的向量值。 以上就是通过Python实现流场二维样条插值方法的基本过程。根据具体的数据和需求,可以调整插值方法和参数,以获得更好的结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

oceanstonetree

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值