Transcript 第五讲

南京大学计算机科学与技术系课程
《计算机图形学》
计算机图形学
路
通 博士、教授
[email protected]
http://cs.nju.edu.cn/lutong/
18913926002
Department of Computer Science and
Technology, NanJing Uiversity
2-1
第5讲
1 什么是走样
2 反走样技术
走样与反走样
1. 什么是走样
2-3
2-4
走样现象
 走样:由于低频取样不充分导致信息丢失。
 走样产生的原因
几何模型
光栅显示
 图形的数学描述最终需要转换为光栅系统需要的点阵表示
。光栅算法用充分接近图形的像素集近似替代原有图形
 - 光栅算法对图形取样,将其数字化为离散的整数像素,
所生成的图元光栅显示具有锯齿或台阶形状外观
 走样会影响图形显示的视觉/真实感效果
2-5
走样现象
 增加光栅系统取样率的一种简单方法:以较高分辨率显示
-
有两个核心问题难以解决
 将帧缓冲器做成多大并仍保持刷新频率在每秒30~
60帧?

2-6
用连续参数精确地表示对象需要任意小的取样间隔

即使用当前技术能达到的最高分辨率,锯齿形仍会在一
定范围内出现

除非硬件技术能处理任意大的帧缓冲器,增加屏幕分辨
率还不能完全解决走样问题
2. 反走样技术
2-7
反走样技术
 反走样技术基于以下认识
2-8

理想图元是没有宽度的,但是水平/垂直的扫描转
换图元在屏幕上至少占一个像素宽

可以将任何线条当作有一定宽度的矩形。该矩形
将盖住一部分栅格

转换算法在线条穿过的每一列中,仅选择单个像
素(如最近像素)赋以线条颜色。当相邻列上的
像素不在同一行时,线条就会产生一次跳变。这
是走样产生的原因
反走样技术
 反走样技术的核心思想
2-9

对于单像素宽的线,水平/垂直线在行/列上每次涉及一
个像素

对于斜线,在每一行/列中,所经过的每一个像素都应
该赋以适当的灰度值
反走样技术
 两类方法:

非加权区域采样方法

图元对一个像素亮度的贡献与两者相交面积成正比
按覆盖比例赋亮度值,可以使图元上各相邻像素的
亮度之间有一个平缓的过渡,淡化了锯齿现象
加权区域采样方法




2-10
利用权值函数计算亮度值
图元对一个像素亮度的贡献值与两者相交面积、距
离权值函数相关
非加权区域采样方法
 主要思想:
– 将直线段看作是具有一定宽度的狭长矩形
– 当直线段与像素有交时,求出两者相交区域的面积
 根据相交的面积确定该像素的亮度等级
– 在黑白显示下,一个像素如果被完全覆盖,则为黑色
– 部分覆盖的像素则为灰色,灰度值与该像素被线覆盖
的面积成正比
– 像素没有被覆盖,则为白色
2-11
非加权区域采样方法
每个像素面积为单位面积;
相交区域面积是介于0、1之间
的实数;
用它乘以像素可设置的最大亮
度值,即可得到该像素实际显
示的亮度值。
2-12
非加权区域采样方法
• 非加权区域采样方法的特点
– 由于覆盖面积降低,亮度也降低,因此像素的中心点与线边的距
离成反比:距离越远,亮度值越低;
– 某像素如果和图元不相交,则图元对该像素的亮度值没有影响
– 不管像素的中心到覆盖区域的距离远近,相同的面积就有相同的
亮度值(只有面积大小起作用)
改进:在面积相同的情况下,靠近像素中心点的小块区域的作用大
于远离中心的同样大小区域的作用
加权区域采样方法
2-13
加权区域采样方法
 权值函数:是关于图元中给定的一小块区域dA到像素中
心的距离的函数
– 决定dA对一个像素的亮度的影响值
– 对加权区域采样,距离越远,该函数值越小
– 对非加权区域采样,该函数值为常量
– 权值函数可选取圆锥体形:在像素中心有最大值,随着远离中
心,权值递减(“过滤技术”)
 加权区域采样的基本原理
– 图元覆盖像素的亮度 = ∑与该像素重叠区域的各小块面积决定
的亮度
– 单个小块面积决定的亮度 = 面积 * 相应权值
– 总的亮度值 = 权值函数在重叠区域上的积分
2-14
加权区域采样方法
• 特点:这种方法更符合人视觉系统对图像信息的处理方式,反走样效
果更好
– 将直线段看作是具有一定宽度的狭长矩形
– 当直线段与像素有交时,根据相交区域与像素中心的距离来决定
其对象素亮度的贡献
– 直线段对一个像素亮度的贡献正比于相交区域与像素中心的距离
小结:设置相交区域面积元与
像素中心距离的权函数(如高
斯函数等)反映相交面积元对
整个像素亮度的贡献大小。
利用权函数积分求相交区域面
积,用它乘以像素可设置的最
大亮度值,即可得到该像素实
际显示的亮度值。
2-15
过取样Supersampling
 过取样(超放样/后过滤):

