基于滤波的算法

拉普拉斯网格平滑算法

可 以 认 为 定 义 在 顶 点 上 的 信 息 是 一 个 信 号 流 f ( x , t ) , 这 个 信 号 会 随 时 间 扩 散 可以认为定义在顶点上的信息是一个信号流f(x,t), \\这个信号会随时间扩散 可以认为定义在顶点上的信息是一个信号流f(x,t),这个信号会随时间扩散

扩 散 方 程 为 ∂ f ( x , t ) ∂ t = λ Δ f ( x , t ) 扩散方程为\frac {∂f(x,t)}{∂t}=\lambda \Delta f(x,t) 扩散方程为∂t∂f(x,t)​=λΔf(x,t)

应 用 到 网 格 上 定 义 f ( t ) = ( f ( v 1 , t ) , . . . , f ( v n , t ) ) T 应用到网格上定义f(t)=(f(v_1,t),...,f(v_n,t))^T 应用到网格上定义f(t)=(f(v1​,t),...,f(vn​,t))T

每 个 顶 有 独 立 的 扩 散 方 程 ∂ f ( v i , t ) ∂ t = λ Δ f ( x i , t ) , Δ f ( x i , t ) 是 拉 普 拉 斯 算 子 每个顶有独立的扩散方程 \frac {∂f(v_i,t)}{\partial t}=\lambda \Delta f(x_i,t),\\ \Delta f(x_i,t)是拉普拉斯算子 每个顶有独立的扩散方程∂t∂f(vi​,t)​=λΔf(xi​,t),Δf(xi​,t)是拉普拉斯算子

总 体 表 达 式 ∂ f ( t ) ∂ t = λ L f ( t ) , L 是 拉 普 拉 斯 矩 阵 总体表达式\frac {\partial f(t)}{\partial t}=\lambda Lf(t), L是拉普拉斯矩阵 总体表达式∂t∂f(t)​=λLf(t),L是拉普拉斯矩阵

利用上式可以使用迭代的方式去平滑网格

f ( t + h ) = f ( t ) + h ⋅ ∂ f ( t ) ∂ t = f ( t ) + h λ ⋅ L f ( t ) f(t+h) = f(t) +h\cdot \frac{\partial f(t)}{\partial t} = f(t)+h\lambda \cdot Lf(t) f(t+h)=f(t)+h⋅∂t∂f(t)​=f(t)+hλ⋅Lf(t)

x i = x i + h λ ⋅ Δ x i x_i = x_i+h\lambda \cdot \Delta x_i xi​=xi​+hλ⋅Δxi​

当 拉 普 拉 斯 里 的 w i j 取 c o t 拉 普 拉 斯 算 子 时 , Δ x = − 2 H n , H 是 平 均 曲 率 , n 是 法 向 当拉普拉斯里的w_{ij}取cot拉普拉斯算子时,\Delta x=-2Hn, \\ H是平均曲率,n是法向 当拉普拉斯里的wij​取cot拉普拉斯算子时,Δx=−2Hn,H是平均曲率,n是法向

当拉普拉斯算子为cot时,点会沿法向移动。
当拉普拉斯算子为uniform时,点会向边上的点靠近。

fairing

通过固定2端,定义中心高阶拉普拉斯算子为0,然后解出过渡区域。
阶次越高越光滑。

高斯函数滤波算法

高 斯 函 数 W ( x ) = e − x 2 2 σ 2 , σ 是 参 数 需 要 用 户 给 定 高斯函数W(x)=e^{-\frac {x^2}{2\sigma^2}}, \sigma 是参数需要用户给定 高斯函数W(x)=e−2σ2x2​,σ是参数需要用户给定

高斯滤波

I ( p ) = 1 K p ∑ q ∈ Ω ( p ) W s ( ∣ ∣ p − q ∣ ∣ ) ⋅ I ( q ) I(p) = \frac{1}{K_p} \displaystyle \sum_{q\in Ω(p)} W_s(||p-q||)\cdot I(q) I(p)=Kp​1​q∈Ω(p)∑​Ws​(∣∣p−q∣∣)⋅I(q)

