文档图像处理系统的设计与实现

 

摘要:

作为信息的最重要载体,电子文档处理的研究引起人们极大的兴趣。在任何文档处理系统中,预处理极为重要,其效果好坏会严重地影响其它模块的工作。特别是灰度图像二值化效果的好坏,对识别效果以及其后的一切处理都有相当大的影响。原因之一是,任何物理传感输入都是灰度图像,文档处理系统的大多数模块却仅仅处理二值图像,图像二值化是必不可少的。此外,图像二值化本身也是数字图像处理中重要的基本问题。

本文首先介绍完整的文档处理系统以及其预处理模块,然后将重点放在二值化问题上,给出图像阈值化方法的综述,并对全局阈值化、局部动态阈值化等方法的优点和缺点给出评价。本文尤其针对灰度变化比较复杂的文档图像,提出了一种改进的动态阈值化算法,并以仿真实验与以往的全局方法进行了比较,证实所发展新方法的优势。本文对该新算法在具体应用中会遇到的问题也做了估计,并提出解决相应问题的基本原则。

 

关键词:预处理,灰度图像,二值化,阈值


Direct Local-thresholding Method for Gray-level Document Images

Abstract:

People have great interest in the study of document processing, as electronic document is the most important information carrier nowadays. In any document processing system, pre-processing plays an important role in that it affects all the later modules in the system. Among various pre-processing, gray-level image to binary- image conversion, or image binarization is a key. First, an image obtained with a sensor is essentially a grey-level image, but most modules in the processing system only deal with binary image, and binarization becomes a necessity. Second, binarization has it’s own basic research interest.

In this thesis, we first introduce the full document processing system and its preprocessing part; then we give special attention to the problem of binarization, and make a survey of various existing image thresholding methodologies, including global methods and local dynamic methods, with evaluations of their excellences and shortcomings. Then, aiming at the case of document image with complex gray-level variation, we bring forward an improved dynamic thresholding algorithm, named Direct Local-thresholding Method, which is proved to be better than former global method by simulating experiments. Finally, we discuss the problems may encountered in application systems, and put forward basic principles for possible solutions.

Key words: preprocess, gray-level image, binarization, threshold

 


第一章 文档图像预处理概述

1.1 文档图像处理系统介绍

物质、能量、信息,是客观世界中的三大要素。而文档作为信息的载体,在社会生活中占有着十分重要的地位。通常,我们可以把存储在计算机中或纸上的一切具有阅读意义的信息甚至承载着信息的纸统称为文档。文档可以分为两大类:文字/符号和图形/图像。

为了能够更加简便有效地使用和管理信息,自二十世纪六十年代以来,人们进行了大量关于文档处理系统的研究。文档可以通过文档处理系统进入计算机,从而使得人们能够方便地对它们进行存储、管理、传输。文档处理涉及到很多领域,主要有光学字符识别(OCR),文档分析和理解,文档数据库,自然语言理解等等。

文档进入计算机,是通过文档处理系统将输入的文档图像识别为具有意义的文字和图形来实现的。文档处理的一般流程如下[1]

1.1 文档处理流程

可以看出,在一个文档处理系统中,预处理作为后续工作的基础,是一个相当重要的部分。图像预处理的好坏对识别效果有相当大的影响。下面我们将对预处理部分作一下简要介绍。

1.2 文档图像预处理

在一个实际的文档处理系统中,预处理过程包含许多方面[2],例如:将输入的彩色图像转换为灰度图像;将灰度图像做二值化处理;背景噪音的消除;图像倾斜检测与校正;版面拆解等等。这里,我们将对其中比较重要的几个方面进行总体上的阐述。

1.2.1彩色图像转换为灰度图像,以及灰度图像的二值化

一篇存储在纸上的文档,要输入计算机中,首先要通过扫描仪扫描成为数字图像。它可以是彩色图像,也可以是灰度图像,或者是二值图像,取决于扫描的具体过程。但是一般来说,文档处理系统要处理的是灰度图像,而且很多成熟的图像处理算法和工具包也是针对灰度图像的。并且在进入识别阶段时,识别引擎一般是针对二值图像的。因此,我们必须对输入的图像进行处理,将彩色图像转化为灰度图像,再对其进行二值化。

图像的这种转换必然会引起信息丢失,因此采用什么样的算法能够最大限度地保留识别时必需的信息(如字符的连通性),去掉不必要的背景信息和噪声,并且执行时间在实际可接受的范围内,是人们一直以来努力研究的问题。

彩色图像转换为灰度图像的原理如下:彩色图像使用一个三维矢量 (R,G, B) 来表示一个像素点,而灰度图像用一个灰度级(gray level)来表示。因此这种转化可以看作是从一个三维矢量到一个一维矢量的投影操作。通常,可以用一个线性变换来完成这一过程,如下式:

这里,R(x,y),G(x,y), B(x,y) 分别为像素(x,y)点的R,G,B三个分量的值,l,k,m为预先确定的参数。P(x,y)为求得的灰度值。

图像的二值化,实际上是图像阈值化问题的一种特殊情况。图像的阈值分割是指,按照灰度级将图像空间划分成为与现实景物相对应的一些有意义的区域。在各个区域内部,灰度级是均匀的,而相邻区域的灰度级是不同的,其间存在着边界。阈值分割比较困难,但在机器视觉、文字识别、生物医学图像分析、指纹与印草鉴定、光学条纹判读以及军事目标识别等领域应用极为广泛。一般地,我们可以选择多个阈值,把图像的整个灰度级范围划分为几段,称之为多阈值分割。如果我们只选择单个阈值,将图像的灰度级范围划分为前景(或称目标)与背景两部分,就称为图像的二值化。

在我们所研究的文档图像处理这一特定领域中,图像的二值化一般是指将灰度图像转化为只包含黑、白两个灰度的二值图像。文档图像可以看作是由文字、背景、图片三类对象组成,而我们最关心的是文字区域二值化后的结果。

二值化问题是本文主要讨论的问题。关于它在后续章节中有更详细的阐述。

1.2.2图像方向的自动检测与倾斜校正

文档处理系统要求所处理的图像是正的,或者倾斜角度已知,否则许多对图像的操作,例如投影分析,图像分割等等,就无法进行。显然,扫描进计算机的文档图像无法保证一定是正的,因此需要利用倾斜检测和校正的方法对其进行处理。

经常采用的倾斜角度检测的方法[3]有:基于文字行的检测方法,投影轮廓分析方法,和Hough变换方法等等。

