Halcon 3D 自定义平面度测量与参数封装

版权申诉
5星 · 超过95%的资源 6 下载量 185 浏览量 更新于2024-12-13 7 收藏 203KB ZIP 举报
资源摘要信息:"Halcon 3D 平面度 自定义封装函数" 1. Halcon 3D平面度测量简介 Halcon是一个商业机器视觉软件,广泛应用于工业自动化领域。它提供了一套完整的工具和函数库,用于处理图像数据、进行视觉检测和测量等任务。在3D视觉应用中,平面度测量是一项重要的检测任务,用于确保产品的表面平整度符合一定的质量标准。为了满足特定应用场景的需求,开发者可以通过Halcon的编程接口自定义封装函数,以实现更灵活的测量方案。 2. 自定义封装函数的功能及参数解析 自定义封装函数“measure_flatness”针对3D平面度测量提供了定制化的解决方案。函数的输入参数包括深度图“ImageH”和测量区域“RoiMeasure”,以及滤波参数“LowFilterRate”和“HighFilterRate”。输出参数为平面度的最小值“MinFlatness”、最大值“MaxFlatness”,整体“Flatness”,以及最小值点和最大值点的坐标“Points”。 3. 平面度测量的基本原理 平面度测量是通过计算一个测量区域内所有点相对于拟合平面的偏差来评估表面平整度的方法。在3D视觉中,这通常涉及到点云数据的处理。首先,需要从深度图中提取出点云数据,然后对这些数据进行滤波处理去除噪声,以获得更为准确的测量结果。 4. 滤波处理参数“LowFilterRate”和“HighFilterRate”的作用 “LowFilterRate”和“HighFilterRate”是自定义函数中用于滤波处理的参数,它们分别对应于滤波过程中的低尾和高尾阈值。低尾滤波可以去除数据中的低值噪声,而高尾滤波则用于去除高值异常点。合适的滤波参数对于提取高质量点云数据至关重要。 5. 平面拟合策略 在平面度测量中,根据测量区域大小的不同,采用不同的平面拟合策略。当测量区域小于4个点时,将对滤波后的所有点进行平面拟合;而当测量区域大于4个点时,为了提高计算效率,将选取每个区域的中值点进行平面拟合。这种策略既保证了测量精度,也提高了处理速度。 6. 输出参数的具体含义 - “MinFlatness”和“MaxFlatness”分别代表了测量区域内平面度的最小值和最大值。这两个值用于描述区域内的表面平整度分布情况。 - “Flatness”是整个测量区域的平面度,它给出了一个整体的平整度评估。 - “Points”记录了最小值点和最大值点的坐标,这些信息对于分析表面平整度问题的具体位置非常有用。 7. Halcon 3D平面度测量的应用场景 3D平面度测量在制造业中具有广泛的应用,如汽车零部件、电子产品外壳、金属加工件等的表面质量检测。在自动化生产线中,通过集成Halcon软件和3D视觉系统,可以实时监控产品表面平整度,及时发现不合格品,保障产品质量。 8. Halcon自定义函数的编写方法 Halcon提供了丰富的函数库供开发者调用,自定义函数的编写需要熟悉Halcon的编程语言HDevelop。开发者可以使用HDevelop进行函数封装,定义输入输出参数,实现特定的算法逻辑。编写完成后,通过HDevelop的调试功能确保函数运行正确无误,然后将其导出为Halcon标准的程序文件(.hdev)进行使用。 9. 平面度Ver2.0的文件压缩包子文件 文件名称“平面度Ver2.0”表明这是一个更新版本的平面度测量程序。通过版本命名可以推测,开发者对原来的函数进行了优化改进,提高了算法的性能或扩展了功能。由于这是一个压缩包子文件,实际的改进内容无法直接得知,但可以推断该文件包含了更新后的HDevelop程序文件以及可能新增的脚本、文档说明和示例数据等。 10. 自定义函数在工业应用中的重要性 在工业生产中,平面度测量的准确性和速度直接影响到生产效率和产品质量。通过自定义函数,可以将平面度测量与其他视觉检测任务集成到一个统一的视觉系统中,提高自动化程度,减少人为干预,从而优化生产流程并降低成本。此外,自定义函数还可以根据实际生产线的特定需求进行优化,提供更加符合实际应用场景的解决方案。
2021-06-28 上传
Hi~ 可私信我了解后再进行下载~ 本资源上传时,遗漏了两个文件,分别是:data_filter_keep_order_output_index.hdvp 以及 IntensityImageToPiontsCloudImage.hdvp,购买了该资源的同学,给我留言,我会私信发给你们。 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) .......... *平面度 height:=theta/zScale*0.001 *可视化高度差效果 visParamName := ['lut','alpha_0','intensity','color_1'] visParamValue := ['hsi',0.7,'coord_z','yellow'] Labels := ['','平面度:'+height+'mm',''] objs:=[ObjectModel3Ds[2],final_ObjectModel3Ds] visualize_object_model_3d (WindowHandle, objs, [], [], visParamName, visParamValue, 'Edited by AmazingRobot+', [Labels], '', PoseOut) *stop () clear_object_model_3d (plane_balls) for Index := 0 to |final_ObjectModel3Ds|-1 by 1 clear_object_model_3d (final_ObjectModel3Ds[Index]) endfor return () 谢谢您的信任~