Halcon中几种常见的图像分割学习

为什么要用图像分割 ?

答: 为了使图像进一步缩小,可以将感兴趣的区域从背景中分离出来,使关键目标更便于辨别和分析。

图像分割的标准:像素灰度、边界、几何形状、颜色、纹理等。

Halcon中几种常见的图像分割学习_第1张图片

1. 阈值处理:

  1. 全局阈值:输出阈值范围内灰度的像素。
    Halcon中几种常见的图像分割学习_第2张图片
*MinGray:灰度下限
*MaxGray:灰度上限
threshold(Image : Region : MinGray, MaxGray)

示例:

*选择0-90之间灰度的图像
threshold (ImageFilled, Region, 0, 90)
*将不相连的区域分开成若干个区域
connection (Region, ConnectedRegions)
*形状选择宽度在30px-70px之间的区域
select_shape (ConnectedRegions, SelectedRegions, 'width', 'and', 30, 70)
select_shape (SelectedRegions, Letters, 'height', 'and', 60, 110)

在Halcon常使用 “灰度直方图” 工具可视化选取阈值范围。
Halcon中几种常见的图像分割学习_第3张图片
在Halcon常使用 “特征直方图” 工具可视化选取形状特征(这里既筛选了宽度&高度)。
Halcon中几种常见的图像分割学习_第4张图片
2. 基于直方图的自动阈值分割:

*Sigma:平滑值,值越大越平滑,反之
auto_threshold(Image : Regions : Sigma)

Halcon中几种常见的图像分割学习_第5张图片
Sigma值越大,波峰越少,分割区域数量越少。

  1. 自动全局阈值分割:此算子根据像素分布提供了可选的分割方法 :
    【1. 最大类间方差法 2.平滑直方图法】
*Method:分两个分割方法:
 			'max_separability'表示根据选择的极性,最大化分割
 			'smooth_histo'平滑直方图处理
*LightDark:表示极性,提取白或者黑
*UsedThreshold:返回所用的阈值
binary_threshold(Image : Region : Method, LightDark : UsedThreshold)

Halcon中几种常见的图像分割学习_第6张图片

binary_threshold (Image, LightRegion, 'max_separability', 'light', UsedThreshold)

*开运算区域:先腐蚀,再膨胀,用于处理微小毛刺和噪点
opening_circle (LightRegion, Region, 3.5)
  1. 局部阈值分割:适用于无法使用单一的阈值分割的情况,如背景比较复杂。
    一般和平滑滤波器 mean_image 一起使用。
*OrigImage:输入原图
*ThresholdImage:输入预处理图,用于局部变化对比 
*RegionDynThresh: 输出区域
*Offset:原图与均值图像对比之后大于此参数,会被输出
*LightDark:提取的极性,黑或者白
dyn_threshold(OrigImage, ThresholdImage : RegionDynThresh : Offset, LightDark)

2. 区域生长法:

  1. regiongrowing算子:将灰度相似的相邻的像素合并为同一区域
*Row 和 Column分别表示卷积核的XY数量
*Tolerance:表示卷积核中心像素灰度与相邻像素的差值公差,大于公差丢弃,小于公差合并
*MinSize:表示输出的区域的最小像素数量
regiongrowing(Image : Regions : Row, Column, Tolerance, MinSize)

3. 分水岭算法:

  1. watersheds_threshold算子:基于边缘的图像分割,通过寻找区域之间的分界线进行分割
*Basins:输出的盆地区域
*Threshold: 分割阈值,不要超出图像的的最大灰度
watersheds_threshold(Image : Basins : Threshold)

Halcon中几种常见的图像分割学习_第7张图片
以上,如有错误,欢迎提出批评,谢谢。。。

你可能感兴趣的:(Halcon)