目 录
摘要……………………………………………………………………… i
Abstract ………………………………………………………………… i
第一章 引言……………………………………………………………… 1
1.1研究背景…………………………………………………………… 1
1.2 编程实验环境……………………………………………………… 2
第二章 反走样概述……………………………………………………… 5
2.1 过取样技术………………………………………………………… 5
2.2 区域取样…………………………………………………………… 7
2.3 WU像素反走样……………………………………………………… 12
2.4点取样……………………………………………………………… 14
2.5象素移相…………………………………………………………… 14
第三章 反走样算法的改进……………………………………………… 15
3.1 多段直线反走样算法………………………………………………… 15
3.2 圆反走样算法 ……………………………………………………… 18
3.3位图反走样………………………………………………………… 19
第四章 总结与展望……………………………………………………… 23
4.1总结………………………………………………………………… 23
4.2进一步改进设想…………………………………………………… 23
参考文献………………………………………………………………… 25
一种可行的反走样方法:在较高分辨率下用点取样方法计算,然后对几个像素的属性进行平均得到较低分辨率下的像素属性。这种技术称为过取样(Supersampling),或后滤波(Postfiltering)。该技术是把显示器看成是比实际更细的网格来增加取样率,然后根据这种更细的网格使用取样点来确定每个屏幕像素合适的亮度等级。
反走样的另一种方法是根据图形对象在每个像素点上的覆盖程度率来确定像素点的亮度,这种计算覆盖率的反走样技术称为区域取样(Area Sampling),或前滤波(Prefiltering)。
2.1.1 提高分辨率方法
过取样方式的一个简单实现是用较高的分辨率进行计算,如图2.2,在x方向和y 方向上把分辨率提高一倍,使每个像素都对应4个子像素,然后扫描转换求得各子像素的颜色亮度,在对4个像素的颜色亮度进行平均,得到较低分辨率下的像素颜色亮度。由于像素中可供选择的子像素最大数目是4,因此,该例中提供的亮度等级数是5。如图2.2中,编号为1和7的像素亮度2.2区域取样
2.2.1简单的区域取样
直线段扫描转换算法均假定像素是数学上的一个点,像素颜色是由对应于像素中心的图形中一点的颜色决定的;并且直线段是数学上抽象的直线段,它的宽度是0。但实际上像素不是一个点,而是一个有限区域。屏幕上所画的直线不是数学意义上的无宽度的理想线段,而是一个宽度至少为一个像素单位的线条。算法中所假定的条件和实际情况之间的差距是造成走样的原因之一。为了减少走样,必须改变直线段的模型,从而得到了简单区域取样的方法,这个方法的具体步骤是:
(1)将直线看成具有一定宽度的狭小矩形;
(2)当直线与像素相交时,求出两者相交区域的面积;
(3)根据相交区域的面积,确定像素的亮度值;
图2.5 具有一定宽度的直线 图2.6 灰度与面积成比例
通过将每个像素亮度设置成与线条部分重叠的区域面积成正比,可以完成对直线的区域取样。若一个像素与线条部分重叠,根据重叠区域面积的大小来选择不同的灰度。重叠面积大的像素黑一点,重叠面积小的像素白一点。这种方法将产生模糊的边界,以次来减轻锯齿效应。图2.5是待显示的直线段,图2.6是采用简单区域取样方法绘制的结果。
这个方法中,起关键作用的是直线段与像素相交区域面积的计算。那么相交区域如何计算呢?
假设一条直线的斜率是m,若规定它的显示宽度是一个像素,那么直线和像素的相交有如下三种情况,如图所示。其中(c)的计算可转化为正方形面积减去两个三角形面积。接下来介绍(a)和(b)两种情况。
综上所述,非加权区域采样方法具有下面三条性质:
(1)直线对一个像素亮度的贡献与两者相交区域的面积成正比,从而和直线与像素中心点的距离成反比。因为直线距像素中心越远,相交区域的面积越小。
(2)当直线和一个像素不相交时,它对该像素的亮度没有影响。
(3)相同面积的相交区域对像素的亮度贡献相同,而与这个相交区域落在像素内什么位置无关。
2.2.2 加权区域取样
简单区域取样由于相同面积重叠区域对像素的贡献相同,但是这样仍然会出现走样现象,接下来介绍的加权区域取样对此进行了改善,使得相交区域对像素亮度的贡献依赖于该区域与像素中心的距离。对于相同面积的相交区域,当它距离像素中心近时,它对像素亮度的贡献大,当它距离像素中心远时,对像素亮度贡献小。这种方法更符合人的视觉系统对图象信息的处理方式。
加权区域取样的特点:一是接近理想直线的像素将被分配更多的灰度值;二是相邻两个像素的滤波器相交,所以直线条经过该相交区域时,将对这两个像素都分配给适当的灰度值,这样就缩小了直线条上相邻像素的灰度差。
加权区域取样方法的具体步骤如下:
(1)求直线段与过滤器底面的重叠区域S’。
(2)计算 的值,其中f(x,y)是过滤函数,S是过滤器的底面,且有 =1 。
(3)上面得到的值介于0和1之间,用它乘以像素的最大灰度值,即得到该像素显示灰度值。
求积分的运算量是很大的,为了方便计算,可以利用加权区域取样的离散计算方法:
(1)将屏幕像素均匀分割成n个子像素,{Si}in=1,则每个子像素的面积为 ,计算每个子像素对原像素亮度的贡献, 将{fi}=1保存在加权表中。
(2)求出所有中心落在直线段内的子像素的集合F。
(3)计算所有这些子像素对原像素亮度的贡献之和。该值乘以像素的最大灰度值即为像素的显示灰度值。
根据上面的讨论,fi是一个经验值,因此我们可以根据经验直接设定fi的值。例如,我们将屏幕像素划分为n=3*3=9个子像素,加权表可取作
2.2.3简单区域取样算法的实现
有些反走样方法把像素当作是数学上的一个点,像素颜色是由对应于像素中心的图形中一点的颜色决定的;而区域取样认为像素不是一个点,而是一个有面积的区域,因此我们在区域取样时要计算直线段与像素相交区域的面积,然后根据相交区域面积来确定像素的亮度值。由于直线与像素相交的形式有三种,那么我们如何来判断直线与像素相交的形式呢?