Blob分析实例-检测正面的瓶盖

功能:检测出图中正面的瓶盖位置

Blob分析实例-检测正面的瓶盖_第1张图片

1、读取图像。在之前的章节已经讲过,程序代码如下:

2、图像灰度化。灰度化,在RGB模型中,如果R=G=B时,则彩色表示一种灰度颜色,其中R=G=B的值叫灰度值,因此,灰度图像每个像素只需一个字节存放灰度值(又称强度值、亮度值),灰度范围为0-255。调用函数“rgb1_to_gray()”进行灰度化处理,并显示灰度图像

Blob分析实例-检测正面的瓶盖_第2张图片

函数:rgb1_to_gray(RGBImage : GrayImage : : )

功能:把一张RGB图像转化为灰度图像

参数:RGBImage:输入的RGB图像

GrayImage:输出,得到的灰度图像

3、图像二值化。图像二值化( Image Binarization)就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的黑白效果的过程。

     选择菜单栏中【打开灰度直方图】,弹出“灰度直方图”界面,选择【阈值】,拖动阈值线至合适的位置,选择【插入代码】,关闭界面。

Blob分析实例-检测正面的瓶盖_第3张图片

函数:threshold(Image :Region : MinGray, MaxGray : )

功能:将图像根据灰度值二值化

参数:Image:需要进行二值化的图像

Region:输出,二值化后的结果区域

MinGray:最小灰度值,默认128

MaxGray:最大灰度值,默认255,必须大于MinGray

Blob分析实例-检测正面的瓶盖_第4张图片

4、二值化之后的图像,会发现有几个连通区域,但如果不进行任何处理,此时在halcon中,它会认为是一个连通区域。因此,需要插入connection()函数

Blob分析实例-检测正面的瓶盖_第5张图片

函数:connection(Region : ConnectedRegions : : )

功能:计算出区域中连接的部分

参数: Region:要计算的区域

ConnectedRegions:输出,计算后的Region数组,相连的部分将被划分为一个区域,会以不同颜色加以区分

Blob分析实例-检测正面的瓶盖_第6张图片

5、选出正面瓶盖。至此,只剩下2个绿色的连通区域,接下来的目标就是将这2个区域分开,首先用“roundness”,拖拽阈值线至合适位置。通过“roundness”筛选之后,上面的绿色区域排除掉,但还可能有一些非常小的绿色的圆,因此,再添加一个“area”函数,至此,我们挑选出了一个正面的瓶盖。

Blob分析实例-检测正面的瓶盖_第7张图片

Blob分析实例-检测正面的瓶盖_第8张图片

函数:select_shape(Regions : SelectedRegions : Features,Operation, Min, Max : )

功能:从一个区域数组中选择出符合某特征条件的区域

参数:Regions:输入的区域数组

SelectedRegions:输出,选出的符合某些特征条件的区域数组

Features:条件特征,详见区域特征说明

Operation:对于符合特征的区域的连接操作,可以是And或者Or

Min:特征的最小值

Max:特征的最大值

你可能感兴趣的:(HALCON)