摘要:预处理主要对图像进行全局处理,而实际只需要关注图像的局部区域就可以了,为了使检测范围进一步减小,可以将感兴趣的局部区域从背景中分离出来,使关键目标更便于辨识和分析。
图像分割的标准可以是:像素的灰度值、边界、几何形状、颜色、甚至是纹理。
图像分割的方法:
一、阈值处理
阈值:像素灰度值的一个范围。
前景:在阈值范围内 后景:在阈值范围外
当检测对象的图像灰度与背景差异比较大时,用阈值处理可以很方便的将其与背景分离开。
1. 全局阈值
*全局阈值
read_image(Image,'E:/C/halcon/tiaoma.jpg')
rgb1_to_gray (Image,GrayImage)
threshold(GrayImage,DarkArea,0,80)
2. 基于直方图的自动阈值分割方法
固定阈值会受到环境、人为因素干扰,因此可以使用自适应阈值进行调节。自适应阈值是一种基于直方图的阈值。其原理是,以灰度直方图中出现的谷底为分割点,对灰度直方图的波峰进行分割。因此,有多少个波峰,就会有多少个区域。
*基于直方图的自动阈值分割方法
read_image(Image,'E:/C/halcon/tiaoma.jpg')
rgb1_to_gray (Image,GrayImage)
*Sigma :高斯滤波的标准差
auto_threshold(GrayImage,Regions00,10)
3. 自动全局阈值分割方法
根据直方图的像素分布,提供可选择的分割方法:最大类间方差法、平滑直方图法
*自动全局阈值分割方法
read_image(Image,'E:/C/halcon/tiaoma.jpg')
rgb1_to_gray (Image,GrayImage)
*Method:分割方法('max_separability':最大限度的可分性, 'smooth_histo':直方图平滑)
*LightDark:提取的是黑色部分还是白色部分
*UsedThreshold:自动阈值使用的阈值值
binary_threshold (GrayImage,rEGIONmAXsPE,'max_separability','dark',UsedThreshold)
参数3:最大类间方差法 'max_separability' 平滑直方图法:smooth_histo
参数4:表示提取的是前景还是后景:light,dark.
最后一个是返回的阈值结果
4. 局部阈值分割方法
适用于一些无法用单一灰度进行分割的情况,如:背景灰度比较复杂等等情况。
5. 其他阈值分割方法
二、区域提取
获取具有相似灰度的相连区域,用这种方法寻找相邻的符合条件的像素。
基本思想是:在图像上选择一个种子(像素或者区域),然后从种子邻域像素开始搜索,将灰度或者颜色相近的像素附加在种子上,最终将代表同一物体的像素全部归属同一种子区域,达到将目标物体分割出来的目的。
1. 区域生长法
步骤:
*区域生长法
read_image(Image,'E:/C/halcon/tiaoma.jpg')
mean_image(Image,Mean,5,5)
*参数3/4:内核矩阵
*参数5:定义了两个相邻模板中心灰度值差
*两个相邻模板中心灰度值的差的绝对值小于 给定的Tolerance的值 则会认为这两个区域属于同一个区域
*参数6:MinSize 作为一个限制,限定了用上面方法分割出的区域最终不能小于MinSize 给定的值,否则不作为*区域输出。
regiongrowing(Mean,Regions,1,1,3.0,100)
closing_circle(Regions,RegionsClosing,3.5)
三、边缘检测
1. 分水岭算法