JA EN ZH

图像阈值化的类型与最优阈值确定 - 从大津法到自适应方法

· 9 分钟阅读

阈值化基础 - 将图像分离为黑白的意义

阈值化(二值化)将灰度图像中的每个像素与阈值进行比较,将其转换为白色(255)或黑色(0)。它在图像处理流水线的早期阶段被频繁使用,是轮廓检测、OCR、物体计数等后续处理不可或缺的预处理步骤。

为什么要二值化:许多图像分析任务需要将目标物(前景)与背景明确分离。灰度图像包含 256 个灰度级的信息,但对于"文字还是背景""细胞还是培养基""缺陷还是正常"等判断,二值就已足够。二值化通过减少信息量,使后续处理更快速、更稳健。

数学定义:

dst(x,y) = maxval if src(x,y) > thresh

dst(x,y) = 0 otherwise

阈值化的类型:

  • 全局阈值:对整幅图像应用单一阈值。在光照均匀时有效。
  • 自适应阈值:逐像素计算局部阈值。在光照不均匀时必不可少。
  • 多级阈值:使用多个阈值分为 3 个或更多级别。用于多阶段分割。

OpenCV 提供 cv2.threshold() 用于全局阈值化,cv2.adaptiveThreshold() 用于自适应阈值化。阈值的选择是决定二值化质量的最关键因素,本文将详细讲解其确定方法。

固定阈值法 - 手动设置与直方图分析

固定阈值法是最简单的二值化技术,将用户指定的单一阈值应用于整幅图像。在光照条件稳定且前景与背景对比度明确时有效。

手动确定阈值:观察直方图,在对应前景和背景的两个峰值(双峰性)之间的谷底设置阈值。例如,在白纸黑字的文档图像中,背景(200-255)和文字(0-80)之间 128 附近是合适的阈值。

OpenCV 实现:

ret, binary = cv2.threshold(gray, 128, 255, cv2.THRESH_BINARY)

阈值类型变体:

  • THRESH_BINARY:高于阈值变为白色,低于阈值变为黑色
  • THRESH_BINARY_INV:高于阈值变为黑色,低于阈值变为白色(反转)
  • THRESH_TRUNC:高于阈值截断为阈值,低于阈值保持不变
  • THRESH_TOZERO:低于阈值设为 0,高于阈值保持不变
  • THRESH_TOZERO_INV:高于阈值设为 0,低于阈值保持不变

固定阈值的局限性:当光照不均匀时(阴影、渐变照明、暗角),单一阈值无法正确分离前景和背景。对图像某部分有效的阈值,在其他区域可能导致前景消失或背景残留为噪声。自适应阈值化解决了这一问题。

预处理改善:在应用固定阈值前进行高斯模糊(σ=1-3)去噪和直方图均衡化增强对比度,可使阈值选择更容易,结果更稳定。

大津法(Otsu's Method) - 自动阈值确定的标准方法

大津法(1979 年)基于直方图的统计特性自动确定最优阈值。它选择使类间方差最大化的阈值,从而最大化前景与背景的可分离度。是图像处理中使用最广泛的自动阈值确定方法。

算法原理:在阈值 t 处将图像分为 2 类(C0:像素值 ≤ t,C1:像素值 > t)时,找到使类间方差 σ²_B(t) = ω0(t) × ω1(t) × (μ0(t) - μ1(t))² 最大化的 t。其中 ω0、ω1 为各类的像素数比例,μ0、μ1 为各类的平均亮度。

计算效率:对所有 256 种可能的阈值计算类间方差,选择产生最大值的阈值。利用直方图累积和,计算复杂度为 O(L)(L:灰度级数=256),与图像大小无关。

OpenCV 实现:

ret, binary = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)

返回值 ret 中存储自动确定的阈值。

大津法的前提条件与局限性:

  • 当直方图呈双峰分布(两个明显的峰)时效果最佳
  • 前景与背景面积比极端偏斜(超过 1:9)时精度下降
  • 对单峰直方图无法产生有意义的阈值
  • 无法处理光照不均匀(全局阈值的固有局限)

多级大津法:用于分为 3 个或更多级别的多级大津法也存在。虽然 OpenCV 4.x 的 cv2.threshold() 中未直接实现,但可通过 scikit-image 的 threshold_multiotsu() 使用。

自适应阈值化 - 应对光照不均匀

自适应阈值化为图像中的每个像素计算局部阈值。对于在光照不均匀环境(阴影、聚光灯、自然光变化)下拍摄的图像,它能实现全局阈值无法达到的高质量二值化。

基本原理:每个像素(x, y)的阈值 T(x, y)由以该像素为中心的局部区域(块大小 B×B)的统计量计算得出。由于跟随局部亮度变化,不受光照不均匀的影响。

均值法(Mean):

T(x,y) = mean(局部区域) - C

阈值为局部区域的平均亮度减去常数 C。C 通常在 5-15 范围内;值越大,被判定为前景的范围越广。

高斯法(Gaussian):

