halcon3D点云求取上下高度差

一、文章简介
文章介绍的是halcon 3D点云处理的入门级别的学习,计算螺丝与桌面之间的高度差,来判断螺丝是否拧紧(点云数据如图一所示):
图一、点云数据
判断高度差的原理如下:
1、提取螺丝上表面的点云数据(提取结果如图二所示):
图二、螺丝表面点云数据
2、提取背景点云数据(提取结果如图三所示):
图三、背景点云数据
3、获取上表面和下表面点云数据在Z轴上的均值(均值结果如图四所示):
图四、上表面和下表面均值数据(A为下表面,B为上表面)
4、两个的点云高度均值相减得到螺丝距离背景的距离(高度差结果如图五所示):
图五、均值高度差结果
5、如果距离在+0.01mm之间则螺丝为拧紧状态(处理结果如图六所示):
图六、处理结果
二、代码流程如下所示

** 打开一个窗口
dev_open_window (0, 0, 400, 400, 'black', WindowHandle)
** 读取螺丝点云
read_object_model_3d ('bolt', 'm', [], [], ObjectModel3D, Status)
** 显示点云
* GenParamName :=['lut','color_attrib','disp_pose']
* GenParamValue :=['color2','coord_z','true']
* visualize_object_model_3d(WindowHandle, ObjectModel3D, [], [], GenParamName, GenParamValue, [], [], [], PoseOut1)
get_object_model_3d_params (ObjectModel3D, 'point_coord_z', zValues)
Zmin :=min(zValues)
Zmax :=max(zValues)
** 根据Z轴值分布特征提取对应点云数据
select_points_object_model_3d (ObjectModel3D, 'point_coord_z', 0.614, 0.617, ObjectModel3DThresholded1)
select_points_object_model_3d (ObjectModel3D, 'point_coord_z', 0.610, 0.614, ObjectModel3DThresholded2)
get_object_model_3d_params (ObjectModel3DThresholded1, 'point_coord_z', zValues1)
get_object_model_3d_params (ObjectModel3DThresholded2, 'point_coord_z', zValues2)
** 求取所有点云的均值高度
A := mean(zValues1)
B := mean(zValues2)
** 计算上表面和背景的高度差
tuple_abs(B -A, height)
GenParamName :=['color_0','color_1','disp_pose']
GenParamValue :=['red','green','true']
visualize_object_model_3d (WindowHandle, [ObjectModel3DThresholded1,ObjectModel3DThresholded2], [], [], GenParamName, GenParamValue, [], [], '高度差为'+height+'mm', PoseOut)

附录:
程序点云图网盘链接自取:
链接:https://pan.baidu.com/s/1YBCXzy61MVOZob3PxhkcaA
提取码:wzlb

  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Hi~ 可私信我了解后再进行下载~ 1.基于halcon算法平台; 2.提供深度图源文件以及解压密码; 3.代码预览: */******************************* * @文档名称: 基于点云的平面断测量。 * @作者: hugo * @版本: 1.1 * @日期: 2021-6-20 * @描述: 该方法支持点云的平面的断测量。 ***********************************/* dev_update_window ('on') dev_get_window (WindowHandle) read_image (imageReal, './replay_38893_2021-6-7.tif') xResolution:=0.06 yResolution:=0.06 zResolution:=0.001 ScaleFactor:=[xResolution,yResolution,zResolution] *采样区域1 create_drawing_object_rectangle2 (300, 120, rad(90), 30, 20, DrawID) set_drawing_object_params (DrawID, 'color', 'forest green') set_drawing_object_params (DrawID, 'line_width', 1) attach_drawing_object_to_window (WindowHandle, DrawID) ............. *对指定区域进行高度滤波 filter_surface_zdatas (Rectangle, imageReal, ImageReduced1, Region1, grayArray, rowArray, rolumnArray) filter_surface_zdatas (Rectangle1, imageReal, ImageReduced2, Region2, grayArray1, rowArray1, columnArray) *拟合指定区域的平面 方法1 fit_surface_regions (Region1, ImageReduced1, imageSurface) *输入已经拟合的平面 方法2 *IntensityImageToPiontsCloudImage (imageSurface, ScaleFactor, 1, 0, SampledObjectModel3D, ObjectModelPlane, zScale) *TransPose1 := [ Column-Length21, Row-Length11,d,0,0,0,0] *rigid_trans_object_model_3d (ObjectModelPlane, TransPose1, _ObjectModelPlane) stop() 谢谢您的信任~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值