双边滤波
I ( p ) = 1 K p ∑ q ∈ Ω ( p ) W s ( ∣ ∣ p − q ∣ ∣ ) W r ( ∣ ∣ I ( p ) − I ( q ) ) ∣ ∣ ) ⋅ I ( q ) I(p) = \frac{1}{K_p} \displaystyle \sum_{q\in Ω(p)} W_s(||p-q||)W_r(||I(p)-I(q))||)\cdot I(q) I(p)=Kp​1​q∈Ω(p)∑​Ws​(∣∣p−q∣∣)Wr​(∣∣I(p)−I(q))∣∣)⋅I(q)

p可以是顶点坐标,法向等,具体效果不一样。
效果比较好的是先确定法向,然后根据法向去恢复顶点。

I§ 是信号,可以是法向,拉普拉斯算子,切平面与周围点高度差。

基于三角面法向的双边滤波网格平滑算法实现

基于优化的算法

假设模型中存在一些平的区域(flat region)。
最终希望把平的区域最大化。

L0 算法

一个区域平,说明梯度是0。

E = ∣ c − c ∗ ∣ 2 + ∣ Δ c ∣ 0 E = |c-c^*|^2+|\Delta c |_0 E=∣c−c∗∣2+∣Δc∣0​

c 是 输 出 顶 点 c ∗ 是 输 入 顶 点 c是输出顶点\\c^*是输入顶点 c是输出顶点c∗是输入顶点
Δ c 是 梯 度 ∣ Δ c ∣ 0 是 梯 度 的 0 模 \Delta c 是梯度\\ |\Delta c |_0 是梯度的0模 Δc是梯度∣Δc∣0​是梯度的0模

去优化这个方程,希望大部分区域的梯度为0。
以述方程不好优化,引入变量。

E = ∣ c − c ∗ ∣ 2 + β ∣ Δ c − δ ∣ 2 + λ ∣ δ ∣ 0 E = |c-c^*|^2+\beta |\Delta c-\delta |^2+\lambda |\delta|_0 E=∣c−c∗∣2+β∣Δc−δ∣2+λ∣δ∣0​

优 化 过 程 中 β 要 不 断 增 大 , 当 β 比 较 大 时 , 就 像 是 优 化 δ 优化过程中\beta要不断增大,当\beta 比较大时,就像是优化\delta 优化过程中β要不断增大,当β比较大时,就像是优化δ

可以采用交替迭代法优化上述能量。

当 给 定 c 时 , 去 优 化 β ∣ Δ c − δ ∣ 2 + λ ∣ δ ∣ 0 当给定c时,去优化\beta |\Delta c-\delta |^2+\lambda |\delta|_0 当给定c时,去优化β∣Δc−δ∣2+λ∣δ∣0​

当 给 定 δ 时 , 去 优 化 ∣ c − c ∗ ∣ 2 + β ∣ Δ c − δ ∣ 2 当给定\delta时,去优化|c-c^*|^2+\beta |\Delta c-\delta |^2 当给定δ时,去优化∣c−c∗∣2+β∣Δc−δ∣2

第二个是二值优化问题,可以使用最小二乘解决。

第一个是有解析解。

