关键词:Halcon;XLD(亚像素轮廓);Region(像素区域);线检测;边缘检测;机器视觉检测;图像处理
在机器视觉检测中,经常会涉及针对裂缝和划痕等的线检测需求(如图一),当采用Halcon进行编程检测时,常用的线检测(如lines_gauss算子)或者边缘检测方法(如edges_color_sub_pix算子),最终的输出结果(如图二)大多为XLD(亚像素轮廓)类型,但是大多的Blob分析等方法的算子所针对的变量类型多为Region。而Halcon中自带的XLD转Region算子(如gen_region_contour_xld算子)只能将其转换为封闭的区域(如图三)封闭的边界区域(如图四),改变了原有线条的结构,无法正常后续的形态分析。
因此,针对此项目实战中的常见需求,整理出自己编写的转换函数XLD_to_Region (Lines, OutRegion),在不改变原有XLD线条结构的条件下将其转换为Region类型,并且支持多轮廓同时转换,且保留原有的连通性和轮廓的排序,效果如图五所示。经联合编程,代码可嵌入C++、C#和Python等工程,且由于算法主要采用的形态学方法,运行效率较高,可适用于机器视觉在线检测项目。
图一 裂缝原图
图二 高斯线检测提取出的裂缝XLD轮廓线
图三 Halcon中自带的XLD转Region算子效果(封闭的区域)
图四 Halcon中自带的XLD转Region算子效果(封闭的边界区域)
图五 自建的XLD_to_Region算子转换效果
程序源代码可在微信公众号【洞观科研】获取网盘链接下载。