open3d顶点法线估计和获取

一、顶点法线估计

pcd.estimate_normals(search_param=o3d.geometry.KDTreeSearchParamHybrid(radius=0.1, max_nn=30))

按下 N 键可以查看点法线。使用键 - + 可以控制法线的长度。

函数原理

estimate_normals 函数为每个点计算法线。该函数查找相邻点,并使用协方差分析计算相邻点的主轴。该函数的参数是 KDTreeSearchParamHybrid 类的一个实例。两个关键参数 radius = 0.1 max_nn = 30 指定了搜索半径和最大最近邻。它有 10 厘米的搜索半径,并且只考虑最多 30 个邻居,以节省计算时间。

协方差分析算法产生了两个相反方向的法线候选方向。在不了解几何体的全局结构的情况下,这两个方向都可能是正确的。这被称为法线方向问题。如果存在原始法线,Open3D 尝试将法线定向与原始法线对齐。否则,Open3D 将进行随机猜测。如果方向是一个问题,需要调用进一步的方向函数,如 orient_normals_to_align_with_direction orient_normals_towards_camera_location

参数解释

estimate_normals函数用于估计点云中每个点的法线。它接受一个search_param参数,该参数是一个o3d.geometry.KDTreeSearchParamHybrid类的实例,用于指定搜索半径和最大最近邻点数量。

  • radius参数指定了搜索半径,表示在这个半径范围内寻找邻近点用于法线估计。
  • max_nn参数指定了最大最近邻点数量,表示在搜索半径内最多考虑多少个邻近点。

在这里插入图片描述

二、获取估计的顶点法线

获得单个顶点法线

只能获得单个顶点法线pcd.normals[不超过数组长度的整数]

>>>print(pcd.normals[0])
[-0.22344398 -0.96962557  0.09949394]

获得多个顶点法线

法线向量可以使用 np.asarray 转换为 numpy 数组。

>>>print(np.asarray(pcd.normals)[:10])
[[-0.22344398 -0.96962557  0.09949394]
 [-0.30282456 -0.91827757  0.25507564]
 [-0.0930339  -0.77633579 -0.62341594]
 [ 0.06452443 -0.96881599 -0.23923249]
 [ 0.24771039 -0.96349484  0.10157387]
 [ 0.1890532  -0.97541781  0.11322096]
 [-0.26920394 -0.95010988  0.15754506]
 [ 0.72941317  0.51298568  0.45255067]
 [ 0.83949302  0.5402317   0.05831961]
 [-0.32325253  0.62920765  0.7068278 ]]

获得数组前10个位置,只有x轴,points[切片的起始位置:切片的截至位置, 获得轴(x:0, y:1 z:2)]

>>>print(points[:10, 0])
[-0.0378297  -0.0447794  -0.0680095  -0.00228741 -0.0226054  -0.0251078
 -0.0371209   0.033213    0.0380425  -0.0255083 ]

三、点云数据获取

ope3d 官方文档:PointCloud - Open3D 0.18.0 documentation

点云数据:百度网盘链接:https://pan.baidu.com/s/1SDy8PCeQlj0EvZHj_f9XSA
提取码:yqny

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云杂项

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值