我在MATLab中有一个3d点的点云。点云是3xN矩阵的形式。
我想以3xN矩阵的形式计算每个点的法线。我该怎么做呢?
到目前为止,我已尝试使用
nX = (surfnorm(X'))';
其中X是我的点云,而nX应该是我的返回法线。但是,每当我尝试这样做时,它在渲染时似乎不起作用......这是正确的方法吗?
提前致谢!
答案 0 :(得分:1)
surfnorm
需要一个曲面,所以它需要你的3 x N点位置矩阵作为3 x N大小的曲面(当调用surfnorm
时,输入给出Z,X和Y设置为默认值)。我没有看到任何直接在点云上使用此功能的方法。
要从点云中找到法线,您需要:
1)从点云中拟合某种表面,然后在其上使用surfnorm
。
2)使用周围点估计每个点的法线。 This site提供了一个很好的概述。
file exchange上实际上有一个文件,用于演示给定点集的法线计算(来自给定点集的单个法线)。您需要做的是为每个点计算一组最近邻居,然后返回法线向量。您可能还需要更正向量的方向。