You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何优化文本文档二值化:修复字符缺像素、降噪、避免文字断裂缺失

二值化文字断裂问题优化方案

一、现有参数调优方案

  • 高斯模糊核调整:当前使用的(103,103)核过大,会过度抹平文字区域的局部灰度差,建议根据图像分辨率调整为输入图像短边的1/20~1/10大小的奇数核,避免局部亮度校正过度。
  • 非锐化掩膜参数调整:当前amount=5过高,会放大噪点同时导致文字边缘过度锐化出现断层,建议把amount降到1.53区间,`radius`根据文字笔画粗细调整为12即可。
  • 全局阈值替换:全局OTSU阈值对光照不均的场景适配性差,建议优先选择局部阈值算法,适配不同区域的亮度差异。

二、形态学操作插入时机与选择

插入位置固定为二值化处理完成后,不要在灰度处理阶段执行,避免破坏灰度分布导致后续阈值分割误差更大:

  • 针对文字断裂优先使用闭运算(Closing):逻辑为先膨胀后腐蚀,能够在不改变文字整体位置和大小的前提下,填充笔画内部的孔洞、连接断裂的笔画,核选择3x3或5x5的矩形/十字形结构元即可,文字笔画越粗可适当调大核的尺寸,示例代码如下:
# 二值化后添加该段代码
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (2,2))
thresh = cv2.morphologyEx(thresh, cv2.MORPH_CLOSE, kernel)
  • 若处理后同时存在背景噪点,可在闭运算之后加一次开运算(Opening):逻辑为先腐蚀后膨胀,可去除孤立的背景噪点,不会影响已经连接好的文字笔画。
  • 不建议单独使用膨胀操作:会导致文字笔画变粗粘连,反而降低可读性。

三、适配多数场景的二值化技术优化

  • 可选Sauvola阈值算法:专门针对文档图像二值化设计的算法,比普通自适应阈值效果更好,对低对比度、光照不均的文字场景适配性极强,基本可以避免大部分断裂问题。
  • 新增对比度预处理:在灰度化之后、高斯模糊之前加入限制对比度自适应直方图均衡(CLAHE),提升文字和背景的对比度,减少后续阈值分割的误差。

优化后完整代码示例

import cv2
import numpy as np
import skimage.filters as filters

def convert(path):
    img = cv2.imread(path)
    gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    
    # 新增:CLAHE提升局部对比度
    clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8,8))
    gray = clahe.apply(gray)

    # 调整高斯核尺寸,可根据实际图像分辨率调整
    smooth = cv2.GaussianBlur(gray, (21,21), 0)

    division = cv2.divide(gray, smooth, scale=255)

    # 调优非锐化参数
    sharp = filters.unsharp_mask(division, radius=1.5, amount=2, multichannel=False, preserve_range=False)
    sharp = (255*sharp).clip(0,255).astype(np.uint8)

    # 替换为Sauvola局部阈值
    thresh_sauvola = filters.threshold_sauvola(sharp, window_size=15, k=0.1)
    thresh = (sharp > thresh_sauvola).astype(np.uint8) * 255

    # 新增闭运算连接断裂笔画
    kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (2,2))
    thresh = cv2.morphologyEx(thresh, cv2.MORPH_CLOSE, kernel)
    
    return thresh

内容的提问来源于stack exchange,提问作者Deshwal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 22:12:01