QQ登录

只需一步,快速开始

halcon工业视觉检使用四方向光照测电路板漏焊缺陷

[ 复制链接 ]
当前这个例程实现电路板焊锡漏焊的检测。
首先对电路板从上下左右四个方向照射与拍照,获得四张图片。一次性读入到同一变量中处理。
然后对此变量,也就是对四张图片阈值分割,提取暗部分(焊锡部分)
也就是获取要检测焊锡的区域,在此区域内检测有焊锡与无焊锡区域。
再对此变量分割,提取亮部分。为有焊锡区域,
提取黑色区域与有焊锡区域差集,表示应有但没焊锡区域,进而可以检测是否有漏焊
下面是具体代码

halcon工业视觉检使用四方向光照测电路板漏焊缺陷

halcon工业视觉检使用四方向光照测电路板漏焊缺陷


  1. * halcon工业视觉检使用四方向光照测电路板漏焊缺陷
  2. dev_close_window ()
  3. dev_open_window (0, 0, 512, 512, 'black', WindowID)
  4. set_display_font (WindowID, 18, 'mono', 'false', 'false')
  5. dev_update_window ('off')
  6. get_system ('clip_region', Information)
  7. set_system ('clip_region', 'true')
  8. *读取四个角度光照下的四张图
  9. read_image (Images, ['ic0','ic1','ic2','ic3'])
  10. for i:=1 to 4 by 1
  11.     select_obj (Images, ObjectSelected, i)
  12.     dev_display (ObjectSelected)
  13. endfor
  14. dev_set_draw ('margin')
  15. stop ()
  16. *多张单通道图片合成单张多通道图片
  17. channels_to_image (Images, Ic)
  18. mean_n (Ic, ImageMean)
  19. *对四张图片阈值分割,提取暗部分(焊锡部分)
  20. threshold (Images, Darks, 0, 40)
  21. union1 (Darks, Dark)
  22. fill_up (Dark, DarkFilled)
  23. dev_display (Images)
  24. dev_display (DarkFilled)
  25. dev_disp_text ('获取要检测焊锡的区域', 'window', 'top', 'left', 'black', [], [])
  26. stop()
  27. *对四张图像分割,提取亮部分
  28. threshold (Images, Lights, 100, 255)
  29. union1 (Lights, Light)
  30. *求黑白两区域交集的区域,提取焊锡反光部分
  31. intersection (DarkFilled, Light, Intersection)
  32. *提取背板,(焊锡之外部分)
  33. complement (DarkFilled, Back)
  34. *焊锡区域膨胀,提取有焊锡区域
  35. expand_region (Intersection, Back, RegionExpanded, 'maximal', 'image')
  36. fill_up (RegionExpanded, Good)
  37. dev_set_color('green')
  38. dev_display (Images)
  39. dev_display (Good)
  40. dev_disp_text ('提取检测区域中,已焊锡区域', 'window', 'top', 'left', 'black', [], [])
  41. stop()
  42. *提取黑色区域与有焊锡区域差集,表示应有但没焊锡区域。
  43. difference (DarkFilled, Good, Rest)
  44. expand_gray (Rest, Ic, Good, Bad, 6, 'image', 5)
  45. connection (Bad, ConnectedBad)
  46. select_shape (ConnectedBad, BigBad, 'area', 'and', 150, 99999)
  47. fill_up (BigBad, Bad)
  48. dev_set_color('red')
  49. dev_display (Images)
  50. dev_display (Bad)
  51. dev_disp_text ('提取检测区域中,未焊锡区域', 'window', 'top', 'left', 'black', [], [])
  52. stop()
  53. *结果显示
  54. dev_display (Images)
  55. dev_set_color ('green')
  56. dev_set_draw ('margin')
  57. dev_set_line_width (3)
  58. dev_display (Good)
  59. count_obj (Bad, Number)
  60. if(Number)
  61.     dev_set_color ('red')
  62.     dev_display (Bad)
  63.     dev_set_draw ('fill')
  64.     dev_disp_text ('不合格', 'window', 'top', 'left', 'black', [], [])
  65. endif
  66. dev_set_line_width (1)
  67. dev_update_window ('on')
  68. set_system ('clip_region', Information)
复制代码


回复

使用道具 举报

快速回复 返回列表 客服中心 搜索