寻找阈值

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

OpenCV全局二值化和局部二值化

2.局部二值化

有2种类型:1、ADAPTIVE_THRESH_MEAN_C算法(局部邻域块均值)2、ADAPTIVE_THRESH_GAUSSIAN_C(局部邻域块高斯加权和)。ADAPTIVE_THRESH_MEAN_C的计算方法是计算出邻域的平均值再减去第六个参数C的值,ADAPTIVE_THRESH_GAUSSIAN_C的计算方法是计算出邻域的高斯均匀值再减去第六个参数C的值。

C:表示常数,它是一个从均匀或加权均值提取的常数,通常为正数,但也可以是负数或零

 

相关文章: