点云的一致法线计算

2023-12-03

python 或 c++ 中是否有一个库能够以一致的方式估计点云的法线? 以一致的方式,我的意思是法线的方向在表面上全局保留。

例如,当我使用 python open3d 包时:

downpcd.estimate_normals(search_param=o3d.geometry.KDTreeSearchParamHybrid(
    radius=4, max_nn=300))

我得到的结果不一致,其中一些法线指向内部,而其余的则指向外部。

many thanksestimated normals (black lines indicate outside directed normals)


UPDATE: 好消息!

The 切面算法现已在 Open3D 中实现!
The 源代码文档.

你可以打电话pcd.orient_normals_consistent_tangent_plane(k=15).
And k是 knn 图参数。


原答案:

就像马克说的,如果你的点云来自多个深度图像,那么你可以调用open3d.geometry.orient_normals_towards_camera_location(pcd, camera_loc)在将它们连接在一起之前(假设您使用的是 python 版本Open3D).


但是,如果您没有该信息,您可以使用切面算法:

  1. 为您的点云构建 knn-graph。
    图形节点是点。如果一个点是另一个点的 k 最近邻,则两个点相连。
  2. Assign weights to the edges in the graph.
    The weight associated with edge (i, j) is computed as 1 - |ninj|
  3. 生成最小生成树结果图的。
  4. 以初始节点为树的根, 以深度优先顺序遍历树,为每个节点分配一个 与其父级的方向一致。

其实上面的算法来自于3.3节Hoppe1992年 SIGGRAPH纸从无组织点重建表面。算法也是开源.

据我所知,该算法不能保证完美的方向,但它应该足够好。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

