1.反走样

1.1 什么是走样

在上一篇文章中,我们通过采样的方式把一个三角形变成离散的点显示在屏幕上。在采样过程中,我们会产生很多锯齿,这些锯齿的学名就叫做走样

1.2 反走样

如何消除锯齿(走样),我们就要引入反走样技术,之所以会产生走样的原因是因为采样的速度比信号频率慢,对于图像来说,信号代表的就是图片上的每个像素,而信号频率代表的是这个像素对于周围像素颜色差异的程度。

常见的走样分为以下几种:、

  • 锯齿:空间上采样产生的走样;
  • 摩尔纹:空间上下采样产生的走样;
  • 车轮效应:时间上采样产生的走样。
    这些我们也会称为采样的瑕疵(Artifacts)

1.3 反走样方法

为了能够减轻走样带来的影响,我们会对要采样的图形先进行模糊操作,再根据模糊后的图形进行采样,这就是反走样的过程。

为什么把一个图片模糊就可以解决锯齿问题?实际上在我们光栅化的过程中,采样的目的是为了用采样的像素来描述一个三角形,好那我举个例子,如果一个圆,我采样取四个点,那这四个点连起来实际上是个正方形,不能够准确描述这是个圆,那我提高采样频率,我采5个点,6个点,7…随之而来连接起来是5边形,6边形,7边形…随着采样的点(频率)数量越来越多,那么连接起来就越来越接近个圆,同样我们是不是可以提高采样率来抗锯齿,答案是可以的,但是我们不能要求你有抗锯齿就要求客户换一个分辨率更高的显示器,这是不合理的,那么相对的我不能提高采样率,那能不能降低信号频率,我们可以看到对于这个三角形信号频率最高的像素在三角形边缘,红色=>白色,颜色差异很大所以变化率高,但是我们通过模糊后的三角形边缘有了渐变效果实际上就是降低了信号频率,从而实现的抗锯齿效果。当然这是大白话,在数学上我们会有更抽象的证明方式,往后看。

1.4 傅里叶变换

任何一个信号都可以表示为一些正弦波和余弦波以及常数的线性表示,我们称之为傅立叶展开。而傅立叶变换指的是将一个时域上的信号转换到频域的过程。

1.5走样和滤波

走样更为学术的定义应该是两个不同频率的信号在使用相同采样的方法后产生的结果无法进行区分

图中的红色信号和蓝色信号是两个频率不一样的信号,绿色虚线处是采样点,我们发现两个不同频率的信号在同一个采样方式下结果相同,这就产生了走样。

滤波是把特定频率的波过滤掉。如果仅保留高频信息,那么这称为高通滤波;如果仅保留低频信息称为低通滤波;如果既删除高频信息,还删除低频信息,只保留中频信息称为带通滤波。


对于一个图片我们进行傅立叶变换后,得到的是上面右图的样子。我们进行解释:中心代表了低频信息,边缘代表了高频信息,亮度代表对应频率的能量。对于图片而言,一般低频信息更加的丰富,而高频信息比较少。高频信息一般代表边缘信息,因为边缘信息频率比较高;低频信息是图片模糊后的结果,频率变化小。

为什么傅立叶变换后图片有一束明显的十字交叉?

傅立叶变换中我们会认为图片是“连续”的。我们会在原图上下左右不断重复图片以达到“连续”的效果。而图片的四周一般变换非常的快,属于高频的信息,对应在频谱图上就是会有一束明显的十字交叉,代表了高频的边缘信息。

1.6 卷积和卷积定律

滤波可以看作卷积操作,也可以看作平均操作。卷积(Convolution)操作是用一个卷积核在信号上不断地滑动,每一次卷积操作的结果是卷积核和对应位置信号乘积的和,可以看作一次加权平均的过程。

注: 时域上的卷积等于频域上的乘积,频域上的乘积等于时域上的卷积。

1.6.1 Box Filter

Box Filter 是一个格式如下的滤波器:

其中,

