自适应阈值处理

2022-05-28 16:37:38 浏览数 (1)

代码语言:javascript复制
import cv2
img=cv2.imread('C:/Users/xpp/Desktop/Lena.png',0)#原始图像
t1,thd=cv2.threshold(img,127,255,cv2.THRESH_BINARY)#二值化阈值处理
athdMEAN=cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,5,3)#自适应阈值处理
athdGAUS=cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,5,3)#自适应阈值处理
cv2.imshow("img",img)
cv2.imshow("thd",thd)
cv2.imshow("athdMEAN",athdMEAN)
cv2.imshow("athdGAUS",athdGAUS)
cv2.waitKey()
cv2.destroyAllWindows()

算法:自适应阈值处理是使用变化的阈值对图像的阈值处理。自适应阈值处理的方式通过计算每个像素点周围临近区域的加权平均值获得阈值,并使用该阈值对当前像素点进行处理。与普通的阈值处理方法相比,自适应阈值处理能够更好地处理明暗差异较大的图像,保留更多的图像细节信息。

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

  • src表示输入图像
  • maxValue表示最大值
  • adaptiveMethod表示自适应方法,包含cv2.ADAPTIVE_THRESH_MEAN_C或cv2.ADAPTIVE_THRESH_GAUSSIAN_C
  • thresholdType表示阈值处理方式,包含cv2.THRESH_BIN或cv2.THRESH_BINARY_INV
  • blockSize表示块大小,通常设置为3,5,7等
  • C表示常量

注意:自适应阈值等于每个像素由参数blockSize所指定邻域的加权平均值减去常量C。

0 人点赞