移动最小二乘法(Moving Least Squares, MLS)的推导

移动最小二乘法(Moving Least Squares, MLS)的推导

移动最小二乘法(MLS)是一种用于平滑、重建和拟合离散点云数据的算法。其核心思想是使用加权的局部最小二乘拟合,将全局最小二乘拟合推广到局部区域,并通过移动窗口动态调整拟合位置。以下是详细的推导过程。


目标问题

给定一组离散点云 { ( x i , y i ) } i = 1 N \{(x_i, y_i)\}_{i=1}^N {(xi,yi)}i=1N,希望在点云附近通过多项式拟合一个平滑函数 f ( x ) f(x) f(x),使得拟合尽可能接近数据点,同时具有一定的平滑性。

拟合函数形式假设为:
f ( x ) = ∑ j = 0 m a j ϕ j ( x ) f(x) = \sum_{j=0}^m a_j \phi_j(x) f(x)=j=0∑majϕj(x)

其中:

  • ϕ j ( x ) \phi_j(x) ϕj(x) 是基函数,例如 { 1 , x , x 2 , ... , x m } \{1, x, x^2, \dots, x^m\} {1,x,x2,...,xm}。
  • a j a_j aj 是需要求解的系数。

加权局部拟合

  1. 局部权重定义
    为了强调拟合的局部性,定义一个加权函数 w ( x − x i ) w(x - x_i) w(x−xi),用来衡量点 x i x_i xi 对拟合中心 x x x 的贡献。通常选择的权重函数具有以下性质:
  • w ( x − x i ) ≥ 0 w(x - x_i) \geq 0 w(x−xi)≥0。

  • w ( x − x i ) w(x - x_i) w(x−xi) 随 ∣ x − x i ∣ |x - x_i| ∣x−xi∣ 增大而减小。

  • 常用的权重函数包括高斯函数:
    w ( x − x i ) = exp ⁡ ( − ( x − x i ) 2 h 2 ) w(x - x_i) = \exp\left(-\frac{(x - x_i)^2}{h^2}\right) w(x−xi)=exp(−h2(x−xi)2)

    其中 h h h 是带宽参数,控制影响范围。

  1. 局部最小二乘目标函数
    对每个拟合中心 x x x,拟合的目标是最小化加权误差平方和:

E ( a 0 , a 1 , ... , a m ) = ∑ i = 1 N w ( x − x i ) ( y i − ∑ j = 0 m a j ϕ j ( x i ) ) 2 E(a_0, a_1, \dots, a_m) = \sum_{i=1}^N w(x - x_i) \left( y_i - \sum_{j=0}^m a_j \phi_j(x_i) \right)^2 E(a0,a1,...,am)=i=1∑Nw(x−xi)(yi−j=0∑majϕj(xi))2


求解过程

1. 展开目标函数

将拟合函数代入目标函数,得到:
E ( a 0 , a 1 , ... , a m ) = ∑ i = 1 N w ( x − x i ) ( y i − a ⊤ ϕ ( x i ) ) 2 E(a_0, a_1, \dots, a_m) = \sum_{i=1}^N w(x - x_i) \left( y_i - \mathbf{a}^\top \boldsymbol{\phi}(x_i) \right)^2 E(a0,a1,...,am)=i=1∑Nw(x−xi)(yi−a⊤ϕ(xi))2

其中:

  • a = a 0 , a 1 , ... , a m ⊤ \mathbf{a} = a_0, a_1, \\dots, a_m^\top a=a0,a1,...,am⊤ 是系数向量。
  • ϕ ( x i ) = ϕ 0 ( x i ) , ϕ 1 ( x i ) , ... , ϕ m ( x i ) ⊤ \boldsymbol{\phi}(x_i) = \\phi_0(x_i), \\phi_1(x_i), \\dots, \\phi_m(x_i)^\top ϕ(xi)=ϕ0(xi),ϕ1(xi),...,ϕm(xi)⊤ 是基函数向量。
2. 矩阵形式

将加权误差平方和用矩阵表示:
E ( a ) = ( y − Φ a ) ⊤ W ( y − Φ a ) E(\mathbf{a}) = \left( \mathbf{y} - \mathbf{\Phi} \mathbf{a} \right)^\top \mathbf{W} \left( \mathbf{y} - \mathbf{\Phi} \mathbf{a} \right) E(a)=(y−Φa)⊤W(y−Φa)

