main Content

pcnormals

估计点云的正态

描述

例子

正常= pcnormals(ptcloudreturns a matrix that stores a normal for each point in the inputptcloud。该函数使用六个相邻点适合本地平面来确定每个正常向量。

正常= pcnormals(ptcloud,,,,k另外指定k,用于本地平面拟合的点数。该函数使用此值,而不是第一个语法中所述的六个相邻点。

例子

全部收缩

加载点云。

加载('object3d.mat');

估计正常向量。

normals = pcnormals(ptcloud);图PCSHOW(PTCLOUD)标题(“点云的估计正态”)抓住on

图包含一个轴对象。带有标题估计的点云的轴对象包含类型散点的对象。

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 =正态(1:10:end,1:10:end,1);v =正态(1:10:end,1:10:end,2);w =正态(1:10:end,1:10:end,3);

绘制正常向量。

Quiver3(X,Y,Z,U,V,W);抓住off

图包含一个轴对象。带有标题估计的点云的轴对象包含2个类型散点的对象。

翻转正态以指向传感器位置。此步骤仅对于确定表面的向内或向外方向是必要的。传感器中心设置在X,,,,y,,,,z坐标。

SensorCenter = [0,-0.3,0.3];为了k= 1 : numel(x) p1 = sensorCenter - [x(k),y(k),z(k)]; p2 = [u(k),v(k),w(k)];% Flip the normal vector if it is not pointing towards the sensor.角度= atan2(norm(cross(p1,p2)),p1*p2');如果角度> pi/2 ||角<-pi/2 u(k)= -u(k);v(k)= -v(k);w(k)= -w(k);结尾结尾

绘制调整后的正态。

图PCSHOW(PTCLOUD)标题(“调整后的点云”)抓住onQuiver3(X,Y,Z,U,V,W);抓住off

图包含一个轴对象。带有标题调整后的点云的轴对象包含2个类型散点的对象。

输入参数

全部收缩

存储点云的对象,,,,returned as apointCloud目的。

number of points used for local plane fitting, specified as an integer greater than or equal to 3. Increasing this value improves accuracy but slows down computation time. If you do not specifyk,该函数使用六个相邻点适合本地平面来确定每个正常向量。

输出参数

全部收缩

normals used to fit a local plane, returned as anm-by-3or anm-by-n-by-3向量。正常向量是使用六个相邻点在本地计算的。每个正常向量的方向都可以根据您获取点的方式来设置。这估计点云的正态示例,说明当正常向量指向传感器时如何设置方向。

References

DeRose H。[1]霍普,t, t·杜尚j .麦当劳and W. Stuetzle. "Surface Reconstruction from Unorganized Points".计算机图形(Siggraph 1992会议记录)。1992年,第71-78页。

扩展功能

C/C ++代码生成
Generate C and C++ code using MATLAB® Coder™.

版本历史记录

Introduced in R2015b