您的位置:首页 > 其它

图形学笔记2——反走样 (antialiasing)

2007-10-11 20:38 197 查看
在光栅显示器上显示图形时,直线段或图形边界或多或少会呈锯齿状。原因是图形信号是连续的,而在光栅显示系统中,用来表示图形的却是一个个离散的象素。这种用离散量表示连续量引起的失真现象称之为走样(aliasing);用于减少或消除这种效果的技术称为反走样(antialiasing)。光栅图形的走样现象除了阶梯状的边界外,还有图形细节失真(图形中的那些比象素更窄的细节变宽),狭小图形遗失等现象。常用的反走样方法主要有:提高分辨率、区域采样和加权区域采样。

提高分辨率
把显示器分辨率提高一倍,直线经过两倍的象素,锯齿也增加一倍,但同时每个阶梯的宽度也减小了一倍,所以显示出的直线段看起来就平直光滑了一些。这种反走样方法是以4倍的存储器代价和扫描转换时间获得的。因此,增加分辨率虽然简单,但是不经济的方法,而且它也只能减轻而不能消除锯齿问题。

区域采样
区域采样方法假定每个象素是一个具有一定面积的小区域,将直线段看作具有一定宽度的狭长矩形。如下图



当直线段与象素有交时,求出两者相交区域的面积,然后根据相交区域面积的大小确定该象素的亮度值。 有时为了简化计算可以采用离散的方法。首先将屏幕象素均分成n个子象素,然后计算中心点落在直线段内的子象素的个数k。最后将屏幕该象素的亮度置为最大灰度值乘以相交区域面积的近似值k/n。
如下图,n=9, k=3的情形,近似面积为1/3




非加权区域采样方法有两个缺点:(1)象素的亮度与相交区域的面积成正比,而与相交区域落在象素内的位置无关,这仍然会导致锯齿效应。(2)直线条上沿理想直线方向的相邻两个象素有时会有较大的灰度差。

加权区域取样
为了克服上述两个缺点,可以采用加权区域取样方法,使相交区域对象素亮度的贡献依赖于该区域与象素中心的距离。
首先将象素均匀分割成n个子象素。则每个象素的面积为1/n。计算每个子象素对原象素的贡献,并保存在一张二维的加权表中。然后求出所有中心落于直线段内的子象素。最后计算所有这些子像素对原像素亮度贡献之和∑wi的值,该值乘以最大灰度值作为该象素的显示灰度值.

例如:我们将一个像素划分为n=3×3个子象素,加权表可以取作

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: