南京大学计算机学院路通,计算机图形学路通博士、教授lutongnjueducn
描述
计算机图形学领域专家路通博士现任南京大学计算机学院正教授。他的电子邮件地址为lutong@nju.edu.cn;个人网页链接为http://cs.nju.edu.cn/lutong/;联系电话为18913926002;所属机构为Department of Computer Science and Technology, NanJing University
南京大学计算机科学与技术系课程
《计算机图形学》
第5讲 走样与反走样
1什么是走样2反走样技术
1.什么是走样
走样:由于低频采样不足导致信息丢失的现象称为图像失真效应。造成图像失真的根本原因是基于数据表示理论构建图像的空间模型时必须将其转换成光栅系统所需的特定点阵形式。在进行光栅化处理时为了保证图像质量采用足够接近原图轮廓曲线的方法来代替原有连续曲线这一过程会导致生成后的图元显示可能出现锯齿状或阶梯状边缘效果从而影响视觉效果和真实感表现
走样现象
几何模型
光栅显示
一种简便的方法用于提高光栅系统的采样率:通过提高显示分辨率来处理两个关键的技术挑战。第一个问题是确定适当的帧缓冲器大小以维持刷新频率在30到60帧/秒之间;第二个问题是即使采用当前技术和最高分辨率的情况下仍然会出现一定程度的锯齿现象;除非硬件技术能够处理足够大的帧缓冲器才能有效解决问题。即使提升屏幕分辨率也无法彻底消除变形;因此仅靠提高显示质量并不能完全消除图像失真现象
走样现象
2.反走样技术
基于以下认识:理想图元是没有宽度的;然而,在水平或垂直方向上进行扫描转换后的图元在屏幕上至少会覆盖一个像素区域。因此,任何线条都可以被视为具有一定宽度的矩形图形。该矩形图形会覆盖部分栅格区域。转换算法会在被绘制线条穿过的每一列中选择一个像素点(如最近的那个)来赋予线条颜色。当相邻列所选像素点不在同一行时,在转换过程中会出现跳跃现象。这是导致图像走样的根本原因
反走样技术
反走样技术的核心概念是针对宽度为单像素的线条而言的。无论是水平还是垂直方向上的线条,在每经过一行或一列时都会占据一个像素的位置。而对于斜向线条来说,在每一行或列中都应为每个被经过的像素分配适当亮度值。
反走样技术
两类方法:非加权区域采样方法中,图元对单个像素亮度的贡献度与其与之相交的面积成正比,并按照覆盖比例赋予相应的亮度值。这种方法能够实现相邻像素之间的亮度变化具有平滑的效果而减少锯齿现象;而加权区域采样方法则通过使用权重函数来计算每个图元对像素亮度的影响,在考虑相交面积的同时还引入了距离权重因素来进一步优化结果
反走样技术
非加权区域采样方法
可将其类比为具有一定宽度之下的细长矩形;若直线段与特定 pixels 存在交点,则需计算两者相交部分所占区域;通过计算交叉区域面积来决定该 pixels 对应的亮度级别;在纯黑白显示模式下;如果一个 pixels 完全被线段所覆盖,则归类为黑色;若仅部分被 covered 则其灰度值与其 being line covered 的比例相关;若未 being any line coverage 则呈现 white 状态
非加权区域采样方法
每个像素的面积被定义为基准单位;相交区域所占的比例数值在0到1之间;通过将此比例与该像素的最大亮度设定相乘,则可得出该像素实际显示的亮度值。
非加权区域采样方法
非加权区域采样的特点在于其在采样过程中通过减少覆盖区域从而降低了整体亮度水平。在此过程中,在这种情况下(即当两个图像元素之间的距离大于或等于某个阈值时),图像元素对目标像素的影响消失。如果一个特定的目标像素与其对应的图像元素之间没有任何交集,则该图像元素对该目标像素的影响为零。无论目标 pixels 的位置如何变化(即不管其 center 到被采样的区域边缘的距离远近),只要所考虑的区域具有相同的 area,则该区域内所有 pixels 所对应的 brightness 值均相同
优化:在同一面积范围内,在线像素中心附近的较小区域其影响力显著超过远离中心的同样大小区域
加权区域采样方法
加权区域采样方法
幂等算子:一种满足T²=T性质的关系运算符,在代数结构中被广泛研究并应用于解决各种数学问题
加权区域采样方法
该方法在图像信息处理方面更贴近人类视觉系统的特性,并展现出更好的反走样效果。它通过将直线表示为具有一定宽度的细长矩形,在遇到 pixels 时依据其覆盖区域占 pixel 中心的比例来确定其对目标素亮度的影响。每个目标素所获得的亮度值与其被覆盖的比例相关联
小结:基于相交区域面积元与像素中心距离设定权函数(如Gaussian function等),表现在该区域中各点对整个像素亮度分布的影响程度不同这一特性上。通过权函数积分计算出相交区域面积后乘以对应像素的最大可能亮度值,则可获得该像素的实际显示亮度数值
过取样Supersampling
采用过采样技术(包括超采样和后滤波方法),在高分辨率图像中对目标进行采样;将屏幕视为比实际更为精细的网格(即子像素),通过沿这种更细网格上布置采样点,在这些更小的单元格上布置采样点以实现更高的频域覆盖效果;具体而言,在这些更小的单元格上布置采样点以实现更高的频域覆盖效果
基于多个子像素对单个象素整体明暗程度进行贡献计算以确定其明暗级别其可能取值的数量等于该区域内的所有子像素所贡献总明暗度分布于较多的小 pixels 区域内;并通过在台阶状边缘(水平跨度之间)附近引入一定的模糊过渡区域使边缘呈现平滑过渡效果。
每个像素含9个子像素
过取样Supersampling
当考虑线条宽度的影响时,则会将每个像素的亮度设置为与该线条区域内所包含的子像素数量成正比,并通过过采样技术实现线条路径的边界确定。其位置受斜率影响:45度角的直线段在其位置上。对于水平方向和垂直方向,在确定直线段的位置时需特别注意其与直线段的关系。其中,在|m|<1时建议将线条路径设置在靠近较低边界的区域;而当|m|>1时,则应将其放置得更接近较高的边界。
有颜色显示时:对子像素亮度进行平均来得到像素颜色设置
过取样Supersampling
Full-SceneAnti-Aliasng(FSAA)
各种象素采样模板
RGSS
NVIDIA的Quincunx方法(五点梅花排列法)
常见的反走样方法中每个采样点仅作用于一个像素。而NVIDIA的Quincunx方案下每个采样点所影响的像素数量超过了一个,并具体应用于GeForce3系列。
1/2
1/8
1/8
1/8
1/8
得益于共享机制的应用,在这种情况下,每个像素平均仅需2个采样点即可满足需求;然而其效果相比传统2个采样点的全屏幕反走样方案来说明显优于后者。
NVIDIA的Quincunx方法
在每帧画面完成绘制后,在GeForce3芯片上的HRAA引擎会将图像向x轴方向移动半个像素,在y轴方向同样进行移动。这种操作使得第一张样本中的每个像素会被第二张样本中的四个像素围绕,并以斜向方式包围。随后,在五个相邻像素中进行过滤计算,从而生成一个高质量的抗锯齿像素。
NVIDIA的Quincunx方法
像素加权掩模
在确定图像素亮度等级时, 我们既要考虑图像素的数量, 又要注意到图像素的位置分布所带来的影响. 这一因素值得注意的是, 接近于图像素区域中心位置上的图像素通常会获得更大的权重. 这是因为这些位于中心位置上的图像素在决定整体亮度水平方面具有更为重要的影响. 图片中展示了对3×3图像素进行分割所采用的一种加权方案: 中心图像素相对于角落图像素而言拥有四倍于其权重值; 相对于边缘位置上的其他图像素而言则拥有两倍于其权重值. 对于每一个9个图像素网格所计算出的所有亮度值取平均后得到的结果则是: 中心位置上的每个单位权重相当于角落位置上权重值的大四倍; 顶部、底部以及左右两侧位置上的每个单位权重相当于角落位置上权重值的一半; 而角落位置上的每个单位权重则相当于整个网格系统中最小的部分, 即1/16.
4
2
2
2
2
1
1
1
1
像素加权掩模
通常将指定子像素的相对重要性值数组称为子像素权的"mask";此外,在较大尺寸的子像素网格中也可以构建类似的mask。这些mask通常会被扩展以包含来自相邻pixels中sub-pixel contributions,并从而实现对周围pixels的亮度均匀分配与平均计算。
每个过滤函数的体积被规范化为单位体积。根据其在任意子像素位置处的高度进行归一化处理。
立方体滤波
圆锥滤波
高斯滤波
实现更高保真的反走样效果的方法是运用滤波技术;这种做法与使用加权像素遮罩的应用相似。然而,在当前的技术中,则构建了一个连续的加权曲面覆盖每个像素,并通过滤波器函数进行处理的方式与之类似。对于当前的技术而言,在处理时采用了积分操作而非简单的采样。为了提高效率 通常会参考预先制作好的表格数据查找对应值
过滤技术
线亮度差的校正
在相同像素数下绘制的两条线条中,在视觉效果上来看 斜对角线条素数量上略胜横平竖直 因此 斜对角线条素呈现出来的对比度会稍逊于横向与纵向 这是因为斜对角线条素单位长度亮度较低 并根据各线条斜率进行亮度调节 以便实现水平与垂直方向的最佳对比度校正 而45度方向则能达到最大亮度 当考虑到线条具有一定的宽度限制时 调整后的结果是 线条的整体亮度与其长度成正比
区域边界反走样
根据整体图像划分若干区域,并确定每个边界内部的小pixel数量;依据各个边缘点周围的 pixels 的覆盖比例来调节其亮度。图中的上方部分展示了 2x2 像素网格中的一部分 pixel 区域,在水平方向上沿着 scan 线扫描时会识别位于边缘附近的三个 pixel 区域;通过这种方法可以将中心 position 处 pixels 的亮度设置为最大值乘以 75% 的系数(如图所示)。对于位于边缘上的相邻 position(记作 position1),其一半 pixels 的面积会落在多边形边上;而相邻的位置(position2)则只有约三分之一 pixels 的面积会在多边形边上
扫描线1
扫描线2
1
2
