帮酷LOGO
0 0 评论
  • 显示原文与译文双语对照的内容
文章标签:SURF  poi  Poisson  
Poisson Surface Reconstruction

  • 源代码名称:PoissonRecon
  • 源代码网址:http://www.github.com/mkazhdan/PoissonRecon
  • PoissonRecon源代码文档
  • PoissonRecon源代码下载
  • Git URL:
    git://www.github.com/mkazhdan/PoissonRecon.git
  • Git Clone代码到本地:
    git clone http://www.github.com/mkazhdan/PoissonRecon
  • Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/mkazhdan/PoissonRecon
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
  • 基于的屏幕泊松曲面
    ( 平滑的有符号距离重构)
    版本 9.01

    链接可执行文件使用更改支持链接
    可执行文件
    ( 译): PoissonRecon --in <输入点> 这个字符串是文件的NAME,将从中读取点设置。
    文件扩展名为. ply,,文件应该为 PLY format属性 nx。ny和nz编码的属性所编码的位置的oriented层。
    文件扩展名是. bnpts, 文件,文件应该是一个二进制文件,由 6个 32位 浮点数组成: 点位置的x-,y-和z 坐标,后跟 x-。y-和z 坐标的正常点。 ( 不应指定有关定向点样本数量的信息。)
    否则,文件应该是一个ascii文件,其中包含 6个字符,空格分隔,数字: 点位置的x-,y-和z 坐标,跟随点的x-,y-和z 坐标的正常值。 ( 不应指定有关定向点样本数量的信息。)
    [--out <output triangle mesh> ] 这里字符串是要将三角形网格写入的文件的NAME。 文件以层的格式写入。 [--voxel <output voxel grid> ] 这里字符串是要将采样隐式函数写入其中的文件的NAME。 is二进制,与implicit采样分辨率对应的前 4字节,2 ^d与隐式函数的( 单精度精度) 浮点值对应的下 4个x 2 x。 [--degree <B-spline degree> ] 这里整数指定要用于定义有限元系统的b 样条曲线的程度。 更大的度支持高阶近似,但以更密集的系统矩阵( 在空间和时间上产生成本)。
    这里参数的默认值为 2. [--bType <boundary type> ] 这里整数指定有限元素的边界类型。 有效值为:
    • 1: 自由边界约束
    • 2: Dirichlet边界约束
    • 3: Neumann边界约束
    这里参数的默认值为 3 ( Neumann )。 [--depth <reconstruction depth> ] 这里整数是用于曲面重建的树的最大深度。 在depth上运行,对应于voxel网格resolution分辨率不大于 2 x 2 ^d ^d的体素网格。 注意,由于reconstructor适应八叉树的抽样密度,所以指定的重建深度只是上限。
    这里参数的默认值为 8. [--scale <scale factor> ] 这个浮点值指定用于重建的立方体直径与样本边界立方体直径之间的比率。
    默认值为 1.1. [--samplesPerNode <minimum number of samples> ] 这个浮点值指定应该在八叉树 node 中的最小样本点数,因为八叉树构造适用于抽样密度。 对于自由采样,可以使用范围 [1.0 - 5.0 ] 中的小值。 对于更为嘈杂的样本,可能需要在范围 [15.0 - 20.0 ] 中较大的值来提供平滑。噪声降低。重构和。
    默认值为 1.0. [--pointWeight <interpolation weight> ] 这个浮点值指定了在筛选的泊松方程的公式中给出点样本插值的重要性。
    方法可以将原始( 未屏蔽) 泊松重构的结果设置为 0.
    这里参数的默认值为 4. 启用这里标志的[--confidence] 将告诉reconstructor将法线的大小作为置信度使用。 未启用该标志时,所有法线均正常化,在重建前具有单位长度。 启用 [--nWeights] 标志告诉reconstructor使用法线的大小来调整插值权重。 当未启用该标志时,所有点的权重都相同。 [--iters <GS iters> ] 这个整数值指定在hiearchy的每个级别上执行的高斯Seidel松弛数。
    这里参数的默认值为 8. [--cgDepth <conjugate-gradients solver depth> ] 这里整数是用于求解线性系统的共轭梯度求解器的深度。 在这种深度下,高斯Seidel松弛将被使用。
    这里参数的默认值为 0. [--fullDepth <adaptive octree depth> ] 这个整数指定了超出八叉树深度的深度。 在粗深度,八叉树将完成,包含所有 2 ^d 2 ^d x 2 ^d节点。
    这里参数的默认值为 5. [--voxelDepth <voxel sampling depth> ] 这个整数是正则网格的深度,它的中隐式函数被采样。 在depth上运行,对应于voxel网格sampling分辨率为 2 ^d x ^d ^d。
    这里参数的默认值是--depth参数的值。 当输出到素素文件时,启用这里标志的[--primalVoxel] 将reconstructor的隐式函数示例在网格的角处,而不是单元格中心。 如果指定 [--color <pull factor> ],重建代码假定输入已经装备颜色,并将颜色值外推到重建网格的顶点。 浮点值指定较低颜色估计相对于较低颜色的相对重要性。 ( 实际上,我们发现 16个工作系数很好。) [--density] 启用这个标志告知reconstructor表面顶点的估计深度值。 [--linearFit] 启用这里标志有reconstructor使用线性插值来估计iso顶点的位置。 启用这里标志的[--polygonMesh] 将通知reconstructor输出多边形网格( 而不是三角立方体的结果)。 [--threads <number of processing threads> ] 这里整数指定重建算法应该并行化的线程数。
    这里参数的默认值等于执行机器上的( 虚拟) 处理器的数目。 启用这里标志的[--verbose] 更详细地描述了表面reconstructor各个组件的运行时间和内存使用情况。
    ( 译): SSDRecon --in <输入点> 这个字符串是文件的NAME,将从中读取点设置。
    文件扩展名为. ply,,文件应该为 PLY format属性 nx。ny和nz编码的属性所编码的位置的oriented层。
    文件扩展名是. bnpts, 文件,文件应该是一个二进制文件,由 6个 32位 浮点数组成: 点位置的x-,y-和z 坐标,后跟 x-。y-和z 坐标的正常点。 ( 不应指定有关定向点样本数量的信息。)
    否则,文件应该是一个ascii文件,其中包含 6个字符,空格分隔,数字: 点位置的x-,y-和z 坐标,跟随点的x-,y-和z 坐标的正常值。 ( 不应指定有关定向点样本数量的信息。)
    [--out <output triangle mesh> ] 这里字符串是要将三角形网格写入的文件的NAME。 文件以层的格式写入。 [--voxel <output voxel grid> ] 这里字符串是要将采样隐式函数写入其中的文件的NAME。 is二进制,与implicit采样分辨率对应的前 4字节,2 ^d与隐式函数的( 单精度精度) 浮点值对应的下 4个x 2 x。 [--degree <B-spline degree> ] 这里整数指定要用于定义有限元系统的b 样条曲线的程度。 更大的度支持高阶近似,但以更密集的系统矩阵( 在空间和时间上产生成本)。
    这里参数的默认值为 2. [--depth <reconstruction depth> ] 这里整数是用于曲面重建的树的最大深度。 在depth上运行,对应于voxel网格resolution分辨率不大于 2 x 2 ^d ^d的体素网格。 注意,由于reconstructor适应八叉树的抽样密度,所以指定的重建深度只是上限。
    这里参数的默认值为 8. [--scale <scale factor> ] 这个浮点值指定用于重建的立方体直径与样本边界立方体直径之间的比率。
    默认值为 1.1. [--samplesPerNode <minimum number of samples> ] 这个浮点值指定应该在八叉树 node 中的最小样本点数,因为八叉树构造适用于抽样密度。 对于自由采样,可以使用范围 [1.0 - 5.0 ] 中的小值。 对于更为嘈杂的样本,可能需要在范围 [15.0 - 20.0 ] 中较大的值来提供平滑。噪声降低。重构和。
    默认值为 1.0. 浮点浮点值指定指定的点的插值是在经过筛选的平滑符号距离重构的公式中给出的。
    这里参数的默认值为 4. [--gradientWeight <normal interpolation weight> ] 浮点值指定指定的点法线的插值在经过筛选的平滑符号距离重构的公式中给出的重要性。
    这里参数的默认值为 0.001. [--biLapWeight <bi-Laplacian weight weight> ] 这个浮点值指定了在屏蔽平滑签名距离重建公式中给出的of正则化的重要性。
    这里参数的默认值为 0.000 01. 启用这里标志的[--confidence] 将告诉reconstructor将法线的大小作为置信度使用。 未启用该标志时,所有法线均正常化,在重建前具有单位长度。 启用 [--nWeights] 标志告诉reconstructor使用法线的大小来调整插值权重。 当未启用该标志时,所有点的权重都相同。 [--iters <GS iters> ] 这个整数值指定在hiearchy的每个级别上执行的高斯Seidel松弛数。
    这里参数的默认值为 8. [--cgDepth <conjugate-gradients solver depth> ] 这里整数是用于求解线性系统的共轭梯度求解器的深度。 在这种深度下,高斯Seidel松弛将被使用。
    这里参数的默认值为 0. [--fullDepth <adaptive octree depth> ] 这个整数指定了超出八叉树深度的深度。 在粗深度,八叉树将完成,包含所有 2 ^d 2 ^d x 2 ^d节点。
    这里参数的默认值为 5. [--voxelDepth <voxel sampling depth> ] 这个整数是正则网格的深度,它的中隐式函数被采样。 在depth上运行,对应于voxel网格sampling分辨率为 2 ^d x ^d ^d。
    这里参数的默认值是--depth参数的值。 当输出到素素文件时,启用这里标志的[--primalVoxel] 将reconstructor的隐式函数示例在网格的角处,而不是单元格中心。 如果指定 [--color <pull factor> ],重建代码假定输入已经装备颜色,并将颜色值外推到重建网格的顶点。 浮点值指定较低颜色估计相对于较低颜色的相对重要性。 ( 实际上,我们发现 16个工作系数很好。) [--density] 启用这个标志告知reconstructor表面顶点的估计深度值。 启用这里标志的[--nonLinearFit] 有reconstructor使用二次插值来估计iso顶点的位置。 启用这里标志的[--polygonMesh] 将通知reconstructor输出多边形网格( 而不是三角立方体的结果)。 [--threads <number of processing threads> ] 这里整数指定重建算法应该并行化的线程数。
    这里参数的默认值等于执行机器上的( 虚拟) 处理器的数目。 启用这里标志的[--verbose] 更详细地描述了表面reconstructor各个组件的运行时间和内存使用情况。
    这里字符串是用于读取三角形网格的文件的NAME。 文件以层格式读取,并假定顶点具有存储信号值的值字段。 ( 使用--density标志运行时,reconstructor将用网格顶点输出这里字段。) --trim <修剪值> 指定网格修剪值。 小于修剪值的网格的子集被丢弃。 [--out <output triangle mesh> ] 这里字符串是要将三角形网格写入的文件的NAME。 文件以层的格式写入。 [--smooth <smoothing iterations> ] 这里整数值在修剪前对信号执行的雨伞平滑操作数。
    默认值为 5. [--aRatio <island area ratio> ] 这里浮点值指定将断开连接的组件定义为"孤岛"的区域比例。 相对于网格总面积的连接组件小于这里值将合并到输出面上,以便从输出面中删除小断点。
    启用这里标志的默认值 0.001.[--polygonMesh] 告诉修剪器输出多边形网格( 而不是三角定位修剪结果)。
    使用情况
    为了测试目的,提供了三个点集:
    • 原始的泊松重建算法可以通过调用来调用: % PoissonRecon --in eagle.points.ply --out eagle.unscreened.ply --depth 10 --pointWeight 0 使用 --pointWeight 0参数禁用筛选。
    • 默认情况下,筛选处于启用状态,因此调用: % PoissonRecon --in eagle.points.ply --out eagle.screened.ply --depth 10 生成更精确地符合输入点位置的重构。
    • 通过调用,可以通过调用来重建从输入样本中推断出颜色值的鹰: % PoissonRecon --in eagle.points.ply --out eagle.screened.color.ply --depth 10 --color 16 使用 --color 16表示应该使用该颜色,以及更细色估计应该为preferenced的颜色估计的范围。
    • 最后,可以通过第一次调用来获得没有关闭孔的鹰的重建: % PoissonRecon --in eagle.points.ply --out eagle.screened.color.ply --depth 10 --color 16 --density 使用--density标志指示密度估计应与网格的顶点输出,然后调用: % SurfaceTrimmer --in eagle.screened.color.ply --out eagle.screened.color.trimmed.ply --trim 7 删除采样密度与深度小于 7的曲面的所有子集的步骤。
    屏蔽屏蔽筛选+ 色屏蔽+ 颜色+ 修剪
    • Bunny: 通过合并原始斯坦福兔子范围扫描的数据,获得了一组面向 362,271点样本的样本。 采样点的方向是使用单个范围扫描中的连接信息来估计的。
      可以通过调用曲面reconstructor来重建模型的曲面,如下所示: % PoissonRecon --in bunny.points.ply --out bunny.ply --depth 10
    • 在采样密度成比例的虚拟马模型的基础上,通过采样密度与曲率成正比,给出了一组非均匀分布的点。
      可以通过调用曲面reconstructor来重建模型的曲面,如下所示: % PoissonRecon --in horse.npts --out horse.ply --depth 10

    为了将二进制层格式转换为未完成的ASCII网格格式的Hugues格式,提供了一个Perl脚本
    例如重构后的小兔子可以转换为ASCII网格格式,如下所示:

    % ply2mesh.pl bunny.ply> bunny.m更改失败
    版本 3:
    • --samplesPerNode参数的实现被修改,使" 1"值更接近于每个叶 node的一个样本分布。
    • 代码已经修改为支持 MSVC 2010下的编译,并提供了相关的解决方案和项目文件。 ( 由于 Visual Studios 编译器中的Bug,这需要修改一些位移位运算符的实现。)
    • 版本 4:
    • 代码支持经过筛选的重建,通过--pointWeight参数指定了插值权重。
    • 代码已经实现为支持并行处理,用于--threads参数并行化的线程数量。
    • 输入点集现在也可以采用层格式,并且文件类型由扩展决定,所以标志现在已经过时。
    • 在深度比值--minDepth所指定的深度,八叉树不再适应,而是完整的,简化了延伸算子。
    • 版本 4.5:
    • 求解器的算法复杂度从对数线性减少到线性。
    • 版本 4.51:
    • 添加了智能指针,以确保内存访问处于边界。
    • 版本 5:
    • 将--density标志添加到reconstructor以输出iso顶点的估计深度。
    • 增加了SurfaceTrimmer可以执行文件,以支持远离输入样本的重建曲面的子集,从而允许生成non-water-tight表面。

    版本 5.1:

    • 八元错误修正解决八叉树终止中的错误邻域估计问题。

    版本 5.5插件:

    • 修改为支持深度 GREATER 比 14. ( 应立即达到 18或者 19.)
    • 通过删除积分表和值表来提高速度和内存性能。
    • 修正了 Bug 版本 5.5,使用内存,花费了更多的时间不做任何有用的事情。

    版本 5.6:

    • 添加--normalWeight标志以支持按比例的大小设置点权重的插值。

    版本 5.7:

    • 修改了约束的设置,用OpenMP原子替换了 Map/Reduce 实现以减少内存使用。
    • 固定 Bug 在多核机器上处理大点云时造成数值溢出。
    • 提高iso表面提取phse的效率。

    版本 5.71:

    • 在特定点添加函数GetSolutionValue以支持对隐式函数的求值。

    版本 6:

    • 修正了求解器使用高斯Seidel松弛代替finer的共轭梯度。
    • 规划求解的实现,以便只有矩阵的一个窗口子集在内存中,从而减少了规划阶段的内存使用。
    • 从拓扑中分离与八叉树节点关联的数据的存储。

    版本 6.1:

    • 重新排序iso表面提取,以便只有八叉树的一个窗子子集在内存中,从而降低了内存使用。

    版本 6.11:

    • 修正了当--pointWeight设置为0 时,在评估阶段创建崩溃的Bug。

    版本 6.12:

    • 删除了 OpenMP firstprivate指令,因为在Linux编译过程中出现了问题。

    版本 6.13:

    • 在 PointStream.inl 中添加了一个MemoryPointStream类以支持内存点云。
    • 修改 MultiGridOctreeData.h 中 Octree::SetTree的签名以获取指向PointStream类型的对象的指针,而不是文件名。

    版本 6.13插件:

    版本 7.0:

    • 添加了支持颜色外推的功能,如果在输入中存在的话。
    • 修改了 Bug,以示例贡献的方式进行缩放。

    版本 8.0:

    • 增加了对不同程度b 样条的支持。 ( 注意,因为b 样条程度是模板参数,所以只支持 1到 4 )。 如果需要更高的阶度,可以轻松地在 PoissonRecon.cpp. 内部的执行函数中添加附加模板参数,以减少编译时间。
    • 添加了--primalVoxel标志以支持使用原始采样提取体素网格。
    • 改变了体素采样的实现,这样计算现在是线性的,而不是记录线性的样本数。

    版本 9.0:

    • 添加了对自由边界条件的支持。
    • 扩展求解器以支持更一般的线性系统。 这样就可以使用相同的框架来实现和 Taubin ( 2011 ) 平滑签名的符号距离重构。
    • 改进了密度估计和输入表示的实现。 这可能会定义一个稍微大一点的系统。 它自身的运行时间/足迹稍有提高,但在输出复杂度小于输入时提供了一个更快的实现。

    版本 9.01:

    • 恢复了密度估计的行为,如版本 8.0.
    • 支持插件
      NSF支持的这个工作genersouly授予 #0746039 和 #1422325. 主页


    文章标签:poi  SURF  Poisson  

    Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语