在MATLab中计算3d点法线

时间:2013-12-07 19:24:00

标签: matlab 3d normals point-clouds

我在MATLab中有一个3d点的点云。点云是3xN矩阵的形式。

我想以3xN矩阵的形式计算每个点的法线。我该怎么做呢?

到目前为止,我已尝试使用

nX = (surfnorm(X'))';

其中X是我的点云,而nX应该是我的返回法线。但是,每当我尝试这样做时,它在渲染时似乎不起作用......这是正确的方法吗?

提前致谢!

1 个答案:

答案 0 :(得分:1)

surfnorm需要一个曲面,所以它需要你的3 x N点位置矩阵作为3 x N大小的曲面(当调用surfnorm时,输入给出Z,X和Y设置为默认值)。我没有看到任何直接在点云上使用此功能的方法。

要从点云中找到法线,您需要:

1)从点云中拟合某种表面,然后在其上使用surfnorm。 2)使用周围点估计每个点的法线。 This site提供了一个很好的概述。

file exchange上实际上有一个文件,用于演示给定点集的法线计算(来自给定点集的单个法线)。您需要做的是为每个点计算一组最近邻居,然后返回法线向量。您可能还需要更正向量的方向。