通过像素采样抗锯齿的方法和系统的利记博彩app

文档序号:6553037阅读:383来源:国知局
专利名称:通过像素采样抗锯齿的方法和系统的利记博彩app
技术领域
本发明通常涉及图形处理,并且更具体地但不是限制地涉及一种在低计算成本下以高帧速率产生高质量、抗锯齿的图形图片的方法和系统。
背景技术
三维图形的实时绘制在移动终端上有大量吸引人的应用,包括游戏、人机界面、消息接发和电子商务。由于三维绘制典型地是计算费用大的任务,因此必须经常构建专用硬件以实现可接受的性能。降低此硬件体系结构的计算复杂性和带宽利用率的创新方式因此是非常重要的。如在Akenine-Mller、Tomas和Jacob Strm的“Graphicsfor the MassesA Hardware Architecture for Mobile Phones”(ACMTransactions on Graphics,vol.22,no.3,Proceedings of ACMSIGGRAPH 2003,pp.801-808,July 2003)中所述的,已表明移动电话的平均眼睛至像素的角度约是个人计算机(PC)的2-4倍。因此,移动装置上的图像质量理论上应优于用于PC上的图像质量。然而,移动装置一般具有更少且不太强大的计算资源。
自计算机图形学的早期开始,当在显示屏上呈现静态或移动图片时,锯齿一直是个问题。锯齿的一个示例是当以某个角度绘制线时在显示终端上可见的阶梯效应。这些阶梯赝像通常被称为“锯齿”。在三维绘制期间,多边形的边缘经常产生明显的锯齿赝像。最好是使用抗锯齿(anti-aliasing)技术减少这些赝像。
减少由于锯齿而在图片中出现的赝像的一种方法是使用被称为超级采样的方法。在超级采样方法中,按每个像素不止一个点对将要显示的场景采样,并根据样本计算最终的图像。作为超级采样的特殊情况,多重采样技术也按每个像素不止一个点对场景采样,但片段着色器计算的结果(例如,纹理和颜色)在像素中的样本之间共享。通常,多重采样算法是一次性取每个像素的不止一个样本并在网格单元的样本之间共享计算。
在抗锯齿的超级采样方法中,以比在屏幕上显示的最终分辨率更高的分辨率来绘制图片,从而导致每个像素不止一个样本。各像素的样本随后进行平均,例如以形成像素的颜色。这通过为将要显示的各像素绘制多个子像素样本并将各像素的值计算为子像素样本值的加权和来完成。例如,各显示像素可由像素内一组四个子像素样本的过滤加权和组成。
由于使用超级采样方法,图形硬件必须为各显示像素处理四倍量的样本。这种抗锯齿的方法经常被称为强力超级采样。强力超级采样大大提高了图像质量,但在存储空间和绘制时间方面付出了高代价。例如,假设目标图像的宽度和高度为w×h。如果2w×2h的分辨率用于强力超级采样,则使用每个像素四个样本,并需要四倍的存储空间及四倍的光栅化时间。虽然超级采样提供了良好的图片质量,但由于计算负担重,它可导致低的帧速率。
为了降低用于产生抗锯齿像素的计算负担,可使用修改的超级采样方案,在该方案中,子像素样本位置被置于适当的位置以使一个或多个样本位置的值可用于计算不止一个像素的最终值。这种超级采样方案经常被称为样本共享方案。通过共享样本,实现每个像素少于四个样本是可能的。由于部分计算可由像素内的所有样本共享,因此,多重采样有时可用于进一步降低带宽需求。
美国圣克拉拉的NVIDIA公司的GeForce3TM图形处理单元提供了支持超级采样和像素之间的子样本共享的硬件。被称为“Quincunx(五点梅花排列采样法)”的超级采样方案介绍了在模片上以“5”的形式的子像素样本模式(即,5个子像素样本用于计算最终像素的值)。由于Quincunx方案中样本位置的放置原因,每个像素只有两个样本需要计算。其余的样本值从相邻像素获得。中心子像素样本得到0.5的权重,而外围子像素样本各得到0.125的权重。有关Quincunx方案的信息可在NVIDIA公司的“Technical Brief,HRAAHigh-Resolution Antialiasing through Multisampling”中找到。
单色方案中介于黑色与白色之间的多个灰度等级取决于使用的像素样本点的数量。在使用四个像素样本位置的示例中,在黑色与白色之间最多将有三个灰影。因此,上述Quincunx方案最多提供4个灰影。然而,Quincunx方案的有效灰影数量可低至2个。在Quincunx方案中,样本点在垂直、水平和45°方向上形成线,这使得对于一些线取向来说,Quincunx方案比其他一些方案表现得更差。

发明内容
本发明力图提供一种用于以低计算成本产生高质量抗锯齿的图片的方法和设备。本发明的一个实施例涉及一种用于减少锯齿的方法。该方法包括在多个像素样本点对图像的像素进行采样以产生相应的多个像素样本值的步骤,其中多个像素样本点中的至少一个像素样本点位于沿像素的边缘与一个位置有预定位移的位置。该方法还包括组合多个像素样本值以产生显示的像素值。在本发明的一个实施例中,预定位移利用查找表来确定。在本发明的又一个实施例中,预定位移以伪随机的方式来确定。
本发明的另一个实施例涉及一种用于减少锯齿的系统,该系统包括适于存储图像的样本缓冲器和适于在多个像素样本点执行像素采样以产生相应的多个像素样本值的处理器,其中多个像素样本点中的至少一个像素样本点位于沿像素的边缘与一个位置有预定位移的位置。处理器还适于组合多个像素样本值以产生至少一个显示的像素值。
本发明的另一个实施例涉及一种制品,该制品包括至少一个计算机可读介质和包含在该至少一个计算机可读介质上的处理器指令,这些处理器指令配置为可由至少一个处理器从该至少一个计算机可读介质中读取,并由此使该至少一个处理器运行以便在多个像素样本点对图像的像素进行采样以产生相应的多个像素样本值,其中多个像素样本点中的至少一个像素样本点位于沿像素的边缘距一个位置的预定位移内。处理器指令还使该至少一个处理器运行以便组合多个像素样本值从而产生显示的像素值。


