图形学基础知识:走样和反走样,频域和滤波

走样(Aliasing)

走样,什么是走样?汉语字典给的定义是:变样,失去原有的样子。这个就很好理解了,像上篇文章中,我们光栅化一个三角形,得到的结果因为锯齿导致它变样了(如下图),那么锯齿就是我们走样的一种体现。

注:这块内容比较难懂,可能自己在文章中也不会总结的很好(emmm,都怪自己当初没好好读书),所以还是建议跟我一样不懂的同学自己看一下原视频:GAMES101-现代计算机图形学入门-闫令琪-P6

 

锯齿与采样的关系

从图中我们可以看出,导致锯齿的原因是由于每个像素内只存在一种颜色,同时每个像素又有一定的大小,这些锯齿就是在三角形边缘的一个个像素。因此若我们的像素越大那么锯齿也就越大越明显,像素越小锯齿也就越小越不明显。回到采样上,因为我们在光栅化操作时,采样的是像素的中心点。那么像素越小,说明像素的中心点越密集,也就是说我们的采样频率越高。也就是说锯齿出现的原因是因为我们的采样频率不够高

但是上面所说的提高分辨率来提高采样频率其实是属于物理/硬件层面上的优化了(直接换屏幕了),若我们要在分辨率不变的情况下做抗锯齿操作呢?文章的后续我们会在进行介绍。

像锯齿这样,由于采样所造成的一些问题,在图形学中我们称之为Sampling Artifact,这些问题造成的现象也就是走样。

 

Sampling Artifacts(瑕疵)in Computer Graphics

锯齿(Jaggies)

我们前面提到的锯齿就是采样产生的一种问题。

 

摩尔纹(Moire)

摩尔纹是一种会使图片出现彩色的高频率不规则的条纹,也是采样所造成的问题之一。我们生活中使用手机拍摄显示器屏幕的时候,拍出的照片往往就好出现扭曲的纹理,其实就是摩尔纹。

我们要在图像上进行复现也很简单,我们把屏幕上的一张大小为 m* n 的图去掉所有奇数行和奇数列的像素,然后把剩下的像素重新拼接在一起(等于缩小了图片),然后依旧按照原始大小 m*n 显示,就会出现摩尔纹。例如下图:

用采样理解起来也很简单,例如我们一个2*2的4个像素,原本采样4个点,四个点颜色不尽相同,去掉奇数行奇数列后只剩右上角的1个像素,然后又要显示成2*2,那么就是四个像素都变成了一个颜色,也就是右上角那个像素的颜色,等同于只采样了右上角1个点。

也就是说原本我们每个像素采样一次,变成了每四个像素采样一次,使采样频率降低,这种情况我们称之为欠采样(Undersampling)。

 

车轮效应(Wagon wheel effect)

在生活中,有些高速行驶的汽车,但是我们的眼睛看它的车轮却反而像是在倒着转,这也是采样所造成的问题,我们称之为车轮效应。例如下图,从手的发力方向我们可以确定这个纸片是在顺时针方向旋转,但是在旋转过程中,我们盯着纸片看,却有时候会感觉它是在逆时针旋转。

造成这个问题的原因是人眼在时间上的采样,跟不上运动的速度,时间上采样慢也就是采样频率低。

 

造成走样的原因

从上述种种Sampling Artifacts造成的走样来看,都是由于采样频率低(采样慢)跟不上物体的实际变化速度。更专业的说法是,信号(Signals)变化的太快(高频,high frequency),而我们的采样太慢

这里的信号变化怎么理解呢?车轮效应我们很好理解,信号变化快就是车轮转的太快了,随着时间的变换,车轮的旋转角度发生了变换。但是对于光栅化过程,怎么理解这个信号变化呢?

我们前面讲过光栅化是把一个经过一系列变换后和屏幕大小一样的空间内容映射到屏幕上的过程。我们可以把原始空间的内容看作是一个由 m*n 个像素组成的,m和n趋向于无限大,为了方便理解和描述,我们称它们为原始像素。那么我们的光栅化等于把这m*n个像素进行缩减,使其显示在 x*y 个像素的屏幕上,x和y远远小于m和n,我们称之为屏幕像素。简单来说,我们等同于把一幅高精度的图像(现实)变成了一幅低精度的图像(图片),这里的信号,我们可以称之为图像信号,信号变化就是原始像素中每个像素间的颜色变化,颜色本质就是一串信息,例如RGB值。同时也说明图像的信号变化并不是随着时间而变换,而是随着空间中x和y的值的变化而变化,这种我们称之为空间域(Spatial Domin)。那么信号变化快就是指原始像素间颜色发生了骤变,例如白色变成黑色等,反之两个像素直接颜色没有发生什么变化就是信号变化慢。

这也就很容易理解走样的说法了,如果信号变化慢,即周边一群像素的颜色相似,那么我们采样慢,即只取其中一点,就不会造成什么问题。但是若信号变化快,周边一群像素都是五花八门的,我们采样慢就会造成走样。这也是锯齿为什么都发生在三角形边缘的原因,因为在三角形内部信号变化慢,但是在三角形边缘信号变化往往会骤增。

 

反走样(Antialiasing)

既然我们的采样结果走样了,那么我们就要做一些优化来尽量的避免走样,也就是反走样操作。

模糊操作(Blurring)

针对我们前面光栅化一个三角形的反走样操作为,在我们采样之前,先对图形进行一个模糊的操作。

对比

原本的光栅过程,如下图,采样后的像素颜色要么是红色要么是白色

加了模糊操作后的光栅过程,如下图,可以看出经过模糊处理后,三角形的边缘颜色变化有了一定的过渡,根据前面所说的,就是信号变化变慢了。然后再采样的时候就不再全是红色或白色,也会出现不同程度的淡红色。

 

实际效果

下面两幅图便是通过模糊后进行采样,图中可以看出实现了一定的抗锯齿/反走样效果。

 

思考

前面我们的操作时先做模糊再做采样,那么我们是否可以先做采样再做模糊操作呢?答案是否定的,具体原因我们在后续解释。

注:对于先采样后模糊的操作我们称之为Blurred Aliasing,即把走样后的图像进行了模糊操作。

那么为什么呢?为什么可以通过模糊操作来实现反走样,又为什么模糊和采样操作不能逆转过来呢?这里就需要我们对频域进行了解了。

 

频域(Frequency Domain)

信号与波形

在前面,我们说过我们采样,采样的是信号(也可以称作是函数),而波形则是信号的表现形式。

我们来看看最简单的两个信号波,分别是正

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值