过取样反走样与区域取样
在光栅图形显示器上绘制非水平且非垂直的直线或多边形边界时,或多或少会呈现锯齿状或台阶状外观。这是因为直线、多边形、色彩边界等是连续的,而光栅则是由离散的点组成,在光栅显示设备上表现直线、多边形等,必须在离散位置采样。由于采样不充分重建后造成的信息失真,就叫走样(aliasing)。
光栅图形的走样有如下几种:
- 产生阶梯或锯齿形;
- 细节或纹理绘制失真;
- 狭小图形遗失;
- 实时动画忽隐忽现、闪烁跳跃。
反走样原理:
对于能显示两级以上亮度(颜色或者灰度等级)的光栅系统,可以使用反走样方法来修改图像亮度。通过适当地改变图元边界的像素亮度,可以平滑边界以减小锯齿现象。
基本上反走样方法可分为两类:
第一类是提高分辨率 即增加采样点(提高采样频率)。然而,CRT光栅扫描设备显示非常精细光栅的能力是有限的,因此人们通常是在较高分辨率上对光栅进行计算,然后采用某种平均算法(滤除高频分量)得到较低分辨率的象素的属性,并显示在分辨率较低的显示器上 。这种方法称为超采样或后置滤波。
另一类反走样是把像素作为一个有限区域,对区域采样来调整像素的亮度,以光顺边界来减小锯齿现象。这种方法等价于图像的前置滤波。
第一类是超采样(过取样)或称后置滤波。这类算法的基本思想着眼于提高分辨率,虽然采用高分辨率的光栅图形显示器也是一个选择,但它受到客观条件的限制,而且也不经济。因此,我们往往采用软件实现的方法,即:将低分辨率的图形像素划分为许多子像素,在较高分辨率上对各子像素的颜色值或灰度值进行计算,然后采用某种平均算法,将原像素内的各子像素的颜色值或灰度值的平均值作为该像素显示的颜色值或灰度值,在较低分辨率的光栅图形设备上进行显示。
通过适当地改变图元边界的像素亮度,可以平滑边界以减小锯齿现象,从而减小直线的走样现象。过取样算法原理如下:将每个像素分成n×n个子像素,然后在子像素级对直线进行光栅化,这样就可以得到每个像素中被激活的子像素的个数。在n×n伪光栅上,可以光栅化的子像素最多为n个。每个物理像素的光强与其被激活的子像素数与n的比值成正比。假设一个物理像素中被激活的子像素有m个,其可能的最大光强为Imax,则该像素的光强(亮度)。I = n/m*Imax
第二类方法称为前置滤波(区域取样)。即:通过计算待显示的每一个像素在对象上的讣告区域,从而确定像素亮度。像素覆盖区域通过确定对象边界与单个像素边界的相交位置而得到。注意这时像素是有几何尺寸的。