结合附图,参照下面的具体实施方式
可获得对本发明更完整的理解,其中图1A示出用于抗锯齿的像素采样模式的示例;图1B示出用于抗锯齿的像素采样模式;图2A示出用于抗锯齿的像素采样模式的另一个示例;图2B示出用于抗锯齿的像素采样模式;图3A和3B示出像素样本模式中的像素样本位置的计算;图4示出像素样本模式的镜像步骤;图5示出另一个像素样本模式的另一个镜像步骤;图6A和6B示出像素样本模式;图7示出像素样本模式;图8示出像素样本模式;图9A和9B示出用于产生抗锯齿图片的方法;图10A-10D示出各像素包括三个像素样本的多重采样方案的变型;图11示出另一个多重采样方案;图12示出包括九个像素的3×3像素配置中的抗锯齿方案;图13A-13D示出多重采样方案;图14示出多重采样方案;图15示出3×3像素配置中的抗锯齿方案;以及图16是示出用于创建抗锯齿图片的图形系统的示意框图。
具体实施例方式
现在将参照附图,更充分地描述本发明的实施例。然而,本发明可体现为许多不同的形式并且不应当认为受限于本文所提出的实施例。本发明应只看作受目前存在的权利要求书及其等同物的限制。
本发明的各种实施例用于通过提供非周期性像素采样模式减少抗锯齿赝像。非周期性像素采样模式不会使特殊的边缘角更易于具有锯齿赝像。本发明的各种实施例用于消除为相邻像素实施反射规则的需要,并只要求被置于像素边缘上的样本由共享像素边缘的相邻像素来共享。因此,其他像素无需依赖于该样本。
现在参照图1A,它示出用于八个像素101a-101h的像素采样模式。图1A的像素采样模式示出位于像素101a-101h边缘上的九个像素样本点104-112。为清晰起见,未示出可能位于水平像素边缘上的任何像素样本。由于像素采样模式为每两个像素重复进行,因此,图1A的像素采样模式具有的周期为2。
现在参照图1B,它示出依照本发明实施例的像素采样模式。图1B的像素采样模式示出位于像素101a′-101h′边缘上的九个像素样本点104′-112′。为清晰起见,未示出可能位于水平像素边缘上的任何像素样本。在图1B中,像素样本点105′沿像素101a′和101b′的共享边缘按预定偏移量移位,以使它与任一其他像素样本点104′和106′-112′不在沿像素边缘的同一垂直距离上。像素样本点105′移位的距离可通过多种方法或算法中的任何一种来确定。在一种选择中,像素样本点105′移位的距离可通过从将要执行抗锯齿方案的一个或多个像素的表中进行查找来确定。在另一种选择中,偏移量可以伪随机的方式来确定。像素样本点105′的位移产生非周期性的像素采样模式。在又一种选择中,在要求位于像素边缘的样本点由共享该像素边缘的相邻像素共享的情况下,像素样本点104′-112′中的任何一个或多个可沿像素边缘移位预定的距离。
现在参照图2A,它示出用于八个像素201a-201h的像素采样模式。图2A的像素采样模式示出位于像素201a-201h边缘上的九个像素样本点204-212。为清晰起见,未示出可能位于水平像素边缘上的任何像素样本。由于像素采样模式为每三个像素重复进行,因此,图2A的像素采样模式具有的周期为3。
现在参照图2B,它示出本发明的实施例,其中,像素采样模式中的每个样本定位在沿像素边缘的预定偏移处,或定位在沿像素边缘的预定间隔内。图2B示出八个像素201a′-201h′的像素采样模式。图2B的像素采样模式示出位于像素201a′-201d′和202a′-202d′边缘上的九个像素样本点204′-212′。各像素样本点204′-212′定位于在像素边缘的预定间隔内的预定点上。在一种选择中,像素样本点204′-212′在以伪随机的方式定位在像素边缘的预定间隔内。在另一种选择中,像素样本点204′-212′定位于从查找表中读取的预定偏移处,以使像素采样模式不会对至少两个像素重复。
图2B示出与各像素样本点204′-212′相关联的预定间隔,各预定间隔用括号表示。通过使用像素样本点的位移,在用于产生位移的伪随机发生器或查找表的限度内,产生像素采样模式的实际无限周期,这导致沿线边缘的改进的对称打破并在抗锯齿图像中提供更佳的视觉质量。虽然像素样本点204′-212′的预定间隔示为只沿像素边缘的一部分延伸,但应理解,预定间隔可沿像素边缘的整个长度延伸以使特殊像素样本点可位于沿像素边缘的任何位置。还应理解的是,像素样本点无需精确地位于像素边缘上,而是可位于像素边缘附近,例如,在离像素边缘三分之一像素宽度的距离处。应理解的是,附加的像素样本点可位于每个像素内。
图3A和3B示出其中像素样本点303-306被置于像素301边缘并且像素样本点307-310被置于像素302边缘的超级采样方案。如果像素301和像素302的位置彼此相邻,则这允许显示存储器中像素301与像素302之间的像素样本共享。在图3A和3B的超级采样方案中,样本不像Quincunx方案一样被置于像素301、302的角上。相反,以旋转的正方形配置为像素301、302的每个边缘定义一个像素样本点,并且赋予每个样本点0.25的权重。应理解的是,其他权重也可用于加权各样本点。
图3A和3B下方分别示出了用于确定精确像素样本位置的等式。如图3A和3B所示,在图3A和3B的等式中,项x0和y0分别表示x轴(“x”)和y轴(“y”)的原点。
如图所示的像素样本点303-310的布置提供了其中需要相对小数量的像素样本点的采样模式。另外,采样模式提供了各样本点位于像素的唯一行和列上的特征,即没有两个像素样本共享特殊像素的同一列或行。这在图3A和3B中通过虚线来示出,其中没有两个点在同一虚线上。采样模式还用于破坏像素采样模式配置的对称性,这增强了显示屏的非轴线的抗锯齿效应,非轴线是不与显示屏的水平轴或垂直轴平行的线。抗锯齿效应对于相对于显示屏接近垂直或接近水平的线来说甚至更大。例如,采用穿过一个或多个像素301、302在显示屏上绘制的多边形的接近水平取向的边缘。例如如果Quincunx方案用于产生抗锯齿线表示,则将使用四个样本点,像素的各角上各一个样本点。对于一些像素,多边形边缘将只覆盖像素的顶部,但仍将覆盖两个最高像素样本位置。因此,通过检查来自像素中像素样本位置的值,即使边缘覆盖了像素的一半,所确定的像素的抗锯齿值将为0.25。因此将拙劣地呈现像素。
如果借助于具有定位在接近水平线取向上的、覆盖像素301、302顶部的一小部分的多边形边缘的图3A和3B的方案发生同一情况,则多边形边缘将不会覆盖两个像素样本位置,而是由于样本位置的布置只覆盖像素301、302的最高水平边缘上的样本位置。
图4示出其中像素401的像素样本点403-406不像Quincunx方案一样被置于像素的角上的像素采样模式。如像素样本点403-406所示出的像素样本配置称为“象限A”。相应地,表示如像素样本点406-409所示出的像素样本配置的像素402称为“象限B”。
通过检查并排的象限A和象限B的配置,显然,当在象限A的右侧垂直边缘410(并因此为象限B的左侧垂直边缘)被反射时,象限B的像素样本点406-409的镜像是象限A中相应的像素样本点403-406。通过镜像像素样本点403-406和406-409的位置,可能的是,在这两个像素之间共享像素样本点406并且仍打破像素采样配置的对称性以实现更佳的抗锯齿结果。每行只有一个样本,并且每列只有一个样本。例如,在Quincunx方案中,顶行有两个样本。
图5示出其中左上方像素501包含按象限A配置的四个像素样本点510-513的抗锯齿方案。像素501右侧的像素502也包含按象限B配置的四个像素样本点513-516,这些样本点在最左像素501的右边缘被反射。此外,第三像素503也包含按象限A配置的四个像素样本点516-519。正如从图5可看到的,像素501-503共享各对像素501-502、502-503之间的一个像素样本点513、516。包括像素504-506的下方像素行从呈现像素样本点511、520-522的象限B配置的像素504开始。像素样本点511在上方像素行上的像素501与像素504之间共享。通过检查并排的象限A(即,最高像素501)和象限B(即,下方像素504)的配置,显然,象限B的像素样本点511、520-522形成了在像素501的底部水平边缘530(并因此为像素504的顶部水平边缘)反射的象限A中相应点510-513的镜像。
像素505包含按象限A配置的四个像素样本点515、522-524。像素505与像素502共享一个像素样本点515,并与像素504共享一个像素样本点522。这同样适用于最右侧的像素506,该像素也与相邻像素503、505共享两个像素样本点517、524。
通过使用镜像方案,在确定像素501-506的最终值时,除显示屏上最高和最左像素501-504之外的所有像素只需要计算两个新像素样本位置值。在其中为像素501按从左到右且从上到下的顺序执行像素计算的一个示例中,计算了像素样本点510-513的值。对于像素502,计算了像素样本点514-516的值,而像素样本点513的值由于已经为像素501计算得出,因而不必计算。对于像素503,计算了像素样本点517-519的值,而像素样本点516的值由于已经为像素502计算得出,因而不必计算。对于像素504,计算了像素样本点520-522的值,而像素样本点511的值由于已经为像素501计算得出,因而不必计算。对于像素505,只计算了像素样本点523-524的值,而像素样本点515和522的值由于已经分别为像素502和504计算得出,因而不必计算。类似地,对于像素506,只计算了像素样本点525-526的值,而像素样本点517和524的值由于已经分别为像素503和505计算得出,因而不必计算。在其中可通过从右到左且从下到上扫描遍历像素的另一种选择中,除最右列和最底行外的所有像素只需两个样本。在又一种选择中,扫描方向可每隔一行改变以便使存储器的使用更高效。应理解的是,本领域普通技术人员所了解的、遍历几何图元的像素的许多方式是可能的,只要遍历方案访问该几何图元内的所有像素。
图6A和6B示出其中像素样本点303′-306′被置于像素301′的边缘并且像素样本点307′-310′被置于像素302′的边缘的超级采样方案。如果像素301′和像素302′的位置彼此相邻,这允许显示存储器中像素301′与像素302′之间的像素样本共享。在图6A和6B的超级采样方案中,一个或多个像素样本点303′-306′可位于沿像素301′和302′边缘的间隔内的预定位置。图6A和6B示出与各像素样本点303′-310′相关联的预定间隔,各预定间隔用括号表示。虽然各括号示为沿像素边缘的一部分延伸,但应理解,像素样本点可沿像素边缘的任何部分来定位。在图6A和6B的实施例中,为像素301、302的各边缘定义了一个像素样本位置,并且赋予各样本位置0.25的权重。对于图6A,确定精确的像素样本位置的示范等式如下
303′=(x0+2/3+offset(x0,y0,0),y0+1)304′=(x0,y0+2/3+offset(x0,y0,1))305′=(x0+1/3+offset(x0,y0,2),y0)306′=(x0+1,y0+1/3+offset(x0,y0,3))并且对于图6B,等式如下307′=(x0+1/3+offset(x0,y0,0),y0+1)308′=(x0,y0+1/3+offset(x0,y0,1))309′=(x0+2/3+offset(x0,y0,2),y0)310′=(x0+1,y0+2/3+offset(x0,y0,3))其中,offset()函数表示用于生成预定范围内位移值的函数,并且项x0和y0分别表示如图6A和6B所示的x轴(“x”)和y轴(“y”)的原点。在另一个实施例中,在用于确定像素样本位置的等式中不必包括加的常数,因为此信息可已经编码在查找表内或伪随机函数中。例如,像素样本位置303′的等式可以是如下形式303′=(x0+offset(x0,y0,0),y0+1)一个或多个像素样本点303′-310′的移位(或偏移)布置用于破坏采样模式的周期性以便增强直边、特别是接近27度的那些直边上的抗锯齿效应。对于其中不执行像素样本点的位移的采样模式,27度的边缘可能由于像素样本点表示旋转27度的正方形的事实而以其他的方式产生不想要的结果。依照本发明的各种实施例引入位移将破坏这种对称性,从而产生更佳的结果。
在一种选择中,各像素样本点303′-310′可定位在如从查找表中读取的预定偏移处,以使像素采样模式不会为至少每个像素而重复。在另一种选择中,各像素样本点303′-310′可利用伪随机数发生器来定位。在又一种选择中,除位于像素边缘或其附近的那些像素样本点外,采样模式还可包括位于像素内的一个或多个像素样本点。
图7示出其中最左侧像素401′的像素样本点403′-406′被置于沿像素401′边缘的预定位置的像素采样模式。像素样本点407′-409′被置于像素402′的边缘。像素样本点403′-409′的至少其中之一的位置可位于沿像素401′和402′的相应边缘的预定间隔内的预定位置。图7示出与各像素样本点403′-409′相关联的预定间隔,各预定间隔用括号表示。虽然括号示为沿像素边缘的一部分延伸,但应理解,像素样本点可沿像素边缘的任何部分来定位。
图8示出其中左上方像素501′包含四个像素样本点510′-513′的抗锯齿方案。像素501′右侧的像素502′也包含四个像素样本点513′-516′。此外,第三像素503′也包含四个像素样本点516′-519′。正如从图8中可看到的,像素501′-503′共享各对像素501′-502′、502′-503′之间的一个像素样本点513′、516′。下方像素行从呈现像素样本点511′、520′-522′的配置的像素504′开始。像素样本点511′在上方像素行上的像素501′与像素504′之间共享。
像素505′包含四个像素样本点515′、522′-524′。像素505′与上方行上的像素502′共享一个像素样本点515′,并且与像素504′共享一个像素样本点522′。这同样适用于最右侧的像素506′,该像素也与相邻像素503′、505′共享两个像素样本点517′、524′。像素样本点510′-525′的至少其中之一的位置可位于沿像素501′-506′的至少其中之一的相应边缘的预定间隔内的预定位置。在一种选择中,像素样本点定位在从查找表中读取的预定偏移处。在另一种选择中,像素样本点以伪随机的方式定位在像素边缘的预定间隔内。
在确定像素501′-506′的最终值时,除最高和最左像素501′-504′外的所有像素只需要计算两个新像素样本点值。在另一种选择中,图像中除最右侧列和最底部行外的所有像素只需两个样本。通过从左到右扫描行,可遍历图像像素中的样本位置。在又一种选择中,扫描方向可每隔一行改变以便使存储器的使用更高效。另外,应理解任何遍历方案可与超级采样方案结合实施。
图9A是示出一种用于产生高质量抗锯齿图像的方法的流程图,其中对一个或多个几何图元进行采样以产生图像。在应用阶段(步骤610),处理器(例如,中央处理单元(CPU))运行应用程序(例如,计算机游戏)并生成要转换成显示屏上的2D呈现的几何图元(例如,三角形形式的多边形)。
接着,在几何阶段(步骤620),处理器或图形处理单元(GPU)计算影响显示屏上的对象外观的不同视觉效应,如光照、裁剪、变换或投影。由于当在计算机图形中创建3D对象时一般使用几何图元,因此一般计算出几何图元顶点的像素坐标。
在光栅化阶段(步骤630),三角形被引入样本缓冲器。使用一个或多个几何图元上的纹理坐标的透视纠正内插以便确保获得正确的投影。光栅化阶段可由处理器和/或GPU来执行。除此之外,处理器或GPU还可例如内插一种或多种颜色、另一组纹理坐标或雾等。处理器或GPU还可执行Z缓冲器测试,并确保最终的像素获得正确的颜色。在过滤阶段(步骤640),过滤样本缓冲器以产生存储在颜色缓冲器中的像素颜色。颜色缓冲器的内容随后可在屏幕上显示。
图9B是示出图9A的步骤630的更详细的流程图。在步骤631中,执行第一几何图元的几何图元设定,其中,在几何图元中发现依照本发明各种实施例的像素样本模式的第一样本点,并且进程继续到步骤632。在步骤632中,确定样本点是否已在几何图元的边界内发现。如果未在几何图元内发现样本点,则进程继续到步骤633,在该步骤中,确定是否还存在将要绘制的几何图元。如果还存在将要绘制的几何图元,则进程继续到步骤634。在步骤634中,取回下一个几何图元,并且进程返回到其中执行几何图元设定的步骤631。如果在步骤633中确定不再存在将要绘制的几何图元,则步骤630结束,并且进程继续到步骤640,在该步骤中执行样本过滤以产生过滤器。
如果在步骤632中确定在几何图元内发现了样本点,则进程继续到步骤635,在该步骤中执行有关在几何图元中样本将是否可视的可视性检查。在步骤636中,进行有关样本是否可视的确定。如果样本不可视,则进程继续到步骤637,在该步骤中遍历几何图元以查找几何图元内的下一个样本点,并且进程继续到步骤632。
如果在步骤636中确定样本点可视,则在步骤638中执行样本颜色的计算,并且在步骤639中,在如样本缓冲器的一个或多个缓冲器中存储样本的颜色和深度。随后,进程返回到步骤637,在该步骤中遍历几何图元以查找几何图元内的下一个样本点。
图10A-10D示出各像素801、802、811、812包括三个像素样本点的多重采样方案的变型。像素样本点803-808、813-818被置于像素801、802、811、812的边界上。像素的边界充当样本共享的镜面,这允许显示存储器中不同像素801、802、811、812之间的样本共享。
像素样本点803-808、813-818的至少其中之一被置于各像素801、802、811、812的角上。术语“在角上”指大约在像素的两个相交边界的角上设置样本,例如,离角的距离不大于终止于角的最短像素边缘的长度的三分之一。然而,只要角样本可用于多至四个像素值的计算,则角样本可相对于实际角而稍微移位。
在图10A-10D的多重采样方案中,为像素801、802、811、812的两个边界的角定义第一像素样本点。为像素801、802、811、812的未与第一像素样本所处的像素角相交的单独边界定义第二和第三像素样本点。在图10A-10D中,各像素801、802、811和812的第二和第三像素样本定位在两个角之间的边界的中心。对于像素801,像素样本点804、805各自定位在两个角之间的边界中心的中心。对于像素802,像素样本点806、807各自定位在两个角之间的边界中心的中心。对于像素811,像素样本点813、815各自定位在两个角之间的边界中心的中心。对于像素812,像素样本点816、817各自定位在两个角之间的边界中心的中心。像素样本点803、808、814和818各自分别定位在像素801、802、811和812的角上。然而,只要样本可用于计算两个相邻像素的值,第二和第三像素样本点可定位在边界上的任何点。此外,在图10A-10D中,第二和第三像素样本点804、805、806、807、813、815、816、817定位在其相应像素801、802、811、812的边界上,它们离角的距离相同。在另一种选择中,各像素样本点804、805、806、807、813、815、816、817离角的距离可以不同。各像素样本点被赋予1/3的权重(即,使得权重的和等于1)。可使用的另一种权重分配是对于第一像素样本为0.2,并且对于第二和第三像素样本各为0.4。像素样本的任何其他权重分配只要其和合计值为一,便可使用。
在图10A-10D中,在各像素801、802、811、812上叠加网格,并且网格定义了角上及网格与边界相交而不是与角像素样本点所处的像素801、802、811、812的角相交的任何地方的可能的像素样本点。图10A-10D分别示出了用于确定各像素801、802、811、812的精确样本点模式的示范等式。如图10A-10D所示,在图10A-10D的等式中,项x0和y0分别表示x轴(“x”)和y轴(“y”)的原点。
图11示出其中最左侧像素901包括角上的一个像素样本点903和像素901的单独边界上的两个像素样本点904-905的多重采样方案。在下文中,此像素样本配置将被称为模式A。相应地,呈现具有像素样本点905-907的像素样本配置的第二像素902被称为模式B。通过检查并排的模式A和模式B的配置,显然,模式B的像素样本点905-907是模式A中相应点903-905的镜像。模式A在像素901的右侧垂直边界908上反射以形成像素902的模式B。因此,模式B是模式A的镜像。
模式A和模式B的像素样本点还可在其相应的底部水平边界909上镜像。呈现像素样本配置的第三像素911将被称为模式C,该像素样本配置是模式A在像素901的底部水平边界上镜像时的镜像。模式C具有像素样本点904、923-924,其中,像素样本点之一(即,像素样本点904)与模式A共享。呈现像素样本配置的第四像素912将被称为模式D,该像素样本配置是模式B在底部水平边界909上镜像时的镜像。模式D具有像素样本点906、924-925,其中,像素样本点之一(即,像素样本点906)与模式B共享,并且一个像素样本点(即,像素样本点924)与模式C共享。
通过跨垂直边界908镜像像素样本点903-905的位置,在这两个像素901、902之间共享像素样本点905并且仍打破配置的对称性以及实现改进的抗锯齿结果是可能的。在图11的多重采样方案中,每个像素行和像素列只有一个样本。与此相比,在Quincunx方案中,顶行有两个样本。
图12示出包括九个像素1001-1009的3×3像素配置中的抗锯齿方案。最左上方像素1001包含按模式A配置的三个像素样本点1010-1012。第二像素1002包括按模式B配置的三个像素样本点1012-1014,这些样本点是在最左上方像素1001的右边界上的镜像。此外,像素1003包括按模式A配置的三个像素样本点1014-1016。正如从图12可看到的,上方行的像素1001-1003在各对像素1001-1002、1002-1003之间共享一个像素样本点1012、1014。
第二像素行从呈现像素样本点1011、1017-1018的模式C配置的像素1004开始。像素样本点1011在像素1004与像素1001之间共享。第二行上的像素1005包括按模式D配置的三个像素样本点1013、1018-1019。像素1005与像素1002共享一个像素样本点1013,并且与像素1004共享一个像素样本点1018。这同样适用于第二行上具有三个像素样本点1015、1019-1020的像素1006,它也与相邻的像素1003、1005共享两个像素样本点1015、1019。
第三像素行从呈现像素样本点1017、1021-1022的模式A配置的像素1007开始。像素样本点1017在像素1007与第四像素1004之间共享。像素1008包括按模式B配置的三个像素样本点1019、1022-1023。像素1008与像素1005共享一个像素样本点1019,并且与左侧的像素1007共享一个像素样本点1022。这同样适用于在第三行上具有三个像素样本点1019、1024-1025的像素1009,该像素与相邻像素1006共享一个像素样本点1019。
通过检查图12,显然,除在最高行和最左列上的之外、设置于像素角上的所有像素样本点在四个像素之间共享。因此,只需为四个像素计算一次角像素样本的大多数(对于相对大的像素网格),其中计算成本为每个像素0.25。将只需为两个相邻的像素计算一次在两个像素之间共享的、设置于未与角像素的边界相交的边界上的像素样本点1011、1012、1013、1015、1018、1021、1022、1023、1024。因此,这些边界像素的计算成本为每个像素0.5。
因此,通过使用镜像方案,除最高和最左像素1001-1004、1007之外的所有像素平均只需计算1.25(0.25+0.5+0.5=1.25)个新像素样本点值,用于确定像素1001-1009的最终值。在另一种选择中,除最右列上的那些像素和最底行上的那些像素之外的所有像素只需1.25个样本。在最为人熟知的多重采样配置中,必须计算至少两个像素样本以便确定像素的最终值。
通过从左到右扫描行,可遍历像素中的样本位置。在另一种选择中,扫描方向可每隔一行改变以便使存储器的使用更高效。可理解,任何遍历方案可与多重采样方案结合实施。
图13A-13D示出一个多重采样方案。图13A-13D的多重采样方案示为各像素801′、802′、811′、812′包括三个像素样本。像素样本点803′-808′、813′-818′被置于像素801′、802′、811′、812′的边界上。像素样本点801′、808′、814′和818′各自分别被置于像素801′、802′、811′、812′的角上。依照图13A-13D的多重采样方案,一个或多个像素样本点804′、805′、806′、807′、813′、815′、816′及817′位于沿像素801′、802′、811′、812′的边缘的间隔内的预定位置上。图13A-13D示出与各像素样本点804′、805′、806′、807′、813′、815′、816′、817′相关联的预定间隔,各预定间隔用括号表示。术语“在角上”指大约在像素的两个相交边界的角上设置样本。然而,只要角样本可用于多至四个像素值的计算,角样本可相对于实际角而移位。例如,样本点也可位于角附近,以使样本点位于小于或等于像素宽度的三分之一的距离处。在又一种选择中,除位于像素边缘或角上或其附近的那些像素样本点外,采样模式还可包括位于像素内的一个或多个像素样本点。
在图13A-13D的多重采样方案中,分别为像素801′、802′、811′、812′的两个边界的角定义第一像素样本点803′、808′、814′、818′。为像素801′、802′、811′、812′的未与角像素样本相交的单独边界定义第二和第三像素样本点804′、805′、806′、807′、813′、815′、816′、817′。在图13A-13D中,各像素801′、802′、811′、812′的第二和第三像素样本点804′、805′、806′、807′、813′、815′、816′、817′定位在两个角之间的边界中心。然而,如上所述,只要样本可用于计算两个相邻像素的值,第二和第三像素样本804′、805′、806′、807′、813′、815′、816′、817′可位于边界上的任何位置。各像素样本可被赋予1/3的权重(即,权重的和等于1)。因此,对于第一像素样本来说,另一示范权重分配为0.2,并且对于第二和第三像素样本来说各为0.4。
用于确定图13A的各像素的精确像素样本点模式的示范等式如下803′=(x0,y0+1)804′=(x0+0.5+offset(0,y0,0),y0)805′=(x0+1,y0+0.5+offset(x0,y0,1))对于图13B,等式如下806′=(x0,y0+0.5+offset(x0,y0,0))807′=(x0+0.5+offset(x0,y0,1),y0)808′=(x0+1,y0+1)对于图13C,等式如下813′=(x0+0.5+offset(x0,y0,0),y0+1)814′-(x0,y0)815′=(x0+1,y0+0.5+offset(x0,y0,1))并且对于图13D,等式如下
816′=(x0,y0+0.5+offset(x0,y0,0)817′=(x0+0.5+offset(x0,y0,1),y0+1)818′=(x0+1,y0)其中,offset()函数表示用于生成预定范围内位移值的函数,并且x0和y0项分别表示如图13A-13D所示的x轴(“x”)和y轴(“y”)的原点。在另一个实施例中,在用于确定像素样本位置的等式中不必包括加的常数0.5,因为此信息可已经编码在查找表内或伪随机函数中。例如,像素样本位置804′的等式可以是如下形式804′=(x0+offset(x0,y0,0),y0)像素样本点803′-808′、813′-818′的移位(或偏移)布置用于破坏配置的对称性并增强抗锯齿效应。在一种选择中,各像素样本点804′-807′、813′和815′-817′可定位在如从查找表中读取的预定偏移处以使像素采样模式不会为至少每个像素进行重复。在另一种选择中,各像素样本点804′-807′、813′和815′-817′可利用伪随机数发生器来定位。
图14示出其中最左像素901′包括角上的一个像素样本点903′和位于沿像素901′边界的间隔内的预定位置上的两个像素样本点904′-905′的多重采样方案。第二像素902′具有角上的像素样本点907′和位于沿像素902′边界的间隔内的预定位置上的两个像素样本点905′和906′。第三像素911′具有角上的像素样本点923′和位于沿像素911′边界的间隔内的预定位置的两个像素样本点904′和924′。第四像素912′具有角上的像素样本点925′和位于沿像素912′边界的间隔内的预定位置的两个像素样本点906′和924′。图14示出与各像素样本点904′、905′、906′、924′相关联的预定间隔,各预定间隔用括号表示。虽然各括号示为沿像素边缘的一部分延伸,但应理解,像素样本点可沿像素边缘的任何部分来定位。如图14所示,像素样本点904′、923′-924′形成其中像素样本点904′在像素901′与像素911′之间共享的像素样本模式。像素样本点906′、924′-925′形成其中像素样本点906′在像素902′与像素912′之间共享以及像素样本点924′在像素911′与像素912′之间共享的像素样本模式。各像素样本点的预定位置可例如通过参照查找表或以伪随机的方式来确定。
选定像素样本位置的移位或偏移定位用于打破像素采样配置的对称性并实现更佳的抗锯齿结果。另外,每个像素行只有一个样本,并且每个像素列只有一个样本。例如在Quincunx中,像素的顶行有两个像素样本。
图15示出包括九个像素1001′-1009′的3×3像素配置中的抗锯齿方案。像素1001′包含三个像素样本点1010′-1012′。位于像素1001′右侧的像素1002′包括三个像素样本点1012′-1014′。此外,像素1003′包括三个像素样本点1014′-1016′。正如从图15可看到的,上方行的像素1001′-1003′在各对像素1001′-1002′、1002′-1003′之间共享一个像素样本点1012′、1014′。
第二像素行从呈现像素样本点1011′、1017′-1018′的配置的像素1004′开始。像素样本点1011′在像素1004′与像素1001′之间共享。第二行上的像素1005′包括三个像素样本点1013′、1018′-1019′。像素1005′与像素1002′共享一个像素样本点1013′,并且与像素1004′共享一个像素样本点1018′。这同样适用于位于第二行上并具有三个像素样本点1015′、1019′-1020′的像素1006′,该像素也与相邻像素1003′、1005′共享两个像素样本点1015′、1019′。
第三像素行从呈现像素样本点1017′、1021′-1022′的配置的像素1007′开始。像素样本点1017′在像素1007′与像素1004′之间共享。像素1008′包括三个像素样本点1019′、1022′-1023′。像素1008′与像素1005′共享一个像素样本点1019′,并且与像素1007′共享一个像素样本点1022′。这同样适用于具有三个像素样本点1019′、1024′-1025′的像素1009′,该像素与相邻像素1006′共享一个像素样本点1019′。一个或多个像素样本1011′、1012′、1013′、1015′、1016′、1018′、1020′、1021′、1022′、1023′、1024′及1025′可位于沿像素1001′-1009′的边界的间隔内的预定位置上。图15示出与各像素样本点1011′、1012′、1013′、1015′、1016′、1018′、1020′、1021′、1022′、1023′、1024′及1025′相关联的预定间隔,各预定间隔用括号表示。虽然各括号示为沿像素边缘的一部分延伸,但应理解,像素样本点可沿像素边缘的任何部分来定位。各像素样本点的预定位置可例如以伪随机的方式或通过参照查找表来确定。
通过检查图15,显然,除在最高行和最左列上的之外、设置于像素角上的所有像素样本点在四个像素之间共享。因此,只需为四个像素计算一次角像素样本的大多数(对于相对大的像素网格),其中计算成本为每个像素0.25。将只需为两个相邻的像素计算一次在两个像素之间共享的、设置于未与角像素的边界相交的边界上的像素样本点1011′、1012′、1013′、1015′、1016′、1018′、1020′、1021′、1022′、1023′、1024′及1025′。因此,这些边界像素的计算成本为每个像素0.5。
因此,除最高和最左像素1001′-1004′、1007′之外的所有像素平均只需计算1.25(0.25+0.5+0.5=1.25)个新像素样本点值,用于确定像素1001′-1009′的最终值。在另一种选择中,除图像最右侧列和最底部行的像素之外的所有像素只需1.25个样本。在最为人熟知的多重采样配置中,必须计算至少两个像素样本以便确定像素的最终值。
通过从左到右扫描行,可遍历像素中的像素样本点。在另一种选择中,扫描方向可每隔一行改变以便使存储器的使用更高效。要理解的是,在没有背离本发明原理的情况下,可实施任何遍历方案。
通过使用图15的多重采样方案,最多只需访问显示存储器三次以计算像素的最终值。然而,通过提供用于暂时存储在一个或几个随后的像素值计算中所需要的样本的附加的小且快的存储器,如片上高速缓冲存储器,使对显示存储器的必需访问减少到最低1.25次是可能的。通过将此方法与Quincunx方案一起使用,计算像素的最终值需最少访问存储器两次。此外,可利用甚至更小的附加的存储器只存储一个样本(即,用于计算第一像素值和随后像素值计算的样本)。
再次参照图14,通过从显示存储器中取回像素样本903′-905′,可计算出像素901′的最终值。像素样本905′随后可暂时存储在附加的存储器中。对于像素902′的最终值的计算,只需从显示存储器中取回像素样本906′-907′,而像素样本905′可从附加的存储器中取回。因此,计算例如移动终端的176×174像素网格的、大的像素网格的大多数像素只需访问显示存储器两次。利用Quincunx方案,计算像素的最终值需访问显示存储器三次和附加的存储器两次。
图16是依照具有像素样本模式的超级采样方案的、用于绘制例如多边形的一个或多个几何图元的系统的框图。中央处理单元(CPU)701经数据总线703连接到存储器702。存储器702包括可在系统上运行的应用程序(例如,计算机游戏或计算机辅助设计(CAD)程序)。CPU 701在存储器702中取出指令并执行指令以便执行特定的任务。在此情况中,CPU 701的任务是为图形处理单元(GPU)704提供有关要在显示屏705上绘制的对象的信息。
GPU 704可以是处理器的形式,例如数字信号处理器(DSP),或者是专用集成电路(ASIC)、现场可编程门阵列(FPGA)、硬连线逻辑或诸如此类的形式。在另一种选择中,它可在CPU 701上执行。GPU704也连接到总线703,但在大量信息于CPU 701与GPU 704之间传送的情况下,还可经单独的高速总线706连接到CPU 701。在单独的高速总线706上的数据传送将因此不会干扰普通总线703上的数据业务。
显示存储器707也连接到总线703并存储从GPU 704发送的有关要在显示屏705上绘制的图片(即,帧)的信息。更具体地,显示存储器包含样本缓冲器707a和颜色缓冲器707b。样本缓冲器707a包含的样本数量大约是最终颜色缓冲器707b中的像素数量的两倍。在图像绘制完成之后,颜色缓冲器707b保存将要在屏幕上显示的像素的颜色。如同CPU 701与GPU 704之间的互连一样,显示存储器707可经单独的高速总线直接连接到GPU 704。由于GPU 704和显示存储器707一般用于产生移动图像,因此一般期望这两个单元之间的链路尽可能地快,并且不会阻塞总线703上的正常业务。
显示存储器707或经共享总线703或通过单独的高速总线709连接到视频数模转换器(VDAC)708,该转换器从颜色缓冲器707b读取信息并将它转换成提供给显示屏705以便在显示屏705上绘制各个像素的模拟信号(例如,红色、绿色、蓝色(RGB)复合信号)。GPU 704利用如本文所述的像素采样模式执行超级采样或多重采样过程以产生保存在颜色缓冲器707b中的像素。
虽然前面的具体实施方式
描述了其中可利用表查找或伪随机的方法来确定像素样本点的定位的示范实施例,但应理解,依照本发明的原理,可使用定位像素样本点的其他方法。
前面的具体实施方式
是有关本发明的实施例。本发明的范围应不必受此具体实施方式
的限制。例如,应理解,本发明可与将样本置于像素边缘上的任何样本方案一起使用。还应理解,本发明所述各种实施例的超级采样方案可包括在多个装置中,这些装置包括计算机和移动终端。相反,本发明的范围由下面的权利要求书及其等同物来界定。
权利要求
1.一种用于减少锯齿的方法,所述方法包括在多个像素样本点对图像的像素进行采样以产生相应的多个像素样本值;其中所述多个像素样本点中的至少一个像素样本点位于沿所述像素的边缘与一个位置有预定位移的位置;以及组合所述多个像素样本值以产生显示的像素值。
2.如权利要求1所述的方法,其中所述预定位移利用查找表来确定。
3.如权利要求1所述的方法,其中所述预定位移以伪随机的方式来确定。
4.如权利要求3所述的方法,其中利用伪随机数发生器来确定所述以伪随机的方式确定的预定位移。
5.如权利要求1所述的方法,其中所述多个像素样本点中的至少一个像素样本点与相邻像素的至少一个像素样本点共享。
6.如权利要求1所述的方法,其中所述组合所述多个像素样本值的步骤包括确定所述多个像素样本值的平均值。
7.如权利要求1所述的方法,其中所述多个像素样本值包括多个颜色值。
8.如权利要求1所述的方法,其中所述显示的像素值包括颜色值。
9.如权利要求1所述的方法,其中所述预定位移包括沿所述像素的边缘的预定间隔内的位置。
10.如权利要求1所述的方法,其中所述预定位移等于零。
11.如权利要求1所述的方法,其中所述多个像素样本点中的至少一个像素样本点对应于第二像素的至少一个像素样本点,所述第二像素与所采样的像素相邻。
12.如权利要求1所述的方法,其中多个像素的样本点包括实质上非周期性的样本模式。
13.如权利要求1所述的方法,其中所述多个像素样本点由四个像素样本点组成。
14.如权利要求1所述的方法,其中所述多个像素样本点中的每个像素样本点定位在所述像素的边缘上。
15.如权利要求1所述的方法,其中所述多个像素样本点中的每个像素样本点位于沿所述像素的边缘与一个位置有预定位移的位置。
16.如权利要求1所述的方法,其中所述多个像素样本点由三个像素样本点组成。
17.如权利要求1所述的方法,其中所述多个像素样本点包括位于所述像素的角上的第一像素样本点;位于沿所述像素的第一边缘的位置的第二像素样本点;以及位于沿所述像素的第二边缘的位置的第三像素样本点。
18.如权利要求17所述的方法,其中所述第二像素样本点和所述第三像素样本点中的至少一个像素样本点位于沿所述像素的边缘与一个位置有预定位移的位置。
19.一种用于减少锯齿的系统,所述系统包括适于存储图像的样本缓冲器;适于在多个像素样本点执行像素采样以产生相应的多个像素样本值的处理器;其中所述多个像素样本点中的至少一个像素样本点位于沿像素的边缘与一个位置有预定位移的位置;以及其中所述处理器还适于组合所述多个像素样本值以产生至少一个显示的像素值。
20.如权利要求19所述的系统,还包括适于存储所述至少一个显示的像素值的颜色存储器。
21.如权利要求19所述的系统,其中所述处理器包括中央处理单元(CPU)。
22.如权利要求19所述的系统,其中所述处理器包括图形处理单元(GPU)。
23.如权利要求19所述的系统,其中所述组合所述多个像素样本值的步骤包括确定所述多个像素样本值的平均值。
24.如权利要求19所述的系统,其中所述多个像素样本值包括颜色值。
25.如权利要求19所述的系统,其中所述至少一个显示的像素值包括颜色值。
26.如权利要求19所述的系统,其中所述预定位移利用查找表来确定。
27.如权利要求19所述的系统,其中所述预定位移以伪随机的方式来确定。
28.如权利要求27所述的系统,还包括适于确定所述以伪随机的方式确定的预定位移的伪随机数发生器。
29.如权利要求19所述的系统,其中所述预定位移包括沿所述像素的边缘的预定间隔内的位置。
30.如权利要求19所述的系统,其中所述预定位移等于零。
31.如权利要求19所述的系统,其中所述多个像素样本点中的至少一个像素样本点对应于所述图像的相邻像素的至少一个像素样本点。
32.如权利要求19所述的系统,其中所述多个像素样本点中的至少一个像素样本点对应于第二像素的至少一个像素样本点,所述第二像素与所采样的像素相邻。
33.如权利要求19所述的系统,其中多个像素的样本点包括实质上非周期性的样本模式。
34.如权利要求19所述的系统,其中所述多个像素样本点由四个像素样本点组成。
35.如权利要求19所述的系统,其中所述多个像素样本点中的每个像素样本点定位在所述像素的边缘上。
36.如权利要求19所述的系统,其中所述多个像素样本点中的每个像素样本点位于沿所述像素的边缘与一个位置有预定位移的位置。
37.如权利要求19所述的系统,其中所述多个像素样本点由三个像素样本点组成。
38.如权利要求19所述的系统,其中所述多个像素样本点包括位于所述像素的角上的第一像素样本点;位于沿所述像素的第一边缘的位置的第二像素样本点;以及位于沿所述像素的第二边缘的位置的第三像素样本点。
39.如权利要求38所述的系统,其中所述第二像素样本点和所述第三像素样本点中的至少一个像素样本点位于沿所述像素的边缘距一个位置的预定位移内。
40.一种用于减少锯齿的制品,所述制品包括至少一个计算机可读介质;包含在所述至少一个计算机可读介质上的处理器指令,所述处理器指令配置为可由至少一个处理器从所述至少一个计算机可读介质中读取,并由此使所述至少一个处理器运行以便在多个像素样本点对图像的像素进行采样以产生相应的多个像素样本值;其中所述多个像素样本点中的至少一个像素样本点位于沿所述像素的边缘与一个位置有预定位移的位置;以及组合所述多个像素样本值以产生显示的像素值。
41.如权利要求40所述的制品,其中所述预定位移利用查找表来确定。
42.如权利要求40所述的制品,其中所述预定位移以伪随机的方式来确定。
43.如权利要求42所述的制品,其中利用伪随机数发生器来确定所述以伪随机的方式确定的预定位移。
44.如权利要求40所述的制品,其中所述多个像素样本点中的至少一个像素样本点与相邻像素的至少一个像素样本点共享。
45.如权利要求40所述的制品,其中所述组合所述多个像素样本值包括确定所述多个像素样本值的平均值。
46.如权利要求40所述的制品,其中所述多个像素样本值包括多个颜色值。
47.如权利要求40所述的制品,其中所述显示的像素值包括颜色值。
48.如权利要求40所述的制品,其中所述预定位移包括沿所述像素的边缘的预定间隔内的位置。
49.如权利要求40所述的制品,其中所述预定位移等于零。
50.如权利要求40所述的制品,其中所述多个像素样本点中的至少一个像素样本点对应于第二像素的至少一个像素样本点,所述第二像素与所采样的像素相邻。
51.如权利要求40所述的制品,其中多个像素的样本点包括实质上非周期性的样本模式。
52.如权利要求40所述的制品,其中所述多个像素样本点由四个像素样本点组成。
53.如权利要求40所述的制品,其中所述多个像素样本点中的每个像素样本点定位在所述像素的边缘上。
54.如权利要求40所述的制品,其中所述多个像素样本点中的每个像素样本点位于沿所述像素的边缘与一个位置有预定位移的位置。
55.如权利要求40所述的制品,其中所述多个像素样本点由三个像素样本点组成。
56.如权利要求40所述的制品,其中所述多个像素样本点包括位于所述像素的角上的第一像素样本点;位于沿所述像素的第一边缘的位置的第二像素样本点;以及位于沿所述像素的第二边缘的位置的第三像素样本点。
57.如权利要求56所述的制品,其中所述第二像素样本点和所述第三像素样本点中的至少一个像素样本点位于沿所述像素的边缘与一个位置有预定位移的位置。
全文摘要
本发明公开了一种用于减少锯齿的方法、系统和制品。依照一个实施例的方法在多个像素样本点对图像的像素进行采样以产生相应的多个像素样本值,其中多个像素样本点中的至少一个像素样本点位于沿像素的边缘与一个位置有预定位移的位置。该方法还包括组合多个像素样本值以产生显示的像素值。
文档编号G06T15/00GK101061517SQ200580039362
公开日2007年10月24日 申请日期2005年9月19日 优先权日2004年9月20日
发明者T·阿克尼纳-默勒, J·斯特伦 申请人:艾利森电话股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1