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