寻找阈值
1.全局二值化
THRESH_OTSU最适用于双波峰。
THRESH_TRIANGLE最适用于单个波峰。
1)OTSU算法
它是计算一个阈值(临界值)的算法。
先计算图像的灰度直方图,假设灰度值的均值是130,称这个均值为M,现在任意选取一个灰度值t,则可以将直方图分成前后俩部分,称这俩部分分别为A和B,这俩部分各自的平均值成为MA和MB。A部分里的像素数占总像素数的比例为PA,同理PB。
Nobuyuki Otsu给出的类间方差定义为:
ICV=PA*(????????−????)2+ PB*(????????−????)2
那么使得最佳的阈值t就是使得ICV最大的那个值。
2)TRIANGLE算法
原理:
1.图像转灰度
2.计算图像灰度直方图
3.寻找直方图中两侧边界
4.寻找直方图最大值
5.检测是否最大波峰在亮的一侧,否则翻转
6.计算阈值得到阈值T,如果翻转则255-T
2.局部二值化
有2种类型:1、ADAPTIVE_THRESH_MEAN_C算法(局部邻域块均值)2、ADAPTIVE_THRESH_GAUSSIAN_C(局部邻域块高斯加权和)。ADAPTIVE_THRESH_MEAN_C的计算方法是计算出邻域的平均值再减去第六个参数C的值,ADAPTIVE_THRESH_GAUSSIAN_C的计算方法是计算出邻域的高斯均匀值再减去第六个参数C的值。
C:表示常数,它是一个从均匀或加权均值提取的常数,通常为正数,但也可以是负数或零