图形学-反走样/抗锯齿相关推荐

  1. 图形学中的抗锯齿讨论以及在unity中的应用

    抗锯齿(Anti-Aliasing)是图形学中,很重要的一个部分.本文旨在做一些分析总结,并对平时不理解的细节,做了调研,但毕竟不是做GPU行家,所以有不对的地方,欢迎拍砖^^. 1 什么是锯齿 下图 ...

  2. 计算机图形学四:抗锯齿SSAA及MSAA算法和遮挡剔除Z-Buffer算法

    抗锯齿算法和Z-Buffer算法 1 锯齿 (走样,Aliasing) 1.1 超采样反走样(Super Sampling AA) 1.2 多采样反走样(Multi-Sampling AA) 2 Z- ...

  3. [计算机图形学]反走样(前瞻预习/复习回顾)

    一.前言:走样的产生 上一篇我们谈到了光栅化,在讲述光栅化时我们得到了光栅化之后的这样一张图,如下图 显然,这和我们原本的三角形严重不符,原因是像素是方块,而无法完美的拟合三角形. 也就是说我们得到的 ...

  4. 入门图形学:UI抗锯齿

    刚好需要解决一下UI抗锯齿的问题,顺便记录一下.       最常见的锯齿就是圆形的锯齿.       我们先创建一个圆形,使用CanvasRender绘制: using System.Collect ...

  5. 抗锯齿和走样(笔记)

    Artifacts(瑕疵): 比如人眼采样频率跟不上陀螺的旋转速度,这时就有可能看到陀螺在反方向旋转 怎么做抗锯齿(滤波): 在采样之前先进行一个模糊操作,可以降低锯齿的明显程度 通过傅里叶定理:任何 ...

  6. GPU Gems1 - 11 阴影贴图反走样

    这章介绍了如何通过邻近百分比过滤方法(Percentage-Closer Filtering , PCF)有效减少阴影贴图的反走样,并描述了如何实现一个简化版本,并对PCF方法进行了一定改进.关于阴影 ...

  7. 计算机图形学【GAMES-101】2、光栅化(反走样、傅里叶变换、卷积)

    快速跳转: 1.矩阵变换原理Transform(旋转.位移.缩放.正交投影.透视投影) 2.光栅化(反走样.傅里叶变换.卷积) 3.着色计算(深度缓存.着色模型.着色频率) 4.纹理映射(重心坐标插值 ...

  8. WuxioLin 反锯齿算法(反走样算法,Xiaolin Wu Anti-aliasing algorithm) C# 代码实现

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.锯齿和反锯齿 二.Xiaolin Wu 算法代码 1.C#完整代码如下 2.举例和测试 总结 前言 笔者前几日自己 ...

  9. GAMES101-现代计算机图形学-闫令琪 作业2 反走样 antialiasing 抗锯齿

    文章目录 简介 MSAA问题 1.黑边情况1 2.黑边情况2 3.灰边情况 SSAA 总结 MSAA SSAA 最后 参考 简介 本文章主要内容为作业二的最后一个题目:反走样的处理.本文使用了两种反走 ...

最新文章

  1. 2011年终盘点——附图灵公司销售榜单(TOP20)
  2. 如果重走职场,一定会送自己 8 个锦囊
  3. mips 内存 linux,MIPS 在linux中的内存映射
  4. Spring实战(三)Spring中装配Bean的三种方式---XML、JavaConfig、AutoWire
  5. 获取select被选中的option的值
  6. 论文浅尝 | 在生成式多跳机器阅读任务中引入外部常识知识
  7. 静态和动态web的区别与联系
  8. primefaces_Primefaces单选按钮,复选框示例
  9. c语言逐行存储到txt,c语言逐行读取txt文件数据
  10. 通用技术标模板,技术方案书
  11. app录制回放 jmeter_Jmeter使用之脚本录制回放
  12. java 文字生成表格图片
  13. pku 1392 Ouroboros Snake
  14. 正北坐标系和车辆坐标系下的heading转换
  15. win10安装Ubuntu16.04
  16. Android热修复之Tinker集成最新详解
  17. 将文件中每一行字符反序(python3)
  18. 蓝牙协议分析(2)_协议架构
  19. 云原生是什么意思?我们为什么需要云原生?
  20. idm一个网站不能下载两次?这几个办法彻底解决

热门文章

  1. 「实践篇」从零开始搭建公文管理系统
  2. 软考中级(软件设计师)——数据库系统(上下午各占6-8分)
  3. Photoshop CS2 视频教程-PS魔术棒工具(转)
  4. python免费ocr软件_Textshot:100行Python代码实现一款高精度免费OCR工具
  5. Repo下载、编译AOSP源码:基于Ubuntu 21.04,android-12.1.0_r27
  6. 【java学习】 static
  7. 百度C++工程师如何实现极致并发优化
  8. 计算群论基础算法:Schreier-Sims 算法
  9. 宿命,别无选择;看《大话西游》有感
  10. MacOS系统下selenium之火狐浏览器驱动firefoxdriver安装