基于水平投影提取的MATLAB文本图像行分割系统
项目介绍
本项目是一款专为文本图像设计的自动化行级别分割与提取系统。通过利用MATLAB强大的图像处理能力,该系统能够精准地将包含多行文字的原始图像分解为一系列规整的单行文字子图像。其核心理念是利用文本在水平方向上的投影特性,通过统计学分析定位文字出现的波峰与波谷,从而实现高精度的行界定。该系统不仅支持真实扫描件的处理,还内置了合成文本测试功能,适用于印刷体文档数字化、OCR识别的前置预处理等多种场景。
功能特性
- 智能化预处理:集成了灰度转换、中值滤波去噪、自适应二值化及形态学闭运算等一系列算法,能够有效应对复杂背景和光照不均。
- 稳健的行定位:采用基于水平投影分布的差分分析法,能够跨越不同字体和行间距稳健地识别文字行边界。
- 噪点自动过滤:利用连通域面积分析,自动剔除图像边缘或文字间的细微噪点干扰,确保分割精度。
- 多维可视化反馈:处理过程中实时生成原图检测图、水平投影直方图以及分割效果预览图,方便用户直观监控处理质量。
- 自动化批量导出:系统自动创建输出目录,并将切割后的每一行文本按照坐标顺序依次保存为独立图像文件。
- 数据导出功能:在完成图形处理的同时,系统会将每行文本的起始和结束Y轴坐标以矩阵形式导出至工作区,便于后续二次开发。
使用方法
- 环境准备:确保计算机已安装MATLAB,并具备Image Processing Toolbox(图像处理工具箱)。
- 输入配置:将待处理的文本图像命名为指定的文件名放置于当前工作目录下;若无指定图像,系统将自动生成一段三行的合成文本进行演示。
- 运行程序:在MATLAB命令行窗口中调用主函数。
- 结果获取:处理完成后,系统会弹出可视化界面,分割后的子图像将自动保存在当前目录下的子文件夹中,对应的坐标矩阵存储于工作区的变量里。
系统要求
- 软件环境:MATLAB R2016b 或更高版本。
- 必备工具箱:Image Processing Toolbox。
- 硬件建议:标准内存配置即可满足常规分辨率图像的处理需求。
实现逻辑与算法分析
- 图像预处理流程
系统首先对输入图像进行灰度化处理。随后应用3x3模板的中值滤波(medfilt2)以去除孤立的椒盐噪声。核心的二值化步骤采用了自适应阈值算法(Bradley-Roth变体),通过设定Sensitivity参数为0.5,能够根据局部邻域亮度调整阈值,从而有效解决文档扫描中常见的光照不均问题。二值化后进行反转,使文字像素点变为高亮(1),背景变为黑色(0)。
- 形态学增强与降噪
为了防止字符内部的细小断裂影响投影连续性,代码使用了矩形结构元素执行闭运算(imclose),将文字行内部的笔画进行逻辑连接。接着,利用连通域分析函数(bwareaopen)剔除面积小于30个像素的微小物体,进一步净化背景。
- 水平投影计算
系统对二值化后的布尔矩阵执行行求和操作,计算出图像在水平方向上的像素密度分布(Horizontal Projection)。每一行像素的累加值代表了该高度处文字信号的强弱。
- 差分法行边界判定
这是系统的关键算法。首先设定阈值为2个像素,将投影向量转化为二值逻辑向量,标识出“文字区”和“空白区”。通过对该逻辑向量执行一阶差分(diff),差分值为1的位置即为文字行的起始坐标(波峰上升沿),差分值为-1的位置减1即为文字行的结束坐标(波谷下降沿)。
- 坐标优化与图像提取
在确定每行的原始起始位置后,系统通过一个像素的边缘扩展(Margin)来保留文字的上下边缘完整性。程序通过循环遍历所有检测到的行坐标,利用坐标索引直接从原始全彩图像或灰度图像中裁剪出子图块。
- 自动化目录管理与预览
系统检测输出文件夹是否存在,若无则自动通过mkdir创建。最后,系统会将前5行提取的结果进行拼接展示,并输出详细的行数信息和Y轴坐标范围,实现了从原始图像到精确子图的闭环处理。