本发明通常是与计算机图形学有关的,特别是与那些用于文本描绘的使用光栅化技术的理想的图示符的显示有关的。更进一步说,本发明特别是与使用网格选配和非交叠两种技术的图示符的光栅化的方法有关的。 现在已经存在着光栅化字型的一些方法,以便产生可在如CRT这样的显示设备上显示的象素图像或产生用于传统激光打印机打印用的象素图像。用于产生字型地象素图像的传统方法是扫描转换法。扫描转换是将叫做图示符描述的字符的理想描述转换为象素图像。参考图1A,它是汉字的图示符描述。图示符描述是典型的一系列定义组成该字符区域的理想轮廓的曲线和点。所有已存在的将理想的图示符描述转换为象素图像的方法使用的是一般性技术,这种技术在结果的象素图像中会引起一些缺陷。正如图1B所示的那样,当图1A的理想的图示符表示转换成95×95的象素矩阵时,该字符还仍保留其相当的可读性,而可以不管其缺陷如何。然而,当理想的图示符的尺寸大小减小时,其缺陷会逐渐地变得相当严重了。图1C给出的是将图1A的图示符表示转换为14×14象素矩阵时其放大的图解。正如所见的那样,该14象素的形式是不可读的。
普通计算机显示技术的范围是每英寸70至90点。在上述分辨率下,相当普通的大小(10至20个印刷业者的点)的文本可能很难阅读并且从审美角度看也是劣等的。用于解决该问题的以前技术的一个途径是“双色网格选配”法。该方法产生的是只使用黑色或白色象素的象素图像。网格选配是用于修改理想图示符的轮廓,使其与象素网格相匹配的一种技术,并努力产生从审美角度看更满意的并且是可读的结果。现在参考图2A-2D,图中描述了网格选配的结果。图2A-2D为象素网格、黑色和白色象素及图示符表示的图形表示。图2A和2B描述的是使用标准扫描转换技术的拉丁字符“0”的象素转换结果。如图2A所示,如果理想的轮廓碰巧以和谐的方式与象素网格一致的话,则扫描转换过程会得到满意的结果。然而,如图2B所示,当理想的轮廓与象素网格不一致时,该扫描转换会产生不希望的制造物,如图2B所示的两个附加的象素10。尽管图2B所示的扫描转换在数字上是正确的,然而该过程在该字符的左边和右边之间得到的是审美学上不满意的不一致性。现有技术的网格选配方法通过为图示符的专门部分提供“线索”的方法试图克服这个问题。这些线索认出该图示符的重要部分,而该图示符适合于装配在象素网格中,以便产生审美学上满意的结果。图2C和2D给出了网格选配的结果。图2C描述的图示符表示是和图2B相同的。由于具有线索的图示符部分与象素网格是不一致的,网格选配法使用该线索来控制轮廓的舍入和调整过程,以便产生一个如图2D所示的具有在与象素网格一致的线索间的图示符部分的失真的轮廓。
正如从图2D所见那样,“0”的右边左移了约半个象素,因此在图2B产生的那个不希望的制造物10就不会产生了。线索将理想轮廓的外形中的细节除去,以便描绘一个不是理想的不同的外形,但是在用很少的象素不能精确表示理想的图示符的条件(次-最佳条件)下,该外形还是较满意的。尽管由网格选配法所提供的改进对于拉丁字符的显示是可以过得去的,但是汉字和日本字字符的转换的象素图像的质量在传统的计算机显示上还是不能读的。对于小的汉字而言,即使采用网格选配法,现有技术的方法所产生的结果还是同图1C相类似。因而,就需要一种方法将理想的图示符表示转换为高质量的象素图像。
用现有技术来改进象汉字这样的复杂字符的可读性的另一方法是非交叠法。非交叠法主要已经用在电视和视频产品上以增强象素图像的质量。各种非交叠技术使用中等密度或色彩的象素来建立较高分辨率的幻影。当使用中等“色彩”或灰度值时,原来用两种色彩的网格选配法会丢掉的那些如曲率和不同笔划粗细等细节就可以以图3A所示的那样以高度可视的逼真度描绘出来。然而,正如图3B所示的,即使使用了非交叠技术,但是由于错误调整了象素网格,象素图像仍然会有不希望的失真和制造物12。因而,以前的任一种技术途径在提供小尺寸的复杂的表意文字字符的象素图象时都是无效的。因此,需要有一种方法来产生可读的、高质量的表意文字字符的象素图像。
本发明用改进的方法克服了现有技术的限制和缺点,可用于从理想的图示符表示中产生即使是在小的尺寸时仍是审美学上是优良的且更可读的象素图像。本发明有利地组合了双色彩网格选配技术和非交叠技术,并以统一规格的审美学上又是满意的字符来产生表意文字和拉丁文这两种图示符。本发明的最佳实施例由下述步骤组成:检索理想的图示符表示和从字型检索线索;为了适合象素网格的需要使用网格选配技术来修改理想的图示符表示;使用线索将已修改的图示符表示分成多个不重迭的区域;对每个区域使用非交叠技术而不考虑该区域外的象素的值再处理这些区域以产生一个最终的灰度可增减的位图。
图1A为以理想轮廓格式表示现有技术的图示符;
图1B描述了图1A的传统的图示符的现有技术的象素转换为95×95的象素矩阵;
图1C描述了图1A的传统图示符的现有技术的象素转换为14×14的象素矩阵;
图2A-2D为现有技术的象素转换结果、图示符表示和网格表示的象素的图形表示;
图3A和3B为使用非交叠和象素网格法的增强的象素图像的图形表示;
图4为用于执行图示符光栅化的本发明的总的方法的流程图;
图5A和5B为用于线索转换的最佳的方法的流程图;
图6A-6E为笔划的部分和象素边界的图形表示;
图7为用于控制点交换的最佳方法的流程图;
图8为用于图示符区域至区域的非交叠至象素空间的最佳方法的图形表示;
图9A和9B为取样和处理用于扫描转换的取样点最佳的方法的流程图;
图10为轮廓线、象素边界、取样间隔的图形表示和小部分象素基值的表;且
图11为从字型单位变换到象素单位的图示符。
现在参考图4来描述本发明总方法的最佳实施例。本发明的方法有利于得到这样的象素图像,对于拉丁字符和亚洲的表意文字这两者而言他们比用现有技术得到的在审美学上更满意且可读性强。本发明的方法是使计算机能更好实现的过程,传统计算机可用它在传统显示设备如监视器或CRT上来显示字符或者在传统的激光打印机上打印字符。
图4提供了本发明的方法的最佳实施例的概述。该最佳实施例的方法在第400步开始。在第401步,计算机(图中未给出)检索包括理想图示符表示和线索在内的字符信息。字符信息是一些闭合的轮廓线和示意数据结构。每个轮廓线最好是由起始点和一些相连接的由控制点来区分的直线和曲线所组成。该字符信息指定了字符的区域的外形,并且在绝对座标空间的笔划单位中加以指定。线索数据可以用到所有的轮廓线和字符的控制点中或者只用到轮廓线的子集中。每个线索识别正好装配象素网格边界的字符部分。下一步,在402步中,从绝对座标空间的笔划单位中将字符信息的线索部分转换到象素单位中。按照所要用的打印机或显示设备的操作限制来设置象素单位。比例因子也是由类型外观的总的字模和所希望的象素大小来决定。在402步中使用下面将近描述的专门的网格选配技术来换算该线索。然而,那些技术上熟练的人会认识到现有技术的各种网格选配技术也可以使用。一当该线索已被转换,则在第403步中将控制点转换到象素单位中。该线索的转换有效地将图像分到一组不重迭的区域中。在每个区域中的比例因子会与其它区域的稍微有些不同,在其它区域中将把线索装配到象素网格中。在第403步,使用从线索转换步骤(第402步)得到的比例信息将轮廓线的控制点转换为象素空间以便产生一系列有比例的线段和曲线。下一步,在第404步中,沿着每个曲线和线段以固定的间隙来取样一些点。然后,在第405步,一个区域至一个区域地处理取样点,以便决定每个象素的相对的色调并产生一个灰度图像。然后,该过程在第406步完成并结束。本发明使用这个方法在那些已经被指出其审美的重要性的图示符的点上产生较鲜明的转变。相反,要防止相邻的特征简单地影响图示符,因为这些特征是在重要的点的附近。
现在参考图5,我们将对按照本发明来执行网格选配(第402,403步)最佳方法加以更详细地描述。一旦已经检索了线索数据结构和图示符时(第401步),就对它们加以处理以便将线索从字型空间转换到象素空间(第402步)。每个线索最好是由开始点(S)和结束点(e)组成,它叫做“抽样点”(snap point)。对于抽样点之间的间隔而言,线索也包括典型的宽度。典型宽度指出了在低分辨率下抽样点之间的择优的距离。线索转换过程对整个字形也使用两种度量:标准的水平和垂直笔划宽度(W),该宽度在它们各自的方向上指出了主要笔划的宽度。在图5的第501步中,最佳方法通过将开始点(S)换算成相对值S′开始。在第502步,将典型宽度(C)换算成相对值C′。在第503步,将实际笔划宽度,即(s-e)的绝对值,换算成相对值w′,并且在第504步,将标准笔划宽度(W)换算成相对值W′。下面在第505步中,对典型的、实际的和标准的笔划宽度的相对值加以比较。如果实际笔划宽度的相对值w′和典型笔划宽度的相对值C′相关多于0.5个象素,则将w′用作所希望的宽度。否则,将C′用作所希望的宽度并且将w′设置成与C′相等。此外,如果标准笔划宽度的相对值W′和实际笔划宽度的相对值w′相差小于0.5个象素的话,则将w′设置成与W′相等,并且用它作为所希望的笔划宽度。这一步确立了将标准的或典型的笔划宽度作为所希望的笔划宽度,除非它们比实际笔划宽度的差多于0.5个象素,在这样情况下,将实际笔划宽度用作所希望的笔划宽度。在第506步中进一步改进这个换算。在该步中本方法确定w′是否比一个象素宽。如果w′比一个象素宽,则本方法在第507步继续进行,在这一步中将开始点S′和实际笔划宽度w′这两者的相对值四舍五入到最近的整数。然后在第508步,根据s>e的条件是否成立,将实际笔划宽度w′的相对值加到开始点s′的相对值中或者从开始点s′的相对值中减去实际笔划宽度w′相对值,以便产生e的转换值。在第514步完成线索的转换并且结束该处理过程。然而,如果在506步中实际笔划宽度w′的相对值不比一个象素宽的话,则过程进行到第509步去处理。在第509步中,将实际笔划宽度w′的相对值置成比它实际值大0.25象素。将最小值0.25强加到w′上以确保该字符的区域不会消失。下一步在510步中,根据s>e是否成立,将实际笔划宽度w′的相对值加到起始点s′相对值中或者从起始点s′的相对值中减去实际笔划宽度w′的相对值,以便产生结束点e′相对值。现在已经决定了s′和e′的相对值,所以本方法将这些点装配到象素网格中。在第511步,将s′和e′的值与象素边界加以比较。由于在以前第506步中已经决定了w′小于一个象素的宽度,因而s′和e′所跨过的距离至多只越过一个象素边界。在第512步中,本方法决定了s′和e′是否在相同的象素中。如果它们在相同的象素中,则该笔划放到一个象素中且s′和e′的值保留不变,然后该过程在第514步结束。然而,如果s′和e′之间的区域跨过一个象素边界的话,在第513步调整s′和e′的值,将该笔划沿着较小错误的方向移动,使s′和e′驻留在相同的象素中。参考图6A-6E可以最好地理解第513步中笔划的移动,在图6A-6E中给出了当s′和e′与象素网格相比较时三种可能的情况。如图6A所示,当s′和e′处在一个象素时,就不必对笔划加以调整。现在参考图6B和6C,可以看出本发明的方法是通过将s′和e′减去相同的值,来迫使e′调整到最接近象素的边界,从而将图6B的笔划左移的。在图6D和6E给出了相反方向的类似的调整。本发明的方法是通过将s′和e′增加相同的值,来迫使s′调整到最接近的象素边界,从而将图6D的笔划右移的。因而,本发明的方法有助于引入笔划移动所带来的益处,例如当理想的图示符表示不精确地对应象素网格时,本发明可以除去由此所导致图像产生不希望的制造物。除去这样的制造物使图像会更鲜明些。
现在参考图7,我们将描述将控制点(图4的第403步)从字型单位转换到象素单位的最佳的方法。正如上面提到的,线索转换过程将象素空间分成一组不重叠的区域或区间。然后通过使用参考图5和图6已经描述的线索转换过程中的信息,用线索转换来指导控制点的转换。最佳的方法从第700步开始。在第701步中,过程在需要从字型单位转换到象素单位的图示符中测试是否还有剩余的控制点。如果再没有要转换的控制点,则该转换过程就完成了并且在第706步结束。否则,最佳的方法将在702步至705步中循环,直到每个控制点都转换为止。在第702步,检索要转换的控制点。接着,在第703步检索线索信息。特别是,该方法检索了决定每个区域边界所必须的信息,如果有的话,那是由第402步的线索的转换已经定义的。在这一步中,也决定了每个区域的比例因子。然后,在第704步要被转换的控制点的值与在703步中检索到的线索信息相比较,以便决定哪个区域有控制点,并且还决定了将控制点从字型单位转换到象素单位所适宜的比例因子。然后,在第705步使用与控制点的区域有关的比例因子,将控制点换算到象素单位中。一旦控制点已经被换算,该方法循环到第701步且重复该过程,直到所有控制点完成换算为止。那些技术上熟练的人认识到在X和Y量个方向上会有许多控制点,并且还会认识到在影响控制点换算的垂直和水平两个方向上会有几个线索。
现在参考图11,我们将描述图5A,图5B和图7的线索和控制点转换过程的例子。图11为转换的图示符,其Y轴为象素单位,X轴为字型单位并且是由虚线表示的理想转换(即没有线索的线性换算)。没有线索时,控制点的值只是简单地乘上比例因子并且四舍五入。线索的引入使转换空间改变到不连续的而是片状的线性空间。考虑一个轮廓的例子,其在X轴的边界间隔为〔0,500〕,并且有三部分线索(200,275,75)及标准宽度为150。
而且该轮廓线的比例率为0.012。该边界间隔换算为〔0,6〕。
使用参考图5A和5B所描述的步骤,s′=200×0.012=2.4。
标准宽度换算成150×0.012=1.8,实际宽度和典型的宽度换算成0.012×75=0.9。由于标准宽度和实际宽度的差值不大于0.5个象素,因而将典型宽度0.9选作为笔划宽度,于是结束座标e′换算成s′+w′=3.3。使用第513步的笔划移动技术,则s′=2.1和e′=3.0。因而,三部分线索在间隔〔0,500〕字型单位中分成三个区间或区域,如图11所示。相应的三个区域的范围是0至200,200至275和275至500。每个区域提供它自己的换算函数。在图11,三个换算函数由三个实线段表示。如果给定控制点在字型单位的X座标,则本方法会确定三个范围中的哪一个会具有该值,并且再应用与那个范围或间隔有关的换算函数。由例子的线索产生的三个换算函数是:
T0(x)=(2.1/200)x, 0≤x<200,
T1(x)=2.1+(x-200)(3-2.1)/(275-200) 200≤x<275,
T2(x)=3.0+(x-275)(6.0-3.0)/(500-275) 275≤x<500.
应该理解的是有两组与每次描绘有关的线索,一组是用于X方向,另一组是用于Y方向。因而,对于Y方向的点也需要类似的转换。
一旦已经确定了控制点,本发明的方法将执行非交叠法以便获得更鲜明的图像。非交叠法包括将字符装配到比实际希望的还要大一些的源象素网格中。在源网格中的每个象素或者是黑的(断)或者是白的(通),且在数学上表示为或者是最小值(0)或者是最大值(1)。然而目标象素网格允许象素值在0和1的范围内。当源网格实际减小到所希望的尺寸时,在源网格中有几个象素(叫作“样品”)对应于目标网格中的单个象素。其值为0或1的这些样品是在一起平均的,且结果是范围从0至1的单个最终的值。
本发明在区域接着区域的基础上对图示符使用非交叠的步骤。如图8所示,线索过程将图示符(字母“O”)分成一系列由线索的开始和结束点所定义的区域。每个区域定义了象素图像的一部分,它主要是黑色或白色,并且区域的边缘将可能在象素网格中有显著的色彩变化的区域打上记号。本发明有助于使用由网格装配,建立的区域信息(即线索)去影响非交叠的一般过程。如图8所示,当一般的一个象素在一个区域时,是不考虑临近区域的象素的,虽然使用正常的非交叠方法是要考虑这些象素的。这有助于在图示符中的那些区域之间建立鲜明的转变,因为美学上的重要性是关键的,因而已经对那些区域加以识别。反之,要防止邻近的特点去支配图示符的一部分,因为他们在附近。优先使用线索来将图示符分成几个不重叠的区域。如图8的例子,由二个水平的线索将图示符分成三个垂直的区域(A,B和C)。那些技术上熟练的人会理解到由于有许多垂直和水平这两类线索,图示符会在垂直和水平两个方向上分成几个不重叠的区域。
现在参考图9,我们将描述按照本发明来执行取样的图像产生的最佳的方法。本方法在第900步开始。在第901步中,将组成图示符的曲线,如果有的话,分解成线段。于是,在第901步之后,图示符将只用线段来表示。接着在第902步检索图示符的一个线段。在第903步,在Y方向以0.25个象素的间隔在这个线段上取样一些点。那些技术上熟练的人会明白取样间隔的值可以根据显示或打印设备所允许的灰度级别来加以选择。在本例子中,对于16级灰度,已经选取该值为0.25。例如,按照第903步从(0.7,0.7)到(1.7,1.7)取样线段会需要Y值选作为0.75,1.0,1.25和1.5。接着,在第904步对于每个取样的Y值计算相应的X座标。对于从(0.7,0.7)到(1.7,1.7)的线段,这将产生取样点(0.75,0.75),(1.0,1.0)(1.25,1.25)和(1.5,1.5)。然后,在第905步,本方法将决定是否还有剩下要取样的线段。该方法最好是测定轮廓线的每个线段,直到轮廓线的所有线段完成取样为止。如果在图示符中还有线段要取样的话,该过程循回到第902步;否则方法继续到第907步,在第907步,用多边形存储(filing)算法来决定每个相对基值的区域。那些技术上熟练的人会明白各种不同的多边形存储算法可用来做出这种决定,例如由J.D.Foley和A.Van Dam所著的“交互式计算机图形基础”中所揭示的。该算法通过在点接通或断开之间区域的每个扫描线上指定开始点和结束点(或者其许多点)的方法较好地定义了相对的基值。在扫描行的每一对点表示对间隔穿过的象素的相对色彩的间隔基值。然后在第910步,通过测试由间隔所覆盖的每个象素的区域来决定对相对色彩的基值。当已经决定了每个象素的基值后,在第911步将他们(基值)求和以便产生相对色彩值。
例如,设(x0,y)和(x1,y)是一个这样的间隔,其中x1≥x0,设象素P完全“断开”时(即字符的轮廓线完全和P不相交),象素P的值C(P)为0。同样,设象素P完全“接通”时(即描绘的字符和轮廓线完全覆盖P),象素P的值C(P)为1。下一步,我们对从(x0」,y」)跨越至(x1」,y」)的象素计算其间隔的相对色彩基值,其中v」和v」相应表示v的整数最低限度和最高限度。
假设每个象素的初始值为0,则象素的值可以按照下式来计算:
一旦我们对每个象素间隔的相对色彩制成表格,则其总值为0.25的倍数,因为取样点是在Y方向的每0.25象素间隔上取样的。每个C(P)的最终的和数表示每个在第912步用来产生图像的象素的相对色彩。对于一个特别的描绘而言,假设屏幕的背景的色彩为b(背景),且我们希望用色彩f(前景)来画字符,则每个象素的最终色彩为rf=(1-r)b,式中r为按上面来计算的每个象素的和。
现在参考图10,图中给出了一个例子轮廓线的灰度基值。特别是给出了Y=0时的间隔的基值。对于Y方向的每个增量,计算每个象素的结果,其中Y的整数值为0(即,0.0,0.25、0.5和0.75)。对于每个增量而言,按照上面的等式对象素与象素的间隔求和,以便产生图10表中每一行的值。一旦已经决定了每个象素的四行之后,就可将它们制成表格以便决定每个象素的灰度色彩。
当参考最佳实施例对本发明加以描述之后,那些技术上熟练的人们会认识到可以提供各种不同的修改。例如,可以用不同的算法来实现本发明的网格选配和非交叠法。本发明对最佳实施例提供了这些或其它的变化和修改,但它只限制在下面的权利要求范围。