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

怎么在这幅图片上把已经有的圆抠出来

[复制链接]
youyiyang 发表于 2021-10-28 14:56:11 | 显示全部楼层 |阅读模式
怎么在这幅图片上把已经有的圆抠出来,然后不要背景,然后再判断这些圆里面有十字痕迹的保留,没有的去掉,因为要判断是不是钉子

1.jpg
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
Criss 发表于 2021-10-28 17:38:04 | 显示全部楼层
缩小定义域 reduce_domain,之后就可以单独每个独立阈值找螺丝十字!
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
 楼主| youyiyang 发表于 2021-10-28 20:17:15 | 显示全部楼层
上图这些圆都是object, 怎么转换成region, 因为 reduce_domain需要对region进行操作
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
Criss 发表于 2021-10-29 16:16:06 | 显示全部楼层
youyiyang 发表于 2021-10-28 20:17
上图这些圆都是object, 怎么转换成region, 因为 reduce_domain需要对region进行操作

你怎么提取出来的呢?阈值找到的出来就是区域region,其他找到的,就自己转换吧。比如:轮廓转区域 gen_region_contour_xld
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
 楼主| youyiyang 发表于 2021-11-1 18:22:09 | 显示全部楼层
圆里面的十字怎么判断?
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
 楼主| youyiyang 发表于 2021-11-1 21:50:42 | 显示全部楼层
  1. * 识别区域
  2. *scale_image(Image,Invert,minGray,maxGray)
  3. gen_rectangle1 (Rectangle, startY, startX, endY, endX)
  4. reduce_domain (Image, Rectangle, ImageReduced)
  5. * 初步边缘提取
  6. edges_image (ImageReduced, ImaAmp, ImaDir, 'lanser2', 0.9, 'nms', 8, 16)
  7. threshold (ImaAmp, Region1, 1, 255)
  8. connection (Region1, ConnectedRegions)
  9. select_shape (ConnectedRegions, SelectedRegions, ['outer_radius','anisometry','area'], 'and', [10,1,50], [30,3.9,300])
  10. shape_trans (SelectedRegions, RegionTrans, 'outer_circle')
  11. dilation_circle (RegionTrans, RegionDilation,5.5)
  12. union1 (RegionDilation, RegionUnion)
  13. reduce_domain (Image, RegionUnion, ImageReduced2)
  14. * 详细边缘提取
  15. edges_sub_pix (ImageReduced2, Edges, 'lanser2', 0.1, 8, 16)
  16. select_shape_xld (Edges, SelectedXLD, ['contlength','outer_radius','circularity'], 'and', [40,10,0.5], [99999,99999,1])

  17. *segment_contours_xld (SelectedXLD, ContoursSplit, 'lines_circles', 4, 2, 2)
  18. gen_region_contour_xld(SelectedXLD, SelectedRegion_ContoursSplit,'filled')
  19. union1 (SelectedRegion_ContoursSplit, RegionUnion_new)
  20. reduce_domain( Image,RegionUnion_new, ImageReduced_RegionUnion_new)
  21. threshold(ImageReduced_RegionUnion_new, Region2, 1, 255)
  22. connection (Region2, ConnectedRegions2)

  23. * 筛选
  24. count_obj (ConnectedRegions2, NumberContours)
  25. *gen_empty_obj (Circles)
  26. for i := 1 to NumberContours by 1
  27.     select_obj (ConnectedRegions2, ObjectSelected, i)
  28.     gen_region_contour_xld(ObjectSelected, Object123, 'filled')
  29.     *dev_display (ObjectSelected)
  30.     reduce_domain(Image, Object123, Image_Object_Reduced)
  31.     *get_contour_global_attrib_xld (ObjectSelected, 'cont_approx', Attrib)
  32.     *if (Attrib == 1)
  33.     *    concat_obj (Circles, ObjectSelected, Circles)
  34.     *endif
  35. endfor
复制代码

现在能够把钉子和类似钉子的圆形取出来,而且可以循环检查,但是gen_region_contour_xld(ObjectSelected, Object123, 'filled')和 reduce_domain(Image, Object123, Image_Object_Reduced)因为ObjectSelected不是region所以不行
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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