文档

pcnormals

估计点云的法线

描述

例子

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

法线= pcnormals (ptCloudk另外指定k,用于局部平面拟合的点数。

例子

全部折叠

加载一个点云。

负载(“object3d.mat”);

估计法向量。

normals = pcnormals(ptCloud);figure pcshow(ptCloud) title(“估计点云法线”)举行

x = ptCloud.Location(1:10:end,1:10:end,1);y = ptCloud.Location(1:10:end,1:10:end,2);z = ptCloud.Location(1:10:end,1:10:end,3);U = normals(1:10:end,1:10:end,1);V = normals(1:10:end,1:10:end,2);W = normals(1:10:end,1:10:end,3);

画出法向量。

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

翻转法线指向传感器位置。此步骤仅在确定表面的内向或外向方向时是必要的。传感器中心就位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)];如果法向量没有指向传感器,则翻转法向量。Angle = atan2(norm(cross(p1,p2)),p1*p2');如果角> /2 ||角< - /2 u(k) = -u(k);V (k) = -v(k);W (k) = -w(k);结束结束

绘制调整后的法线。

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

输入参数

全部折叠

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

用于局部平面拟合的点数,指定为大于或等于3的整数。增加这个值可以提高精度,但会减慢计算时间。

输出参数

全部折叠

法线用于适合本地平面,返回为- × 3或an——- - - - - -N3向量。法向量使用六个相邻点局部计算。每个法向量的方向可以根据你获取点的方式来设置。的估计点云的法线示例,展示了当法向量指向传感器时如何设置方向。

参考文献

H.霍普,T.德罗斯,T.杜尚,J.麦克唐纳和W.斯图茨尔。“从无组织点重建曲面”。计算机图形学(SIGGRAPH 1992论文集)。1992,第71-78页。

扩展功能

在R2015b中引入