Halcon中的区域连通算子( 区域连通算法,将图象被分割为区域 ):
区域生长算子
regiongrowing(Image: Regions: Row, Column, Tolerance, MinSize: )
函数作用:
用区域生长实现图像分割
函数原理:
如果相邻像素的灰度值差小于等于Tolerance,则被融为一个区域。因为矩形一般大于1个像素,所以常常在调用regiongrowing前会用大小至少为Row*Column的低通滤波器平滑一下。如果图像包含小噪声并且矩形很小,平滑后这些因素大都会被去除。而区域包含至少MinSize个点才被挑选出来。区域生长是一个非常快的算子,因此适合用于对时间要求严苛的应用中。
参数列表:
Image:输入图像
Regions:输出被分割后的区域
Row:被检测像素的行距离,Row >= 1 && odd(Row) (为奇数的意思)
Column:被检测像素的列距离,Column >= 1 && odd(Column)
Tolerance:被检测像素的灰度差小于等于该值时,被计入同一区域,Tolerance >= 0 && Tolerance < 127
MinSize:输出区域的最小大小,MinSize >= 1
算子时间复杂度:
如果N是输出区域的个数,M是这些区域中点的个数,那复杂度为O(N*log(M)*M)
可能前置项:
binomial_filter, mean_image, gauss_image, smooth_image, median_image, anisotropic_diffusion
可能后置项:
select_shape, reduce_domain, select_gray
可替代项:
regiongrowing_n, regiongrowing_mean, label_to_region
原图:
mean_image(ImageReduced, ImageMean, 2, 2)
regiongrowing(ImageMean, Regions,5, 5, 6, 1000)
效果如下,选中除了三个焊点之外的region(背景区域):
regiongrowing(ImageMean, Regions,1, 1, 6, 1000)
行距离,列距离改为1后,生成两个region(红与绿)
Connection算子
Compute connected components of a region.用来计算输入区域中的所有连通域。对应的反向操作是union1。
输入:一个region;
输出:所有连通域的组合vector;
返回的连通域的最大数量可通过set_system('max_connection',<Num>)进行设置,默认0则返回所有连通域数目。
原图
threshold (ImageReduced, Regions1, 0, 201) *阈值取出焊点区域 connection(Regions1, ConnectedRegions) *取连通区域 count_obj(ConnectedRegions, N1) *取连接区域数量
处理后连接区域数量为4
其它相关算子:
ConnectedRegio
ConnectedRegions)
ConnectedRegions
ConnectedRegions

