首页 > 代码库 > 自适应阈值二值化

自适应阈值二值化

二值化原理:

把一个灰度图像二值化,其实就是找到一个阈值,使这个较低中,灰度大于这个阈值的,设置成255,灰度小于这个阈值的,设置为0。

阈值自适应二值化:

非自适应的二值化呢,有一个问题,就是一个阈值往往只对应一类图像,如果图像的光照变暗了,那个单阈值情况的二值化效果会大大的折扣。自适应二值化其实就是一种根据图片的灰度直方图,得到一个适合本图像的二值化阈值。


本文给出一种自适应阈值产生的方法,当然这个方法有很多种,本文只是一种方法。

本程序的原理很简单:如下图所示,蓝色的代表一个灰度图片的直方图,想办法找到一个合适的混合高斯分布去逼近它。混合高斯分布,其实就是两个高斯分布之和。我们认为两个高斯分布相交的地方的灰度值,就是要选择的阈值。


那么怎么去寻找一个逼近它的高斯分布呢?我用的是一个比较笨的方法,取一个变量t,将这个变量t,从左到右遍历每一个灰度。每次以t左边的数据当成一组样本来估计一个高斯分布,以t右边的数据为另一个样本来估计第二个高斯分布。将这两个高斯分布组合成的混合高斯分布,跟原始的数据匹配。至于匹配标准可以随意选择,可以用最小均方误差,也可以用最小绝对值误差,也可以用相关程度。随着t的遍历,找到每一次混合高斯分布与原始数据的匹配程度,选择最为匹配的混合高斯分布所对应的t值值为阈值。

实践证明,这种方法的自适应性还是很好的,鲁棒性比较好。


当改变直方图时,混合高斯模型的匹配效果,还是很多不错的。

但是有一点,就是要求处理的图片,灰度不能太复杂,尽量符合混合高斯模型。


自适应阈值二值化