基于文字行的检测可以用于已知文字行方向(水平或竖直)的文档图像。它利用了对图像中连通体的分析。我们知道,连通体是一个灰度值相同的像素的集合,这个集合中任意两个像素之间都是8-近邻关系。可以用包含连通体内像素的最小矩形来表示连通体,它描述了连通体的大小和位置信息。如果已知文字行方向,我们就可以将连通体合并成文字行,并用直线逼近。该直线的倾斜角即为文字行的倾斜角。对整幅图像的文字行作同样分析,选出出现频率最高的角度,即可作为图像的倾斜角。

投影操作也是一种基本的图像处理方法。将图像按一定方向作投影,可以得到在该方向坐标轴上分布的波形,它描述了图像沿该方向上的黑像素分布情况。如果图像文字行是水平的,那么沿水平方向的投影波形将具有明显的波峰和波谷。基于这一点,我们可以在候选倾斜角度范围内转动图像,直至出现明显的波峰和波谷为止,这时得到的角度就是倾斜角度。

Hough变换方法是在倾斜检测中最常使用的方法,它抗噪声干扰的能力强,并且不受图像间隙干扰。它的原理是将直线从图像空间映射到参数空间,如下式:

这样就将原图像中的直线映射到参数空间的一点,而原图像中的一点则对应着参数空间的一条正弦曲线。图像空间中任意两点所对应的正弦曲线在参数空间将相交于一点:,进而, 通过的直线上的所有点所对应的正弦曲线在参数空间都将相交于这一点。基于这一点,我们将直线检测问题转化为参数空间寻找局部最大值的问题。以上是标准Hough变换的基本思想。这种方法适用于文字行方向预先未知的情况。   

1.2.3版面结构理解

文档图像几何结构的理解也称为版面拆解,它是文档图像分析中的一个重要问题。版面拆解的目的是生成一个描述文档图像的层次结构:几何结构。它将图像分割成为具有相同特性的区域,为下一步的区域识别和文字识别做好准备。

版面拆解的方法一般有如下三种:

1.      自底向上(Bottom-Up,也称为数据驱动)。这类方法利用图像的局部信息,通过逐步将具有相同属性的区域合并,得到对文档版面的拆解。该方法能处理不同版面的文档和具有一定倾斜的文档,但是一般比较慢。

2.      自顶向下(Top-Down,也称模型驱动)。该方法从图像全局出发,逐步对图像进行分割,最后得到图像的几何结构。对Manhattan式的版面[1],该方法快速而且有效;但是对复杂文档效果欠佳。影响自顶向下方法有效性的因素包括文字行位置的随意性,区域形状的不规则性以及文档图像的倾斜等。

3.      综合方法(Hybrid)则尽量综合上述两种方法的特点,使算法的性能和适应性都得到提高。

由南开大学机器智能研究所开发的识别工具包RTK7.0中,版面结构理解模块采用了基于模型序列的方法[4]。这种方法首先通过大量的观察,建立一些基本的文档结构模型,如:多节结构,多栏结构,标题加多栏结构,非平衡栏结构,等等。另外还有一些由这些基本结构模型组合而成的常见结构模型。实践证明,这些结构模型虽然比较简单,但是能够很好地表示实际应用中出现的版面结构。在对三个彼此独立的样本图像集合的测试中,其覆盖系数达到92.90%

这一章我们从总体上阐述了关于文档处理系统及其预处理部分。从下一章开始,我们将重点研究灰度图像的阈值化问题。


参考文献

[1]     刘秋元,“文档识别和统计分析”,南开大学博士论文,1997

[2]     李昀,“OCR系统前处理的研究”,南开大学硕士论文,2000

李庆中,“OCR中字符切割及文字区域抽取的研究”,南开大学硕士论文,2001

潘武模,“模型序列方法与文档版面结构理解

[5]      ”,南开大学博士论文,2001


第二章 传统的图像阈值化方法介绍

2.1 图像分割与图像阈值化概述

图像分割(image segmentation)是图像处理中的主要问题,也是计算机视觉领域低层次视觉中的主要问题,同时也是一个经典难题。关于图像分割技术,从二十世纪七十年代起,就有许多研究人员和学者进行了大量研究,目前已经有相当多的研究成果。但是由于问题的重要性和困难性,到目前还不存在通用的方法,也不存在判断分割是否成功的客观标准。

所谓图像分割[1],是指将图像中具有特殊涵义的不同区域区分开来,这些区域互不相交,每一个区域都满足特定区域的一致性。

如果N为自然数集,(x , y)为数字图像的空间坐标,G= {0,1,, l-1}为代表灰度值的正整数集,则图像函数可以定义为如下的映射f (x , y)代表坐标为(x , y)的像素点的灰度值。

将一幅图像进行分割[2],就是将图像划分为满足如下条件的子区域

(a)    即所有子区域构成了整幅图像;

(b)   是连通的区域;

(c)    即任意两个子区域不存在公共元素;

(d)   区域满足一定的均匀性条件。

均匀性一般指同一区域内的像素点之间的灰度值差异较小,或灰度值的变化较缓慢。

图像的阈值选取是图像分割的关键技术。使用阈值分割,就是用一个或几个阈值将图像的灰度分布直方图划分成几个类,认为灰度值在同一个灰度类内的像素属于同一个物体。通常,选择一个阈值将灰度范围划分成目标和背景两类,称为图像的二值化。

tG作为阈值,B = { }为一对灰度级,。用灰度级 t 作为阈值对图像函数 f (x , y)进行二值化的结果是产生一个二值的图像函数

总之,阈值选取方法就是基于某种标准来确定一个 t的值

一般来说,现有的阈值选取技术可以分为全局的和局部的阈值选取方法。全局的阈值选取是指根据整幅图像确定一个阈值。局部阈值选取方法是指将图像划分为若干子图像,根据每个子图像确定相应的阈值。

全局阈值选取方法对噪音比较敏感,因此应用中一般采用局部阈值选取方法。但是这二者并无本质的不同。

2.2 全局阈值选取方法

