设置首页收藏本站
开启左侧

测量圆的直径

  [复制链接]
rosam 发表于 2017-3-23 00:52:55 | 显示全部楼层 |阅读模式
大神帮我看看我的测量圆直径的算法是否OK?
22.png
  1. * Image Acquisition 01: Code generated by Image Acquisition 01
  2. read_image (Image, 'C:/Users/Administrator/Desktop/22.png')
  3. *要测量一个圆的直径,可以先通过阈值筛选出黑色部分
  4. threshold(Image, Region, 0, 100)
  5. *将选中部分组合
  6. connection (Region, ConnectedRegions)
  7. *选择其中类圆度高的部分根据选中部分与圆的相似度筛选出圆型部分
  8. select_shape(ConnectedRegions, SelectedRegions, 'area', 'and', 150, 99999)
  9. *扩张有一个圆形结构元素的地区 Radius 圆半径
  10. dilation_circle (SelectedRegions, RegionDilation, 8.5)
  11. *用一个圆形的结构元素进行腐蚀图像(小于半径的区域会被腐蚀掉,一般用于有弧形的区域,大多数用这个算子)
  12. erosion_circle (RegionDilation, RegionErosion,8.5)
  13. *计算两个区域的差异
  14. difference(RegionDilation, RegionErosion, RegionDifference)

  15. union1(RegionDifference, RegionUnion)
  16. *提取其边缘轮廓。
  17. edges_sub_pix (Image, Edges, 'lanser2', 0.3, 10, 20)

  18. *用一个椭圆去近似它(这个圆形区域毕竟不是真正的圆,需要进行拟合)
  19. *从而得到这个区域的中点坐标 Row, Column,与x轴的角度Phi,半长轴Ra,半短轴Rb,开始角度StartPhi,结束角度EndPhi,
  20. fit_ellipse_contour_xld (Edges, 'ftukey', -1, 2, 0, 200, 3, 2, Row, Column, Phi, Radius1, Radius2, StartPhi, EndPhi, PointOrder)
复制代码
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
Criss 发表于 2017-3-23 07:34:57 | 显示全部楼层
测量请使用卡尺工具,其他算法都是不靠谱或者不准确的。
你可以在本站下载鸟叔封装的spoke卡圆算子(或halcon自带的metrology),获取圆的半径或者坐标位置。
QQ截图20170329101651.png
游客,如果您要查看本帖隐藏内容请回复


QQ截图20170329101235.png

  1. Radius = 149.861
复制代码
那么直径就是2*R = 2*149.861=299.722 (pixel),再根据像素当量换算成实际尺寸即可。

奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
手心的梦 发表于 2023-3-30 11:16:15 | 显示全部楼层
我觉得另外一款更好,用四点测圆的不方便
  1. read_image (Image, 'C:/Users/CZYF05/Desktop/测量软件/XVision -1/bin/Debug/HalconEngine/2.bmp')
  2. dev_display(Image)
  3. dev_get_window (WindowHandle)
  4. dev_set_draw ('margin')
  5. draw_circle (WindowHandle, roiRow, roiColumn, roiRadius)
  6. *创建测量模型
  7. create_metrology_model (MetrologyHandle)
  8. *设置测量对象的图像大小
  9. get_image_size (Image, Width, Height)
  10. set_metrology_model_image_size (MetrologyHandle, Width, Height)
  11. *对象参数
  12. genParamName:=['start_phi','end_phi','measure_transition','measure_select','num_measures','min_score']
  13. genParamValue:=[0,6.28318,'all','first',20,0.4]
  14. *创建测量ROI,第5,6个参数是测量矩型的长度和宽度(其实是一半)
  15. add_metrology_object_circle_measure (MetrologyHandle, roiRow, roiColumn, roiRadius, roiRadius/6, roiRadius/32, 1, 30, genParamName, genParamValue, Index)
  16. *应用测量

  17. apply_metrology_model (Image, MetrologyHandle)
  18. *获取测量结果
  19. get_metrology_object_result (MetrologyHandle, 0, 'all', 'result_type', 'all_param', Parameter)
  20. get_metrology_object_measures (Contours, MetrologyHandle, 'all', 'all', Row2, Column2)
  21. get_metrology_object_result_contour (Contour, MetrologyHandle, 0, 'all', 1.5)
  22. test:=Parameter[2]
  23. dev_display (Contour)
  24. dev_display (Contours)
  25. Result := 'OK'
  26. *清除/销毁测量对象
  27. clear_metrology_model (MetrologyHandle)
  28. return ()
复制代码
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
小沫爱视觉 发表于 2017-4-8 08:55:49 | 显示全部楼层
卡尺工具是什么呢?没找到呀 能不能指点一下?
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
Criss 发表于 2017-4-8 09:20:47 | 显示全部楼层
小沫爱视觉 发表于 2017-4-8 08:55
卡尺工具是什么呢?没找到呀 能不能指点一下?

首页搜索 spoke 就可以了,这个是卡圆的卡尺
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
小沫爱视觉 发表于 2017-4-8 09:39:52 | 显示全部楼层
Tencent 发表于 2017-4-8 09:20
首页搜索 spoke 就可以了,这个是卡圆的卡尺

感谢指点,这个整套都是一个工具?就是鸟叔封装好的? 是吗
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
小沫爱视觉 发表于 2017-4-8 10:12:44 | 显示全部楼层
小沫爱视觉 发表于 2017-4-8 09:39
感谢指点,这个整套都是一个工具?就是鸟叔封装好的? 是吗

书籍的连接在哪 呢?能不能发一下?:)
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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