、一、自适应阈值adaptive Threshold
常规的threshold使用是全局阈值,即整幅图像采用同一个数作为阈值。这种方法并不适应与所有情况,尤其是当同一幅图像上的不同部分的亮度不同时。这种情况下我们需要采用自适应阈值,即adaptiveThreshold,此时的阈值是根据图像上的每一个小区域计算与其对应的阈值。因此在同一幅图像上的不同区域采用的是不同的阈值。adaptiveThreshold的使用方式如下
cv2.adaptiveThreshold(src, maxval, thresh_type, type, Block Size, C)
src:源图片
maxval:填充色
thresh_type:阈值计算方式,分为两种,分别是cv2.ADAPTIVE_THRESH_MEAN_C (相邻区域的平均值)与cv2.ADAPTIVE_THRESH_GAUSSIAN_C(相邻区域取高斯值)
type:阈值类型,cv2.THRESH_BINARY(非黑即白)或cv2.THRESH_BINARY_INV(非白即黑),与threshold中的含义相同,但种类只有这两个。
Block size:计算阈值的区域大小(区域为正方形)
C: 设定的常数,阈值等于均值或者高斯值减去这个常数
二、Otsu’s 二值化
常规的cv2.threshold两个返回值,第一个retVal(得到的阈值值(在后面一个方法中会用到)),第二个就是阈值化后的图像,其中retVal就关系到Otsu二值化,Otsu’s非常适合于图像灰度直方图具有双峰的情况,能够自动根据其直方图计算出一个阈值
Otsu 二值化在cv2.threshold的基础上在尾部补充 | cv2.THRESH_OTSU即可
cv2.threshold (src, thresh, maxval, type| cv2.THRESH_OTSU)