δ i = { 0 , i f β ( Δ c i ) 2 ≤ λ Δ c i , o t h e r w i s e \delta_i = \left\{\begin{array}{l}0,if \beta(\Delta c_i)^2\leq\lambda\\\Delta c_i, otherwise\end{array}\right. δi​={0,ifβ(Δci​)2≤λΔci​,otherwise​

网格应用

可以让c当成顶点坐标,也可以当法向。
使用cot拉普拉斯算子,可以满足平面时值为0。

使用边的拉普拉斯算子。

基于面积的拉普拉斯算子。

基于法向的优化

基于数据驱动的算法

在滤波算法中有很多参数要确定。
可以设定一个函数F帮助我们先出最优的法向。
具体输入就是不同参数产生出来的高斯滤波结果。
可以使用多组参数进行训练,进行k-means分类,让法向的计算由大数据来筛选。

训练集获取:先找一个好的三角网格,然后对网格加噪,然后对每个面进行高斯滤波操作,以这个作为输入,以原来的法向作为输出进行训练。

网格平滑基础算法总结相关推荐

  1. VTK修炼之道49:图形基本操作进阶_网格平滑(点云的曲面重建技术)

    1.网格平滑 现代扫描技术的发展使得获取点云数据不再困难,通过曲线重建技术可以获取表面网格来表示各种复杂的实体.但是点云数据中往往存在噪声,这样得到的重建网格通常都需要进行平滑处理. 拉普拉斯平滑是一 ...

  2. 图形处理之网格平滑vtkSmoothPolyDataFilter

    网格平滑 现代扫描技术的发展使得获取点云数据不再困难,通过曲面重建技术可以获取表面网格来表示各种复杂的实体.但是点云数据中往往存在噪声,这样得到的重建网格通常都需要进行平滑处理.网格平滑是一种调整数据 ...

  3. 两个卡方分布之和_推荐基础算法之矩阵分解PFM

    推荐基础算法之矩阵分解PFM PFM被称为概率因子模型(Probabilistic Factor Model)或泊松因子模型(Poission factor model).PFM本质上和概率矩阵分解( ...

  4. EXPMA指标基础算法以及计算公式

    参考:ecpma指数-百度百科 指标概述 EXPMA指标简称EMA,中文名字:指数平均数指标或指数平滑移动平均线,一种趋向类指标,从统计学的观点来看,只有把移动平均线(MA)绘制在价格时间跨度的中点, ...

  5. 基础算法整理(1)——递归与递推

    程序调用自身的编程技巧称为递归( recursion).递归做为一种算法在程序设计语言中广泛应用. 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一 ...

  6. 暑期集训2:ACM基础算法 练习题G:POJ - 1298

    2018学校暑期集训第二天--ACM基础算法 练习题G  --  POJ - 1298 The Hardest Problem Ever Julius Caesar lived in a time o ...

  7. 暑期集训2:ACM基础算法 练习题C:CF-1008A

    2018学校暑期集训第二天--ACM基础算法 练习题A  --   CodeForces - 1008A Romaji Vitya has just started learning Berlanes ...

  8. 暑期集训2:ACM基础算法 练习题B:CF-1008B

    2018学校暑期集训第二天--ACM基础算法 练习题B  --   CodeForces - 1008B Turn the Rectangles There are nn rectangles in ...

  9. 暑期集训2:ACM基础算法 练习题A:CF-1008C

    2018学校暑期集训第二天--ACM基础算法 练习题A  --  CodeForces - 1008C Reorder the Array You are given an array of inte ...

最新文章

  1. More than one file was found with OS independent path 'META-INF/rxjava.properties
  2. java-web分层2-Bean和业务层
  3. 邮件服务器收件人数量限制,邮件服务器DBMail
  4. java注解教程 pdf_Java注解详解
  5. python 用selenium自动启动百度并搜索关键词
  6. 力扣题目——107. 二叉树的层序遍历 II
  7. java同步调用rabbitmq,使用RabbitMQ可以放慢同步发布/消耗速度
  8. 软件开发方法 | 软件开发过程 辨析
  9. 广东将5G基站专项规划纳入各地国土空间规划
  10. java添加文本框和标签_如何在column.expression中插入文本框或标签的值?
  11. ipv6无线传感器网络服务器,IPv6传感器网络的应用技术和功能实现分析
  12. excel合并两列内容_Excel 两列合并成一列,又一种快捷方法!
  13. 数据传输速率与带宽之间的关系
  14. 《三体》与Taylor展开式的无限遐想
  15. UE/蓝图 VR高级框架(AdvancedFrameworkVR4.1) 使用前的简单设置
  16. kaggle员工离职预测案例(3)
  17. 分享一款电脑使用的二维码/条码扫描生成软件--二维码识别精灵
  18. Office.Interop.Excel引用失败
  19. 巨富笔记:上者劳人,中者劳智,下者劳力
  20. 研究型论文_CICIDS2017 数据集中基于异常的入侵检测系统的机器学习基准测试(英文论文)

热门文章

  1. C语言结构体变量 指针以及对结构体成员的访问
  2. QRJDC搭建实现QQ扫码登录对接青龙对接傻妞
  3. Stetho调试神器使用
  4. 【STM32】获取STM32官方固件库
  5. 单片机IO口悬空,高阻态究竟是什么意思?
  6. 莫烦Python教程之Pandas教程
  7. Apache Jakarta 项目介绍
  8. python作者怎么读_python 读键盘
  9. Acwing 378.骑士放置(二分图的最大独立集)
  10. com.googlecode.genericdao