局部二值化Sauvola算法解析

在机器视觉领域,二值化是分割图像的一种常用方法,对于亮度分布不均的图像,不可采用固定阈值方法,通常采用局部阈值方法,比如动态阈值分割、sauvola算法分割等。

1. 动态阈值分割

一般对原图像进行滤波处理进行平滑,以原图和平滑后的图像对应像素比较,进行差值,设定差值上下限,最终达到一种分割效果。这种动态二值分割比较简单,这里不做多述。

2. sauvola算法

该算法有几个重要参数,

【1】模板大小:计算图像每一个像素所对应的二值阈值时,我们需要设定模板大小,通过滑动模板,对模板进行像素的均值和标准差的计算,进而计算出对应像素点的二值化阈值。模板大小的设定有一定讲究,并非越大越好,也并非越小越好。太大或者太小,都体现不出图像的局部区域特征,模板太大,如果所包含的背景区域灰度分布比较一致,那么分割效果应该也还可以,只是会降低算法的效率;如果所包含的区域含有背景区域以及前景区域的灰度分布都各不一致,那么可以想象分割效果肯定不会好的。如果模板过小,只含有待分割的前景区域,这样也就无从从模板区域内,根据前景和背景的灰度分布差异性进行分割。所以模板大小一定要合适,即含有背景区域又含有前景区域,且背景区域与前景区域的灰度分布有着一定程度的差异性,这样更易分割。

【2】比例因子K

K因子是调节阈值K与平均值u的差异,一般k是大于等于0。假设k=0,就是设模板内所有像素的平均值作为该像素二值化的阈值,如果前景和背景灰度差异较大,那么取其均值作为阈值可以将前景分割开来。当k不等于0时,就可以通过调节k值,来适当调节阈值与平均值两者之间的远近关系。

【3】灰度的最大标准方差R

我们知道灰度图像的灰阶是0~255,也就是说像素只能在0~255之间波动,假设灰度分布呈高斯分布,那么最坏情况该分布的最大标准差是128。如果灰阶不同,那么R值也跟随者变化,也就是灰阶变化范围的一半。

 

最后,我们再分析下表达式,如果k=0,那么T = u,说明了什么?也就是说,仅仅是对图像做了均值滤波,将滤波后的图像的每个像素点所对应的像素值作为二值化的阈值。当然,我们也可以看出sigma的值一定是小于等于R的,那么T的值肯定是小于u的,我们可以通过调节k值来调节阈值T,当背景和前景灰度分布相差不大时,也即对比度低时,此时的k自然要设置小点,这样才更易分割,否则都会产生过分割,要么将前景部分区域会作为背景区域了,要么就是背景部分区域分割为前景了;当前景与背景的对比度较高时,对于这种情况,K值一般可以设置大点,这样有效抑制一些区域过分割或者未分割现象发生。

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值