二值化
图像二值化能简化图像,提取关键信息。它可以用于图像的分割、边缘检测、形态学操作等。
阈值
# 普通阈值
'''
10为阈值;
255为像素值上限;
cv2.THRESH_BINARY为二值化类型,有二值化阈值处理(cv2.THRESH_BINARY)、反二值化阈值处理(cv2.THRESH_BINARY_INV)、截断阈值化处理(cv2.THRESH_TRUNC)、超阈值零处理(cv2.THRESH_TOZERO_INV)、低阈值零处理(cv2.THRESH_TOZERO)等
'''
_, img_binary = cv2.threshold(img_gray, 10, 255, cv2.THRESH_BINARY)
自适应阈值处理
如果图像色彩不均衡,可以使用自适应阈值处理。自适应阈值通过计算每个像素点周围临近区域的加权平均值获得阈值,并使用该阈值对当前像素点进行处理。
# 自适应阈值
'''
255为像素值上限;
cv2.ADAPTIVE_THRESH_GAUSSIAN_C为高斯加权平均,自适应的类型;
9为规定领域大小,必须为奇数;当blockSize越大,
参与计算阈值的区域也越大,细节轮廓就变得越少,整体轮廓越粗越明显;
C为阈值等于均值或者加权值减去这个常数,得到的就是最终阈值,
当C越大,整体图像白色像素就越多。
'''
img_binary_adaptive = cv2.adaptiveThreshold(
img_gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 9, C=1)
Otsus
Otsu方法会遍历所有可能阈值,从而找到最佳的阈值。
Otsus适合于图像灰度直方图具有双峰的情况,他会在双峰之间找到一个值作为阈值。
# Otsu方法自动可以找到一个自认为最好的阈值,前提是要把阈值设为0(对此图片不合适)
_, img_binary_otsu = cv2.threshold(img_gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)