T(x,y) = gaussian_weighted_mean(局部区域) - C

使用高斯加权平均,距中心越近的像素权重越大。比均值法在边缘附近精度更高,是文档图像二值化的标准方法。

OpenCV 实现:

binary = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, blockSize=11, C=2)

参数调整指南:

  • 块大小:必须为奇数。建议为字符高度的 2-3 倍。太小对噪声敏感;太大则光照校正效果减弱。
  • 常数 C:正值使前景变粗,负值使前景变细。文档图像通常取 2-10。

Sauvola 方法:一种改进的自适应方法,同时考虑局部标准差。T(x,y) = μ × (1 + k × (σ/R - 1))。在低对比度区域性能更好,擅长处理老旧或退化的文档。

实用阈值设计 - 文档图像与工业检测中的应用

实际的二值化不仅仅是应用阈值,还需要设计包含预处理和后处理的完整流水线。以下介绍代表性应用领域的实用方法。

文档图像二值化流水线:

  • 输入:扫描图像或相机拍摄图像
  • 预处理 1:倾斜校正(霍夫变换或投影轮廓法)
  • 预处理 2:高斯模糊(σ=1.0)去除扫描噪声
  • 二值化:自适应阈值化(Gaussian,blockSize=字符高度的 2 倍,C=5)
  • 后处理:形态学开运算(3x3)去除孤立噪声

此流程可将 Tesseract OCR 的识别准确率比未处理时提高 15-25%。

工业检测中的二值化:在半导体晶圆和 PCB 缺陷检测中,由于照明可控,固定阈值有效。但为应对批次间变动,使用大津法自动调整阈值并设置容差范围(±10)进行异常检测的设计更为稳健。

彩色图像的二值化:直接对 RGB 图像进行二值化时,转换到 HSV 色彩空间并提取特定色相范围的方法很有效。例如检测红色物体时,对 H: 0-10 或 170-180、S: 100-255、V: 50-255 范围生成掩码。使用 cv2.inRange(hsv, lower, upper) 实现。

动态阈值设计:对于帧间光照变化的时间序列图像(视频、连续拍摄),可对每帧应用大津法,或使用前 N 帧阈值的移动平均来抑制突变。当阈值变动超过 ±20 时发出光照异常警报也是有效的设计。

高级阈值化方法与深度学习方法

介绍超越传统阈值二值化的高级方法和近年来的深度学习方法。对于复杂背景和退化图像,传统方法难以实现的高精度二值化现已成为可能。

Niblack 方法:T(x,y) = μ + k × σ(k=-0.2 为标准值)。使用局部均值和标准差设置对比度自适应阈值。缺点是背景区域噪声过多,由 Sauvola 方法改进。

Wolf 方法:对 Sauvola 的改进,考虑了全局最小亮度。在极暗或低对比度区域性能更好,在历史文档数字化中获得高度评价。

Bradley 方法:使用积分图像以 O(1) 计算局部均值的快速自适应二值化。计算时间与块大小无关,适合实时处理应用。

深度学习二值化:将 U-Net 和 DeepLabV3 等语义分割模型应用于文档二值化的研究正在推进。在 DIBCO(文档图像二值化竞赛)中,深度学习方法以超过 95% 的 F-measure 显著优于传统方法。

  • 优点:对复杂背景、水印、透印和污渍具有鲁棒性
  • 缺点:需要训练数据,推理成本高(建议使用 GPU)
  • 实际应用:Google 的文档扫描应用、Adobe Scan

混合方法:实践中,将深度学习与传统方法结合是有效的。先用深度学习进行粗略分割,再用自适应阈值化精细化边界的两阶段处理,可同时实现精度和速度。使用 GPU 时每页处理时间约 50ms。

Related Articles

形态学运算基础 - 膨胀、腐蚀、开运算和闭运算详解

系统讲解形态学运算作为基础图像处理工具的原理。涵盖膨胀、腐蚀、开运算、闭运算的原理,结构元素设计及实际应用。

图像分割基础 - 理解区域划分原理与应用

系统介绍图像分割技术,从经典阈值法到深度学习方法 (U-Net、DeepLab、SAM),涵盖评估指标和浏览器端实现。

抖动技术 - 用有限颜色表现渐变的类型与应用

对比误差扩散、Bayer 抖动和蓝噪声技术。涵盖原理、特性以及从复古美学到印刷的应用。

图像指纹技术 - 使用 pHash 和 dHash 检测相似图像

系统讲解感知哈希技术检测相似图像。涵盖 aHash、dHash、pHash 的原理,汉明距离评分和实际系统架构。

工业检测中的图像处理 - 从外观检查到尺寸测量

系统讲解图像处理在工业检测中的应用。涵盖缺陷检测、尺寸测量、表面检查和深度学习方法。

直方图均衡化增强对比度 - 优化图像亮度分布

系统讲解直方图均衡化技术。涵盖全局均衡化、CLAHE 自适应方法、彩色图像处理和实际应用场景。

Related Terms