- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
cg05
计通学院 计算机科学系 计算机图形学 * 5 二维光栅图形的走样 与反走样 认识走样的现象和原因 如何消除走样现象-反走样 学会使用OpenGL的反走样函数 * 主要内容 走样现象 反走样方法 OpenGL相关函数 * 5.1 走样现象 走样(aliasing) 用离散量(像素)表示连续的量(图形)而引起的失真,称为走样,或称为混淆 光栅图形的走样现象 阶梯(锯齿)状边界 图形细节失真 狭小图形遗失:动画序列中时隐时现,产生闪烁 * 5.1 走样现象 (1)阶梯状的图形边界 像素间距大 线画图元 填充图元边界 实例 * 5.1 走样现象 (2)图形细节失真 显示图形的最小单位为像素 细长的矩形显示后成了加宽的矩形 更细的矩形将丢失 * 5.1 走样现象 (3)狭小图形的遗失与动态图形的闪烁 多边形分布在像素间,不覆盖像素 中心,不被显示 狭小图形运动时,会间隔覆盖像素 的中心,产生闪烁 * 5.2 反走样方法 反走样(antialiasing) 在图形显示过程中,用于减少或消除走样(混淆)现象的方法 方法 提高分辨率方法 非加权区域采样 加权区域采样 * 5.2 反走样方法 (1)提高分辨率的反走样方法 方法简单,但代价非常大 显示器的水平、竖直分辩率各提高一倍,则显示器的点距减少一倍,帧缓存容量则增加到原来的4倍,而扫描转换同样大小的图元却要花4倍时间 * 5.2 反走样方法 (2)非加权区域采样方法 扫描转换线段的两点假设 像素是数学上抽象的点,它的面积为0,它的亮度由覆盖该点的图形的亮度所决定 直线段是数学上抽象直线段,它的宽度为0 现实 像素的面积不为0; 直线段的宽度至少为1个像素; 假设与现实的矛盾是导致走样出现的原因之一 * 5.2 反走样方法 解决方法:改变直线段模型,线上像素灰度不等 方法步骤 1、将直线段看作具有一定宽度的狭长矩形; 2、当直线段与某像素有交时,求出两者相交区域的面积; 3、根据相交区域的面积,确定该像素的亮度值 * 5.2 反走样方法 方法性质 直线段对一个像素亮度的贡献与两者相交区域的面积成正比 当直线段和某个像素不相交时,它对该像素的亮度无影响 相同面积的相交区域对像素的亮度贡献相同,而与这个相交区域落在像素内的位置无关 关键:如何计算相交面积? * 5.2 反走样方法 计算相交区域的面积 (a)面积=(m*D*D)/2 (b)面积=D – m/2 像素实际显示的灰度值 = 所得面积 * 该像素的最大灰度值 D m*D D m 假设线段斜率为m 像素实际大小 * 5.2 反走样方法 求相交区域的近似面积的离散计算方法 将屏幕像素分割成 n 个更小的子像素; 计算中心点落在直线段内的子像素的个数,记为 k, k/n 为线段与像素相交区域面积的近似值 例 目的:简化计算 n = 16, k = 3 近似面积 = 3/16 * 5.2 反走样方法 (3)加权区域采样方法 权函数w(x, y) 以像素A的中心为原点建立二维坐标系 w(x, y)反应了微面积元dA对整个像素亮度的贡献大小 ,与 dA 到像素中心距离d 成反比。 高斯函数 * 5.2 反走样方法 权性 位于(x, y)处的微面积元dA对像素的亮度的贡献为 w(x, y) dA 相交区域 对该像素的亮度贡献 * 5.2 反走样方法 特例: 时, 实现步骤 1.求直线段与像素的相交区域 2.计算的值 3.上面所得到的值介于0、1之间, 用它乘像素的最大灰度值, 即设该像素的显示灰度。 问题:计算量大 加权区域采样方法退化为非加权区域采样方法 * 5.2 反走样方法 离散计算方法 1.将屏幕像素均匀分割成m个子像素 ,则每个子像素的面积为 计算每个子像素对原像素亮度的贡献,记为? 将 保存在一张加权表中 2.求出所有中心落于直线段内的子像素,记为 3.计算所有这些子像素对原像素亮度贡献之和 。 该值乘以像素的最大灰度值即为像素的显示灰度值 * 5.2 反走样方法 w(x, y)是一个经验函数,对应的 也是经验值 w(x, y)可以用加权表M表示,取法有 M=3×3 M=5×5 * 5.2 反走样方法 例 加权表 1个像素分解成3×3个子像素 加权区域采样: 非加权区域采样: s = 3/9 * 5.2 反走样方法 OpenGL实例 (a)走样 (b)反走样 * 5.3 OpenGL函数 函数 启动反走样:glEnable(),参数为GL_
文档评论(0)