因爱智能

halcon学习笔记(9)——例子fin区域运算分割图像学习

  例子还是手册中的,例子叫fin.hdev;是检测一个圆形结构上出的“小尾巴”;步骤是,第一,分割出背景和目标物;第二,分割并关闭想要的圆形物体的后的背景图(a);第三,用背景(a)减去分割关闭圆结构的图(b),得到想多余的小尾巴(c);第四,优化小尾巴(c),去除干扰,得到优化后的小尾巴(d),下图即为a-b=c,c优化后得到d处理图:


      原图如下:


     下面是代码:

[plain] view plain copy 在CODE上查看代码片派生到我的代码片

  1. * fin.hdev: Detection of a fin  
  2. *   
  3. dev_update_window ('off')  
  4. read_image (Fin, 'fin2')  
  5. *read_image (Fin, 'fin1')  
  6. *read_image (Fin, 'fin3')  
  7.   
  8. get_image_size (Fin, Width, Height)  
  9. dev_close_window ()  
  10. dev_open_window (0, 0, Width, Height, 'black', WindowID)  
  11. dev_display (Fin)  
  12. set_display_font (WindowID, 14, 'mono', 'true', 'false')  
  13. disp_continue_message (WindowID, 'black', 'true')  
  14. stop ()  
  15. threshold (Fin, Regions, 0, 244)  
  16.   
  17. bin_threshold (Fin, Dark)  
  18. *自动阈值分割,通过各种内部运算,分割值较低的一部分  
  19. difference (Fin, Dark, Background)  
  20. *比较图像的不同,比较fin和阈值后分割后图像Dark,目的是分割出背景  
  21.   
  22. dev_set_color ('blue')  
  23. dev_set_draw ('margin')  
  24. dev_set_line_width (4)  
  25. dev_display (Background)  
  26. disp_continue_message (WindowID, 'black', 'true')  
  27. stop ()  
  28. closing_circle (Background, ClosedBackground, 250)  
  29. *关闭圆形结构图形,小于半径250的圆形圆形结构将被忽略,也就是去那个小尾巴  
  30.   
  31. dev_set_color ('green')  
  32. dev_display (ClosedBackground)  
  33. disp_continue_message (WindowID, 'black', 'true')  
  34. stop ()  
  35.   
  36. difference (ClosedBackground, Background, RegionDifference)  
  37. *还是比较,用灰度图像Background和去掉小尾巴的图像ClosedBackground进行求差运算  
  38.   
  39. opening_circle (RegionDifference,FinRegion, 2.5)  
  40. *与关闭相反,打开这部分图像中半径大于参数的图像,并分割出来  
  41.   
  42. *opening_rectangle1 (RegionDifference, FinRegion, 5, 5)  
  43. *打开矩形结构,效果和圆形差不多  
  44.   
  45. dev_display (Fin)  
  46. dev_set_color ('red')  
  47. dev_display (FinRegion)  
  48. area_center (FinRegion, FinArea, Row, Column)  
  49. dev_set_draw ('fill')  
  50. dev_set_line_width (1)  
  51. dev_update_window ('on')  
  52. disp_continue_message (WindowID, 'black', 'true')  
  53. stop () 

评论