全局阈值选取方法又可以进一步分为点依赖的(point-dependent)和区域依赖的(region-dependent)两种[4]。如果 的确定仅仅依赖于每个点的灰度值,则这种阈值选取的方法就是点依赖的。如果 的确定依赖于邻域点的局部特性(如:局部灰度值的分布),则这种阈值选取的方法就是区域依赖的。点依赖的全局阈值方法有:直方图方法;最大类间方差法;最小误差法;矩量保持法;最大熵方法等等。区域依赖的全局阈值方法则有:直方图变换法;概率松弛方法;共生矩阵法;灰度分布统计方法等等。下面,我们将分别介绍其中比较重要的方法,尤其重点介绍最大熵方法。

2.2.1直方图与直方图变换方法

直方图方法[3] [4]是指直接从原图像的灰度分布直方图上确定阈值,包括p-分位数法、最频值法和直方图凹面分析法。

p-分位数法(p-tile) [4]可以说是最早的一种阈值方法。这种方法假设图像包含黑的目标和亮的背景,目标所占区域的百分数已知。该方法设定的阈值使至少(100-p)%的像素点在二值图像中匹配为目标。例如,已知一页文件上印刷文字约占有全页纸的25%,那么所选阈值应使得灰度级小于阈值的像素数目约占总数的25%。显然,这种方法对于事先未知目标点数占有像素总数百分比的图像是不适宜的。

最频值法(mode ) [4]也是一种很常用的简单方法。在较理想状态下,图像中的目标和背景非常清楚,灰度直方图呈现明显的双峰状。这时可以选取两峰之间的谷底(最小值)对应的灰度值为阈值。但是,实际图像的情况往往比较复杂,而且可能有很多噪音干扰,直方图参差不齐,很难确定极大值和极小值。另外,这种方法也不适用于直方图中双峰值差别很大,或双峰间的谷宽广而平坦的情况,以及单峰直方图的情况。因此这种方法常常与其他方法结合使用。

直方图凹面分析[4]RosenfeldTorre1983年提出的,它适用于直方图中不存在谷的图像。它的原理是,由于直方图中“谷”和“肩”都对应凹面,可以在“肩”处寻找一个好的阈值。设HS表示在一组灰度值0,1,,l-1上定义的直方图,h(0)h(1),…,h(l-1)分别表示直方图中这些灰度值对应的高度,这里 ,有h(i) 0。这样HS可以看成一个二维区域。为了确定HS的凹面,构造包含HS的最小凸多边形,由集合差HS确定HS的凹面。若h(i)(i)分别表示HS在灰度值i之处的高度,则当(i)h(i)取局部极大值时所对应的灰度值i可以考虑作为阈值。为了去除伪凹面(由噪声脉冲引入)引起的极大值,引入一个平衡度量

.

度量了直方图在灰度值i处的平衡性。对于伪凹面,它通常位于直方图的某一侧,其值比较小。因此,略去值较小时(i)h(i)的极大值,其余极大值所对应的灰度值可以选作阈值。这不一定是最优的,可以考虑在这些极大值附近的其他灰度值。

上述几种方法都是直接从原始灰度分布直方图上获取阈值的。实际上,图像的原始灰度直方图往往十分粗糙,存在很多毛刺,如果直接使用直方图方法,常常不能得到理想的结果。基于此原因,人们提出了直方图变换法,20世纪70年代关于阈值选取的大部分工作都集中在这一方面。

直方图变换法[3]并不直接选取阈值,而是将原始灰度直方图经过某种变换,使之具有较尖锐的峰和较深的谷,这样就可以应用前面所述的直方图方法选取阈值。直方图变换法的共同特点是根据像素点的局部特性,为图像中的像素加权,从而获得新的直方图。它们都假设图像可以看作由目标和背景两部分构成,每部分都具有一致的灰度分布。主要的直方图变换法有以下几种:[4]

1)        PandaRosenfeld提出的仅由边缘值(灰度变化率)较低的像素点构成灰度直方图的方法。由于目标和背景内部像素点的边缘值一般较低,而目标与背景边界上像素点的边缘值较高,因此,由此构成的直方图与原始直方图相比,双峰基本保持不变,而谷将变得较深。Katz也曾指出过由边缘值较高的像素点构成的灰度直方图应呈现出一个单峰,该单峰对应的灰度级可选作阈值。

2)        Mason等人提出的使用边缘检测算子(例如Laplacian算子、Robert算子)对直方图进行加权。均匀区域处像素的边缘值较低,给予较大的权;而边界领域中边缘值较低,给予较小的权。权因子以计算,这里为给定像素处的边缘值。

3)        WezkaRosenfeld1979年提出,通过构造图像的灰度-边缘值二维散射图,并计算在灰度级轴上的各种加权投影,可以得到变换后的直方图。

4)        Wu等人提出的四元树方法。它是基于灰度标准差较高的非均匀区域可划分为若干标准差较小的均匀区域这一事实。首先从原始图像开始,如果标准差超过一预定值,就将图像一分为四,然后对每个子图像重复这一过程,直至将原始图像划分成若干标准差较小的区域块。用每块的平均灰度级来近似代替该块的灰度值,由此得到的图像称之为Q-图像,其灰度直方图将峰谷分明。由于 Q-图像中较小的图像块势必位于区域边界的附近,且图像块较小,离边界越近。因此,进一步深化直方图中谷的一种方式是抑制这些较小的图像块,从而使阈值选择变得更为容易

2.2.2最大类间方差法(ostu方法)

最大类间方差方法[4]是由Ostu1978年提出的,它是一种基于判别式分析的方法。把图像中的像素按灰度级用阈值t划分成两类,即= {0,1,t}= {t+1,t+2,l-1}。若用分别表示类内,类间和总体方差,则通过使下列关于t的等价的判决准则函数达到最大来确定最佳阈值

,    ,    .

三个准则函数中,最为简便,又因已知,与t值无关,因此最优阈值

这里,

,    ,    .

Ostu方法计算简单,稳定有效,是实际应用中经常采用的方法。但是它对噪声和目标大小十分敏感,仅对类间方差是单峰的图像有较好效果。当目标与背景的大小比例悬殊时,类间方差准则函数可能为双峰或多峰,此时Ostu方法就会失效。[5]

2.2.3最小误差法

最小误差法[3]中,灰度直方图视为目标与背景像素灰度构成的混合集概率密度函数p(g)的估计,通常假设混合集的两个分量p(g / i) (i = 1 , 2)服从均值为,标准差为的正态分布,先验概率为,即

,

这里

.

求解下列二次方程可得到Bayes最小误差阈值

.

然而,参数,通常是未知的,为了克服估计这些参数的困难,KittlerIllingworth引入了如下的准则函数:

这里

 ,      ,

 ,             ,

 ,      .

