一、描述
检测下图中注塑吸嘴的缺口。
二、方法
主要方法:需要得到实物图像,对图像缺口处转化为凸包,然后将原始图和凸包图做差值运算,得到凸嘴部分。
三、Halcon代码
******************************************第一步 初始化**************************************************
*读取一张图像
read_image (Hull, '1')
*获取图像大小
get_image_size (Hull, Width, Height)
*关闭已经打开的窗口
dev_close_window ()
*打开一个新的窗口
dev_open_window (0, 0, Width, Height, 'black', WindowID)
*显示图像
dev_display (Hull)
******************************************第二步 图像处理**************************************************
*阈值操作,分割出吸嘴
threshold (Hull, Dark, 0, 80)
*补集运算,获取背景区域
difference (Hull, Dark, Light)
*对背景区域进行连通处理
connection (Light, ConnectedRegions)
*过滤出背景区域
select_shape (ConnectedRegions, NoHullCand, 'area', 'and', 50000, 9999999)
*对过滤的背景区域进行闭运算,填充背景间隙和平滑背景边界
closing_circle (NoHullCand, NoHull, 13.5)
*补集运算,获取吸嘴区域
difference (Hull, NoHull, Region)
*对吸嘴区域开运算
opening_circle (Region, RegionOpening, 2.5)
*对吸嘴区域进行连通处理
connection (RegionOpening, ConnectedRegions)
*过滤出吸嘴区域
select_shape (ConnectedRegions, RegionHull, 'area', 'and', 5000, 9999999)
*将吸嘴区域转换为凸包区域
shape_trans (RegionHull, ConvexHull, 'convex')
*补集运算,获取吸嘴的缺口
difference (ConvexHull, RegionHull, Region)
*对吸嘴缺口区域进行连通处理
connection (Region, ConnectedRegions)
*过滤出吸嘴缺口
select_shape (ConnectedRegions, LargeHoles, 'area', 'and', 2000, 99999)
select_shape (LargeHoles, Holes, 'convexity', 'and', 0, 0.85)
*显示图像
dev_display (Hull)
*设置输出对象的线宽度
dev_set_line_width (5)
*设置区域的填充方式
dev_set_draw ('margin')
*设置输出对象显示颜色为红色
dev_set_color ('red')
*显示吸嘴缺口
dev_display (Holes)
完整项目代码下载地址:Halcon项目之注塑吸嘴缺口检测资源-CSDN文库
四、主要算子介绍
1.shape_trans(Region : RegionTrans : Type : )
shape_trans (RegionHull, ConvexHull, 'convex')
3、halcon算子shape_trans,用于变换区域的形状_halcon最大内接矩形-CSDN博客
2.select_shape(Regions : SelectedRegions : Features, Operation, Min, Max : )
select_shape (LargeHoles, Holes, 'convexity', 'and', 0, 0.85)
本代码中使用的'convexity'参数,是根据凸包性来过滤图像的