视觉进阶:阈值分割函数总结

(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之间不断切换。



详解var_threshold函数

(1)参数说明:

           var threshold(Image : Region : MaskWidth, MaskHeight, StdDevScale, AbsThreshold, LightDark:)


           ①Image:输入图像;

           ②MaskWidth, MaskHeight:是用于滤波平滑的掩膜单元

           ③StdDevscale:是标准差乘数因子(简称标准差因子) ;

           ④AbsThreshold:是设定的绝对阈值;

           ⑤LightDark:有4个值可选:' light'、' dark'' equal'、' not equal'。


(2)应用举例:

           var threshold (Image, Region, 4, 4, 0.2, 12, 'dark' )

           在该程序中,先用4x4的掩膜在图像上逐像素游走,用原图中的当前像素和对应掩膜中16个像素的灰度均值对比,找出暗(dark)的区域。当原图像素灰度比对应的掩膜灰度均值低(0.2,12)个灰阶时,该区域被分割出来。

          本程序中StdDevScale = 0.2, AbsThreshold = 12,问题的关键就是理解如何通过StdDevscale和AbsThreshold来确定用于分割的阈值。


(3)关于参数StdDevScale (标准差因子)的说明:

          1、当标准差因子StdDevscale>=0时, v(x.y)取(StdDevscale x标准差)和AbsThreshold中较大的那个 ;

          2、当标准差因子StdDevScale<= 0时, v(xy)取(StdDevscale x标准差)和AbsThreshold中较小的那个。


          实测发现,这里的比较大小是带符号比较,由于标准差是非负数,当StdDevscale <0时,(StdDevscalex标准差) <=0恒成立,所以此时的取值就是(StdDevScale x标准差) 。

          帮助文档中StdDevscale的推荐值范围是-1-1,一般通过上面的例子可知,一般的明显的黑白过度处的在50左右,StdDevScale即-50 ~50 ,50的灰度差异,对于一般分割来说足够。

          标准差文档还说:推荐的值是0.2,如果参数StdDevScale太大,可能分割不出任何东西;如果参数StdDevScale太小(例如-2) ,可能会把整个图像区域全部输出,也就说达不到有效分割的目的。一般推荐使用该算子时,StdDevScale取正值。

          需要强调的是:在黑白过渡处,一般掩膜覆盖的像素的标准差较大,而在其他平缓的地方,标准差较小;因此最终采用的分割值随着掩膜在不断遍历像素的过程中,在(StdDevScalex标准差)和AbsThreshold之间不断切换。


(4) var_threshold和dyn_threshold的区别和联系:

         var_threshold算子和dyn_threshold算子极为类似,不同的是var threshold集成度更高,并且加入了"标准差x标准差因子"这一变量。

         dyn_threshold是将原图和滤波平滑后的图对比, var_threshold是将原图和对应像素掩膜覆盖的像素的平均,灰度值对比,在算子var_threshold中,如果参数StdDevScale=0,那么就可以用动态阈值的方式非常近似地模拟,以上两种算法的效果,极为类似。



————————————————

版权声明:本文为CSDN博主「小娜美要努力努力」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/weixin_39504171/article/details/95597280


本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2024年4月    »
1234567
891011121314
15161718192021
22232425262728
2930
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864