Halcon 简单入门3D点云计算高度

一、简介

入门级别的学习,就是简单的计算一个高度差,其原理如下:

1、先选出上面一个面的点,然后计算出在一个坐标系想的均值高度

2、筛选出下面一个面的点,然后计算出这个平面上的点的均值高度

3、高度差

4、显示

二、代码显示

*1读入点云数据
read_object_model_3d ('./points.om3', 'mm', [], [], ObjectModel3D, Status)
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
visualize_object_model_3d (WindowHandle, ObjectModel3D, [], [], ['lut','color_attrib','disp_pose'], ['color1','coord_z','true'], [], [], [], PoseOut)
*2得到电池表面点云的数据(mm),获得Z轴方向上的点的高度
get_object_model_3d_params (ObjectModel3D, 'point_coord_z', GenParamValue)

* 通过高度来选出那个第一个面上的点
select_points_object_model_3d (ObjectModel3D, 'point_coord_z', 15, 16, ObjectModel3DThresholded)
* 显示 第一个平面的模型
visualize_object_model_3d (WindowHandle, ObjectModel3DThresholded, [], [], ['lut','color_attrib','disp_pose'], ['color1','coord_z','true'], [], [], [], PoseOut1)

*去掉噪点
connection_object_model_3d (ObjectModel3DThresholded, 'distance_3d', 1, ObjectModel3DConnected)
get_object_model_3d_params (ObjectModel3DConnected, 'num_points', GenParamValue1)
* 通过点的个数来选出模型
select_object_model_3d (ObjectModel3DConnected, 'num_points', 'and', 1000, 50000, ObjectModel3DBattery)
visualize_object_model_3d (WindowHandle, ObjectModel3DBattery, [], [], ['lut','color_attrib','disp_pose'], ['color1','coord_z','true'], [], [], [], PoseOut1)
*3得到背景的点云数据集合(mm)
select_points_object_model_3d (ObjectModel3D, 'point_coord_z', 12, 14, ObjectModel3DBackGround)
visualize_object_model_3d (WindowHandle, ObjectModel3DBackGround, [], PoseOut1,  ['lut','color_attrib','disp_pose'], ['color1','coord_z','true'], [], [], [], PoseOut2)
*4求电池上表面点云的z坐标值
get_object_model_3d_params (ObjectModel3DBattery, 'point_coord_z', GenParamValue1)
*5求背景表面的点云的z坐标值
get_object_model_3d_params (ObjectModel3DBackGround, 'point_coord_z', GenParamValue2)
*6求电池上表面点云的z坐标的平均值
A:=mean(GenParamValue1)
*7求背景表面点云的z坐标的平均值
B:=mean(GenParamValue2)
*8求电池表面的高度
H:=A-B
Param[0]:='Shift+left button Zoom'
Param[1]:='ctrl+ left button Move'
Param[2]:='left button Rotat'
visualize_object_model_3d (WindowHandle, ObjectModel3D, [], [], ['lut','color_attrib','disp_pose'], ['color1','coord_z','true'], '电池点云的高度为'+H+'mm', 'Battery Object', Param, PoseOut)


猜你喜欢

转载自blog.csdn.net/weixin_39354845/article/details/125265812