由于用opencv自带的函数adaptiveThreshold()在光照不均匀的图像中进行二值化时,效果不佳,之后看了Derek Bradley和Gerhard Roth于2007年写的《Adaptive Thresholding Using the Integral Image》,方法简单实现简便且速度较快,本文基于opencv用程序实现了它。其核心思想可以由下面两张图概括,先得到图像中
各处的像素值(图像为单通道),如图1左。之后得到每个点的左上方所有点的像素值之和(包括该点)并可用一个二维数组暂时存储,如图一右所示,例如,第二行第二列中9=4+0+4+1,第二行第三列中12=4+1+2+4+1。一般地,所谓二值化就是给定一个阈值,当图像中某一点的像素值大于阈值时令它的像素为255(0),像素值小于阈值时为0(255)。而所谓区域二值化,就是把图片划分为若干的区域,每个区域有各自的阈值,再分别判定。
图1
如图2所示,我们要判定区域D时,就可以利用图1右的表,设P(x,y)为点(x,y)的像素值(已转换为图一右的值),对于区域D有,P(D)&#