最佳阈值,当J(t)取最小值时获得,即

.

最小误差法计算简便,受目标大小和噪声影响小,对于小目标图像,例如目标与背景大小之比低于1的图像也有很好的效果。该方法可用迭代方式实现,并可推广到多阈值的选取。

2.2.4概率松弛法(Relaxation

概率松弛法[6]假设图像是由“亮”的背景与“暗”的目标(或者相反)构成的,这样就可以使用一个阈值来分割。它对各个像素点及它们之间的空间相关性用概率加以描述,通过多次迭代使对象与背景区域得到明显区分,能够有效消除背景噪声。

概率松弛法的基本思想是,首先把像素根据其灰度级按概率分成两类;然后,按照邻近像素的概率调整每个像素的概率,调整过程迭代进行,以使对于属于亮(或暗)区域的像素,(或暗)概率变得非常高。

关于像素的初始分类,RosenfeldSmith提出了如下方法。设dl分别是最暗和最亮的灰度级,是像素的灰度级,则对,令

这个方法虽然简单,但仅限于目标与背景灰度级分别位于灰度级直方图前后两半的情况。为此,他们又提出了另一个初始化策略。设m是平均灰度级,则

Rosenfeld与S.W.Zucker 提出的概率松弛法迭代公式如下:

设像素可以被初始化分成l类(这里l=2),则

这里,是对第i个像素点的所有邻近点(h)计算下式:

 后求和取得的均值。是在第r次迭代中,对第i个像素点属于第j类的概率的估计。C(i,j;h,k)是相关系数,用于衡量事件(像素点ij类内,像素点hk类内)的相关性。其定义为:

2.2.5最大熵方法

信息论之父Shannon 在其经典著论《通信中的数学原理》中提出,一个系统的信息量,即熵,是对于系统的不确定性的度量。近年来,有很多人将信息理论应用于图像处理和模式识别领域。Pun[7]使用Shannon关于熵的概念,在假设图像仅完全由其灰度分布直方图表示的基础上,定义了图像的熵,并用这一量度来实现目标/背景的分离。Kapur等人[8]也使用熵来进行图像分割,不同的是,他们使用的不是整个直方图的单一概率分布,而是使用目标与背景两个相互独立的概率分布。Abutaleb[9]则考虑灰度的空间分布,即图像的更高阶熵,他使用像素灰度值及其邻近像素的平均灰度值来计算图像的二维直方图,并由二维概率分布得到二维熵。Pal等人根据Deluca Termini定义的模糊集上的非概率性熵度量,实现了图像阈值选取的算法。另外,Pal Bhandari[10]使用基于poisson分布的、前景与背景的条件熵,并证明在阈值选取上优于前述算法。

最大熵方法对不同目标大小和信噪比(SNR)的图像均能产生很好的分割效果。它受目标大小的影响小,可以用于小目标分割。但是它运算量大,运算速度比较慢。[5]

本文主要研究使用最大熵方法进行图像的阈值化。下面将会对某些经典算法进行介绍。

1.1.1.1    2.2.5.1 Shannon关于熵的定义

Shannon认为,任何随机事件都含有某种不确定性因素,称为不确定性(uncertainty)。当这一事件发生后,人们在这一过程中获得了其不确定性,即信息。但是不同的随机现象中包含的不确定性是不同的,因而信息的多少也是不同的。所以信息的度量是信息论的最基本的问题。

一般地,定义一个具有n个状态的系统的熵如下:

为系统的第i个状态

发生的概率。

PalPal[11]指出了上述定义的一些缺点,重新定义了熵的形式如下:

因此,我们可以将熵的形式写作:

这里依赖于所使用的定义。

从熵的定义可以看出,系统越不稳定,熵就越大,也就是说概率分布一致性强的系统具有较小的熵。

1.1.1.2    2.2.5.2 Pun的最大熵方法

Pun[7]提出的方法如下:

t为图像分割的阈值,定义后验熵:

,

,

这里,可以分别看作二值化以后,与黑,白像素有关的后验信息的度量。

在知道了灰度直方图的先验熵的情况下,Pun 提出一种确定最优阈值的算法,它通过使后验熵

的上界取最大值而得到。Pun 指出使后验熵取最大值相当于使如下估价函数

取最大值。这里

, ,.

另外,Pun 还提出一种使用各向异性系数来选取阈值的方法,这里

这里m是使得

的最小整数。选取最优阈值,使得

.

但是,Kapur等人发现,这种方法总是得到,从而引入了不必要的偏移。

1.1.1.3    2.2.5.3 Kapur,Sahoo和Wong的方法

Kapur等人[8]提出的这种方法中,由原始图像的灰级直方图定义了目标和背景两个相互独立的概率分布如下:

,

这里,t为阈值,。定义:

,

.

求得阈值使熵达到最大

.

这时可将作为最佳阈值。

1.1.1.4    2.2.5.4 Abutaleb的二维熵算法

Abutaleb[9]使用图像的像素灰度值及其邻近像素的平均灰度值来计算图像的二维熵。令表示一幅M×N的图像,一维阈值方法是用灰度T来将图像中所有像素点划分为两类,二值化后的图像可以用下式表示:

g(x,y)分别为局部平均灰度值函数和二维阈值函数。如果图像由灰度值T和局部平均灰度值S划分,那么

2.1 使用阈值矢量(T,S)分割的二维灰度直方图

2.1是二维的(灰度值,局部均值)直方图。原点定义于左上方,灰度值自左向右增长,局部均值自上向下增长。由于灰度值数目为L,所以直方图中共有个元素。每个元素都代表相应的事件对(灰度值,局部均值)的发生。如果图像用二维阈值(T,S)来分割,那么上述直方图将被划分为4个象限。由于目标或背景内部的像素分布是一致的,所以它们的分布主要在从原点到(L -1,L-1)的对角线附近,也就是说,0象限和1象限分别包含了目标类与背景类的像素分布。而2象限和3象限则主要包含了边缘处的像素点和噪音像素点的分布。

二维熵阈值选取的基本思想是选取阈值矢量(T,S),使得目标类和背景类的后验熵可以达到最大值。由于这两类的分布是互相独立的,我们可以定义两类中每个事件对(灰度值,局部均值)的概率如下:

两个类的熵H0(T,S)H1(T,S)定义如下:

选择阈值向量(T,S),使得

H(T,S)= H0(T,S)+ H1(T,S) 达到最大,这时的(T,S)即为最佳二维阈值。

另外,Brink提出另一种优化的算法,通过使目标类和背景类的熵中较小者达到最大值来求得阈值矢量。二维熵方法在效果上要优于一维熵算法,但是其运算时间复杂度为,非常耗费时间。基于此,ChenWen等人在Brink的算法的基础上提出了一种快速二维熵算法。[12]

这种快速算法的思想如下:二维熵阈值方法的时间消耗的关键在于计算(T,S)对的熵,那么可以估计出一个可能的阈值向量的集合,只对集合中的元素应用计算熵的操作。算法分为两段式操作:第一阶段,求出阈值向量的候选集合。把原始图像的灰度范围除以,来进行量化,这样,量化图像的每个灰度级代表原始图像的一个大小的连续灰度级。量化阈值向量代表(T,S)对的一个区域,这就是候选阈值集合。第二阶段,在这个区域里来计算全局阈值向量。实验证明,最优阈值总是落在候选集合内。这个算法的时间复杂度为,大大提高了算法执行速度。

1.1.1.5    2.2.5.5 Pal和Bhandari的条件熵方法

PalBhandari[10]1993年提出条件熵方法,并证明比Pun的方法、Kapur等人的方法、PalPal的方法更优。

条件熵是以2-序共存矩阵(second-order co-occurrence matrix)的形式定义的。对于如前所述的图像f(x,y),它的共存矩阵是一个L×L维的矩阵,表示了邻近像素间灰度跳变的信息。也就是说,矩阵中的元素表示从灰度i跳变到灰度j的次数。其定义如下:

a表示图像f(x,y)中的像素点(i,j)b表示其8个邻近像素之一,即:

定义共存矩阵中的元素,这里

条件熵的定义如下:

考虑两个独立实验ABAm种可能性Bn种可能性。已知发生的条件下,A的条件熵为:

这里,是已知发生的条件下,发生的条件概率。

由此,以B为条件,A的条件熵为:

这里是事件对的联合概率分布。

表示在邻近像素点灰度值j属于背景类的条件下,灰度值i属于目标类的条件概率, 。这样,对于给定阈值T,在已知背景类的条件下,目标类的条件熵定义为

这里

是事件对(i,j)发生的频率,也即前述共存矩阵中的第i行第j列的元素。

同样可定义已知目标类条件下,背景类的条件熵

这样,分割后图像的总体条件熵为

选择阈值T使得H达到最大值,此时的T即为最佳阈值。

关于这一点,可简单证明如下:[13]

2.2 用阈值分割共存矩阵

th为目标/背景分割的正确阈值。用th来分割共存矩阵,如图2.2所示,显然,目标类和背景类内部的像素点分别主要分布在区域13内,而边缘像素点和噪音点主要分别在区域24内。由于目标类和背景类内部的像素点灰度分布是一致的,所以在同一类别内,从某一灰度值跳变到另一灰度值的频率会很高,而从一个类别内的灰度值跳变到另一类别的灰度值的频率会比较低。也即区域13内的频率比较高,区域24内的频率比较低,而且它们都具有一致分布。现在,令我们假定的阈值为T,且有T<th,那么用T来分割共存矩阵,就会使区域2的频率变高(实际上这些跳变是发生在目标类内部的),而原来区域2内的跳变频率,即从目标类到背景类的跳变频率,仍然会比较低,这样区域2就会具有不平衡的概率分布,从而使其熵值降低。同理,区域1会保持其概率分布的一致性,而区域34受到的影响也会降低其熵值,因此总体上的熵值必然降低。同样分析T>th的情况,也会得出熵值降低的结果。因此,H关于T的最大值是目标/背景分离的最佳阈值。

2.3 局部阈值方法与动态阈值选取

对于目标和背景比较清楚的图像,全局阈值化方法可以取得较好结果。但是如果图像的背景不均匀,或是目标灰度变化率比较大,全局方法一般就不适用了。如下图所示:

2.3 a

2.3 b: 2.3 a使用全局方法阈值化的结果

2.4 a

2.4 b:2.4a使用全局方法阈值化后的结果

这种情况下,尽管局部看来,目标与背景是可分的,但是无法得到一个适用于整幅图像的全局阈值。因此,人们提出了很多动态的局部阈值化算法,也称自适应阈值化算法。所谓动态是指,根据每个像素及其邻域像素的灰度值情况动态地计算分割所需的阈值。常用的动态阈值化算法有ChowKaneko的方法[14]YanowitzBruckstein的方法[15],等等。由于动态阈值化方法常常需要对图像中每个像素点都计算阈值,也就是说,对整幅图像求出一个阈值面(通常是曲面),因此计算量很大,运算速度一般比较慢。

下面将介绍一些常见的动态阈值化算法。

2.3.1 Chow和Kaneko的方法

ChowKaneko[14]1972年提出的方法是通过灰度分布的局部信息来计算整幅图像的自适应阈值面(adaptive threshold surface)。这种方法的基本思想如下:首先,将整幅图像划分成为许多互不重叠的、相等的小单元,组成规则的网格,对每个小单元计算其局部灰度直方图。然后,判断哪些直方图具有双峰,并且利用它们获得对应小单元的局部阈值,对这些局部阈值进行插值,得到整幅图像的阈值面。这种算法比起全局方法有很大的改进,但是其缺陷也很明显:因为如果小单元的面积取得太小的话,用于产生直方图的像素数目也会太少,其统计意义也随之变得不明显。另外由于网格的划分与图像的内容并无关系,由小单元得到的局部阈值比较随意,而不是在比较有意义的层次上。还有,由于可能受到噪音等影响,小单元可能会整个落在目标或背景区域内,而直方图仍呈双峰分布,这时获得的阈值面就会发生严重错误。

2.3.2 Yanowitz和Bruckstein的方法

1989年,YanowitzBruckstein[15]提出了一种不仅仅依靠灰度分布,而是通过求灰度梯度的最大值来确定阈值面的方法。该算法的主要步骤如下:

1)        对图像做平滑操作,即用每个像素的邻域灰度均值来替代实际灰度值。平滑后的图像更容易区分目标/背景。

