1 .概念介绍对于彩色平衡的图像,直接使用一个阈值可以完成图像的阈值化处理。 但是,对于存在颜色不均衡图像,仅使用一个阈值,无法得到清晰有效的阈值分割结果图像
自适应阈值处理技术是一种利用变化的阈值完成对图像的阈值处理的技术。 进行阈值处理时,自适应阈值处理通过计算每个像素点周围临近区域的加权平均值获得阈值,并使用该阈值对当前像素点进行处理自适应阈值处理与通常的阈值处理方法相比,可以更好地处理明暗差较大的图像。
2 .函数语法OpenCV提供函数cv2.adaptiveThreshold )以实现自适应阈值处理)。 函数的语法格式如下:
DST=cv.adaptivethresholdsrc,maxValue,adaptiveMethod,thresholdType,块大小,c ) )
其中:
dst :自适应阈值处理结果。
src :必须是8位单通道图像才能处理原始图像。
最大值:最大值。
自适应方法:自适应方法。
thresholdType :阈值处理方法。 此值必须为cv2.THRESH_BINARY或cv2.THRESH_BINARY_INV。
块大小:块大小。 一个像素表示计算其阈值时使用的邻域大小,通常为3、5、7等。
c :常数。
函数cv2 .基于adaptive threshold )参数adaptiveMethod确定自适应阈值的计算方法,函数
cv2.ADAPTIVE_THRESH_MEAN_C和cv2.ADAPTIVE_THRESH_GAUSSIAN_C两种不
同样的方法。 这两种方法都按像素计算自适应阈值,该阈值等于参数blockSize指定的邻域加权平均值减去常数c。 计算邻域加权平均的方法在两种不同的方法中是不同的。
cv2.ADAPTIVE_THRESH_MEAN_C :附近所有像素点的权重值一致。
cv2.ADAPTIVE_THRESH_GAUSSIAN_C :通过关于从邻近各像素点到中心点的距离的高斯方程获得各点的权重值。
3 .示例程序利用二值化阈值函数cv2.threshold )和自适应阈值函数cv2.adaptiveThreshold ) )对一幅图像进行处理,观察处理结果的差异。
import cv 2img=cv2.im read e go1.jpg ),cv2.IMREAD_GRAYSCALE ) retval,dst=cv2.ThreShold ) img,127,255,CVD cv2.ADAPTIVE_THRESH_MEAN_C,cv2.thresh_ ) c cv2.adaptive _ thresh _ Gaussian _ c,cv2.THRESH_BINARY img ) cv2.imshow ) )二值dst ) cv2.imshow 自适应阈值采用方法cv2.ADAPTIVE_THRESH_MEAN_C的处理结果,atmc ) cv2.imshow )自适应
图2-1元图像
图2-2二值化阈值处理结果
图2-3自适应阈值采用方法cv2.ADAPTIVE_THRESH_MEAN_C的处理结果
图2-4自适应阈值采用方法cv2.ADAPTIVE_THRESH_GAUSSIAN_C的处理结果
比较通常的二值化阈值处理和自适应阈值处理可知,自适应阈值处理保持有更多的详细信息。 极端情况下,常规阈值处理会丢失大量信息,而自适应阈值处理会提供更有效的二值图像。