zoukankan      html  css  js  c++  java
  • 估计一组点云的表面法线

            表面法线是几何体表面的重要属性,在很多领域都有大量应用,eg:在光照渲染时产生符合可视习惯的效果时需要表面法线信息才能正常进行,对于一个已知的几何体表面,根据垂直于点表面的矢量,因此推断表面某一点的法向量方向通常比较简单。然而,由于我们获取的点云数据集在真实物体表面表现为一组定点样本,这样估计点云法向量有两种方法:

            (1)使用曲面重建技术,从获取的点云数据集中得到采样点对应的曲面,然后从曲面模型中计算法向量,(曲面方程f(x,y,z)=0的一个法向量可以表示为n={e(df/dx), e(df/dy), e(df/dz)}.)。

            (2)直接通过点云数据集中点近似推算某点法向量。

    1.理论基础

            确定表面一点法线的问题近似于估计表面的一个相切面法线的问题,因此转换过来以后就变成一个最小二乘法平面拟合估计问题。

            因此估计表面法线就成了分析一个协方差矩阵的特征矢量和特征值,这个协方差矩阵从查询点的近邻元素中创建。更具体地说,对于每一个点Pi,对应点协方差矩阵C如下:

    ${ m{C}} = frac{1}{k}mathop sum limits_{i = 1}^k left( {{P_i} - ar P} ight){left( {{P_i} - ar P} ight)^T}$

    ${ m{C}} cdot overrightarrow {{{ m{v}}_{ m{j}}}}  = {lambda _i} cdot overrightarrow {{{ m{v}}_{ m{i}}}} ;;;left( {j in left{ {0,1,2} ight}} ight)$

            此处,k是点Pi邻近点的数目,表示最邻近元素的三维质心,是协方差矩阵的第j个特征值,是第j个特征向量。

            通常没有数学方法能解决法线的正负向问题,通过主成分分析法计算方向也具有二义性,无法对整个点云进行一致性定向.如果知道视点Vp,对所有的法向量定向只需要使他们一致朝向视点方向。

    $overrightarrow {{n_i}}  cdot left( {{V_p} - {P_i}} ight) > 0$

            如果数据集是从多个捕获视点中对齐后集成的,那么上述法线一致性定向方法就不适用了。

  • 相关阅读:
    Linux内核RPC请求过程
    二分图
    Java实现 蓝桥杯 算法提高 合并石子
    Java实现 蓝桥杯 算法提高 合并石子
    Java实现 蓝桥杯 算法提高 摩尔斯电码
    Java实现 蓝桥杯 算法提高 摩尔斯电码
    Java实现 蓝桥杯 算法提高 文本加密
    Java实现 蓝桥杯 算法提高 文本加密
    Java蓝桥杯 算法提高 九宫格
    Java蓝桥杯 算法提高 九宫格
  • 原文地址:https://www.cnblogs.com/fujj/p/9733602.html
Copyright © 2011-2022 走看看