Halcon3D视觉--高度差(断差)测量

本文介绍了使用Halcon进行3D视觉断差(高度差)测量的方法,包括实现效果展示、滤波处理、深度图转换以及高度差的计算。涉及的函数有abnormity_filter用于滤波,DepthMapTransformationPointCloud进行深度图转换,difference_height计算高度差。此外,还提到了相关的咸鱼账号tbNick_mtm4n。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

实现效果

显示效果

输出结果

代码

主函数:dome

滤波函数:abnormity_filter

拟合函数:DepthMapTransformationPointCloud

计算函数:difference_height


  • 实现效果

    • 显示效果

    • 输出结果

  • 代码

    • 主函数:dome

    • import '.'
      gen_image_surface_first_order (Image, 'real', 1, 0, 0, 0, 0, 90, 90)
      dev_update_window ('on')
      dev_get_window (WindowHandle)
      
      
      read_image (image_Height, '1H.tif')
      read_image (image_Gray, '1G.tif')
      *3D相机x, y, z分辨率
      xResolution:=0.1024
      yResolution:=0.1024
      zResolution:=0.0008
      
      ScaleFactor:=[xResolution,yResolution,zResolution]
      dev_display (image_Gray)
      
      *采样区域_基准区域
      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)
      
      *采样区域_测量区域
      create_drawing_object_rectangle2 (300, 120, rad(90), 30, 20, DrawID2)
      set_drawing_object_params (DrawID2, 'color', 'red')
      set_drawing_object_params (DrawID2, 'line_width', 1)
      attach_drawing_object_to_window (WindowHandle, DrawID2)
      
      stop ()
      
      *获取基准区域的参数并生成区域
      get_drawing_object_params (DrawID, ['row','column','phi','length1','length2'], GenParamValue)
      gen_rectangle2 (Region_Zero,GenParamValue[0], GenParamValue[1], GenParamValue[2],\
                      GenParamValue[3], GenParamValue[4])
      
      *获取测量区域的参数并生成区域
      get_drawing_object_params (DrawID2, ['row','column','phi','length1','length2'], GenParamValue2)
      gen_rectangle2 (Region_Delete,GenParamValue2[0], GenParamValue2[1], GenParamValue2[2], \
                      GenParamValue2[3], GenParamValue2[4])
      
      
      *从HALCON窗口中分离现有的图形对象
      detach_drawing_object_from_window (WindowHandle, DrawID)
      detach_drawing_object_from_window (WindowHandle, DrawID2)
      
      stop ()
      
      *'single':输入区域根据区域个数单独滤波 而不是对整体滤波 输入其他参数将union后再进行滤波
      *滤波的目的是去除掉部分异常值
      abnormity_filter (image_Gray, Region_Zero, out_RegionZero, 3, 3, 'single')
      
      abnormity_filter (image_Gray, Region_Delete, out_RegionDelete, 3, 3, 'single')
      
      
      *计算代码
      difference_height (image_Height, out_RegionZero, out_RegionDelete, ScaleFactor,\
                         out_MaxValue, out_MeanValue, out_MinValue, out_Result)
      
      
    • 滤波函数:abnormity_filter

      • 咸鱼账号 tbNick_mtm4n
    • 拟合函数:DepthMapTransformationPointCloud

    • 咸鱼账号 tbNick_mtm4n
    • 计算函数:difference_height

    • 咸鱼账号 tbNick_mtm4n

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、付费专栏及课程。

余额充值