其中:

  • y = y 1 , y 2 , ... , y N ⊤ \mathbf{y} = y_1, y_2, \\dots, y_N^\top y=y1,y2,...,yN⊤ 是数据点的输出值向量。

  • Φ \mathbf{\Phi} Φ 是设计矩阵:
    Φ = ϕ 0 ( x 1 ) ϕ 1 ( x 1 ) ⋯ ϕ m ( x 1 ) ϕ 0 ( x 2 ) ϕ 1 ( x 2 ) ⋯ ϕ m ( x 2 ) ⋮ ⋮ ⋱ ⋮ ϕ 0 ( x N ) ϕ 1 ( x N ) ⋯ ϕ m ( x N ) \mathbf{\Phi} = \begin{bmatrix} \phi_0(x_1) & \phi_1(x_1) & \cdots & \phi_m(x_1) \\ \phi_0(x_2) & \phi_1(x_2) & \cdots & \phi_m(x_2) \\ \vdots & \vdots & \ddots & \vdots \\ \phi_0(x_N) & \phi_1(x_N) & \cdots & \phi_m(x_N) \end{bmatrix} Φ= ϕ0(x1)ϕ0(x2)⋮ϕ0(xN)ϕ1(x1)ϕ1(x2)⋮ϕ1(xN)⋯⋯⋱⋯ϕm(x1)ϕm(x2)⋮ϕm(xN)

  • W \mathbf{W} W 是对角权重矩阵:
    W = w ( x − x 1 ) 0 ⋯ 0 0 w ( x − x 2 ) ⋯ 0 ⋮ ⋮ ⋱ ⋮ 0 0 ⋯ w ( x − x N ) \mathbf{W} = \begin{bmatrix} w(x - x_1) & 0 & \cdots & 0 \\ 0 & w(x - x_2) & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & w(x - x_N) \end{bmatrix} W= w(x−x1)0⋮00w(x−x2)⋮0⋯⋯⋱⋯00⋮w(x−xN)

3. 最小化误差

最小化 E ( a ) E(\mathbf{a}) E(a) 对 a \mathbf{a} a 的偏导数:
∂ E ( a ) ∂ a = − 2 Φ ⊤ W ( y − Φ a ) = 0 \frac{\partial E(\mathbf{a})}{\partial \mathbf{a}} = -2 \mathbf{\Phi}^\top \mathbf{W} (\mathbf{y} - \mathbf{\Phi} \mathbf{a}) = 0 ∂a∂E(a)=−2Φ⊤W(y−Φa)=0

解得:
a = ( Φ ⊤ W Φ ) − 1 Φ ⊤ W y \mathbf{a} = (\mathbf{\Phi}^\top \mathbf{W} \mathbf{\Phi})^{-1} \mathbf{\Phi}^\top \mathbf{W} \mathbf{y} a=(Φ⊤WΦ)−1Φ⊤Wy


最终函数表示

将求得的 a \mathbf{a} a 代入 f ( x ) f(x) f(x):
f ( x ) = ϕ ( x ) ⊤ a f(x) = \boldsymbol{\phi}(x)^\top \mathbf{a} f(x)=ϕ(x)⊤a

这里 ϕ ( x ) \boldsymbol{\phi}(x) ϕ(x) 是拟合点 x x x 的基函数值。


特点

  1. 局部性:通过权重函数,强调拟合点附近数据的贡献,忽略远处的点。
  2. 平滑性:通过窗口移动,生成光滑的拟合曲线或曲面。
  3. 灵活性:适用于任意维度数据。
  4. 计算复杂度 :每个拟合点需重新计算 a \mathbf{a} a,代价较高。
相关推荐
落羽的落羽17 小时前
【项目】JsonRpc框架——开发实现1(细节功能、字段定义、抽象层、具象层)
linux·服务器·网络·c++·人工智能·算法·机器学习
handler0117 小时前
【算法】并查集(普通/扩展/带权)模板与例题
数据结构·c++·笔记·算法·c·图论·查并集
keykey6.17 小时前
卷积神经网络(CNN):让AI学会“看“
开发语言·人工智能·深度学习·机器学习
qq74223498417 小时前
从“感知”到“决断”:测评百度伐谋产业决策智能体的端到端推理与行动机制
人工智能·算法·百度·大模型·运筹优化
升鲜宝供应链及收银系统源代码服务18 小时前
升鲜宝AI助手 E-R 图与操作说明书(三)---升鲜宝生鲜配送供应链管理系统源代码服务
大数据·人工智能·机器学习·生鲜供应链源代码·供应链源代码出售·生鲜配送源代码服务·门店连锁系统源代码
huohaiyu18 小时前
深入解析Java垃圾回收机制
java·开发语言·算法·gc
浮芷.18 小时前
鸿蒙PC端 TTS 并发调用问题详解:资源竞争与队列管理
算法·华为·开源·harmonyos·鸿蒙·鸿蒙系统
装不满的克莱因瓶18 小时前
掌握感知器的学习原理
人工智能·python·神经网络·算法·ai·卷积神经网络
Lsk_Smion18 小时前
力扣实训 _ [994].腐烂的橘子/图论
算法·leetcode·图论
轻微的风格艾丝凡19 小时前
两电平三相VSC整流模式从不控整流平滑切换至有源整流调试记录
算法·dsp·c2000