开启左侧

图像分割几个算子的区别及其应用?

[复制链接]
韦志成 发表于 2016-11-17 00:04:22 | 显示全部楼层 |阅读模式
auto_threshold,var_threshold,dyn_threshold,bin_threshold,四个阈值分割的区别及用在哪些方面?
Criss 发表于 2016-11-17 10:53:31 | 显示全部楼层
阈值分割主要用于对图像按照相同集合的灰度值提取成多个区域,该算法也是blob提取用到的核心算法。
根据应用场景和不同图像的效果,分为全局阈值和局部阈值。
threshold 是全局阈值,不管你图像是怎么样的,都是全局分割,当然你也可以使用灰度直方图工具去自动计算范围进行分割;
其中,bin_threshold 是自动全局阈值,要求图像前景和背景图像差异明显,灰度直方图呈现明显的两个波峰,一个是目标一个是背景,即可自动计算峰谷提取区域;
在halcon 12版本已经升级为binary_threshold可以自由筛选白色的还是黑色的区域(包含halcon 13.0 );
  1. read_image (Image, 'fin2')
  2. bin_threshold (Image, Region)
复制代码
这样,背景和目标就可以自动的明确的区分出来了。
而dyn_threshold和var_threshold都是局部阈值,它的输入图像是经过高斯滤波以后的图像,通过原始图像和滤波后图像的对比度进行匹配找出目标。用在背景不怎么均匀的图像上面。var_threshold还通过标准偏差来分析图像,具体请参考《HALCON工业应用实用教程》第二册第8.1.4章。
  1. read_image (Image, 'alpha1')
  2. median_image (Image, ImageMedian, 'circle', 10.5, 'mirrored')
  3. dyn_threshold (Image, ImageMedian, RegionDynThresh, 15, 'dark')
复制代码

原图:
QQ截图20161117104915.png

效果图:
QQ截图20161117104906.png

缺陷检测常用dyn_threshold和var_threshold算子,但是var_threshold比dyn_thrshold执行时间更长。
最后一个更简单, auto_threshold 根据灰度直方图,提取峰谷(经过高斯滤波平滑后的图像的灰度直方图),然后把按照峰谷分割图像,一个峰属于一个区域,这样会划分很多个区域。


您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表