高分辩率下对对象取样,低分辨率上显示其结果
 把屏幕看成比实际具有更细的网格(子像素)来增加取样率
 沿这种更细网格(子像素)使用取样点来确定每个屏幕像素的
合适亮度等级
 从多个点(子像素)对一个像素总体亮度的贡献来
得到该象素亮度
– 每个像素可能的亮度等级数目等于像素区域
内子像素的总数
– 线亮度在更多的像素上描述,或线亮度分布
在较大数目像素上;且通过在阶梯状台阶
(水平长度间)附近显示有些模糊的线路径使
阶梯形状得到光顺
2-16
每个像素含9个子像素
过取样Supersampling
 考虑线宽度时,则将每个像素亮度设置成正比于线区域
内的子像素数目来完成过取样
 线路径边界取决于线的斜率:
 45°线,线路径在区域的中央
 对水平线和垂直线,要求线路径是线宽边界之一
 |m|<1时,线路径宜取在接近于较低边界处
 |m|>1时,线路径放在较接近于较上边界合适
 有颜色显示时:对子像素
亮度进行平均来得到像素
颜色设置
2-17
过取样Supersampling
2-18

Full-Scene Anti-Aliasng (FSAA): 通过高分辨率绘
制场景,然后把相邻的采样点进行加权平均得到
一幅图像。

例子:若需绘制500X400的反走样图像,则可先
绘制1000X800的图像,然后用2X2采样模板进行
加权平均(每个象素用4个采样点)
RGSS
各
种
象
素
采
样
模
板
2-19
NVIDIA的Quincunx方法(五点梅花排列法)
一般的反走样方法一个采样点只影响一个象素,
NVIDIA的Quincunx方法单个采样点影响的象
素多于一个(应用于GeForce3)
1/8
1/8

由于共享,每个象
素平均只需2个采样
点,但是效果却比2
个采样点的全屏幕
反走样好不少
1/2
2-20
1/8
1/8
NVIDIA的Quincunx方法

画面效果直逼4倍分辨率的抗锯齿效果,尤其是3D抗
锯齿性能很好

其原理是每帧画面最后一个像素渲染完后,GeForce3
芯片上的HRAA引擎将画面向x轴及y轴各移动半个像
素,从而使得第一张样本画面的像素恰好被第二张样
本画面中的4个像素斜向包围起来

然后HRAA引擎再对五个像素过滤,产生一个抗锯齿
的像素
2-21
NVIDIA的Quincunx方法
2-22
像素加权掩模
 在确定象素的亮度等级时,既考虑子像素的多少,还应
该考虑子像素的位置分布
 通常会给接近于像素区域中心的子像素更大的权

因为这些子像素在确定像素的整体亮度中起更重要的作用

图中示出了对3×3像素分割所采用的加权方案:


中心子像素的加权是角子像素的4倍,是其它像素的2倍;
对九个子像素的每个网格所计算出的亮度进行平均。这样的结果
是
 中心子像素的加权系数为1/4;
 顶部和底部及两侧子像素的加权系数为1/8;
 而角子像素的加权系数为1/16。
2-23
1
2
1
2
4
2
1
2
1
像素加权掩模
 指定子像素的相对重要性的值数组有时称为子像素权的
“掩模”
 也可为较大的子像素网格建立类似掩摸
 同样,这些掩模常被扩展为包括来自属于相邻像素中子
像素的贡献,以使亮度能遍及相邻像素而取平均
2-24
过滤技术
 反走样线更精确的方法是采用过滤技术


这种方法类似于应用加权像素掩模,只是现在假想一个连续的
加权曲面(或过滤函数)覆盖像素
应用过滤函数的方法类似于应用加权掩模,但现在是将像素曲
面集成来得到加权的平均亮度。为减少计算量,常用查表法来
求整数值
每个过滤函
数的体积被
规范化为1。
根据任何子
像素位置处
的高度给出
相应的权值。
立方体滤波
2-25
圆锥滤波
高斯滤波
线亮度差的校正
 用相同数目像素所画的两条线,对角线还是比水平线长,
可视效果是对角线显得比水平线要暗,因为对角线以更低
的单位长度亮度显示
 按照每条线的斜率来调整其亮度,就可对这种效果进行校正




2-26
水平和垂直将以最低的亮度显示
而45°线则以最高亮度显示
一旦反走样技术应用于显示,亮度就能自动校正
当考虑线的有限宽度时,调整亮度的结果是线以正比于其长度的
整体亮度显示
区域边界反走样
 通过分割整体区域,并决定区域边界
内的子像素数目,以像素区域覆盖率
为基础来调整每个边界位置处的像素
亮度
 右上图为2×2网格中覆盖对象边界的
像素区域之一,沿着扫描线,确定子
像素区域的三个区域在边界内,因此
,可将像素亮度设置为最大值的百分
之七十五
 在右下图中,位置1处的像素有约一
半的区域在多边形边界内,因此,该
位置处的亮度将被调整到其设定值的
一半;沿边界的下一个位置2处的亮
度被调整到其设定值的约三分之一
2-27
扫描线1
扫描线2
2
1