Halcon6:阈值分割函数总结【旧笔记整理】
(1) fast threshold(mage: Region: MinGray, MaxGray, Minsize:)
①算子描述:
全局阈值,此算子与threshold类似,只是多了一个輸入参数MinSize :提取对象的最小尺寸
(2) gray histo(Regions, Image : : : AbsoluteHisto, RelativeHisto)
histo to thresh (RelativeHisto. Siama. MinThresh. MaxThresh)
threshold (Image, Region, MinThresh, MaxThresh).
①算子描述:
灰度直方图算子自动确定國值(通常为以上三个算子连用)
(3) auto threshold(lmage: Regions: Siąma:)
①算子描述:
根据灰度直方图分割图像,此算子与histo to thresh类似。
(4) binary threshold(mage, Region, Method, LightDark, UsedThreshold)
①算子描述:
二进制國值,只能用于具有双峰直方图的图像,bin_threshold算子的更新版;
②参数说明:
Method:分割方法('max separability':最大限度的可分性;'smooth histo':直方图平滑)
UsedThreshold (輸出参数) :自动國值使用的國值
(5) dual threshold(lmage : RegionCrossings: MinSize, MinGray, Threshold :)
①算子描述:
它只能分割出灰度值高的亮区域,不能分割出灰度值低的暗区域。
②参数说明:
Threshold:表示用于分割的國值数值
MinSize:表示分割出来的区域的最小面积(即数像素的数目个数)
MinGray:表示分割出来的区域对应的原图中图像像素的最高灰度不能低于MinGray设定值。
(6) hysteresis threshold(mage : RegionHysteresis : Low, High, MaxLength:)
①参数说明:
Low:低于低值的像素点被抛弃
High:高于高國值的像素点被接受,称为安全点,
MaxLength :处在低國值与高國值中间的点称为潜在点,如果潜在点距离安全点小于MaxLength ,则将其变为安全点
(7) local threshold(Image: Region : Method, LightDark, GenParamName, GenParamValue)
①算子描述:
局部阈值分割,该算法是一种文本二值化技术,为文档图像提供了良好的效果。
(8) char threshold(Image, HistoRegion: Characters: Sigma, Percent: Threshold )
①算子描述:
字符提取阈值分割。
(9) watersheds threshold(lmage: Basins : Threshold:)
①算子描述:
使用國值从图像中提取分水岭盆地。
第一步:计算出分水岭(不使用该参数Threshold ) ,分割的盆地和调用算子watersheds得到的盆地是相同的;
第二步:如果被一个分水岭分割的相邻盆地与对应分水岭的高度差小于Threshold ,盆地依次合并。假设B1和B2分别是两个相邻盆地的最小灰度值, w是盆地对应分水岭的最小灰度值。当满足以下条件时,两个盆地合并: maxW-B1, W-B2<Threshold。由此得到的盆地存储在Basins变量中。
极端条件:如果Threshold为0,则watersheds threshold类似于watersheds,但输出结果只有盆地无分水岭区域。如果Threshold为图像中最大灰度值,则輸出的盆地只包含一个区域。
(10) var threshold(Image, Region, MaskWidth, MaskHeight, StdDevscale, AbsThreshold, LightDark)
①参数说明:
1.MaskWidth, MaskHeight是用于滤波平滑的掩膜单元,掩模尺寸要大于缺陷宽度的2倍;
2.StdDevScale是标准差乘数因子(简称标准差因子) ;
3.AbsThreshold是设定的绝对i值;
4.LightDark有4个值可选, ' light'、"dark'、'equal''not equal'
②应用举例:
var threshold (Image, Region, 4, 4, 0.2, 12, 'dark' )
在该程序中,先用4x4的掩膜在图像上逐像素游走,用原图中的当前像素和对应掩膜中16个像素的灰度均值!对比,找出暗(dark)的区域。
当原图像素灰度比对应的掩膜灰度均值低(0.2,12)个灰阶时,该区域被分割出来 。
本程序中StdDevScale= 0.2. AbsThreshold =12问题的关键就是理解如何通过StdDevScale和AbsThreshold来确定用于分割的國值。
③关于参数StdDevScale (标准差因子)的说明:
1.当标准差因子StdDevscale 2 0时, v(x.y)取(StdDevScale x标准差)和AbsThreshold中较大的那个;
2.当标准差因子StdDevScale <0时, v(xy)取(StdDevScale x标准差)和AbsThreshold中较小的那个。
实测发现,这里的比较大小是带符号比较,由于标准差是非负数,当StdDevScale < 0时, (StdDevScal x标准差) s0恒成立,所以此时的取值就是(StdDevScale x标准差) 。
帮助文档中StdDevscale的推荐值范围是-1~1,一般通过上面的例子可知,一般的明显的黑白过度处的标准差在50左右,乘以StdDevScale即-50 ~ 50 ,50的灰度差异,对于分割来说一般是够了的。文档还说:推荐的值是0.2,如果参数StdDevScale太大,可能分割不出任何东西;如果参数StdDevScale太小(例如-2) ,可能会把整个图像区域全部输出,也就说达不到有效分割的目的。一般推荐使用该算子时, StdDevScale取正值。
需要强调的是:在黑白过渡处,一般掩膜覆盖的像素的标准差较大,而在其他平缓的地方,标准差较小;因此最终采用的分割阈值随着掩膜在不断遍历像素的过程中,在(StdDevScalex标准差)和AbsThreshold之间不断切换。