OpenCV - 阈值处理 (二) -自适应阈值

上一篇文章,我们使用的是全局阈值,整副图像采用同一个数作为阈值。但是这种方法并不适用所有情况,尤其是当同一幅图像上的不同部分具有不同亮度时。这种情况下我们需要采用自适应阈值。此时的阈值是根据 图像上的每一个小区域自动计算与其对应的阈值。因此在同一副图像上的不同区域采用的是不同的阈值,从而使我们能在亮度不同的情况下得到更好的结果。

自适应阈值函数

dst=cv.adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C[, dst])

参数:
   src -8位单通道原图像。
   dst -与src具有相同大小和相同类型的目标图像
   maxValue-与二值化相关的最大值 
   adaptiveMethod - 见下文
   thresholdType-阈值类型必须是THRESH_BINARY或THRESH_BINARY_INV
   blockSize-于计算像素阈值的像素邻域的大小:3,5,7等。
   C - 从平均值或加权平均值中减去的常数。通常为正数,但也可能为零或负数。
   
关于C:
举个例子:如果使用平均值方法,平均值mean为190,C为10。那么灰度小于180的像素为0,大于等于180的像素为255。

关于adaptiveMethod:
cv2.ADAPTIVE_THRESH_MEAN_C
阈值 T(x,y) 是 (x,y) 的 blockSize×blockSize 邻域的平均值减去 C的值
cv2.ADAPTIVE_THRESH_GAUSSIAN_C
阈值 T(x,y) 是的blockSize×blockSize邻域的加权和减去 C的值。默认的sigma(标准偏差)用于具体的blockSize。

效果图

OpenCV - 阈值处理 (二) -自适应阈值

本文代码全部代码可在本公众号下回复关键词 “代码” ,并在“代码04”文件夹中获取

若要获取更多OpenCV,数字图像处理,python,深度学习,机器学习,计算机视觉等高清PDF以及 更多有意思、实用的分享,可搜一搜 微信公共号 “分享猿” 免费获取资源。也可扫描下面的二维码关注,期待你的到来~

OpenCV - 阈值处理 (二) -自适应阈值