2)        从平滑后的图像产生灰度梯度图像。

3)        对梯度图像应用阈值化和基于局部最大值的细化操作,获取具有局部最大梯度值的像素点。这些点的原始灰度值通常可以作为局部阈值的候选值。

4)        对平滑后的图像在具有局部梯度最大值的点出取样,然后对这些点在整个图像范围内进行插值,构成阈值面。

5)        用此阈值面进行图像分割。

2.3.3 Sauvola和Pietikäinen的方法

SauvolaPietikäinen[16]2000年提出了一种针对于文档图像的二值化方法。这种方法先将文档页面中的内容分为背景,图片和文字几类,然后对不同类的部分调用不同的二值化算法。

首先,将文档图像划分为大小相等的矩形窗口,可以取大约10-20像素宽。对每个小窗口计算像素平均灰度值和跳变差(transient difference)两个特征。跳变差是局部对比度变化的量度,它的值在[0,1]区间上。设小窗口宽度为n,则在小窗口内计算跳变差的公式如下:

f(i,j)为图像f(x,y)(i,j)像素点的灰度值。

跳变差特征可以被分为以下4种:

跳变差值

特征

一致

几乎一致

变化

跳变

“一致”的和“几乎一致”的跳变差特征对应着背景和图片内容,而“变化”的和“跳变”的则对应着文本类内容。对于每个小窗口,其二值化算法选择的规则如下:

