> 文章列表 > Opencv+Python笔记(五)图像阈值化处理

Opencv+Python笔记(五)图像阈值化处理

Opencv+Python笔记(五)图像阈值化处理

图像阈值化可以理解为一个简单的图像分割操作,阈值又称为临界值,它的目的是确定出一个范围,然后这个范围内的像素点使用同一种方法处理,而阈值之外的部分则使用另一种处理方法或保持原样。
阈值处理有2种方式,一种是固定阈值方式,又包括多种处理模式,另一种是非固定阈值,由程序根据算法以及给出的最大阈值计算图像合适的阈值,再用这个阈值进行二值化处理

1.固定阈值方式(threshold)

Opencv API:

ret, dst = cv2.threshold(src, thresh, maxval, type)

输入:1.src:输入的图像(只能为单通道图像,例如灰度图);2.thresh:阈值。通过阈值水平的像素被接受,不通过的则不接受,阈值判断时,是以小于等于阈值和大于阈值作为分界条件;3.maxVal:maxval是阈值化后的最大值;4.type:二值化操作的类型,包含以下5种类型
函数返回值:ret表示实际使用的阈值即threshold,dst表示输出图像

在这里插入图片描述

类型 说明
cv2.THRESH_BINARY 超过阈值部分取maxval(最大值),否则取0
cv2.THRESH_BINARY_INV 不超过阈值的像素设置为maxVal,超过的设置为0 上一种的反转
cv2.THRESH_TRUNC 大于阈值部分设为阈值,否则不变 trunc截断 即用阈值来截断
cv2.THRESH_TOZERO 小于或等于阀值的设为0,其余部分不变
cv2.THRESH_TOZERO_INV THRESH_TOZERO的反转

2.自适应阈值方式(adaptiveThreshold)

根据图像上的每一个小区域,计算与其对应的阈值,从而使得同一幅图像上的不同区域采用不同的阈值,在亮度不同的情况下得到更好的结果。该函数用来对灰度图应用自适应阈值,取决于传递给它的自适应方法。需要传递几个参数,包括最大阈值,块大小(可以是3、5、7等)以及一个将从计算得到的块均值中减去的常量值,该值可以为0。

Opencv API:

dst = cv2.adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C)

src: 需要处理的源图像。
maxValue: 当像素值超过阈值时,所赋的最大值。
adaptiveMethod: 自适应阈值算法的类型,目前支持ADAPTIVE_THRESH_MEAN_C 和 ADAPTIVE_THRESH_GAUSSIAN_C两种类型。
thresholdType: 阈值的类型,目前支持THRESH_BINARY 和 THRESH_BINARY_INV两种类型。
blockSize: 自适应阈值算法使用的块大小,必须是一个奇数。
C: 从均值或加权均值中减去的常量,用于调节阈值。