设置首页收藏本站在线聊天
授权版本:2024_09
开启左侧

测量模型阈值参数如何设置

[复制链接]
freekun139com 发表于 2023-12-11 10:23:53 | 显示全部楼层 |阅读模式

测试图像

测试图像

1.如果检测区域只覆盖中间则"边缘幅度阈值"在20左右可以检出,结果如下图

检测区域覆盖中间区域

检测区域覆盖中间区域

检测区域覆盖中间区域结果

检测区域覆盖中间区域结果

2.如果检测区域覆盖较高则"边缘幅度阈值"只能设置到5左右可以检出,结果如下图

检测区域覆盖整个区域

检测区域覆盖整个区域

检测区域覆盖整个区域结果

检测区域覆盖整个区域结果

3.担心的是边缘幅度阈值设置到5是一个比较小的灰度,可能容易出现误检,哪位大佬指点一下
不理解的是这里设置比较高的检测区域时是否可以只检测中间比较明显的区域,得到类似上图的结果,可以不检出下侧较暗的边缘

  1. read_image (Image, '计量模型线条检测.png')
  2. get_image_size (Image, Width, Height)

  3. ********************************************************************************
  4. *创建二维测量模型
  5. create_metrology_model (MetrologyHandle)
  6. set_metrology_model_image_size (MetrologyHandle, Width, Height)

  7. ********************************************************************************
  8. *添加测量对象到测量模型
  9. *第一种测量区域, 从图像上侧到下侧, 此时需要设置很小的边缘幅度阈值才能拟合出来, 阈值大概在5左右.
  10. *add_metrology_object_line_measure (MetrologyHandle, 0, 0.5*Width, Height, 0.5*Width, 20, 5, 1, 30, [], [], Index)
  11. *第二种测量区域, 只针对图像中部明显区域, 边缘幅度阈值阈值在20左右可以拟合出来.
  12. add_metrology_object_line_measure (MetrologyHandle, 150, 0.5*Width, Height-150, 0.5*Width, 20, 5, 1, 30, [], [], Index)
  13. get_metrology_object_measures (Contours, MetrologyHandle, 'all', 'all', Row, Column)

  14. ********************************************************************************
  15. ****Creating measure regions:
  16. *'measure_length1': 区域, 垂直于边界的测量区域的一半长度
  17. set_metrology_object_param (MetrologyHandle, 'all', 'measure_length1', 0.5*Width-20)
  18. *'measure_length2': 区域, 相切于边界的测量区域的一半长度
  19. set_metrology_object_param (MetrologyHandle, 'all', 'measure_length2', 3)
  20. *'measure_distance': 区域, 相邻小卡尺区域的中心距离
  21. set_metrology_object_param (MetrologyHandle, 'all', 'measure_distance', 8)
  22. *'num_measures': 区域, 测量区域数(小卡尺个数)
  23. *set_metrology_object_param (MetrologyHandle, 'all', 'num_measures', 20)

  24. ****Edge detection:
  25. *'measure_sigma': 测量, 用于平滑的高斯函数的Sigma
  26. set_metrology_object_param (MetrologyHandle, 'all', 'measure_sigma', 1)
  27. *'measure_threshold': 测量, 最小边缘幅度阈值
  28. set_metrology_object_param (MetrologyHandle, 'all', 'measure_threshold', 20)     //***阈值30左右
  29. *'measure_select': 测量, 边缘端点的选择('all', 'first', 'last')
  30. set_metrology_object_param (MetrologyHandle, 'all', 'measure_select', 'all')
  31. *'measure_transition': ('all', 'negative', 'positive', 'uniform')
  32. set_metrology_object_param (MetrologyHandle, 'all', 'measure_transition', 'all')
  33. *'measure_interpolation': ('bicubic', 'bilinear', 'nearest_neighbor')
  34. set_metrology_object_param (MetrologyHandle, 'all', 'measure_interpolation', 'nearest_neighbor')

  35. ****Fitting the geometric shapes:
  36. *'min_score': 拟合, 最小分数(0.5, 0.7, 0.9)
  37. set_metrology_object_param (MetrologyHandle, 'all', 'min_score', 0.7)
  38. *'num_instances': 拟合, 成功拟合实例的最大数量(1, 2, 3, 4)
  39. set_metrology_object_param (MetrologyHandle, 'all', 'num_instances', 1)
  40. *'distance_threshold': (0, 1.0, 2.0, 3.5, 5.0)
  41. set_metrology_object_param (MetrologyHandle, 'all', 'distance_threshold', 3.5)
  42. *'max_num_iterations': (10, 100, 1000)
  43. set_metrology_object_param (MetrologyHandle, 'all', 'max_num_iterations', -1)
  44. *'rand_seed': (0, 1, 42)
  45. set_metrology_object_param (MetrologyHandle, 'all', 'rand_seed', 42)
  46. *'instances_outside_measure_regions': ('true', 'false')
  47. set_metrology_object_param (MetrologyHandle, 'all', 'instances_outside_measure_regions', 'false')

  48. *获取计量模型的计量对象的测量区域, 未执行所以无边缘位置结果.
  49. get_metrology_object_measures (Contours, MetrologyHandle, Index, 'all', Row, Column)  //*CHECK.

  50. ********************************************************************************
  51. *应用测量模型进行测量拟合
  52. apply_metrology_model (Image, MetrologyHandle)

  53. *获取计量模型的计量对象的测量区域, 已执行所以有边缘位置结果.
  54. get_metrology_object_measures (Contours, MetrologyHandle, 'all', 'all', Row1, Column1)  //*CHECK.


  55. *获取计量模型的计量对象的结果
  56. *Contour: 给定计量对象的结果轮廓
  57. *MetrologyHandle: 测量模型句柄
  58. *Index: 指定计量对象, 为all时所有计量对象的参数都被设置('all')
  59. *GenParamName: 通常设置为'result_type', 表示用GenParamValue返回方式和结果
  60. *GenParamValue: 通常设置为'all_param', 表示将所有测量参数到Parameter
  61. *Parameter: 返回的参数值
  62. *对于直线: 返回['row_begin', 'column_begin', 'row_end', 'column_end']
  63. *对于圆型: 返回['row', 'column', 'radius'] 或 ['x', 'y', 'radius']
  64. *对于椭圆: 返回['row', 'column', 'phi', 'radius1', 'radius2']
  65. *对于矩形: 返回['row', 'column', 'phi', 'length1', 'length2']
  66. get_metrology_object_result (MetrologyHandle, 'all', 'all', 'result_type', 'all_param', Parameter)

  67. *获取计量模型的计量对象的结果轮廓
  68. *Contour: 给定计量对象的结果轮廓。
  69. *MetrologyHandle: 测量模型句柄
  70. *Index: 指定计量对象, 为all时所有计量对象的参数都被设置('all')
  71. *Instance: 计量对象的实例('all')
  72. *Resolution: 相邻轮廓点之间的距离
  73. get_metrology_object_result_contour (Contour, MetrologyHandle, 'all', 'all', 1.5)

  74. get_metrology_object_result (MetrologyHandle, Index, 'all', 'used_edges', 'row', UsedRow)

  75. get_metrology_object_result (MetrologyHandle, Index, 'all', 'used_edges', 'column', UsedColumn)
  76. gen_cross_contour_xld (Cross, UsedRow, UsedColumn, 6, rad(45))
