{
  "schemaVersion": "0.11.0",
  "canonical": "https://www.pystone.net/notes/surface-reconstruction-algorithm-taxonomy/",
  "atlas": "https://www.pystone.net/?node=surface-reconstruction-algorithm-taxonomy#knowledge-atlas",
  "markdown": "https://www.pystone.net/notes/surface-reconstruction-algorithm-taxonomy.md",
  "context": "https://www.pystone.net/notes/surface-reconstruction-algorithm-taxonomy.context.json",
  "knowledgeVersion": "224c990773de.5fa8af6e39fa",
  "build": {
    "siteCommit": "224c990773de166d23a886306577dd90379529ce",
    "notesCommit": "5fa8af6e39fa3891d1b9b4832bfa6c4e0ecaaf0a",
    "builtAt": "1970-01-01T00:00:00.000Z",
    "version": "224c990773de.5fa8af6e39fa"
  },
  "id": "note:surface-reconstruction-algorithm-taxonomy",
  "slug": "surface-reconstruction-algorithm-taxonomy",
  "title": "Surface Reconstruction算法的分类及整理",
  "type": "note",
  "visibility": "public",
  "idStability": "rename-stable",
  "author": {
    "name": "Perrin Yong",
    "profile": "https://www.pystone.net/profile/"
  },
  "publisher": {
    "name": "Perrin Yong",
    "profile": "https://www.pystone.net/profile/"
  },
  "aliases": [],
  "summary": "Surface Reconstruction算法的分类及整理",
  "contentRole": "unspecified",
  "isMoc": false,
  "mocRecognition": "none",
  "generated": false,
  "attribution": "unspecified",
  "domain": "10-计算机、信息技术与工程",
  "tags": [],
  "mocs": [],
  "contentHash": "d26378bcd1bb63b715a780b7247506bab1db04c7be5b0b98025d1a822c7682fb",
  "assets": [],
  "headings": [
    {
      "depth": 1,
      "text": "Surface Reconstruction算法的分类及整理",
      "anchor": "surface-reconstruction算法的分类及整理",
      "citation": "https://www.pystone.net/notes/surface-reconstruction-algorithm-taxonomy/#surface-reconstruction%E7%AE%97%E6%B3%95%E7%9A%84%E5%88%86%E7%B1%BB%E5%8F%8A%E6%95%B4%E7%90%86"
    },
    {
      "depth": 2,
      "text": "三角剖分概念",
      "anchor": "三角剖分概念",
      "citation": "https://www.pystone.net/notes/surface-reconstruction-algorithm-taxonomy/#%E4%B8%89%E8%A7%92%E5%89%96%E5%88%86%E6%A6%82%E5%BF%B5"
    },
    {
      "depth": 2,
      "text": "三角剖分分类方法一：",
      "anchor": "三角剖分分类方法一",
      "citation": "https://www.pystone.net/notes/surface-reconstruction-algorithm-taxonomy/#%E4%B8%89%E8%A7%92%E5%89%96%E5%88%86%E5%88%86%E7%B1%BB%E6%96%B9%E6%B3%95%E4%B8%80"
    },
    {
      "depth": 2,
      "text": "显式方法",
      "anchor": "显式方法",
      "citation": "https://www.pystone.net/notes/surface-reconstruction-algorithm-taxonomy/#%E6%98%BE%E5%BC%8F%E6%96%B9%E6%B3%95"
    },
    {
      "depth": 3,
      "text": "参数曲面重建方法——非均匀有理B样条(NURBS)",
      "anchor": "参数曲面重建方法非均匀有理b样条nurbs",
      "citation": "https://www.pystone.net/notes/surface-reconstruction-algorithm-taxonomy/#%E5%8F%82%E6%95%B0%E6%9B%B2%E9%9D%A2%E9%87%8D%E5%BB%BA%E6%96%B9%E6%B3%95%E9%9D%9E%E5%9D%87%E5%8C%80%E6%9C%89%E7%90%86b%E6%A0%B7%E6%9D%A1nurbs"
    },
    {
      "depth": 3,
      "text": "通过Voronoi图和Delaunay三角剖分得到三角化的表面",
      "anchor": "通过voronoi图和delaunay三角剖分得到三角化的表面",
      "citation": "https://www.pystone.net/notes/surface-reconstruction-algorithm-taxonomy/#%E9%80%9A%E8%BF%87voronoi%E5%9B%BE%E5%92%8Cdelaunay%E4%B8%89%E8%A7%92%E5%89%96%E5%88%86%E5%BE%97%E5%88%B0%E4%B8%89%E8%A7%92%E5%8C%96%E7%9A%84%E8%A1%A8%E9%9D%A2"
    },
    {
      "depth": 4,
      "text": "Lawson Flip Algorithm",
      "anchor": "lawson-flip-algorithm",
      "citation": "https://www.pystone.net/notes/surface-reconstruction-algorithm-taxonomy/#lawson-flip-algorithm"
    },
    {
      "depth": 4,
      "text": "一种增量的德劳内三角剖分算法——逐点插入法",
      "anchor": "一种增量的德劳内三角剖分算法逐点插入法",
      "citation": "https://www.pystone.net/notes/surface-reconstruction-algorithm-taxonomy/#%E4%B8%80%E7%A7%8D%E5%A2%9E%E9%87%8F%E7%9A%84%E5%BE%B7%E5%8A%B3%E5%86%85%E4%B8%89%E8%A7%92%E5%89%96%E5%88%86%E7%AE%97%E6%B3%95%E9%80%90%E7%82%B9%E6%8F%92%E5%85%A5%E6%B3%95"
    },
    {
      "depth": 4,
      "text": "分割合并法",
      "anchor": "分割合并法",
      "citation": "https://www.pystone.net/notes/surface-reconstruction-algorithm-taxonomy/#%E5%88%86%E5%89%B2%E5%90%88%E5%B9%B6%E6%B3%95"
    },
    {
      "depth": 4,
      "text": "Bowyer-Waston",
      "anchor": "bowyer-waston",
      "citation": "https://www.pystone.net/notes/surface-reconstruction-algorithm-taxonomy/#bowyer-waston"
    },
    {
      "depth": 4,
      "text": "Power Crust",
      "anchor": "power-crust",
      "citation": "https://www.pystone.net/notes/surface-reconstruction-algorithm-taxonomy/#power-crust"
    },
    {
      "depth": 2,
      "text": "隐式曲面重建算法",
      "anchor": "隐式曲面重建算法",
      "citation": "https://www.pystone.net/notes/surface-reconstruction-algorithm-taxonomy/#%E9%9A%90%E5%BC%8F%E6%9B%B2%E9%9D%A2%E9%87%8D%E5%BB%BA%E7%AE%97%E6%B3%95"
    },
    {
      "depth": 3,
      "text": "符号距离场的构建",
      "anchor": "符号距离场的构建",
      "citation": "https://www.pystone.net/notes/surface-reconstruction-algorithm-taxonomy/#%E7%AC%A6%E5%8F%B7%E8%B7%9D%E7%A6%BB%E5%9C%BA%E7%9A%84%E6%9E%84%E5%BB%BA"
    },
    {
      "depth": 4,
      "text": "全局的方法",
      "anchor": "全局的方法",
      "citation": "https://www.pystone.net/notes/surface-reconstruction-algorithm-taxonomy/#%E5%85%A8%E5%B1%80%E7%9A%84%E6%96%B9%E6%B3%95"
    },
    {
      "depth": 4,
      "text": "局部的方法",
      "anchor": "局部的方法",
      "citation": "https://www.pystone.net/notes/surface-reconstruction-algorithm-taxonomy/#%E5%B1%80%E9%83%A8%E7%9A%84%E6%96%B9%E6%B3%95"
    },
    {
      "depth": 3,
      "text": "Marching Cube",
      "anchor": "marching-cube",
      "citation": "https://www.pystone.net/notes/surface-reconstruction-algorithm-taxonomy/#marching-cube"
    }
  ],
  "claims": [],
  "outgoing": [],
  "incoming": [
    {
      "id": "note:graphics-and-3d-reconstruction",
      "title": "图形学与三维重构",
      "url": "https://www.pystone.net/notes/graphics-and-3d-reconstruction/",
      "atlas": "https://www.pystone.net/?node=graphics-and-3d-reconstruction#knowledge-atlas",
      "label": "图形学与三维重构",
      "origin": "explicit",
      "humanReviewed": true,
      "context": "本层中的“Surface Reconstruction算法的分类及整理”导航项",
      "citation": "https://www.pystone.net/notes/graphics-and-3d-reconstruction/#%E6%9C%AC%E5%B1%82"
    }
  ],
  "contentMarkdown": "# Surface Reconstruction算法的分类及整理\n\n> 创建时间：2020/5/8 16:46\n\n曲面重构大致可以分为 **显式曲面重构** 和 **隐式曲面重构** 。\n\n显式曲面重构方法提出较早。显式方法需要先将点云参数化，然后再进行曲面重构，可以直接给出表面的精确位置。它一般不能用单个曲面来直接拟合点云，（比如 NURBS算法）需要先将点云分割成不同区域，然后分别拟合各自的曲面，最后将拟合的各曲面进行拼合得到完整曲面。\n常用的显式重建方法有基于 **参数曲面** 的表面重建、基于网格技术的点云表面重建（ **三角化表面** ）。典型的参数曲面重建方 法如非均匀有理B样条(NURBS)，另一种是计算几何中的方法， 通过Voronoi图和Delaunay三角剖分得到三角化的表面，得到的表面是 Delaunay三角剖分产生的三角面片的子集。\n\n而 **隐式重建法** 将曲面表示为求得的标量函数的等值点集。利用隐式函数得到逼近点云的等值曲面，相比显式曲面重构方法，隐式曲面重构更适用于重构复杂拓扑形状的曲面，且重构的曲面具有很好的封闭性和完整性。\n基于隐式函数的曲面重构方法可分为 **局部拟合方法** 和 **全局拟合方法** 。\n常见的隐式曲面构造方法包括三类：拟合法、插值法、神经网络法。\n\n而根据点云重建过程中 **曲面数学表示形式** 的不同，又可将表面重建方法分为 **基于参数曲面的表面重建** 、 **基于网格技术的点云表面重建** 和 **基于隐式函数的表面重建** 方法。\n\n## 三角剖分概念\n\n角剖分的目标是使散乱的点云数据点在空间连成一个最优或者较优的三角网格\n\n## 三角剖分分类方法一：\n\n三角剖分和三角网格逼近两大类\n三角剖分指的是将三维空间中任意分布的散乱的点云数据点用直线段连接起来，形成在空间既不重合也没有空隙的近邻的四面体集\n散乱数据点的三角剖分，又分为两大类\n\n  * 对待造型的点云数据按照原始数据以某种方式投影域的三角剖分\n\n  * 在原始点云数据空间内直接进行三角剖分\n\n分为很多种:\nＡＢＮ法\n分而治之法:ＭａｒｃｈｉｎｇＣｕｂｅｓ\n迭代法\nＰＬＣ法\nＤｅｌａｕｎａｙ法: Ｂｏｗｙｅ法、ＣＬＬＬａｗｓｏｎ法\n\n## 显式方法\n\n### 参数曲面重建方法——非均匀有理B样条(NURBS)\n\n优点：其重建得到的曲面光滑且可以处理非均匀数据\n局限性：参数曲面法需要将数据参数化，然而对于散乱点集参数化是非常困难的，也不适合处理于含有噪声的数据\n\n### 通过Voronoi图和Delaunay三角剖分得到三角化的表面\n\n得到的表面是Delaunay三角剖分产生的三角面片的子集\n\n>   * EDELSBRUNNER 和MUCKE在提出了基于α − shape的重建方法，然而此方法不适合处理非均匀数据，有时不存在合适的α 既可以填补空洞同时又不损失局部细节\n>\n>     * BERNARDINI在α − shape的基础上改进了算法，提出了一种不必计算点集的Voronoi图即可实现了大规模点集的重建新方法。\n>\n>     * BOISSONAT通过标记Delaunay四面体为外部和内部从而得到重建表面\n>\n>     * AMENTA等在BOISSONNAT算法基础上进行改进，提出了具有理论保证的Power Crust算法利用中心轴变化方法，以Voronoi得到物体近似中心轴，然后通过标记算法得到重建表面。\n>\n>\n\n#### Lawson Flip Algorithm\n\n#### 一种增量的德劳内三角剖分算法——逐点插入法\n\n#### 分割合并法\n\n#### Bowyer-Waston\n\n#### Power Crust\n\n## 隐式曲面重建算法\n\n隐式重建法将曲面表示为求得的标量函数的等值点集\n1\\. 用点集在矩形栅格上定义有符号距离场函数，然后以距离场函数的零水平集作为待求解的隐式表面\n2\\. 通过组合基函数例如blobs形成一标量函数，使点集通过或接近标量函数的等值面，此等值面即是所求的隐式表面。\n此种方法的特点是重建是全局进行的，对于大规模的点集，需要求解巨大的线性系统，计算复杂度巨大，一个数据点的变动会导致全局系数的变化。\n\nWENDLAND利用局部作用的径向基函数使线性系统转化为稀疏系统，KOJEKINE进一步改进了此算法，将稀疏矩阵转化为对角窄带矩阵，使系统求解可以利用效率更高的迭代算法。然而由于作用半径需要全局选择，因此采用局部作用的径向基函数密度变化较大的非均匀数据。CARR在BEATSON提出的径向基函数快速计算法基础上提出了快速多极法，并结合贪婪算法对点云数据进行压缩，实现了大规模点云数据的表面重建，然而需要在每个径向基函数上进行远场扩展，实施起来异常复杂。\nOHTAKE使用紧支撑径向基函数采用多等级法实现了大规模点集的表面重建，但并不适合处理含有噪声的数据，同时由于采用了局部作用的径向基函数也限制了处理点集的数量。OHTAKE还提出了MPU重建算法,利用单元分解原理，现在局部用二次函数逼近表面，然后通过加权和得到重建表面，这种算法不仅可以处理大规模点集，同时还能保持细节特征。\n\n### 符号距离场的构建\n\n#### 全局的方法\n\n#### 局部的方法\n\n### Marching Cube\n"
}