1)        如果灰度均值比较高,且灰度直方图的全局峰值与之落在同一个四分之一直方图内,且跳变差特征为“跳变”,那么使用基于模糊决策的阈值化方法(SDM)

2)        如果灰度均值中等,且灰度直方图的全局峰值与之不在同一个四分之一直方图内,且跳变差特征为“一致”,那么使用基于直方图分析的阈值化方法(TBM)

2.5 SauvolaPietikäinen的自适应文档图像二值化方法流程

在这一章里,我们主要介绍了已有的一些图像阈值化方法和一些基本概念。从下一章开始,我们将针对某类较特殊的文档图像,提出一种新的二值化算法。


参考文献

[1]     罗希平等,“图像分割方法综述”,模式识别与人工智能,1999vol.12,no.3, pp.301-312

[2]     N.R.Pal and S.K.Pal, “A Review on Image Segmentation Techiniques”, Pattern Recognition, ,1993, vol. 26, no. 9, pp. 1,277-1,294

[3]     吴全,朱兆达,“图像处理中灰度级阈值选取方法30年(1962-1992)的进展(一)”,数据采集与处理, 1993 8(3-4)pp.193-201

[4]     P.K.Sahoo, S.Soltani, A.K.C. Wong, and Y.C.Chen, “A Survey of Thresholding Techniques”, Computer Graphics,Vision and Image Processing 1988 (41),pp.233-260

[5]     刘文萍,吴立德,”图像分割中阈值选取方法比较研究”,模式识别与人工智能,1997vol.10,no.3,pp.271-277

Rosenfeld,R.C.Smith,”Thresholding using relaxation”, IEEE Trans. Pattern Anla.Mach.Intell., PAMI-1981 3(5), pp.598-606

[7]     Pun,T., “A new method for gray level picture thresholding using the entropy of the histogram”. Signal Processing ,1980 2(3),pp.223-237

[8]     J.N.Kapur, P.K. Sahoo, A.K.C. Wong, “A new method for gray-level picture thresholding using the entropy of the histogram”, Computer Graphics,Vision and Image Processing , 1985,29, pp. 273-285

[9]     Abutaleb, A.S., “Automatic thresholding of graylevel pictures using two-dimensional entropy”. Computer Graphics,Vision and Image Processing , 1989(47), pp.22-32

[10]Pal,N.R.,Bhandari,D., “Image thresholding:Some new techniques”. Signal Processing , 1993,33(2),pp.139-158

[11]Pal,N.R.,Pal,S.K., “Object background segmentation using new definition of entropy”. Proc. IEEE, 1989,vol.part E,pp.284-295

[12]W.Chen,C.Wen,C.Yang, “A fast two-dimensional entropic thresholding algorithm”, Pattern Recognition , 1994, 27(7), pp.885-893

[13]Sambhunath Biswas,Nikhil R. Pal, “On hierarchical segmentation for image compression”,Pattern Recognition Letters, 2000 (21),pp.131-144

[14]C. K. Chow and T. Kaneko, "Automatic detection of the left ventricle from cineangiograms", Computers and Biomedical Research, , 1972,vol. 5, pp. 388--410

[15] S.D.Yanowitz,A.M.Bruckstein, “A new method for image segmentation”, Computer Graphics,Vision and Image Processing , 1989,46, pp. 82-95

[16] J.Sauvola,M.Pietikäinen, “Adaptive document image binarization”, Pattern Recognition ,2000(33), pp. 225-236


第三章 改进的算法:直接局域二值化方法

3.1 问题的提出

如前所述,二值化是文档图像处理系统中预处理模块的一个重要部分。文档图像作为数字图像的一类,有其自身的特点。一般来说,文档图像的二值化中,目标/背景的分离也就是文字/背景的分离。在进行文档图像处理时,我们最关心的是恢复其文本内容,因此在进行二值化预处理时,最重要的也是保证文字区域的二值化效果。

实际应用中,由于文档图像处理系统的实时性要求很高,为了算法的执行速度考虑,在预处理时尽量采用简单的二值化算法,一般使用一个全局阈值化方法。实践证明,对于大部分的报刊、杂志等非彩色样张,其二值化效果可以满足文字识别模块的需要。但是随着排版和印刷技术的发展,文档样张的形式越来越丰富多彩,文档中的背景、文字都不再是单一颜色,而常常具有各种纹理和多变的色彩。这对于我们的文档图像处理系统是很大的难题和挑战,因为这种情况下,原来的文档图像二值化处理显然已经不能满足需要,必须加以改进。

3.1 a

3.1 b

3.1 c

3.1是一些文字和背景颜色不均匀的文档样张例子,这些样张在目前的杂志、学术期刊、论文、报纸上都很常见。一般地,颜色使用较复杂的样张可以大致分为如下几类:

1)    正文部分文字颜色不一致。

2)    背景颜色不一致,呈现出分块状,但在每一块内颜色一致。

3)    背景有纹理或图案。

可以看出,图3.1 a12两种情况的综合,图3.1 b属于第3种情况,图3.1 c则属于第2种情况。

本文所要解决的问题主要针对于类似于图3.1 c的情况,即正文文本颜色一致,但是背景颜色有块状变化的文档图像的二值化问题。这种样张常见于各种学术期刊和论文中。

3.2 对问题的分析及解决方案的提出