点云的一致法线计算 的相关文章

  • OpenGL 的每个组件 alpha 通道?

    是否可以使用 OpenGL 对每个组件使用一个 alpha 通道 一个用于红色 一个用于绿色 一个用于蓝色 进行混合 如果没有 有哪些可能的解决方法 这不是直接支持的东西 不过 您自己实现起来相当容易 使用 3 通道 alpha 纹理渲染三
  • 颜色重新映射 - 使用 3D 网格匹配目标调色板?

    假设我有颜色 FOO 它以 RGB 格式存储 我需要重新着色 FOO 以便它与颜色列表中最接近的颜色匹配 即时执行此操作 我是否无法将每种颜色的 RGB 值视为 3D 网格上的点 r x g y b z 并计算点 FOO 与每个颜色点之间的
  • 具有行进立方体的隐式曲面上的 CSG 操作

    我用行进立方体渲染等值面 或者也许游行广场 https en wikipedia org wiki Marching squares因为这是二维的 我想做集合运算 比如集合差 交集和并集 我认为这很容易实现 只需在两个不同隐式曲面的两个顶点
  • 用圆形减去(遮盖掉?)路径

    我正在使用 Spark Path 在 Flex 中绘制一条路径 我想从这条路径中减去一个圆形 如下图所示 道路又黑又宽 有任何想法吗 我尝试使用 Shape 对象创建蒙版 但无法完全创建其中有圆孔的蒙版 找到了 不涉及口罩 我拿了Path并
  • 为什么我的 FPS 相机一劳永逸地滚动?

    如果我忽略四元数代数的肮脏细节 我想我理解了旋转和平移变换背后的数学 但仍然不明白我做错了什么 为什么我的相机一劳永逸地滚动 更具体地说 我应该如何从相机的方向 旋转矩阵 计算相机视图矩阵 我正在用 Python 编写一个简约的 3d 引擎
  • 测量字符串的像素宽度

    我需要在 Cocoa Touch 中测量字符串的像素宽度 谁能给我指出一个解释如何执行此操作的链接 在 iPhone 操作系统上略有不同 请查看NSString UIKit 添加参考 http developer apple com iph
  • 如何在ggplot2中使用希腊符号?

    我的类别需要用希腊字母命名 我在用ggplot2 并且它与数据配合得很好 不幸的是 我无法弄清楚如何将这些希腊符号放在 x 轴上 在刻度线处 并使它们出现在图例中 有什么办法可以做到吗 更新 我看了一下link https github c
  • PyQt - 如何检查 QDialog 是否可见?

    我有个问题 我有这个代码 balls Ball for i in range 1 10 因此 当我说 Ball 时 这将在 QDialog 上绘制一个球 然后当这完成后 我正在移动球QDialog无限循环中 我想说类似的话while QDi
  • 预乘 Alpha 合成

    我正在尝试实现预乘阿尔法混合 在本页 什么是颜色混合 https learn microsoft com en us previous versions windows xna bb976070 v xnagamestudio 41 它们确
  • 在球体边缘绘制点

    因此 来自 Flash 背景的我对一些简单的 2D 三角函数有很好的理解 在带有 I 圆的二维中 我知道使用给定角度和半径将项目放置在边缘上的数学 x cos a r y sin a r 现在 如果我在 3d 空间中有一个点 我知道球体的半
  • CSS3DObject 始终位于 WebGL Mesh 前面

    我正在混合CSS3D Renderer with WebGL Renderer to add HTML3D 空间中的元素WebGL场景 这CSS3DObject在前面WebGL网格即使WebGL Renderer具有较高的 z index
  • 在java中使用多个bufferedImage

    我正在 java 小程序中制作游戏 并且正在尝试优化我的代码以减少闪烁 我已经实现了双缓冲 因此我尝试使用另一个 BufferedImage 来存储不改变的游戏背景元素的图片 这是我的代码的相关部分 public class QuizApp
  • 更改 3D 图形颜色 (matplotlib)

    我使用以下代码在 matplotlib 中绘制了 3D 图形 Previously defines lists of data to plot fig plt figure ax fig add subplot 111 projection
  • Matlab:3D 堆积条形图

    我正在尝试创建一个 3D 堆积条形图 如这个问题所示 Matlab 中的 3D 堆叠条形图 https stackoverflow com questions 13156133 3d stacked bars in matlab 5D 然而
  • 如何仅剪切剪切平面的交集(而不是并集)?

    在 OpenGL JOGL 中 当使用多个剪切平面时 似乎会应用所有剪切平面的并集 我想要的是路口要应用的所有剪裁平面 这可能吗 请参阅下面的简化二维示例 Edit An example of clipping by vertex shad
  • 为什么这个 R ggplot2 代码会显示一个空白的显示设备?

    虽然 SO 通常不用于帮助解决错误 但这个显示了特别简单且特别烦人的行为 如果你是一个ggplot2用户 您可以在 10 秒或更短的时间内重现它 正如这个 GitHub 问题 ggplot gtable 创建空白显示 https githu
  • 是否有用于绘制图表的Python API(使用线条连接两个列表之间的相应值)[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 Given two lists which contain same elements of strin
  • 纹理的内部格式

    看下面的OpenGL函数 void glTexImage2D GLenum target GLint level GLint internalFormat GLsizei width GLsizei height GLint border
  • 如何在 R 中创建没有情节的图例?

    这是一个艺术项目 我创建了一个包含 5 种不同颜色的许多点的散点图 我想创建一个与绘图完全分开的图例 因为它不在绘图上 也不在绘图旁边 而是在它自己的窗口中 因此我可以将图例保存为它自己的 pdf 文件 这样我就可以将我的情节和图例分开打印
  • 修改 GGplot2 对象

    然而 我很好奇 是否可以添加任何特定的图例或将哪个物种对应于观察到的预期绘图中 以分别知道它是哪个圆圈 我目前使用的是一个名为 finches 的假数据集 该包称为 cooccurr 它创建一个 ggplot 对象 我很好奇如何实际编辑它以

随机推荐

  • 如何刷新与当前请求期间登录的用户不同的用户的声明?

    我使用以下代码来更新 Web 应用程序中用户的声明 但是 为了更新该用户的声明 cookie 我想强制他再次登录 所以本质上我想在更新声明后使他的 cookie 过期 知道如何做到这一点吗 await signInManager Refre
  • 创建Excel文件时如何保留日期格式?

    我有一个 xlsx 文件 将其导入到 Python 中并创建一个 Pandas 数据框 xlsx 文件中的一列格式为日期 年 月 日并像这样导入 然后 我从该数据框中删除一些不需要的列 并使用 xlsxwriter 引擎导出该数据框以创建另
  • 我想在点击后更改背景颜色?

    我想改变点击后的背景颜色 这是我的 HTML 代码 td class meun td 这是我的 JavaScript function getclick this style background color EFF2F7 http jsf
  • Mocha + React:导航器未定义

    我正在尝试为 React 组件编写第一个测试 但不断收到错误 ReferenceError navigator is not defined 我有一个组件 其中一个孩子使用代码镜像用于显示可编辑的文本区域 问题是 在 codemirror
  • 另一种解决方案代替 tableView.reloadData()

    我使用以下代码在 tableView 上调用批量更新 开始 结束更新 let oldImageSet Set oldImageArray let newImageSet Set self images let missingImages n
  • 画布上可绘制的图像

    如何将图像获取到画布以便在该图像上绘图 在画布上绘制 Drawable 的好方法不是自己对其进行解码 而是将其留给系统来完成 Drawable d getResources getDrawable R drawable foobar nul
  • ContentView 中的按钮会导致 MonoTouch 运行时崩溃。 Monotouch 4.0 中的错误?

    我的应用程序在 MT 3 0 中运行良好 现在当我升级了 当按钮位于 ContentView 中时 我看到错误 单击按钮时会发生崩溃 代码 public override UITableViewCell GetCell UITableVie
  • Redis过期不起作用

    我使用 ServiceStack Redis 从最新来源构建 https github com ServiceStack ServiceStack Redis tree master src 我做了这样的事情 CacheRecord fou
  • Flask+AJAX+Jquery+JINJA动态更新HTML Table

    我想动态显示端口状态 我不想重新加载页面来查看新值 我知道如何在Python中获取端口状态 使用uiApi 现在 我渲染一个包含该值的模板 并在 HTML 表中显示这些值 如何使用 Flask 中的值不断更新表 我有 AJAX 和 jque
  • C# 相当于 Java 标点正则表达式

    我正在寻找 C 中与此正则表达式等效的等效项 Java public static final String expression s p Punct Punct 是 Java 中的保留字符类 但我不确定如何创建等效表达式 以便 net 正
  • 使用acceptWithActor时如何捕获json解析错误?

    我将 websockets 与 playframework 2 3 一起使用 这是摘自官方操作方法页面 def socket WebSocket acceptWithActor JsValue JsValue request gt out
  • 具有多个参数的indexOf

    确定时是否可以使用多个参数indexOf在数组上 我想确定我的数组是否包含三个整数中的任何一个 在此阶段需要注意的是 数组将only有一个值 如果有多个值 则不会到达此代码块 array indexOf 123 124 125 0 So i
  • 如何优化 Hive 中 1 个大文件/表的扫描,以确认/检查 wkt 几何形状中是否包含经纬度点

    我目前正在尝试将设备的每个经纬度 ping 与其邮政编码相关联 我对经纬度设备 ping 数据进行了非标准化 并创建了一个跨积 笛卡尔积连接表 其中每一行都有 ST Point long lat geometry shape of ZIP
  • 使用 SQL 的 MS Access 中的检查约束不断出现错误

    我正在使用以下命令创建表 CREATE TABLE Comp SerialNumber Number Primary Key Not Null Make Text 12 Not Null Model Text 24 Not Null Pro
  • 如何在Linux环境下读取Windows文件?

    我试图在 Linux 上执行我首先在 Windows 上创建的 Python 程序 但显示以下错误 metadata eval metafile read File lt string gt line 1 任何想法 dos2unix you
  • 重置用户 django Rest Auth 的密码

    美好的一天 我正在尝试覆盖 Django allauth 的 password reset email 问题是它成功覆盖 但数据 密码重置链接 站点名称和域名 未传递到电子邮件 这最终意味着用户无法重置密码 因为没有发送链接 我的密码重置序
  • PHP MySQL 出现问题并插入 UTF-8

    我的 php 和 mysql 有问题 使用 utf 8 插入数据库 第一个文件 添加站点
  • 如何在自定义插件中编写dependsOn

    我的 build gradle 中有一个任务 task makeJar type Copy delete dist from build intermediates bundles release into dist include cla
  • Python 3 中的 Python 2 dict_items.sort()

    我正在将一些代码从 Python 2 移植到 3 这是 Python 2 语法中的有效代码 def print sorted dictionary dictionary items dictionary items items sort 在
  • 点云的一致法线计算

    python 或 c 中是否有一个库能够以一致的方式估计点云的法线 以一致的方式 我的意思是法线的方向在表面上全局保留 例如 当我使用 python open3d 包时 downpcd estimate normals search par