halcon三维点云数据处理(二十五)moments_object_model_3d
目录
- 一、moments_object_model_3d例程
- 二、moments_object_model_3d函数
- 三、效果图
一、moments_object_model_3d例程
这个例子说明了如何使用moments_object_model_3d运算符来将3D数据与x、y、z坐标轴对齐。在实际应用中,通过3D传感器获取的物体模型可能具有一个与物体主轴不对齐的物体坐标系。例如,如果一个物体有一个脊线(如长条形物体的长轴),我们可能希望物体坐标系与这条脊线对齐,使得x轴指示脊线的方向。
使用moments_object_model_3d运算符:该运算符可以计算3D物体模型的所有点的均值(质心)。它还可以提取物体模型的主轴。这些主轴是基于数据分布的方差来确定的,并且它们是正交的(即相互垂直)。
对齐坐标系:一旦确定了主轴,我们可以将物体模型转换到与这些主轴对齐的新坐标系中。在这个新坐标系中,x轴对应于第一主轴(数据方差最大的方向),y轴对应于第二主轴,z轴对应于第三主轴。
转换物体模型:为了将物体模型转换到主轴坐标系中,我们需要计算从原始坐标系到主轴坐标系的变换矩阵。应用这个变换矩阵,我们就可以将物体模型中的所有点转换到新的坐标系中。
结果:转换后的物体模型将具有与主轴对齐的坐标系,这使得后续的处理和分析更加直观和方便。例如,如果我们需要沿着物体的脊线进行切割或测量,现在可以直接沿着x轴进行。
通过这个例子,我们可以看到moments_object_model_3d运算符在3D数据处理中的强大功能。它不仅能够计算物体模型的质心和主轴,还能够帮助我们将物体模型转换到一个更加合适的坐标系中,以便进行后续的分析和处理。
read_object_model_3d ('cutting_edge.om3', 'm', [], [], ObjectModel3D, Status)
moments_object_model_3d (ObjectModel3D, 'principal_axes', Pose)
pose_invert (Pose, PoseInvert)
pose_to_hom_mat3d (PoseInvert, HomMat3D)
affine_trans_object_model_3d (ObjectModel3D, HomMat3D, ObjectModel3DPCA)
这里的Pose我的理解是:(Model)P(PCA) ,取逆之后是(PCA)P(Model), 可以把模型变换到主轴坐标系。
二、moments_object_model_3d函数
计算一个3D对象模型的均值(或二阶中心矩)
moments_object_model_3d( : : ObjectModel3D, MomentsToCalculate : Moments)
MomentsToCalculate:
mean_points:计算并返回3D对象模型点的均值坐标。
central_moment_2_points:计算并返回3D对象模型的二阶中心矩(即方差)。
principal_axes:计算并返回3D对象模型的主轴及其方向,以姿态形式表示。