3D点云体积计算

3D点云体积计算


前言

通过halcon 内部代码计算点云的体积,使用的点云也是halcon 案例的点云可直接运行。
介绍就不写了,直接上代码



# 初始化可视化窗口
dev_close_window()
dev_update_off()
dev_open_window(0, 0, 800, 600, 'black', WindowHandle)
set_display_font(WindowHandle, 16, 'mono', 'true', 'false')

# 读取3D对象模型
read_object_model_3d('mvtec_bunny_normals.om3', 'mm', [], [], ObjectModel3D, Status)
get_object_model_3d_params (ObjectModel3D, 'point_coord_x', point_coord_x)
get_object_model_3d_params (ObjectModel3D, 'point_coord_y', point_coord_y)
get_object_model_3d_params (ObjectModel3D, 'point_coord_z', point_coord_z)
gen_object_model_3d_from_points (point_coord_x, point_coord_y, point_coord_z, ObjectModel3D1)

visualize_object_model_3d (WindowHandle, [ObjectModel3D1], [], [], ['lut','color_attrib'], ['color1','coord_z'], [], [], [], PoseOut)


# 采样3D对象模型
SamplingFactor := 0.0053
get_object_model_3d_params(ObjectModel3D1, 'diameter_axis_aligned_bounding_box', Diameter)
sample_object_model_3d(ObjectModel3D1, 'fast', SamplingFactor * Diameter, [], [], RawPointData3D)

# 执行三角剖分
ParameterNames := 'information'
ParameterValues  := 'verbose'
triangulate_object_model_3d(RawPointData3D, 'greedy', ParameterNames, ParameterValues, Surface3DDefault, Info)
visualize_object_model_3d (WindowHandle, [Surface3DDefault], [], [], ['lut','color_attrib'], ['color1','coord_z'], [], [], [], PoseOut)


****************计算体积********************************
* 计算凸包
convex_hull_object_model_3d (Surface3DDefault, ObjectModel3DConvexHullBox)
 
***************************************************************************
* 获取模型的XYZ坐标
***************************************************************************
get_object_model_3d_params (ObjectModel3DConvexHullBox, 'point_coord_x', point_coord_x)
get_object_model_3d_params (ObjectModel3DConvexHullBox, 'point_coord_y', point_coord_y)
get_object_model_3d_params (ObjectModel3DConvexHullBox, 'point_coord_z', point_coord_z)
 
***************************************************************************
* 获取模型中各个三角面元的角点坐标在点坐标序列中的索引
***************************************************************************
get_object_model_3d_params (ObjectModel3DConvexHullBox, 'triangles', triangles)
 
***************************************************************************
* 生成平面
***************************************************************************
gen_rectangle2_contour_xld (Rectangle, 0, 0, 0, 150, 150)
get_contour_xld (Rectangle, Row, Col)
pose_plane := [0, 0, 20, 0, 0, 0, 0]
gen_plane_object_model_3d (pose_plane, Col, Row, ObjectModel3DPlane)
convex_hull_object_model_3d (ObjectModel3DPlane, ObjectModel3DNormals)
 
***************************************************************************
* 根据指定的参数计算模型相对于平面的体积
***************************************************************************
volume_object_model_3d_relative_to_plane (ObjectModel3DConvexHullBox, pose_plane,'signed',   'true', Volume0)
volume_object_model_3d_relative_to_plane (ObjectModel3DConvexHullBox, pose_plane,'unsigned', 'true', Volume1)
volume_object_model_3d_relative_to_plane (ObjectModel3DConvexHullBox, pose_plane,'positive', 'true', Volume2)
volume_object_model_3d_relative_to_plane (ObjectModel3DConvexHullBox, pose_plane,'negative', 'true', Volume3)
 
volume_object_model_3d_relative_to_plane (ObjectModel3DConvexHullBox, pose_plane,'signed',   'false', Volume4)
volume_object_model_3d_relative_to_plane (ObjectModel3DConvexHullBox, pose_plane,'unsigned', 'false', Volume5)
volume_object_model_3d_relative_to_plane (ObjectModel3DConvexHullBox, pose_plane,'positive', 'false', Volume6)
volume_object_model_3d_relative_to_plane (ObjectModel3DConvexHullBox, pose_plane,'negative', 'false', Volume7)



visualize_object_model_3d (WindowHandle, [ObjectModel3DPlane, ObjectModel3DConvexHullBox], [], [], ['lut','color_attrib'], ['color1','coord_z'], [], [], [], PoseOut)




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值