考虑到文档图像处理系统的要求及本类样张的特点,本文在对各种图像阈值化算法进行综合比较、分析后,提出了一种改进的动态阈值化方法,我们把它叫做直接局域二值化方法。

首先,基于文档处理系统对实时性的要求,我们不能采用运算量过大的复杂算法。如果对图像中每一像素点都进行动态的阈值计算,势必大大影响计算速度,无法应用于实际系统中。因此本文认为,对图像采取量化的阈值计算比较合适,即将图像划分为许多小区域,对每个小区域分别应用阈值化算法选取一个阈值,再从这些局部阈值得到整幅图像的阈值面。

其次,对每个小区域的阈值化算法,可以采用最大熵方法。这是因为文档图像中目标(文本)所占比例较小,而且经常有一些噪音干扰,而最大熵方法对于目标大小和噪音不敏感,可以取得较好的分割效果。但是最大熵方法计算量大,计算速度慢,因此有必要做一些优化处理。本文提出的方法采用了PalBhandari[1]的条件熵方法(参见第二章2.2.5.4),使用灰度的空间分布及像素的空间相关性进行阈值分割,并对其进行了一些改进,使其运算时间在可以接受的范围内。

下面将对本文提出的方法进行介绍。

3.3 直接局域二值化方法

本算法主要由以下步骤组成:

1.      将原始图像划分为互不覆盖的、分别具有一定一致性的子区域;

2.      对各个子区域动态计算阈值;

3.      用得到的阈值点构成整幅图像的阈值面,并用此阈值面进行二值化操作。

以下对各个步骤分别详细阐述。

3.3.1将图像划分成为子区域

将图像划分为小区域,是本算法的第一步,也是非常重要的一步。

如何才能将图像大致划分成为意义一致的子区域,而计算代价又不致过大?回顾ChowKaneko[2]提出的最早的动态阈值化方法(参见本文第二章2.3.1),他们首先将图像划分为规则的、等大小的网格。这是最简单的方法,但是这种划分与图像的内容完全无关,导致划分后的网格意义不大。

本文提出的区域划分方法是,先将图像用上述规则网格划分后,再根据各个网格计算出特征,对其分别进行进一步的合并、拆分等处理,得到基本意义一致的子区域。其主要步骤如下:

1.          对于M×N的图像f(x,y),使用n×n大小的网格对其进行划分。这里n不能取得过大,不然就失去了划分的意义;而如果取得过小,计算特征时其统计意义不明显,而且会给后面的合并、拆分处理带来困难。根据观察,对于分辨率为300dpi,普通A4页面大小的常见文档图像,n100200像素宽时有较好效果。

2.          对每个网格,计算下列特征:灰度均值,灰度方差,灰度跳变差[3]。公式如下:

3.          对于每个网格,根据上述特征判断网格性质。网格性质包括:文本区域,图片区域,混合区域。混合区域是指网格内包含两种或两种以上不一致的内容,例如,包含有文本和图片,或者包含有背景不同的文本。如图3.2所示:

3.2 用网格划分图像

判断区域的规则如下:

1)      文本区域的方差中等,但是跳变差比较大;

2)      图片区域的跳变差比较小;

3)      跳变差中等的区域,可以考虑为混合区域。一般地,混合区域方差比较大,而且其灰度均值与至少一个邻近区域差别比较大。

4.          对于网格进行合并和拆分操作,各种性质非常接近的邻近网格,可以判断为内容一致的,应该进行合并。混合区域应进行拆分。

如何进行拆分也是我们需要考虑的问题。实际应用中,合并操作可以省略,主要进行的其实是拆分操作。对于需要拆分的网格所对应的一小块图像,我们可以简单地利用边缘检测算子来寻找主要边缘。由于我们假定样张的不均匀背景是呈块状分布的,而且图片也是规则矩形,所以寻找到的边缘也应该具有直线或近似直线形状。这样就可以将原来的网格进一步切割成互不相交的、各部分基本一致的小矩形,如图3.3所示:


3.3 对混合区域网格进行拆分

3.3.2使用改进的条件熵方法进行阈值化

对划分后的每个小区域使用条件熵方法进行阈值化,实际上是进行全局的阈值化。在这一步,我们要做的事情包括:

1)    计算共存矩阵;

2)    0,1,….L-1个灰度,利用共存矩阵分别计算以当前灰度值为阈值的总体条件熵值;

3)    选择最大熵值所对应的灰度值为阈值。

以下是计算共存矩阵、条件熵值的算法:

算法一. 对给定的图像计算共存矩阵

//算法名称:GetCooccurenceMatrix

//输入:二维图像数据数组Image[n][n],灰度范围[0,L-1]

//输出:共存矩阵二维数组Cmatrix[L][L]

Begin:

    //将共存矩阵初始化,每个元素都置为0:

Set each element in Cmatrix[L][L] as 0;

    //对图像中每个像素点,做下列操作:

    for(i = 0; i < n; i ++)

       for(j = 0; j < n; j ++)

       {

           //取当前像素点(i,j)的灰度值

           Set CurrentGrayLevel as Image[i][j];

           //遍历(i,j)的8个邻近像素点

           for(each Neighbour point in 8-neighbour of Image[i][j])

           {

              //取其灰度值

              Set NeighbourGrayLevel as Gray level of Neighbour point;

              //将共存矩阵中对应位置的元素值加1:

CMatrix[CurrentGrayLevel][ NeighbourGrayLevel] ++;

           }

       }

    return CMatrix[L][L];

End;

 算法二. 利用共存矩阵求灰度值s对应的条件熵值:

//算法名称:GetConditionalEntropy

//输入:灰度值s,共存矩阵CMatrix[L][L]

//输出:条件熵值H

Begin:

    //初始化两个条件熵值H(O|B)和H(B|O)

Set H(O|B) as 0;

Set H(B|O) as 0;

    //计算 :

    for(i = 0; i < s; i ++)

       for(j = s+1; j <= L-1; j ++)

    {

    //首先计算:

       {

           temp = 0;

           for(l = 0; l < s; l ++)

       for(m = s+1; m <= L-1; m ++)

       {  

           temp += CMatrix[l][m];

       }

    po(i,j) = CMatrix[i][j]/temp;

       }

//其次计算:

       {

           temp = 0;

           for(l = 0; l < s; l ++)

    {  

       temp += CMatrix[l][j];

    }

    po(i|j) = CMatrix[i][j]/temp;

       }

//将计算得来的值加到H(O|B):

H(O|B) += po(i,j) * exp(1 - po(i|j));

}

