主要内容

pcnormals

估计点云的法线

描述

例子

法线= pcnormals (ptCloud返回一个矩阵,该矩阵存储输入中每个点的法线ptCloud.该函数使用六个相邻点来拟合一个局部平面,以确定每个法向量。

法线= pcnormals (ptCloudk另外指定k,用于局部平面拟合的点个数。函数使用这个值而不是第一个语法中描述的六个相邻点。

例子

全部折叠

加载点云。

负载(“object3d.mat”);

估计法向量。

法线= pcnormals (ptCloud);图pcshow (ptCloud)标题(“点云的估计法线”)举行

图中包含一个轴对象。标题为“点云估计法线”的轴对象包含一个散点类型的对象。

x = ptCloud.Location(1:10:最终,1:10:最终,1);y = ptCloud.Location(1:10:最终,1:10:最终,2);z = ptCloud.Location(1:10:最终,1:10:最终,3);u =法线(1:10:最终,1:10:最终,1);v =法线(1:10:最终,1:10:最终,2);w =法线(1:10:最终,1:10:最终,3);

画出法向量。

quiver3 (x, y, z, u, v, w);持有

图中包含一个轴对象。标题为“点云估计法线”的轴对象包含2个类型为散点、抖动的对象。

翻转法线指向传感器位置。这个步骤只有在确定表面的向内或向外方向时才有必要。传感器中心设置在xyz坐标。

sensorCenter =(0、-0.3、0.3);k = 1:元素个数(x) p1 = sensorCenter - [x (k), y (k)、z (k)];p2 = [u (k), v (k), w (k)];如果法向量没有指向传感器,则翻转法向量。角=量化(规范(交叉(p1, p2)), p1 * p2”);如果角度> /2 ||角度< -pi/2 u(k) = -u(k);v (k) = - v (k);w (k) = - w (k);结束结束

绘制调整后的法线。

图pcshow (ptCloud)标题(“点云的调整法线”)举行Quiver3 (x, y, z, u, v, w);持有

图中包含一个轴对象。标题为“点云调整法线”的轴对象包含两个类型为散点、抖动的对象。

输入参数

全部折叠

对象用于存储点云,返回为pointCloud对象。

用于局部平面拟合的点数,指定为大于或等于3的整数。增加这个值可以提高准确性,但降低计算时间。如果没有指定k,该函数使用六个相邻点拟合一个局部平面来确定每个法向量。

输出参数

全部折叠

常态用来装一架本地飞机,作为3或——- - - - - -N3向量。用六个相邻点局部计算法向量。每个法向量的方向可以根据你获得点的方式来设置。的估计点云的法线示例,演示了当法向量指向传感器时如何设置方向。

参考文献

H. Hoppe, T. DeRose, T. Duchamp, J. Mcdonald,和W. Stuetzle。“无组织点的表面重建”。计算机图形学(SIGGRAPH 1992年论文集)。1992年,页71 - 78。

扩展功能

C / c++代码生成
使用MATLAB®Coder™生成C和c++代码。

介绍了R2015b