形状处理器的制作方法

文档序号:6554438阅读:187来源:国知局
专利名称:形状处理器的制作方法
技术领域
本发明涉及一种形状处理器。
背景技术
抽象形状的图形绘制可能要求对形状描述数据进行许多处理。已知的用于处理形状的方法可以在例如Java 2D API中找到,它提供了用于处理二维矢量图的软件工具。然而,还是需要形状处理引擎来减少计算复杂性以节省处理资源,尤其是在包含显示设备的嵌入式系统中。

发明内容
形状处理器是一个呈现模块(rendering module),可以用来使具有预定义格式的图形对象流入到帧缓冲器或者物理显示器中。由形状处理器呈现的文档可以被分解成基本的图形对象,并且被传递给形状处理器,接着由形状处理器依次组成这些对象用于显示。形状处理器有利地把每个对象处理为灰度级值,直到用于该对象的像素数据被输出到一个显示器或者帧缓冲器为止。
根据本发明的一方面,提供一种产生视频数据帧的方法,所述视频数据帧包括来自图形对象流的像素矩阵,该方法包含a、提供对应于视频帧的像素矩阵;b、接收所述图形对象流,每个图形对象具有定义图像的一组参数,所述参数包括形状、至少一个填充值以及至少一个透明度值;c、逐个对象地处理所述图形对象流,以确定所述矩阵中的每个像素的像素值,其中处理所述图形对象流包括对于每个对象d、根据所述填充值和第一因子的乘积,来确定所述矩阵中的每个像素的第一像素值,所述第一因子是所述透明度值和边缘值的乘积;以及e、通过利用与所述第一因子互补的第二因子解加权每个像素的当前像素值以及对该像素的所述第一像素值和所述解加权的当前像素值进行求和,将该像素的所述第一像素值与该像素的当前像素值进行混合。
根据本发明的一个实施例,所述边缘值具有0到1之间的值,包括0和1,所述边缘值表示特定像素在所述形状内的比例。
根据本发明的一个实施例,所述透明度包括透明度值或者指向透明度值之位图的指针。
根据本发明的一个实施例,所述填充包括颜色、纹理、或者位图中的至少一个。
根据本发明的一个实施例,所述形状包括具有多个分段的路径。
根据本发明的一个实施例,处理所述图形对象还包括将所述对象的形状转换成被编码的扫描数据的数据结构,所述数据结构包含对于所述像素矩阵的每一扫描行的一个数据分段。优选地,每个数据分段描述像素状态信息。更优选地,像素状态信息包括以下至少之一i)内部状态再加上形状内部之像素的以像素为单位的行程;ii)外部状态再加上形状外部之像素的以像素为单位的行程;或者iii)边缘状态再加上边缘中的像素数以及对于边缘中的多个像素中每一个的所述边缘值。
根据本发明的一个实施例,每次对一个扫描行进行混合。
根据本发明的一个实施例,图形对象的形状被表示作为被编码的扫描数据的剪辑掩膜。优选地,混合包括访问所述剪辑掩膜,并且混合与剪辑掩膜相关联的被编码的扫描数据。
根据本发明的另一方面,提供一种产生视频数据帧的系统,所述视频数据帧包括来自图形对象流的像素矩阵,该系统包含a、帧缓冲器,用于存储对应于视频帧的像素矩阵;b、输入机构,用于接收所述图形对象流,每个图形对象具有定义图像的一组参数,所述参数包括形状、至少一个填充值以及至少一个透明度值;c、形状处理器,用于逐个对象地处理所述图形对象流,以确定所述矩阵中的每个像素的像素值,其中处理所述图形对象流包括对于每个对象d、根据所述填充值和第一因子的乘积,来确定所述矩阵中的每个像素的第一像素值,所述第一因子是所述透明度值和边缘值的乘积;以及e、通过利用与所述第一因子互补的第二因子解加权每个像素的当前像素值以及对该像素的所述第一像素值和所述解加权的当前像素值进行求和,将该像素的所述第一像素值与该像素的当前像素值进行混合。
一种用于处理图形对象的系统可以包含一个用于接收对象流的输入单元,其中每个对象具有一组定义图像的参数;以及一个对象处理器,其在逐个对象的基础上处理该对象流以创建像素阵列。
这组参数中的一个可以是一条路径,该对象处理器处理该路径以创建一个表示图像轮廓的像素阵列。对象处理器可以对该路径的边缘进行去混叠处理(anti-alias)。对象处理器可以对该图像的轮廓做行程编码。这组参数中的一个可以是一个边界框,边界框向对象处理器指示将在其中呈现该对象的一个区域。对象处理器可以接收一个平滑系数,该平滑系数指定该对象相对于像素阵列的过采样数量。这组参数中的一个可以是透明度,透明度包含一个关于该形状的透明度值或者一个指向透明度值之位图的指针。
这组参数中的一个可以是填充,填充包含颜色、纹理、或者位图中的至少一个。去混叠的边缘可以被表示为灰度级值。色调响应曲线可以被应用到去混叠边缘的灰度级值。像素阵列可以被传输到屏幕、打印机、网络端口或者文件中的至少一个。这些参数中的一个可以是预先处理的形状数据。该预先处理的形状数据可以包含剪辑掩膜(clipmask)。预先处理的形状数据可以包含透明度。预先处理的形状数据可以包含填充。该方法可以进一步包含在高速缓存中存储中间处理数据,该中间处理数据包含剪辑掩膜、填充或者透明度中的至少一个。
在此描述的一种用于图像绘制的方法可以包含接收将要被显示的对象,该对象包含形状和填充;把对象的形状转换成为多行被编码的扫描数据,它具有关于显示之像素的至少两种可能状态中的一种,这两种状态包含第一状态和第二状态,其中第一状态表示一个像素在该形状内,而第二状态表示一个像素在该形状外;以及把该多行编码的扫描数据中的每一行和该填充混合到一帧的一行中用于显示。
该编码的扫描数据可以包含关于显示之像素的第三种可能状态,其表示像素的一部分在该形状内。该形状可以包含一条包括多个分段的路径。该方法可以包括把可被弯曲的该路径的多个分段中的一个或多个转换成为多个非弯曲的分段。该帧可以包含视频存储器或者显示设备中的至少一个。该帧可以对应于一个非视频存储器或者一个输出位图格式缓存器中的至少一个。该形状可以包含被编码的扫描数据的剪辑掩膜。通过把一个像素划分成为多个子像素区域、确定这多个子像素区域中的哪几个在该形状之内、以及确定在该形状内的那些子像素区域与该多个子像素区域的比值,可以为像素计算关于第三种可能状态的一个值。该值可以被表示为灰度级值。
将要被显示的对象可以包含透明度,而且混合可以进一步包含把多行被编码的扫描数据中的每一行和透明度混合到一帧的一行中用于显示。将要被显示的对象可以包含透明度,其中该透明度依据位深度校正、色调校正、比例缩放、解压缩或者解码中的至少一项进行预处理。该透明度可以包含一个指向关于该形状的透明度值之位图的指针。该填充可以包含颜色、纹理、或者位图中的至少一个。该方法可以包含把多行被编码的扫描数据作为剪辑掩膜存储在高速缓存中。该方法可以包含依据该形状对该剪辑掩膜加索引。
在此描述的一种方法用于对呈现的彩色图像的边缘进行无色去混叠,该方法可以包含接收将要被显示的对象,该对象包含形状和填充,该填充包含一种或多种颜色;把显示之像素表示为一个子像素矩阵,该子像素矩阵包含一个或多个覆盖该像素的子像素区域;使该形状与该子像素矩阵相交;以及把该子像素矩阵转换为关于该像素的灰度级值。
该方法可以包含把关于该像素的灰度级值和对应于该像素的填充与关于该像素的前一个值混合。该方法可以包含重复接收对象、表示像素、与该形状相交、转换该子像素矩阵、以及混合,用于像素扫描行。该方法可以包含对该像素扫描行的灰度级值进行行程编码。该子像素矩阵的一个或多个尺寸可以由一个平滑度值控制。
在此描述的一种用于平滑图形对象边缘的方法可以包含接收将要被显示的对象,该对象包含一条描述该对象之轮廓的路径,该路径具有一个内侧和一个外侧;对于与该路径相交的多个像素中的每一个,对像素进行过采样,以获取表示可能在该路径之内的像素之一的一部分的灰度级值;以及把这多个像素与保存在一个像素阵列中的数据混合。
该方法可以包含对于该多个像素中的每一个,依据该灰度级值对关于该像素的填充值进行加权,并且依据该灰度级值对保存在视频存储器中的数据进行解加权(de-weighting)。该方法可以包含对于该多个像素中的每一个,依据透明度值对关于该像素的填充值进行加权,并且依据透明度值对保存在像素阵列中的数据进行解加权。
在此描述的一种用于处理图形对象的系统可以包含用于接收将要被显示的对象的接收装置,该对象包含形状、填充和阿尔法(alpha,透明层次);用于把该对象之形状转换成为被编码的扫描数据的转换装置,其中该扫描数据具有关于像素的两种可能状态中的一种,这两种可能状态包含第一状态和第二状态,其中第一状态表示一个像素在该形状之内,而第二状态表示一个像素在该形状之外;以及用于把被编码的扫描数据、该填充、和该阿尔法混合到一帧的一行中的混合装置。
被编码的扫描数据可以具有第三种可能状态,该第三种可能状态包含表示一个可在该形状边缘上的像素的灰度级值,其中该灰度级值对应于可在该形状之内的像素的一部分。该帧可以对应于显示器、打印机、文件或者网络端口中的至少一个。该对象可以包含背景填充或者替换填充中的至少一个,该混合装置把该背景填充或者替换填充中的至少一个混合到一帧的一行中。
在此描述的一种用于处理图形对象的计算机程序可以包含接收将要被显示的对象的计算机可执行代码,其中该对象包含形状、填充和阿尔法;把对象的形状转换成为被编码的扫描数据的计算机可执行代码,该扫描数据具有关于一个像素阵列之像素的至少两种可能状态中的一种,这两种状态包含第一状态和第二状态,其中第一状态表示像素在该形状之内,而第二状态表示像素在该形状之外;以及把被编码的扫描数据、填充、和阿尔法混合到该像素阵列的一帧的一行中的计算机可执行代码。
像素阵列可以对应于显示器、打印机、文件或者网络端口中的至少一个。被编码的扫描数据可以具有第三种可能状态,该第三种可能状态包含灰度级值,它表示可在该形状边缘上的像素,其中该灰度级值对应于可在该形状之内的像素的一部分。
在此描述的一种用于处理图形对象的系统可以包含一个处理器,该处理器被配置为接收一个可以包含形状、填充、和透明度的图形对象,以把该图形对象的形状转换成为被编码的扫描数据,并且把该被编码的扫描数据、填充、和阿尔法与一行像素数据进行组合,其中该被编码的扫描数据与关于显示的扫描行的内部像素、外部像素、和过渡像素相对应,其中每个过渡像素包含一个对应于在该形状内的像素之一部分的灰度级值;以及一个存储该行像素数据的存储器,该存储器适于向该处理器提供该行像素数据,而且该存储器适于存储新的一行像素数据,当该行像素数据可以与被编码的扫描数据、填充、和透明度进行组合时,可以产生该新的一行像素数据。
该系统可以包含一个被配置为显示该存储器的显示器。该处理器可以是微处理器、微控制器、嵌入式微控制器、可编程的数字信号处理器、专用集成电路、可编程门阵列或者可编程阵列逻辑中的一个或多个。该系统可以是下列中的至少一个被配置为打印保存在存储器中的多行像素数据的打印机,被配置为存储保存在该存储器中的多行像素数据的存储设备、被配置为输出保存在存储器中的多行像素数据的网络设备。该处理器可以是芯片、芯片组、或者管芯(die)中的至少一个。该处理器和存储器可以是芯片、芯片组、或者管芯中的至少一个。该显示器可以是电子管理器、掌上型计算机、手持式游戏设备、web使能(web-enabled)的蜂窝电话、个人数字助理、增强的电话、瘦网络客户机、或者机顶盒中至少一个的显示器。
该显示器可以是打印机或者绘图仪中的至少一个。该显示器可以被用于文档管理系统中。该显示器可以被用在文档管理系统的传真机、复印机、或者打印机中的至少一种中。该显示器可以被用在一个汽车内系统中。该显示器可以被用在音频播放器、微波炉、冰箱、洗衣机、干衣机、烤箱或者洗碗机中的至少一种中。该处理器可以接收多个图形对象并且并行处理该多个图形对象。