//计算 :

    for(i = s+1; i <= L-1; i ++)

       for(j = 0; j < s; j ++)

    {

    //首先计算:

       {

           temp = 0;

           for(l  = s+1; l<= L-1; l ++)

       for(m= 0; m< s; m ++)

       {  

           temp += CMatrix[l][m];

       }

    pb(i,j) = CMatrix[i][j]/temp;

       }

//其次计算:

       {

           temp = 0;

           for(l = s+1; l <= L-1; l ++)

    {  

       temp += CMatrix[l][j];

    }

    pb(i|j) = CMatrix[i][j]/temp;

       }

//将计算得来的值加到H(B|O):

H(B|O) += pb(i,j) * exp(1 - pb(i|j));

}  

//总体条件熵值H为H(O|B) 与 H(B|O)之和:

H = H(O|B) + H(B|O)

return H;

End;     

算法三. 使用条件熵方法求图像分割阈值

//算法名称:CoditionalEntropyMethod

//输入:二维图像数据数组Image[n][n],灰度范围[0,L-1]

//输出:最佳分割阈值T

Begin:

    //调用算法GetCooccurenceMatrix,得到共存矩阵:

CMatrix = GetCooccurenceMatrix (Image[n][n]);

    //对灰度值0,1,L-1,求最大条件熵值对应的灰度值:

    set MAX as 0;

    set T as 0;

    for(s = 0;s <= L-1; s ++)

    {

    //调用算法GetConditionalEntropy,求s对应的条件熵值H(s):

    H(s) = GetConditionalEntropy(s,CMatrix);

    if(H(s) > MAX)

    {

       MAX = H(s);

       T = s;

    }

}

return T;

End;

分析算法三,我们发现对它可以进行改进。本算法主要的时间空间消耗是在求最大熵值时对所有L个灰度值计算熵值并比较的循环中。而在实际图像中,阈值可能落在一个较小的灰度范围内。因此,我们可以在调用最大熵算法前,增加一个挑选可能的阈值集合的模块,然后在这个集合内应用最大熵选择操作,通过减少循环次数,可以大大减少计算量,而且不会对算法的效果造成影响。

这个候选阈值集合应该如何挑选呢?我们注意到,如果区域主要由文本构成,那么其灰度分布直方图往往呈一大一小的双峰分布,其中较高的峰对应着背景,较低的峰对应着目标(文本)。记较高的峰对应的灰度值为,较低的峰对应的灰度值为,那么阈值显然应该落在之间,阈值寻找范围可以从[0,L-1]缩小到()。(不失一般性,可以假设<。)


为了使直方图能够更好地体现灰度分布特性,我们在对其分析之前,可以先应用一个平滑操作,将原来比较粗糙的直方图变得平滑,消除毛刺、噪音、假“峰”等等的影响。

3.4 a 原始灰度图像区域


3.4 b 原始图像的灰度分布直方图

3.4 c 经过平滑变换后的灰度分布直方图

对平滑后的直方图寻找双峰,找出其对应的灰度值()。在此区间内使用最大条件熵算法寻找最佳阈值。

3.4 d 在平滑后的直方图上寻找双峰,在其间计算阈值

3.4 e 使用阈值分割后的二值图像

改进后的阈值化算法流程如下:

1)        获取各个小区域的灰度分布直方图;

2)        对灰度直方图进行平滑,即用邻近点的频率均值代替当前频率值;

3)        对于存在明显双峰的直方图对应的小区域,将阈值寻找范围缩小到双峰之间;

4)        使用最大条件熵方法计算最佳阈值。

3.4 算法效果比较

实验结果表明,本文提出的算法对灰度变化范围比较大、背景呈块状变化的文档图像有比较好的二值化效果。图3.5显示了使用全局Otsu方法和用本算法进行阈值化的一些结果:     

3.5 a原图像

3.5 b 使用Otsu方法二值化的结果

3.5 c 使用本文算法二值化的结果

3.6 a 原图像

3.6 b 使用Ostu方法二值化的结果

3.6 c使用本文算法二值化的结果


参考文献

[1]     Pal,N.R.,Bhandari,D., “Image thresholding”. Signal Processing , 1993,33(2),pp.139-158

[2]     C. K. Chow and T. Kaneko, "Automatic detection of the left ventricle from cineangiograms", Computers and Biomedical Research, , 1972,vol. 5, pp. 388—410

[3]     J.Sauvola,M.Pietikäinen, “Adaptive document image binarization”, Pattern Recognition ,2000(33), pp. 225-236


第四章 总结与展望

在前面的讨论中,本文在对各种图像阈值化算法分析、研究的基础上提出了一种改进的灰值文档图像动态阈值化算法——直接局域二值化方法,从初步的实验结果来看,它对于背景与文字灰度不均匀的文档样张具有较好效果,比起原来的全局阈值方法有很大改进。

但是,本算法还不是十分成熟,如果应用在某个实际系统中,在某些特殊情况下可能会出现一些问题。例如,在划分小区域时,如果某个小区域内只存在背景,且背景灰度有明显变化,可能在二值化以后就会出现明显的黑块,如第三章图3.6c中左方出现的黑块。但是一般来说,这样的错误对于文字区域并无影响,因此对以后的识别过程影响也不大,所以并不是致命的弱点。另外,当文档样张背景有纹理图案,特别是不规则纹理图案时,二值化后可能仍存在一些噪音点,这时可以考虑添加一个消除噪音模块。还有,本算法对于条件熵方法的优化处理,也还可以改进,使候选阈值集合进一步缩小。这里可以考虑借鉴第二章2.2.5.4中介绍的快速二维熵算法,对图像进行量化。这些问题都需要在以后的实际应用中,有针对性地对其加以改进。

文档图像的阈值化是一个比较困难和复杂的问题,尤其是对于版面、颜色、纹理比较复杂的文档,怎样才能兼顾算法的效果与速度两方面,使之都在可忍受的范围内,是一个值得深入研究的领域。我们可以考虑引入MRF(马尔可夫随机场)模型来处理图像分割问题,以及使用模糊判别等等手段。这些都可以作为我们以后研究的方向

 



[1]所谓Manhattan式版面是指文档图像中各对象可以用一个矩型区域来表示,这些区域互不重叠,而且之间具有明显的空白。

转载于:https://www.cnblogs.com/kuaful/archive/2008/06/01/1211502.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值