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

用灰度投影检测断开的栅线

[复制链接]
invoker1992 发表于 2023-7-25 11:40:16 | 显示全部楼层 |阅读模式
用灰度投影来检查断开的栅线,我感觉这种方法不错,此方法也是在网上学习到的,跟大家分享下。
代码:
  1. read_image (Image, 'C:/Users/sunjie/Desktop/断栅截图.png')
  2. get_image_size (Image, Width, Height)
  3. gen_rectangle1 (Rectangle, 0, 0, Height, Width)

  4. ****获得水平方向的灰度投影*****
  5. gray_projections (Rectangle, Image, 'simple', HorProjection, VertProjection)
  6. ******将水平投影灰度数据生成离散函数方便后续分析******
  7. create_funct_1d_array (HorProjection, Function)
  8. **********获取一维离散函数的X和Y值
  9. funct_1d_to_pairs (Function, XValues, YValues)
  10. *******找灰度值比50小的Y方向值***********
  11. newYValues := find(sgn(30-YValues),1)
  12. ********生成|newYValues|个常量,值为107
  13. tuple_gen_const (|newYValues|, 23, Newtuple)

  14. gen_region_points (Region6, newYValues, Newtuple)
  15. dilation_rectangle1 (Region6, Region6, 5, 1)
  16. dev_display (Image)
  17. dev_display (Region6)
复制代码
断栅截图.png
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
 楼主| invoker1992 发表于 2023-7-25 11:41:40 | 显示全部楼层
断开的地方水平方向的投影灰度值较低
截图.png
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
halcon2016 发表于 2023-7-25 13:22:33 | 显示全部楼层
思路不错
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
wenbo_bob 发表于 2023-7-25 17:52:49 | 显示全部楼层
楼主 有原图吗
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
雾里看花 发表于 2023-7-25 20:09:17 | 显示全部楼层
感谢分享
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
 楼主| invoker1992 发表于 2023-7-26 08:55:15 | 显示全部楼层

原图保密不能传,有断栅的截图,只是提供一种思路
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
HE--- 发表于 2023-7-26 09:30:13 | 显示全部楼层
不错,好文章,好思路。
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
HE--- 发表于 2023-7-26 15:07:58 | 显示全部楼层
大佬,我有一个疑问,tuple_gen_const (|newYValues|, 23, Newtuple),若拍照栅线是随机的,那怎么确定X的数据呢,单张图能看像素坐标,若实际生产当中这个变量应该如何获取
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
 楼主| invoker1992 发表于 2023-7-26 17:42:26 | 显示全部楼层
HE--- 发表于 2023-7-26 15:07
大佬,我有一个疑问,tuple_gen_const (|newYValues|, 23, Newtuple),若拍照栅线是随机的,那怎么确定X的 ...

实际在检查时肯定不是整张图来找灰度值,肯定是分区域找,那么找到的缺陷大致的位置就是:Row坐标是区域左上角坐标Row1,newYValues := (find(sgn(10-YValues),1)+Row1),column坐标为区域的中心坐标Column1,tuple_gen_const (|newYValues|, Column1, Newtuple) ,那么有了点了Row和column坐标就能形成缺陷的区域位置了。不知道你有没有明白我的意思。。
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
yaozzj 发表于 2023-7-27 09:00:31 | 显示全部楼层
思路不错,前提是要断开的位置比较水平或垂直,或者提前知道它的角度
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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