复制代码

奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
张满满 发表于 2023-12-11 17:19:22 | 显示全部楼层
微信截图_20231211171313.png 微信截图_20231211171638.png 微信截图_20231211171728.png 微信截图_20231211171751.png 微信截图_20231211171802.png
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
fate. 发表于 2023-12-11 17:39:11 | 显示全部楼层
问题是你要检测什么东西。
是检测线到某个物体的距离,还是角度,还是什么?
如果只是单纯找边类型的需求,找亮部分跟亮暗一块找,区别不大
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
 楼主| freekun139com 发表于 2023-12-11 18:16:47 | 显示全部楼层

大佬确实厉害,前面两张图就是我想要的效果,即检测区域全覆盖时只检测出边缘幅度大的边缘
看你测试这个边缘幅度可以设置到30是怎么做到的,主要受哪个参数影响的,感谢指点
另外你这个是什么工具,挺不错的
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
 楼主| freekun139com 发表于 2023-12-11 18:17:53 | 显示全部楼层
fate. 发表于 2023-12-11 17:39
问题是你要检测什么东西。
是检测线到某个物体的距离,还是角度,还是什么?
如果只是单纯找边类型的需求, ...

只是对参数与检测效果的疑问,可能我问题没描述清楚,给你造成困扰了,抱歉
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
halcon2016 发表于 2023-12-12 11:00:13 | 显示全部楼层
2023-12-12_105930.png
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
 楼主| freekun139com 发表于 2023-12-12 12:59:51 | 显示全部楼层

感谢大佬
主要参数就是这个最小分数,由于检测区域设置高的时候,那个边缘线所占的比例大概有一半
所以最小检测分数默认0.7是达不到的,这种情况下设置到0.5最小边缘幅度阈值可以达到30
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
张满满 发表于 2023-12-13 11:10:37 | 显示全部楼层
freekun139com 发表于 2023-12-11 18:16
大佬确实厉害,前面两张图就是我想要的效果,即检测区域全覆盖时只检测出边缘幅度大的边缘
看你测试这个 ...

平滑
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
 楼主| freekun139com 发表于 2023-12-14 09:39:48 | 显示全部楼层

不是平滑问题吧
主要参数就是这个最小分数,由于检测区域设置高的时候,那个边缘线所占的比例大概有一半
所以最小检测分数默认0.7是达不到的,这种情况下设置到0.5最小边缘幅度阈值可以达到30
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
cnsworder 发表于 2024-8-13 19:33:02 | 显示全部楼层
向大佬学习,卡尺拟合
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表