1、 本科 毕业 设计 (论文 ) (二零 届) 图片文字提取系统的设计与实现 所在学院 专业班级 计算机科学与技术 学生姓名 学号 指导教师 职称 完成日期 年 月 摘要: 从图像中提取文字属于信息智能化处理的前沿课题,是当前人工智能与模式识别领域中的研究热点。由于文字具有高级语义特征,对图片内 容的理解、索引、检索具有重要作用,因此,研究图片文字提取具有重要的实际意义。本论文是研究基于图片的文字提取技术,通过文字定位来实现对位图图片文件中文字的提取。在读入图片后,通过灰度化,求水平梯度,二值化,窗口过滤等一系列处理后定位文字。本文在 Windows XP环境下,以 Visual C+ 6.0为
2、开发工具,自行设计并实现系统,验证了基于 C+的图片文字提取算法。实验结果表明:算法能够比较准确地定位图中的文字。 关键词: 图像处理;文字定位;文字提取;位图结构 The Design and Implementation of The Technology of Extracting Texts from Images Abstract: Extracting the text from images belongs to the frontier topics on intelligent information processing, and it is the current res
3、earch focus in artificial intelligence and pattern recognition. As the text with high-level semantic feature and playing an important role on understanding, indexing and retrieval of image content. Therefore, the study on extracting texts from images have important actual meanings. The paper present
4、s a text location algorithm which localize the text in an image by analyzing its edge feature. The system is based on Windows XP and developed with Visual C+ 6.0. The experiments results show that the algorithm can give good performance of locating most text-image. Key words: image processing; text
5、location; text extraction; Bitmap Structure 目录 1 引言 . 1 1.1 课题背景 . 1 1.2 图片文字提取技术在国内外的发展及现状 . 1 1.2.1 人工文字提取的算法 . 1 1.2.2 场景文字提取算法 . 2 1.2.3 图像边缘检测算法 . 2 1.3 本课题研究的意义 . 3 1.4 开发平台简介 . 3 2 BMP位图 . 4 2.1 位图简介 . 4 2.2 BMP位图文件 . 4 2.2.1 位图文件头 . 4 2.2.2 位图信息头 . 5 2.2.3 位图颜色表 . 6 3 图片文字提取算法 . 7 3.1 文字提取基本
6、过程 . 7 3.2 文字提取算法 . 7 3.2.1 图片读入 . 7 3.2.2 灰度化 . 10 3.2.3 水平梯度 . 12 3.2.4 二值化 . 15 3.2.5 文字定位 . 17 4 系统测试 . 22 4.1 运行界面 . 22 4.2 测试图片文字提取 . 22 4.2.1 第一组测试 . 22 4.2.2 第二组测试 . 27 4.2.3 第三组测试 . 30 5 结论及展望 . 33 致谢 . 错误 !未定义书签。 参考文献 . 34 1 1 引言 1.1 课题背景 随着计算机科学的飞速发展,以图像为主的多媒体信息迅速成为重要的信息传递媒介。图片文字的检测与识别技术在
7、计算机网络日益发展的今天有着大量的应用, 特别是对于基于内容的图片或视频过滤、检索等应用来讲,有重要意义,它可以帮助我们了解图片内容或者视频内容。文字具有高级语义特征,因此图像中的文本是图像内容的一个重要来源,如果这些文本能自动地被检测、分割、识别出来,则对图像语义的自动理解、索引和检索是非常有价值的。所以,研究图片文字提取就具有了重要的实际意义。 1.2 图片文字提取技术 在国内外的发展及现状 1.2.1 人工文字提取的算法 (1) 为了能够清楚地辨识出每个字的结构,文字在颜色上与其背景总是存在一定差异。因此,文字提取的实质就是描述文字图层与背 景图层之间的差异,并以这种差异对像素进行聚类。
8、对彩色图像在 HSV 颜色空间进行色彩聚类形成颜色图层,再通过投影算法将颜色图层进一步细分为子图层进行图层分析,最后通过子图层合并产生备选文字图层,能够良好地从各种复杂颜色背景中提取垂直或平行于图像边缘的单色文字。具体方法:颜色聚类;子图层分割;图层分析;图层合并 1。 (2) 视频文字大小自适应提取算法基于离散傅里叶变换 (discrete Fourier transform, DFT)特征、多分辨率处理及支持向量机分类技术。算法在不同分辨率下结合梯度信息、文字边界定位技术提取出文字候选区域,然后用支持向量机对于候选图像块 DFT 特征作进一步分类。具体方法:提取候选区域;分割候选区域块及文
9、字边界定位;多分辨率融合处理;验证候选块 2。 (3) 彩色图像下的文本提取方法,该方法对彩色图像在 R、 G、 B 三个颜色层分别进行亮度分级,以避开传统颜色聚类方法的聚类数目选择问题,降低图像复杂度;考虑到文字笔画的显著方向性特征,并且通常具有稳定的颜色,利用方向梯度算法进行文本粗定位;然后进一步利用多类 SVM 分类器实现文本区域精确判别。具体方法:亮度分级;笔画检测算法;SVM 精确判 别 3。 2 (4) 自动提取图像中的文本对图像视频检索具有重要意义。提出了一种基于颜色和笔画特征,应用无监督聚类方法进行复杂背景下的文本分割算法。首先在对文本进行图像增强的基础上,应用颜色约减和直方图
10、确定文本颜色。然后提取颜色和笔画特征,应用 k 的均值聚类算法分割出文本和背景像素。最后应用后处理优化分割结果。具体方法:图像增强预处理;文本颜色估计;特征提取;无监督聚类;基于连通成分的后处理 4。 (5) 为解决渐变色给文字提取聚类算法带来的问题,研究与实现了基于二值化聚类的图像文字提取算法。图像通过一系列预 处理后,得到了利于聚类的二值图像,根据背景图像区域特征,对图像进行聚类分块,再利用文字图像区域特征 ,聚类识别出文字区域。具体方法:预处理,包括灰度化、二值化、长线剔除;文本聚类,包括背景查找、文字分割 5。 (6) 一种利用笔画线条的统计特征基于支持向量机进行图像中叠加文字检测的方
11、法。该算法首先通过一种改进的线段检测算子提取出笔画线段;然后对笔画线条通过区域合并定位出候选文字块;接着对候选文字块提取一个反映文字笔画线条空间分布特点的 32 维特征,并通过支持向量机建立的模型对候选文字块进行确认分类。具体方法 :基于笔画线条的特征抽取;基于 SVM 的候选文字块分类确认;基于笔画线条粗定位候选文字块 6。 1.2.2 场景文字提取算法 (1) 基于边缘检测的文本提取方法对自然场景文本的提取进行研究。通过改进彩色图像边缘检测和二值边缘图像的形态学文本定位的算法,从而实现场景文本的提取。先将原始图片进行金字塔分解,然后进行图片预处理,对图像进行边缘提取和二值化,再形态学文本定
12、位,最后文本区域字符提取 7。 (2) 自然环境下文本图像背景复杂,常规阈值分割方法往往无法有效分割;基于谱聚类的图像分割方法利用图分割理论可 以有效地实现图像分割,但过高的计算复杂度和空间复杂度使其在处理大图像时不能满足实际需求。基于灰度直方图的谱聚类分割方法来实现字符提取,利用像素灰度计算相似性,在灰度直方图上构造相似矩阵,并通过实验确定直方图的理想等级数及相关参数。通过将像素级上的划分转化为灰度等级上的划分,从而大大减少特征值求解时的计算量和开销,提高算法的实用性及有效性 8。 1.2.3 图像边缘检测算法 基于灰度直方图的边缘检测,基于梯度的边缘检测包括 Roberts边缘算子、 So
13、bel边缘3 检测算子、 Prewitt边缘算子、 Laplacan边缘算子, Canny边缘检测算子,模糊推理的边缘检测, Mallat小波边缘检测算子等 9。 1.3 本课题研究的意义 静态图片中文本提取方面的文献不是很丰富,之前的研究更多关注文档图像的分析和处理。而对于复杂图像中的文本或者嵌入图像的文本标签进行提取和分析研究刚刚引起人们的兴趣。目前提出的纹理特征主要包括有原始像素抽样 10、局部方差 11、梯度分布 12、强边缘的密度及方向分布等空域统计特征,以及小波、 FFT、 Gabor变换系数的统计特征,如矩、直方图、共生矩阵等。通过梯度特征进行边缘 检测,可以达到快速的定位效果,
14、然而同时约束参数设置非常复杂,并且检测错误率也很高;利用纹理特征决定像素块是否属于文字,可以在复杂背景的条件下检测文字信息,但是计算非常耗时,而且文字精确定位的稳定性也不够理想;对于视频文字,可以利用相邻帧的相关性大体确定字幕位置,然而这种方法不能用来处理静态图像。另外,基于支持向量机 (SVM)分类器的多尺度定位算法也得到了广泛的研究,虽然其检测效果较好,但算法复杂,需事先有样本进行学习分类器的训练 13。 1.4 开发平台简介 本程序的开发平台是 Visual C+14。 C+语言是一种优秀的面向对象程序设计语言,它在 C 语言的基础上发展而来,但它比 C 语言更容易为人们学习和掌握。面向
15、对象的设计思想是在原来结构化程序设计方法基础上的一个质的飞跃, C+完美地体现了面向对象的各种特性。面向对象设计语言在软件开发上有很多优点,主要体现在易维护、可读性高、质量高、效率高、易扩展等特点上。 C+的设计目标,就是要让 C+既具有适合于系统程序设计的 C语言所具有的可适应性和高效性,又能在其程序组织结构方面具有想 Simula( Simula 所支持的这种程序组织结构通常被称为面向对象程序设计 风格)那样的语言设施。 C+语言同事做了很多优化工作,使得引借自 Simula 的高层次的程序设计技术能够应用于系统程序设计之中。 4 2 BMP 位图 2.1 位图简介 位图 15亦称为点阵图
16、像或绘制图像,是由称作像素(图片元素)的单个点组成的。这些点可以进行不同的排列和染色以构成图样。当放大位图时,可以看见赖以构成整个图像的无数单个方块。扩大位图尺寸的效果是增多单个像素,从而使线条和形状显得参差不齐。然而,如果从稍远的位置观看它,位图图像的颜色和形状又显得是连续的。在体检时,工作人员会给你一个本子,在这 个本子上有一些图像,而图像都是由一个个的点组成的,这和位图图像其实是差不多的。由于每一个像素都是单独染色的,您可以通过以每次一个像素的频率操作选择区域而产生近似相片的逼真效果,诸如加深阴影和加重颜色。缩小位图尺寸也会使原图变形,因为此举是通过减少像素来使整个图像变小的。同样,由于
17、位图图像是以排列的像素集合体形式创建的,所以不能单独操作(如移动)局部位图。 2.2 BMP 位图文件 BMP位图文件包括 4部分,即位图文件头结构 BITMAPFILEHEADER、位图信息头结构BITMAPINFOHEADER、位 图颜色表 RGBQUAD和位图像素数据, BMP位图文件的结构 如图 2-1所示。 位图文件头结构 BITMAPFILEHEADER 位图信息头结构 BITMAPINFOHEADER 位图颜色表 RGBQUAD 位图像素数据 BYTE 图 2-1: BMP位图文件的结构 2.2.1 位图文件头 位图文件头就是用来标志这个位图文件一些信息比如:大小、类型等等。共有
18、 14个字节的信息。下面我们就分别对这 14个字节的信息分别说明一下它们所代表的意义。 42 4D 为位图的标志。如果转换成 ASCII 码的话就是 BM。 1E 2B 06 00 这个双字信息代表着位图文件的总字节数,如果把它转换化十进制的话就是( 00062B1E) H=( 404254) D,也就是这位图文件的大小是 404254个字节。 00 00 00 00 为保留字。 36 00 00 00 表示位图阵列的起始位置,( 00000036) H=( 54) D,也就是从第 54个字节就是这幅图的5 位图阵列了。 BMP文件头 BMP文件头含有 BMP文件的类型、文件的大小、位图文件的
19、保留字、位图数据距文件头的偏移量等信息。 结构定义如下: typedef struct tagBITMAPFILEHEADER UINT bfType; /位图文件的类型,必须为 BM DWORD bfSize; /位图文件的大小,以字节为单位 UINT bfReserved1; /位图文件保留字,必须为 0 UINT bfReserved2; /位图文件保留字,必须为 0 DWORD bfOffBits; /位图数据距文件头的偏移量,以字节为单位 ,表示文件起始位置到图像数据的距离 BITMAPFILEHEADER; 2.2.2 位图信息头 位图信息头记录着一些关于这幅图的 一些基本信息,比
20、如:高度、宽度、分辨率等信息。28 00 00 00 表示着位图信息头的长度 ,( 00000028) H=( 40) D,即位图信息头的长度占 40 个字节。 39 01 00 00 表示位图的宽度,( 00000139) H=( 313) D 表示位图的宽度为 313 个像素。 C8 00 00 00 表示位图的高度,( 000000C8) H=( 200) D 表示位图的高度为 200 个像素。 01 00 表示位图设备级别。 00 00 00 00 表示压缩类型,零表示不压缩。 00 00 00 00 位图阵列表字节数。 00 00 00 00 表示水平分辨率。 00 00 00 00
21、 表示垂直分辨率。 00 00 00 00 表示位图实际使用的颜色表中的颜色变址。 00 00 00 00 表示位图显示过程中被认为重要颜色变址数。 BMP位图信息头主要包含数据结构的大小、图象的高度和长度、色彩平面数、图象数据的大小、分辨率等信息。结构定义如下: typedef struct tagBIMAPINFOHEADER DWORD biSize; /本结构所占用字节数 LONG biWidth; /位图的宽度,以像素为单位 LONG biHeight; /位图的高度,以像素为单位 WORD biPlanes; /目标设备的级别,必须为 1 6 WORD biBitCount; /每
22、个像素所需的位数 DWORD biCompression; /位图压缩类型 DWORD biSizeImage; /位图的大小,以字节为单位 LONG biXPelsPerMeter; /位图水平分辨率 LONG biYPelsPerMeter; /位图垂直分辨率 DWORD biClrUsed; /位图实际使用的颜色表中的颜色数 DWORD biClrImportant; /位图显示过程中重要的颜色数 BITMAPINFOHEADER; 2.2.3 位图 颜色表 颜色表颜色表用于说明位图中的颜色,它有若干个表项,每一个表项是一个 RGBQUAD类型的结构,且定义一种颜色,定义如下: type
23、def struct tagRGBQUAD BYTE rgbBlue; /蓝色的亮度(值范围为 0 255) BYTE rgbGreen; /绿色的亮度(值范围为 0 255) BYTE rgbRed; /红色的亮度(值范围为 0 255) BYTE rgbReserved; /保留,必须为 0 RGBQUAD ( 4) 位图信息头和颜色表组成位图信息, BITMAPINFO 结构定义如下: typedef struct tagBITMAPINFO BITMAPINFOHEADER bmiHeader; RGBQUAD bmiColorsi; BITMAPINFO; 颜色表中 RGBQUAD结构数据的个数由 biBitCount来确定 ,当 biBitCount=1、 4、 8时,分别有 2、 16、 256个表项;当 biBitCount=24时,没有颜色表项。