通过下面进一步的描述并参考附图,本发明的上述及其它目的和优点将会得到更加充分地理解,其中图1示出关于图形对象的数据结构,它可与形状处理器一起使用;图2是形状处理器的一个功能框图;图3描述了对交点数据的运算的例子,由一个相交处理过程执行;图4显示了关于被编码的扫描数据的数据结构;以及图5是关于形状处理的处理过程的流程图。
具体实施例方式
为了提供对本发明的一个全面理解,下面将描述某些说明性的实施例,包含一个二维形状处理器,它采用了关于被呈现对象之边缘的空间滤波和色调控制。然而,本领域普通技术人员应当理解,在此描述的方法和系统可以被适当地适用于其它应用、诸如三维形状处理,而且可以与全图像去混叠处理相结合。例如,一个粗糙的全图像去混叠处理步骤可以与对象边缘的细微去混叠处理相结合。所有这些适应和修改对本领域技术人员来说是显然的,而且都会落在在此描述的本图1显示了可与形状处理器一起使用的图形对象的数据结构。图形对象100、或者简单地说对象100可以包含一个边界框101、一个形状102、一个填充104,和一个阿尔法106。形状102可以包含一个具有描边(stroke)110和填充112参数的路径108,或者一个剪辑掩膜114。填充104可以包含一个颜色116或者一个位图118。阿尔法106可以包含一个值120或者一个掩膜122。
边界框101可以包含一个将在那儿呈现对象100的位置,而且可以定义一个将在其中绘制该对象的区域。例如,通过把一条圆周路径与一个边界框101进行组合,可以使用该参数来简化圆弧的呈现,边界框101覆盖了该圆周的四分之一。
形状102可以包含一条路径108,它定义了一系列相连的路径单元,使用PostScript(页面描述语言)格式的路径描述。其它路径表示是已知的,而且也可以被使用。例如,路径108可以包含直线段、具有由两点控制的方向和曲率的贝塞尔(Bezier)曲线、或者其它路径构造。路径108可以被打开或关闭。为了支持更多复杂的几何形状,路径108可以包含自相交的或者多个不相交的区域。路径108的描边110可以包含参数或者属性,例如包含连接属性和顶盖属性,其中连接属性指定关于连接路径单元的呈现,如圆、斜面、或者斜接,而顶盖属性指定关于路径108的一端的呈现,诸如圆、粗端、正方形、三角形等。填充112可以包含一个弯曲规则(winding rule)、或者其它算法或者参数,用于区分路径108内侧与路径108外侧,使得适当的区域可以被填充。剪辑掩膜114可以包含一个指针,指向图形对象100的高速缓存呈现,以便减少重现对象的多余处理过程。
填充104通常可以包含有关形状102将被如何填充的信息。这可以包含,例如颜色116,它可以是在调色板(诸如一个8位调色板)上定义的一个颜色值,或者可以是一个基于颜色的成分,诸如24位RGB、15位RGB、或者32位CMYK,或者颜色116可以是一个灰度级值。填充104可以包含一个位图118,位图118包含了一个将被用于填充形状102的纹理的位图。作为替代,位图118可以包含一个指向将被用于填充形状102的位图的指针。这样的一个位图可以在任何种类的颜色模型中被提供,诸如那些被用于填充104的位图。
阿尔法106通常可以包含与形状102在被填充和显示时的透明度有关的信息。该阿尔法可以包含一个值120,该值是描述关于整个形状102的透明度的单个值,通常从0(透明)变化到1(不透明)。可选的是,阿尔法106可以包含关于被呈现形状102之每一个像素的值的掩膜122,它是一个阿尔法掩膜、或者指向一个阿尔法掩膜的指针。
对本领域技术人员来说,对上述数据结构的适当修改和增强将会是显然的。特别是,图形对象100可以包含在呈现规范(诸如PostScript、Java 2D API、或者例如在Mac OS X操作系统中使用的Quartz和QuickDraw库)中描述的其它特征。
图2是形状处理器的一个功能框图。通常,形状处理器200提供一个用于接收图形对象流的输入单元,并且包含一个对象处理器,该对象处理器在逐个对象的基础上处理该对象流,以创建一个像素阵列用于显示在屏幕上。形状处理器200接收一个图形对象,由如图2所示作为路径202的形状、边界框203、填充204、和阿尔法206所描述,例如它可以对应于以上参照图1所述的图形对象100的组件。形状处理器200可以接收一个剪辑掩膜232而不是一个路径202,它可以由形状处理器200直接传递到一个扫描行混合器226,如以下所述。
形状处理器200的控制数据可以包含一个屏幕边界框208、一个平滑度210、一个色调响应曲线212、一个位深度214、一个彩色空间216、和一个屏幕基地址218。这个控制数据可以存储与显示有关的物理参数,诸如屏幕基地址218或者色调响应曲线212。如下所述,色调响应曲线212可以依据显示器设备的非线性,调整被编码的扫描数据的灰度级值。例如,满刻度之50%的一个亮度值可能导致一个特定设备的65%的像素亮度。色调响应曲线212可以使用一个查找表或者其它的算法或者基于查找的方法来调整这种非线性。其它控制数据可以对应于由用户(或者程序员)指定的参数。例如,平滑度210存储了一个关于边缘处理之细度(fineness)或者粒度(granularity)的值,它可以是一个(或者多个)值,描述了其中每个显示像素的子区域的一个N×N矩阵,这将在下面进行描述。
向一个扫描变换器220提供路径202,其中该扫描变换器220使用来自于交点221的数据,向一个交点缓存器222提供交点数据。一个相交处理过程224进一步处理交点数据,并且提供一个输出到一个扫描行混合器226,由扫描行混合器226把该输出与其它图形对象描述符和控制数据进行组合,以生成一个输出到一个视频存储器或者一个物理显示器。由形状处理器200生成的中间数据可以包含一个路径边界框228、一个变平的路径230、和一个剪辑掩膜232。剪辑掩膜232或者变平的路径230能够独立于形状处理器200使用,或者可以被重新表示为有效输入,借此减少了对形状处理器200的多余重复调用。其它中间数据(未显示)可以由形状处理器200生成用于输出,作为例子包含,相交的输入或者其它预处理的调整,诸如填充图的解压缩、和彩色空间转换、校正、调整、和按比例缩放。
在扫描行处理之前,扫描变换器220可以预处理路径202。例如,通过相交某些数据和确定是否要求了处理,可以避免不必要的扫描变换。例如,路径202的边界框203和屏幕边界框208可以在交点221中相交。如果来自于交点221的输出为空值,则不要求进一步的处理。尽管在图2中没有明确显示,但是可以获得其它交点,诸如与用于填充204的一个边界框(它可以由形状处理器200从填充数据中推断出)、或者用于阿尔法206的一个边界框(它同样可以由形状处理器200从阿尔法数据中推断出)的一个交点。如果交点组是空的,则不需要对路径202进行处理,而且下一个连续的路径202可以立即被处理。如上所述,如果一个剪辑掩膜232作为一个形状而不是路径202给出,则剪辑掩膜232可以被直接传递到扫描行混合器226,因此绕过了扫描变换及其它路径处理步骤。可以以这种方式保存任意的中间处理数据,例如包含剪辑掩膜232、填充数据、阿尔法数据、变平的路径数据等,以避免或者减少多余的处理。
扫描变换器220可以把路径202转换成为与一个目标显示设备的扫描行的交点。可以在向上采样的基础上使用平滑度210来执行这个功能。也就是说,在定位交点之前,可以使用平滑度210作为一个参数,把每一行像素分成若干子像素区域、或者子像素矩阵。所以,例如,为2的平滑度210可以导致100个像素的一个扫描行被处理,以生成交点数据,作为一个2乘200阵列子像素区域,覆盖一个屏幕显示中的同一个区域。为4的平滑度210可以导致同一扫描行被处理,以生成交点数据,作为一个4乘400阵列子像素区域,等等。
路径202然后可以被应用到子像素区域上。可以在一个水平的逐行基础上存储所得到的交点、或者交点数据,包含每个交点的一个X座标、以及路径与一个水平轴相交的方向(例如,向上或者向下)。其它的表示是已知的,而且也可以由扫描变换器220使用。扫描变换器220可以生成路径边界框228。扫描变换器220还可以生成一个变平的路径230,作为一个中间步骤,其中连续的、非线性的段(诸如贝塞尔曲线)被转换成若干个直线路径段。这可以减少与路径有关运算的计算复杂性。交点数据可以被保存在交点缓存器222中。
通常,相交处理过程224分析多行子像素区域,并且标识在形状外的像素串、在形状内的像素串、和过渡像素。那些在一个形状的边缘上并且与该形状相交、以便使它们部分在形状内和部分在形状外的过渡像素,可以被平滑以删除或者减少与呈现有关的其它非自然信号(artifact)或粗糙度(jaggedness)。下面将参考图3对这种过采样技术进行更详细地描述。如下所述,内部像素、外部像素、和过渡像素然后可以被混合到视频存储器里。
图3描述了由相交处理过程224执行的、对交点数据的运算的例子。在图3的例子中,交点数据对应于具有100个像素的一个扫描行,而且平滑度210具有的一个值对应于关于每个扫描行像素的一个4乘4子像素矩阵。
图表301显示了从图2的交点缓存器222中接收的交点数据。如图表301所示,交点数据通常可以包含路径202与子像素区域相交处的X座标,外加路径202的方向。对于第一行、第N行,路径202沿一个向上的方向与第40个子像素相交。在同一行上,路径202沿一个向下方向与第140个子像素相交。在图表301中对第N+1行到第N+3行也列出了交点数据。应该理解的是,这是一个特殊的例子,而且可以取决于路径202的复杂度为一行子像素区域提供或多或少的交点数据。
可以依据一种弯曲规则或者类似的方法对交点数据进行处理,以提取“打开”或者“关闭”的串。在如图3所示的例子中,通过在这个例子中应用一种偶数/奇数弯曲规则,可以以这种方式对图表301中的交点数据进行处理,以生成图表302的被编码数据。
如在图表302中所描述的那样,每行子像素的数据可以被编码为一个数据对,它包含一个打开/关闭标记和共享该打开/关闭标记行的一连串相邻子像素。通常,一串的末端可以根据从内侧向外侧的一个过渡进行标识,或者反之亦然,如通过对交点数据应用一种弯曲规则或者类似的技术来确定。根据这个数据,可以提取若干串像素,反映目标显示的像素,这些像素将完全是在该形状内或者在该形状外,其中该形状是由交点数据来描述的。在图表302的例子中,在该形状外的第一串的五个“关闭”像素可以很容易地被识别出来,它们对应于第N行到第N+3行、和水平子像素区域1-20。
如在图表304中描述的那样,从“关闭”串到“打开”串的过渡可以由关于每行子像素的“打开”或者“关闭”子像素区域的数目来表征。在该例子中,在第一串的五个“关闭”像素之后的数据可以被分组为对应于像素的四个子像素区域的集合,例如子像素区域21-24、25-28等。然后,在每组子像素区域中的“打开”子像素区域可以对四行求和,以获得一个像素的“打开”子像素区域的总数。图表304示出关于六个水平连续的像素的这个总数,这些像素对应于水平子像素区域21-24和第N行到第N+3行,其中的第一个不包含来自第N到N+2行的“打开”子像素区域,以及来自第N+3行的四个“打开”子像素区域。这就提供了关于具有四个子像素区域的这个像素的总打开度(total′on′-ness)。这对应于一个4∶16的比值或者百分之二十五(4乘4的子像素矩阵的4/16)。这被表示为一个关于这个像素百分之二十五的灰度级值。这个分析可以为水平连续的子像素区域重复,直到到达一个充分“打开”的像素为止。在图3的例子中,在子像素区域41-44处到达一个“打开”像素,其中16个子像素区域中的十六个都是“打开”的。相应的像素可以开始一连串的“打开”像素到一扫描行的末端,或者直到下一个过渡为止,如果这样一个过渡发生的话。
关于每一扫描行的所得到数据被表示为若干串“打开”像素、若干串“关闭”像素、和一个或多个过渡像素,其中的过渡像素具有指示了每个过渡像素有多少在一个形状之内(或者做为选择,在一个形状之外)的灰度级值。在下面,图4示出数据结构的示例,其中包含以这种形式的数据行程编码的扫描行。在某些实现方案中,灰度级值可以包含最大或者最小的灰度级值(例如,100%或者0%),它们以其他方式表示“打开”或者“关闭”状态的像素或者行程。例如,这种方法可以被有利地应用于最优化数据的编码,该数据展示了在“打开”和“关闭”之间切换的短行程(short run)。
应该理解的是,可以使用其它技术来得到过渡像素的灰度级值。例如,使用关于路径306的点和斜率信息,可以用数学方法确定在一个形状之内的一个像素部分。通过把形状边缘平滑到灰度级值,可以为全色图像执行一个无色的去混叠运算。随后可以在一个扫描行混合器中提供颜色,将如以下所描述的那样。这种技术还可以被有利地使用而不必进行过采样(即,具有一个平滑度210值,指定每个像素对应于单个子像素区域),这是因为它推迟处理关于一个形状的阿尔法和填充值,直到新像素数据的扫描行与当前像素数据的扫描行相混合为止。还应当理解的是,尽管上述例子涉及一个具有单个内部区域的形状,但是包含多个内部和外部区域的更复杂形状可以被类似地表征。
再次参见图2,相交处理过程224的输出可以被存储为一个剪辑掩膜232。可以依据参考编号对剪辑掩膜232加索引,例如,该参考编号是基于已经被处理的路径202的路径指针、以及任意缩放信息。当以这种方式进行存储时,由形状处理器200接收的每个新路径202可以与缓存的剪辑掩膜的放置处相比较,以便同一形状的多余处理(诸如在文本行中重现字体)可以被减少或者避免。
扫描行混合器226可以把来自于相交处理过程224的输出、或者剪辑掩膜232与一帧当前视频数据进行混合。从图2中将会理解到,这可能包含额外的计算(在下面没有提到),以把像素值映射到显示参数,诸如显示存储器地址、彩色空间、位深度等。扫描行混合器226的预处理可以包含阿尔法映射或者填充映射的解压缩、彩色空间转换、颜色校正、颜色调整、以及按比例缩放。
扫描行混合器226可以直接输出到屏幕、到其它的显示设备、或者到帧缓冲器用于随后的位图呈现。这可以包含非视频存储器或者输出位图格式缓存器。扫描行混合器226通常每次可以对一行视频数据、或者一行像素进行运算。在某些实施例中,可以提供若干扫描行混合器以对若干扫描行进行并行运算。对于每一个像素,扫描行混合器226可以把填充204(例如,一个24位颜色值)、阿尔法206、和对应于那个像素的相交处理过程224输出(或者当可得到时,为剪辑掩膜)进行组合。通常,将填充204乘以阿尔法(对于透明度(0<=阿尔法<=1))以及乘以相交处理过程224输出(0(=关闭)<=输出<=1(=打开))。这表示由形状处理器200生成的像素值。在扫描行混合器226中,这个新值与关于该像素的旧值相组合,它由一个互补因子进行解加权。这个混合运算可以被以数学方式表示为Pi=αef+(1-αe)Pi-1[等式1]其中f=像素的填充值(例如,一个24位颜色值);Pi=扫描行混合器输出;Pi-1=前一个像素值(来自于缓存器);
α=该形状在该像素处的阿尔法值;e=该像素的边缘值(相交处理过程输出)=0,在外部=1,在内部=灰度级值,在形状内之边缘的%被混合的输出可以被保存在视频存储器中用于显示。应该理解的是,等式1是有代表性的,其它等式可以被用于在一个像素接一个像素的基础上组合旧的数据和新的数据,如果该等式适当地加权旧的数据和新的数据、以反映例如新数据的透明度和边缘。例如,这可以是一个两步的处理过程,其中首先执行边缘加权,然后进行透明度加权。此外,存在有等式1的简化形式,它可以被用在扫描行混合器226中以减少处理复杂度。例如,当在完全不透明的形状(即,e=1&α=1)内存在一连串像素时,扫描行混合器226的输出仅仅是关于每一个像素的填充值。在这种情况下,关于相应像素的填充值f可以被直接提供给视频存储器而不需要进一步的处理。
图4显示了一个关于被编码扫描数据的数据结构,作为相交处理过程224的输出。通常,像素值可以被存储为“打开”、“关闭”、或者“灰度级”。打开的像素对应于在一个形状之内的像素,它们将被呈现为由图2中的填充204提供的颜色值。关闭的像素对应于在该形状之外的像素,而且将不会影响现有的显示或者帧缓冲器。如上所述,可以向一个对象提供另外的参数,诸如提供了关于“关闭”像素(即在形状之外像素)的填充值的背景填充。作为另一个例子,可以提供一个替换填充,它在混合之前从在帧缓冲器中的前一个值中被减去。灰度级值表示形状边缘,而且将被呈现为由填充204提供的颜色值,而且依据灰度级值进行比例缩放。编码提供了一种用于表示多行视频数据的方案,它在处理形状时可以明显减少处理成本。例如,编码为若干串“打开”和“关闭”是廉价的,而且灰度级计算在存储器使用和处理器时间上是比较低廉的,是因为它们避免了要求全像素阵列用于图像处理。另外,行程编码在把视频数据存储为剪辑掩膜时提供了好处。然而,应该理解的是,其它压缩技术可以和在此描述的系统一起适当地使用。
行程编码的数据结构400可以包含一个头部402、一个长度404、一个宽度406、一个高度408、一个或多个偏移量410、以及一个或多个数据段412。头部402可以包含任何可用于标识或者使用数据结构400的头部信息。长度404可以指示数据结构400的长度。宽度406可以指示一个以像素为单位、表示一个形状之宽度的值。高度408可以指示一个表示一个形状的多个扫描行的值。一个或多个偏移量410指示了对关于形状的每个扫描行的数据段的字节偏移量。一个或多个数据段412中每个都包含了关于一个形状的扫描行的被编码数据。数据段412可以被表示为“内部”再加上以像素为单位的行程、“外部”再加上以像素为单位的行程、或者“边缘”再加上在边缘中的像素数以及关于在该边缘中的多个像素中每一个的灰度级值。例如,每个边缘值可以被表示为一个字节(256级)灰度级值。
图5是一个用于形状处理的处理过程流程图。在下面的论述中,短语“交点数据”用于指描述了在路径和子像素区域之间的交点的数据。在一种简化的情况下,每个子像素区域可以对应于一个完整的像素,而且因此不执行平滑。短语“被编码的扫描数据”用于指采用未压缩的或者压缩的(例如,行程编码的)形式的数据,它描述了处于三种状态(即打开、关闭或者灰度级)之一种状态中的扫描行的区域。这些行程是通过从一条路径的内部到外部的过渡来确定,其中该路径是通过对交点数据应用一种弯曲规则或者类似的技术来定义的。
处理过程500可以在502开始,接收一个对象,如步骤504所示。例如,该对象可以是以上参考图1所述的图形对象100。在一个可选的步骤506中,确定该对象是否在高速缓存中。例如,可以使用形状名称或者任何其他信息来进行这个确定,所述信息能够唯一地标识如对应于该高速缓存中之存储项的对象之形状。如果该对象之形状是在高速缓存中,则处理过程500可以继续步骤516,在该步骤中,使用被高速缓存的形状和任何提供给该对象的填充和透明度数据,可以将该对象与当前视频存储器相混合。如果该形状没有在高速缓存中,则处理过程500可以继续到步骤508。
如步骤508中所示,处理过程500可以生成一条被变平的路径,如上参考图2中的扫描变换器220所述。然后,被变平的路径可以被用来生成交点数据,交点数据表示在路径和子像素区域之间的交点,如步骤510所示。可以理解的是,这些交点可以表示一个形状的边缘。如步骤512中所示,然后可以根据交点数据中生成被编码的扫描数据,例如,如以上述参考图2中的相交处理过程224。被编码的扫描数据表示该对象形状的轮廓,可以被保存在高速缓存中,如步骤514所示。然后可以把视频存储与被编码的扫描数据混合,如步骤516中所示,以及如参考图2的扫描行混合器226所做的详细描述。处理过程500然后可以返回到步骤504,在该步骤中,可以接收下一个连续的对象。
视频存储器可以提供视频数据帧到一个显示器中,其中该视频存储器的内容被转换为人类可视形式。该视频存储器还可以存储前一个视频数据的一个或多个帧,用于与由该形状处理器产生的视频数据之新行混合。应该理解的是,该显示器可以是一个液晶显示器、发光二极管显示器、或者任何其它用于以人类可视形式提供视频数据的显示器。该显示器还可以是一个打印机、绘图仪、或者其它设备,用于以一种固定的、有形的介质(如纸张)再现视频数据。
应该理解的是,上述处理过程500、以及图2中的形状处理器200,可以以硬件、软件、或者它们的某些组合来实现。处理过程500可以被实现在一个或多个微处理器、微控制器、嵌入微控制器、可编程数字信号处理器或者其它可编程设备中,以及内部和/或外部存储器中,例如只读存储器、可编程只读存储器、电可擦除可编程只读存储器、随机存取存储器、动态随机存取存储器、双倍数据速率随机存取存储器、Rambus直接随机存取存储器、闪速存储器、或者任何其它易失性或者非易失性存储器中,它们用于存储程序指令、程序数据、以及程序输出或者其它中间或者最终结果。处理过程500以及形状处理器200也可以(或者代之以)包含专用集成电路、程控选通门阵列、可编程阵列逻辑、或者任何其它可以被配置用于处理电子信号的设备。
上述电路和部件的任何组合、无论是否被分离地封装为一个芯片、一个芯片组、或者一个管芯,可以适当地适于与在此描述的系统一起使用。应该进一步理解的是,上述处理过程500和形状处理器200可以被实现为计算机可执行代码,利用一种结构化程序设计语言(诸如C)、一种面向对象的编程语言(诸如C++)、或者任何其它高级或者低级编程语言来创建该代码,所述其它高级或者低级编程语言可以被编译或者解释、以在上述设备中的一个上运行,也可以实现为处理器的多机种组合、处理器体系结构、或者不同硬件和软件的组合来实现。
形状处理器200尤其可以适合于并行的和/或流水线式的图象处理系统,其中不同的图形对象可以被同时处理,然后被混合到一帧视频存储器中。形状处理器200因此可以被实现为若干个物理上分离的处理,或者实现为若干个逻辑上分离的处理,诸如在一个微处理器上执行的多个形状处理器线程(thread)。这个方法可以类似地应用于一个图形对象的不同扫描行。
上述系统提供了用于显示装置的有效图像呈现,可以非常适合于小型、低功率设备,如具有液晶显示器(“LCD”)屏幕的便携式设备,包括电子管理器、掌上式计算机、手持式游戏设备、web(网页)使能的蜂窝电话(或者其它无线电话或者通讯设备)、以及个人数字助理(“PDA”)。该系统还可以被组合到具有显示单元的廉价终端设备中,诸如增强的电话、瘦网络客户机、以及机顶盒,以及其他诸如打印机、绘图仪等等的呈现设备。例如,该系统可以被有用地用作文件处理设备(如传真机、打印机、复印机等等)中的一个嵌入式系统,其中一个工作文件和/或一个用户界面的显示器可以增强功能。该系统可以有用地在汽车内系统中使用,该汽车内系统向汽车用户呈现图像和/或提供图形用户界面,诸如在仪表板或者中央操纵台或汽车中。在此描述的系统可以被组合到家用设备中,包含音频播放器、微波炉、冰箱、洗衣机、干衣机、烤箱或者洗碗机。在此描述的系统还可以在任何上述系统中被有用地配置,其中输出被产生到不同设备中,诸如显示器、打印机、网络、和/或文件。单个设备可以使用该形状处理器以输出到这些设备中的任意设备或所有设备。
虽然已经结合所图示和详细描述的优选实施例公开了该发明,应该理解的是,本发明并不限于在此公开的实施例中,而是应该根据权利要求书来理解,这些权利要求将在法律允许的最广阔范围内得到解释。
权利要求
1.一种产生视频数据帧的方法,所述视频数据帧包括来自图形对象流的像素矩阵,该方法包含a、提供对应于视频帧的像素矩阵;b、接收所述图形对象流,每个图形对象具有定义图像的一组参数,所述参数包括形状、至少一个填充值以及至少一个透明度值;c、逐个对象地处理所述图形对象流,以确定所述矩阵中的每个像素的像素值,其中处理所述图形对象流包括对于每个对象,d、根据所述填充值和第一因子的乘积,来确定所述矩阵中的每个像素的第一像素值,所述第一因子是所述透明度值和边缘值的乘积;以及e、通过利用与所述第一因子互补的第二因子解加权每个像素的当前像素值以及对该像素的所述第一像素值和所述解加权的当前像素值进行求和,将该像素的所述第一像素值与该像素的当前像素值进行混合。
2.如权利要求1所述的方法,其中,所述边缘值具有0到1之间的值,包括0和1,所述边缘值表示特定像素在所述形状内的比例。
3.如权利要求1或2所述的方法,其中,所述透明度包括透明度值或者指向透明度值之位图的指针。
4.如在前任一权利要求所述的方法,其中,所述填充包括颜色、纹理、或者位图中的至少一个。
5.如在前任一权利要求所述的方法,其中,所述形状包括具有多个分段的路径。
6.如在前任一权利要求所述的方法,其中,处理所述图形对象还包括将所述对象的形状转换成被编码的扫描数据的数据结构,所述数据结构包含对于所述像素矩阵的每一扫描行的一个数据分段。
7.如权利要求6所述的方法,其中,每个数据分段描述像素状态信息。
8.如权利要求7所述的方法,其中,像素状态信息包括以下至少之一i)内部状态再加上形状内部之像素的以像素为单位的行程;ii)外部状态再加上形状外部之像素的以像素为单位的行程;或者iii)边缘状态再加上边缘中的像素数以及对于边缘中的多个像素中每一个的所述边缘值。
9.如权利要求6到8任意一个所述的方法,其中,每次对一个扫描行进行混合。
10.如权利要求6到9任意一个所述的方法,其中,图形对象的形状被表示作为被编码的扫描数据的剪辑掩膜。
11.如权利要求10的方法,其中,混合包括访问所述剪辑掩膜,并且混合与剪辑掩膜相关联的被编码的扫描数据。
12.一种产生视频数据帧的系统,所述视频数据帧包括来自图形对象流的像素矩阵,该系统包含a、帧缓冲器,用于存储对应于视频帧的像素矩阵;b、输入机构,用于接收所述图形对象流,每个图形对象具有定义图像的一组参数,所述参数包括形状、至少一个填充值以及至少一个透明度值;c、形状处理器,用于逐个对象地处理所述图形对象流,以确定所述矩阵中的每个像素的像素值,其中处理所述图形对象流包括对于每个对象,d、根据所述填充值和第一因子的乘积,来确定所述矩阵中的每个像素的第一像素值,所述第一因子是所述透明度值和边缘值的乘积;以及e、通过利用与所述第一因子互补的第二因子解加权每个像素的当前像素值以及对该像素的所述第一像素值和所述解加权的当前像素值进行求和,将该像素的所述第一像素值与该像素的当前像素值进行混合。
13.如权利要求12所述的系统,其中,所述边缘值具有0到1之间的值,包括0和1,所述边缘值表示特定像素在所述形状内的比例。
14.如权利要求12或13所述的系统,其中,所述透明度包括透明度值或者指向透明度值之位图的指针。
15.如权利要求12到14任意一个所述的系统,其中,所述填充包括颜色、纹理、或者位图中的至少一个。
16.如权利要求12到15任意一个所述的系统,其中,所述形状包括具有多个分段的路径。
17.如权利要求12到16任意一个所述的系统,其中,处理所述图形对象还包括将所述对象的形状转换成被编码的扫描数据的数据结构,所述数据结构包含对于所述像素矩阵的每一扫描行的一个数据分段。
18.如权利要求17所述的系统,其中,每个数据分段描述像素状态信息。
19.如权利要求18所述的系统,其中,像素状态信息包括以下至少之一i)内部状态再加上形状内部之像素的以像素为单位的行程;ii)外部状态再加上形状外部之像素的以像素为单位的行程;或者iii)边缘状态再加上边缘中的像素数以及对于边缘中的多个像素中每一个的所述边缘值。
20.如权利要求17到19任意一个所述的系统,其中,每次对一个扫描行进行混合。
21.如权利要求17到20任意一个所述的系统,其中,图形对象的形状被表示作为被编码的扫描数据的剪辑掩膜。
22.如权利要求21的系统,其中,混合包括访问所述剪辑掩膜,并且混合与剪辑掩膜相关联的被编码的扫描数据。
全文摘要
本发明公开了一种用于将图像呈现为包括多行像素之显示的方法和系统,包含接收将要被显示的多个对象(100)的流,每一个对象包括形状(102)和填充(104);对于每一个对象,将该对象的形状转换(220,512)成为多行编码的扫描数据,其中所述编码的扫描数据具有对于所述显示之每一个像素的至少两种可能状态中的一种状态,所述至少两种可能状态包括第一状态和第二状态,其中所述第一状态表示像素在该形状之内,以及所述第二状态表示像素在该形状之外;以及将所述多行编码的扫描数据中的每一行和该填充混合(226,516)到用于所述显示的一帧中的一行。
文档编号G06T15/00GK1808499SQ20061000578
公开日2006年7月26日 申请日期2001年4月17日 优先权日2000年4月14日
发明者马希德·安瓦尔 申请人:皮克塞(研究)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1