具体实施方式
[022]本发明涉及图像的方法和系统。具体而言,本发明述及根据所再现对象的属性来选择不同的反走样滤波器,应用于以子象素精度再现的图象数据对象。这就使应用于字符的反走样程度是由不同字号的唯一特性来确定。反走样滤波器是应用在平行于子象素条的方向上的。平行于子象素条方向的大的反走样量有利于大字号。在此要指出,描绘大字号特点的字符用到的大量象素,使其灰度级量化后的边缘不太显眼。在进行大量灰度级量化后,小字号再现时显得模糊和可读性差。因此,通过对小字号字符应用小的反走样量,就能保持清晰再现这类字符所需的对比度。
[023]在本发明的一个实施例中,提供了一个不同反走样滤波器组。在这个反走样滤波器组中每一个都提供了平行于子象素条方向的不同的反走样量。当处理设备再现图象时,确定字符的字号,并从这个不同反走样滤波器组中选择一个与其相应的反走样滤波器。为小字号选择的反走样滤波器提供小的反走样量或根本不进行反走样滤波。为大字号选择的反走样滤波器提供相对大的反走样量。随着字符的字号逐渐由小到大,为中等字号选择的反走样滤波器提供相应增大的中等的反走样量。
I.图象数据采样
[024]在描述反走样滤波器的用法前,先参看图2,该图描述了有关在对图像中一个或多个字符应用反走样滤波器之前所要进行的再现图像步骤的一般原则。图2图示了在LCD显示设备的一个区域上的象素网格10,网格中的象素依次包含子象素。象素网格10中的象素按照一连串的列(C1-C5)和一连串的行(R1-R4)排列。第一个象素12是用以说明在LCD显示设备上用象素描绘图形图象中的字符的方法。第一个象素12对应于列C1和行R1。第一个象素12包含红、绿、蓝子象素,它们水平地彼此相邻地排列着。LCD显示设备上的其它象素,包括垂直相邻于象素12的象素,也包含相应的红、绿、蓝子象素。因此,LCD显示设备上垂直相邻象素的子象素就构成了同色子象素条。虽然在这里主要是参考垂直的同色子象素条对本发明进行描述的,但是本领域的技术人员将会认可,本发明也可应用于其它各种结构,包括但不局限于水平方向条结构和斜方向条结构。
[025]图2也图示了一个叠加在象素网格10上的字符14的一部分。依照本发明进行处理的图象数据以字符轮廓线16的形状定义了字符14及用于再现该字符的前景色和背景色。为了再现字符14,光栅化处理器首先解释图形指令,将图象14的轮廓线16适配到象素网格10上。一旦字符14的轮廓线被适配到象素网格10上,光栅化处理器对被随意适配于网格的轮廓线进行扫描转换,并将与被扫描转换过的轮廓线对应的采样值填充到位图中。并将与被扫描转换过的轮廓线对应的采样值填充到位图中。关于可用于本发明的网格适配、扫描转换和采样操作,在美国专利第6,219025号中有更详细的讨论,通过引用包括在此。在一个实施例中,多字符组成的字符串的光栅化首先要对所有字符进行网格适配,然后扫描转换整个字符串。在另一个实施例中,虽然非字符图形对象一般不进行网格适配,但是要用本领域内公知的算法进行扫描转换。对所有这些图形对象的光栅化将产生一幅位图。
[026]图3A图示位图18的一部分,它是对字符14或其它图形对象经过上述的网格适配、扫描转换和采样而生成的。用图象数据采样值生成的位图,用来产生用于LCD显示设备的红、绿、蓝子象素的亮度值。此外,位图也指明了哪些采样值落在字符14的轮廓线16里面,哪些落在外面。这里还要指出,对应于显示设备上的一个完整象素的每个图像数据区域都要获得多个采样值。尽管由本发明的某一实施例决定的每个象素采样值数量的过采样系数会变化,但一般而言,多个采样值是在每个象素水平和垂直两个方向上获得的。在图3A所示的例子中,水平方向上的过采样系数是6,垂直方向是5。水平方向(例如,与显示设备的子象素条垂直)的过采样系数使不同的采样值组能映射到象素的每个子象素上,从而提高了水平方向上的分辨率并提供反走样。垂直方向(例如,与显示设备的条平行)的过采样系数,使垂直反走样滤波器能被应用。
[027]图3A所示的位图18部分表示的是依照本发明的这个实施例要应用反走样滤波器的位图部分。特别地,位图18的区域包括列SC1-SC10和行SR1-SR7。限定列SC3-SC8和行SR2-SR6的垂直和水平粗线对应于显示设备的象素边界。因而,一般而言,要应用本发明的反走样滤波器的位图18区域对应于由相应的象素及其相邻的一或多行和列象素所组成的边界内的采样值。此外,要对其它象素应用反走样的位图区域是相互重叠的。
[028]采样值的行数,与垂直方向上按照垂直过采样系数规定的采样值的数量加上按垂直反走样滤波器要求的相邻采样值的数量是一致的。在本发明的一个实施例中,所要提供的垂直相邻采样值的数量取决于不同反走样滤波器组的要求。本发明的反走样滤波器利用位于某一象素的对应区域外的图象数据采样值来确定用于这个象素的子象素的亮度值。如同下面更为详细地描述那样,垂直反走样滤波器降低位图18中高垂直频率,因此减少了原来应当出现的锯齿状现象。这种反走样的处理是有代价的,即原来存在于描绘字符前景色的子象素和描绘背景色的子象素之间的对比度一般是变小了。
[029]在图示的实施例中,垂直方向(平行于子象素条的方向)上采用5:1的过采样比例系数。另外,在位图18提供的区域中还包括了二行垂直相邻采样值(SR1和SR7)。因此,在图示的实施例中,垂直反走样滤波器可以应用于最多七行采样值。虽然图示的实施例描述的是七行垂直相邻的采样值,其中SR1和SR7取之于相邻的象素,但其价值在于,采样值在本发明的范围与精神内可以充分地利用任意数目和结构的采样值。
[030]采样值也映射到水平相邻的列SC1-SC10组中。列数相应于由水平过采样比例系数确定的水平方向采样值的数量加上用于确定对应每个RGB三元组α值的水平相邻列的采样值的数量。在图示的实施例中,采用水平过采样比例6∶1。另外,利用了左相邻象素的两相邻列的采样值,以及右相邻象素的两相邻列的采样值。
II.计算三元组α值
[031]图3A中所示的位图18区域是用于产生对应于相应象素的红、绿、蓝子象素的三元组α终值。换句话说,通过对位图18区域进行处理来确定应用于红、绿、蓝子象素的亮度值。如下所述,位图进行处理后,每一个红、绿、蓝子象素分别表示图象数据的一个空间上的不同部分,它具有在水平方向增加显示分辨率的效果。此外,位图进行处理后,根据字号大小从依照本发明的反走样滤波器组中选择其一就能减少垂直方向上的反走样效应。
[032]在对位图18的处理中,首先对SR1-SR7每一行的相邻采样值组进行过滤,获得一组对应于红、绿、蓝子象素的α中间值。此过程参照行SR7进行详细描述,但这对SR1-SR7各行是可重复的。图3A图示了采样值20a-j,对应行SR7的水平相邻采样值。例如,阿尔法值α r7是由行SR7的采样值20a-f计算出来的。在αr、αg和αb中小写的r、g和b符号表示这些α值仅仅是中间量,而不是最后用来控制子象素的终值αR、αG和αB。在一个实施例中,每个采样值根据该采样值所对应的是前景色(例如黑色)还是背景色(例如白色),给它赋值0或1。然后将采样值20a-f每一个0或1值相加或者平均来确定阿尔法值αr7。
[033]行SR7的α值αg7用采样值20c-h以相似的方法确定。行SR7的α值αb7用20e-j来确定。总之,处理设备将每一行的水平相邻采样值转换成三元组α值,即为三个子象素的每一个生成一个α值。对其它行SR1-SR6中的每一行使用前述的用于行SR7的方法计算每个子象素的α值,生成图3A中的α中间值数组24。在本发明的范围和精神内,可以采用各种方法和滤波器来确定α中间值。
III.垂直反走样滤波器选择
[034]一旦由SR1-SR7的每一行计算出对应某一象素的位图18区域的所有α中间值后,就可根据字符的字号选择一个反走样滤波器。从一个反走样滤波器组中选择出专用于某一字号的反走样滤波器。这些反走样滤波器适合用于抑制位图18中的高垂直频率。图3B示出的α中间值数组24是参照图3A如上所述产生的。图3B中选定的反走样滤波器26是在与显示设备子象素条平行的方向上(也就是在与应用水平过滤器的方向垂直的方向上)应用的,它将α中间值24转换成一组α终值(αR,αG,αB),用于控制对应象素的红、绿、蓝子象素30。
[035]反走样滤波器26是根据被显示字符的字号从一组现有的滤波器中选出来的,它所提供的反走样量被确定是适合的。总的来说,相对大的字号导致一个能提供相对大的反走样量的滤波器26,反之,对于相对小的字号则导致提供相对小的反走样量,或者根本不进行反走样的滤波器26。
[036]在本发明的一个实施例中,为所有小于给定字号的字符选择了一个反走样滤波器,提供第一反走样量。在另一个实施例中,为所有大于给定字号的字符选择一个反走样滤波器,提供较大的第二反走样量。另外还有一个实施例,为所有小于给定字号的字号提供了一个字号下限。为所有大于给定字号的字号提供一个字号上限。对于字号在上下限之间的字符,使用适于提供中等的反走样量的一个或多个反走样滤波器来反走样。
[037]本发明能用于具有不同字号字符的文档,这将导致对不同的文档字符应用不同的反走样滤波器。例如,在再现这样的图象时,根据要显示的第一字符的第一字号选择第一反走样滤波器。作为第一字符显示过程的一部分,第一反走样滤波器应用于第一字符。根据其字号大于第一字符字号的第二字符的第二字号,选择一个不同的第二反走样滤波器。作为第二字符显示过程的一部分,第二反走样滤波器应用于第二字符。第二反走样滤波器提供的反走样量比第一反走样滤波器提供的反走样量大。因此,作为使用第二反走样滤波器的结果而产生的前景和背景亮度值之间的对比度,比作为使用第一反走样滤波器的结果而产生的前景和背景亮度值之间的对比度要小,但是用第二反走样滤波器过滤的字符的靠近水平部分看上去比用第一反走样滤波器过滤的部分要光滑。
[038]本发明可以对非单字符图形对象应用不同的反走样滤波器。例如在一个实施例中,相同字号的字符串可通过适合那种字号字符的反走样滤波器来再现。在另一个实施例中,由直线和/或曲线组成的图形可通过与直线和/或曲线的粗细相关的反走样滤波器来再现。用小反走样量再现细的直线和/或曲线,而用大反走样量再现粗的直线和/或曲线。在一个实施例中,为应用于具有某一直线/曲线宽度的对象所选择的反走样滤波器就是为具有相似字干宽度的字体所选择的相同的反走样滤波器。在另一个实施例中,通过能提供最大的反走样量的反走样滤波器再现明显厚实的图形对象(例如,填充圆、矩形等)。
[039]反走样滤波器是在与子象素条平行的方向上应用的。这能在子象素再现无法提供额外分辨率的方向上对字符提供反走样。在图示的实施例中,垂直方向是平行于子象素条的方向。不过如果显示设备的子象素条是水平的,则所选反走样滤波器产生的反走样用于水平方向。
[040]在本发明的较佳实施例中,滤波器包括加权滤波器。加权反走样滤波器是通过计算垂直相邻的α中间值的加权和或加权平均来起作用的。在本发明的一个实施例中,由于对应于反走样滤波器的字号变大,具有非零权值的垂直相邻的α中间值的数目也变多。换句话说,在这个实施例中,较大字号的滤波器用于较大的垂直相邻行数。
[041]滤波器提供的反走样量基于该滤波器的权值。每个滤波器为每个RGB子象素垂直相邻α值三元组的每一个值提供一个权值。加权滤波器及其相应的权值将参照图4详细地进行讨论。在本发明的上下文中所使用的反走样滤波器并不限于加权滤波器,可以是各种各样的其他滤波器之中任何一种,包括本领域的技术人员公知的滤波器。
[042]现参照图4,这里示出了由一组加权反走样滤波器组成的示例性数据结构。这个数据表包括一系列字段组。每组字段相关于指定了字号范围的反走样滤波器组中的一个。同时示出,定义权值的这些参数可应用于图3B的垂直相邻α值。如图4中所使用的,底端相邻采样值,第0到第4采样值,以及顶端相邻采样值,分别对应于图3A和3B中SR1到SR7行的三元组α中间值。例如,将一个值为2的权值应用于如图4数据结构中所定义的“底端相邻采样值”,意味着将一个值为2的权值应用于图3A和3B中的α值三元组(αr7,αg7,αb7)。
[043]如前面所提到的,根据被显示字符的字号从该组不同的反走样滤波器中选择一个反走样滤波器。在图4的数据结构中,提供了编号从0至8的九个加权滤波器。虽然在本发明图示的实施例中包括九个加权滤波器,但是在本发明上下文中可以用除单个滤波器外的任意数量的滤波器。
[044]滤波器0对应的是16或更小的字号。在图示的实施例中,17是字号下限,小于此字号就选择滤波器0来提供所需的反走样量。滤波器8对应的是31或更大的字号。在图示的实施例中,30是字号上限,大于此字号就选择滤波器8来提供所需的反走样量。滤波器1至7对应的是在16和31之间的字号,每个滤波器表示两个字号。虽然选择反走样滤波器是在字号范围内内讨论的,但要意识到,确定所要再现字符大小的方法并不需要基于字号的严格解释。例如,在一个实施例中,每字象素(ppem)可以用于计算再现图象的大小。另外,图形对象的干宽、线粗细度或者对象的其它属性都可以用来选择合适的反走样滤波器。在本发明的范围与精神下,有各种各样的方法和结构可以用来确定所要再现的字符大小。
[045]如上所述,大的反走样量有利于大字号。因此,为31或更大字号的字符选择滤波器8,因为滤波器8提供大的反走样量。滤波器8所提供的反走样量是根据它的每个垂直相邻采样点的权值决定的。滤波器8为底端和顶端相邻采样点提供较小的权值,而应用于接近象素中心(见图3A和3B)的α值或采样值的权值则逐渐增加。因此滤波器8对字符的边缘提供大的反走样量。
[046]滤波器0在垂直方向提供小的反走样量。除位于象素中心的三个垂直相邻α值外,滤波器0所提供的权值全是0。最大的权值应用于中间采样值(第二采样值)。换句话说,反走样滤波器只使用了垂直位于具有最重要的中间采样值的象素内的采样值。因此,对于小字号而言,赋给子象素的亮度值几乎全部是由接近于相应象素位图区域中心的采样值所决定的。用反走样滤波器0再现的图象类似于不使用反走样再现的图象,因为滤波器0提供小的反走样量。虽然滤波器8和0是作为针对有具体不同字号的字符的滤波器例子,但是可以看到,用于相对较大字符尺寸的滤波器所提供的反走样量比用于相对较小字符尺寸的滤波器所提供的反走样量要大。
[047]图5说明了将反走样滤波器的权值应用于由RGB子象素垂直采样值计算出的α值的方法。圆弧30表示图4中滤波器7所提供的权值。在图示的实施例中,滤波器7被指派给字号为29和30的字符,并适于提供大字号所需的大反走样量。圆弧40表示图4中滤波器0所提供的权值。在图示的实施例中,滤波器0被指派给字号为16或更小的字符,因为滤波器0提供小的反走样量。
[048]Y轴上对应于圆弧30的一组位置31-37,代表要应用权值的垂直相邻采样值的α值或每个RGB子象素的α中间值。如滤波器7,位置31对应于顶端相邻采样值的α值,它赋予的权值是圆弧30上的1。位置32对应于第0垂直相邻采样值的α值,它赋予的的权值为5。位置33对应于第1垂直相邻采样值的α值,它赋予的权值为7。位置34对应于第2垂直相邻采样值(采样于象素中间)的α值,它赋予的权值为10。位置33-37对应于第3、4和底端采样值的α值,它们分别赋予的权值为7、5、1。
[049]由于圆弧30宽而浅的外形及对应于圆弧30的权值,滤波器7提供大的反走样量。应用了大反走样量的字符,其边缘的中间阴影数量要比应用了小反走样量的字符大。中间阴影是通过赋予象素边缘前景和背景子象素中间的亮度值而完成的。
[050]相反,圆弧40又窄又尖的外形及相应于圆弧40的对应权值,导致滤波器0提供小的反走样量。与位置41、42、46和47对应的权值是0。位置41、42、46和47依次代表顶端相邻采样值、第0采样值、第4采样值和底端相邻采样值的α值。只有位置43、44和45具有非零的权值,它们对应的是从接近象素中心处得到的第1采样值、第2采样值和第3采样值。
[051]图6是一个方框图,说明在本发明的上下文中所用到的依据字体尺寸的反走样方法。此方法的步骤52使用替代采样确定垂直相邻行1-n的α值。确定垂直采样值α值的替代采样方法将参照图3A和3B进行详细的讨论。一旦确定了垂直相邻行采样值的α值,在步骤54中就要确定正被再现的字符字号。根据正被再现的字符字号,步骤56从反走样滤波器组中选择一个反走样滤波器。在步骤58中,通过垂直相邻行采样值的α值与反走样滤波器所提供的权值相乘,将所选的反走样滤波器在垂直方向上应用于该字符。步骤60中,为每个RGB子象素将权值和α值的乘积结果累加以确定其子象素的亮度值。步骤62中,一旦将乘积结果加在一起后,亮度值结果就被应用到RGB子象素上,显示出字符经反走样处理的版本。
IV.典型计算环境
[052]本发明的实施例可以由包括各种计算机硬件的专用或通用计算机组成,如下所详述。在本发明范围内的实施例还包括在其上存贮以传送或者保有可执行指令或数据结构的计算机可读介质。这样的计算机可读介质可以是能被通用或专用计算机存取的任意可用介质。作为举例,但不限于此,这样的计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其它光盘存储、磁盘存储或其它磁存储设备,以及能用来传送或存贮以计算机可执行指令或数据结构的形式表现的所需程序编码方法而且能被通用或专用计算机存取的任何其它介质。当信息通过网络或者另外的通信连接(无论是有线的、无线的,还是有线或无线的组合)传送到或提供给计算机时,该计算机就可以把这个连接看作为计算机可读介质。因此,任何这样的连接都是完全符合计算机可读介质定义的。以上的组合也应当包括在计算机可读介质范围内。计算机可执行指令包括,例如,能使通用的计算机、专用的计算机或者专用处理设备完成某个或某组功能的指令和数据。
[053]图7和下面的讨论将对本发明得以实现的适当的计算环境加以简要全面的描述。尽管不是必需的,本发明已可用通过网络环境中计算机执行的通用计算机可执行指令进行描述,如程序模块。通常,程序模块包括例程、程序、对象、组件、数据结构等,完成特定的任务或者实现特定的抽象数据类型。计算机可执行指令、相关的数据结构和程序模块作为在此公开方法执行步骤的程序编码方式的实例。这样的可执行指令或相关的数据结构的特定序列作为与实现这些步骤中所描述的功能相对应过程的实例。
[054]本领域的技术人员将意识到,本发明可以由网络计算环境中多种计算机系统配置实行,包括个人电脑、手持设备、多处理器系统、基于单片机的或可编程的民用电子设备、网络PC、小型计算机、大型计算机,以及诸如此类的设备。本发明也可以在任务由通过通信网络互连的(可以是有线连接或无线连接的,也可以是有线或无线连接相结合的)本地和远程处理设备完成的分布式计算环境中实行。在分布式计算环境中,程序模块可以同时位于本地和远程内存存贮设备中。
[055]参照图7,实现本发明的典型系统包括一个通用计算设备,这里是一台常规计算机120,它包括:处理单元121,系统内存122,连接包括系统内存122和处理单元121在内的各种系统组件的系统总线123。系统总线123可以是几种总线结构类型的任何一种,包括内存总线或内存控制器,外设总线,以及使用各种总线结构的任意一种局域总线。系统内存包括只读存贮器(ROM)124和随机存取存贮器(RAM)125。基本输入/输出系统(BIOS)126可以存贮在ROM124中,它包含了用于在诸如起动的时候帮助计算机20内部各组件之间传送信息的基本例程。
[056]计算机120也可以包括用于读出和写入硬磁盘139的硬盘驱动器127、用于读出或写入可移动磁盘129的磁盘驱动器128,以及用于读出或写入诸如CD-ROM或其它光盘介质的可移动光盘131的光盘驱动器130。硬磁盘驱动器127、磁盘驱动器128和光盘驱动器130分别通过硬盘接口132、磁盘驱动器接口133和光盘驱动器接口134与系统总线132连接。驱动器和与它们相关的计算机可读介质为计算机120提供计算机可执行指令、数据结构、程序模块和其它数据的非易失性存贮。虽然在此描述的典型环境使用了硬磁盘139、可移动磁盘129和可移动光盘131,但是其它用于存贮数据的计算机可读介质类型都可以使用,包括磁带、闪存卡、数字通用盘、伯努利字体盒、RAM、ROM,以及类似的介质等。
[057]由一个或多个程序模块组成的程序编码方法(包括操作系统135、一个或多个应用程序136、其它程序模块137和程序数据138)可以存贮在硬盘139、磁盘129、光盘131、ROM24或RAM25中。用户可以通过键盘140、定点设备142或如话筒、操纵杆、游戏垫、卫星电视天线、扫描仪等其它(未示出的)输入设备向计算机120输入命令和信息。这些和其它输入设备常常通过连到系统总线123的串行接口146连接到处理单元121。也就是说,输入设备还可以通过其它接口连接,如并行端口、游戏端口或通用串行总线(USB)。显示器147或其它显示设备也通过诸如显示适配器148的接口连接到系统总线123。除了显示器,个人计算机一般还包括其它如扬声器和打印机等(未示出的)外部输出设备。
[058]计算机120可以在网络化环境中用逻辑连接至一台或多台远程计算机的方式来操作,如远程计算机149a和149b。图7所示的远程计算机149a和149b中的每一个都可以是另一台个人计算机、服务器、路由器、网络PC、对等设备或其它普通网络节点,而且一般还包括上面提到的与计算机120相关的很多或全部组件,但除了内存存贮设备150a和150b以及与它们关联的应用程序136a和136b。图7描绘的逻辑连接包括局域网(LAN)151和广域网(WAN)152,它们只是作为示例而并不仅限于这些。这样的网络环境在办公室或企业计算机网络、企业内部互联网和互联网中是很普通的。
[059]在局域网网络环境中使用时,计算机120通过网络接口或适配器153连接到局域网151。在广域网网络环境中使用时,计算机120可以用调制解调器154、无线连接或其它方式建立与广域网152的通信,如互联网。调制解调器154,可以是内置式或外置式的,通过串行接口146连接到系统总线123。在网络化环境中,所述的与计算机120或其某个部分相关的程序模块可以存贮在远程内存存贮设备中。将意识到的是,所示的网络连接是具有代表性的,通过广域网152建立通信的其他方法也可以使用。
[060]只要不脱离本发明的精神或基本特征,本发明可以用其它特殊的形式实施。无论如何,所述的实施例只是说明性的而非限制性的。因此本发明的范围将由所附的权利要求书指定,而不是由前面的描述指定。与权利要求书等价的意图和范围内的所有变化都包含在内。