halcon-图像分割

图像分割的方法有阈值分割、边缘检测、区域生长、霍夫变换等。

一、阈值分割

是把图像的灰度分成不同的等级,然后用设置灰度门限(阈值)的方法确定有意义对的区域或要分割物体的边界。

read_image(Image, 'letters')
*计算图像的灰度直方图
gray_histo(Image, Image, AbsoluteHisto, RelativeHisto)
*从直方图中确定灰度值阈值
histo_to_thresh(RelativeHisto, 8, MinThresh, MaxThresh)
*根据上面计算得到的直方图谷底进行阈值分割
threshold(Image, Region, MinThresh[0], MaxThresh[0])

halcon-图像分割_第1张图片

根据直方图谷底确定阈值法

二、边缘检测

边缘检测的典型算子有Roberts算子、Sobel算子、Prewitt算子、Kirsch算子、高斯-拉普拉斯算子

Sobel算子是较为常用的边缘检测方式

read_image(Image4, 'fabrik')
*sobel滤波
sobel_amp(Image4, EdgeAmplitude, 'sum_abs', 3)
*阈值分割得到边缘
threshold(EdgeAmplitude, Region5, 10, 255)
*边缘骨骼化
skeleton(Region5, Skeleton1)
dev_display(Skeleton1)

halcon-图像分割_第2张图片

Sobel滤波

halcon-图像分割_第3张图片

 边缘骨骼化

三、区域生长

将一幅图像分成许多小的区域,并将具有相似性质的像素集合起来构成区域。

read_image(Image9, 'fabrik')
*进行区域生长操作
regiongrowing(Image9, Regions, 1, 1, 1, 1000)
*创建一个空的区域
gen_empty_region(EmptyRegion)
*依据灰度值或颜色填充两个区域的间隙或分割重叠区域
expand_gray(Regions, Image9, EmptyRegion, RegionExpand, 'maximal', 'image', 4)

halcon-图像分割_第4张图片

区域生长分割

halcon-图像分割_第5张图片 最终结果

 四、Hough变换

Hough变换是检测、定位直线和解析曲线的有效方法,它把二值图变换到Hough参数空间,在参数空间用极值点的检测来完成目标的检测。

read_image(Image10, 'fabrik')
*获取目标区域图像
rectangle1_domain(Image10, ImageReduced, 170, 280, 310, 370)
*用sobel边缘检测算子提取边缘
sobel_dir(ImageReduced, EdgeAmplitude1, EdgeDirection, 'sum_abs', 3)
*阈值分割得到边缘区域
threshold(EdgeAmplitude1, Region8, 55, 255)
reduce_domain(EdgeDirection, Region8, ImageReduced1)
*用边缘方向信息进行霍夫变换
hough_lines_dir(ImageReduced1, HoughImage, Lines, 4, 2, 'mean', 3, 25, 5, 5, 'true', Angle, Dist)
*根据得到的angle,dist参数生成线
gen_region_hline(Regions1, Angle, Dist)

halcon-图像分割_第6张图片

进行Hough变换

halcon-图像分割_第7张图片生成Hough变换得到的线条 

你可能感兴趣的:(halcon,计算机视觉,opencv,图像处理)