分享
 
 
 

详细讲解Antialiasing的理论(下)

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

所以,只要把取样后的讯号,在 frequency domain 中,再经过一个 low pass filter(和取样之前用的那个一样),再进行一次 inverse Fourier transform,就可以得到原来的(经过 low pass filter 的)讯号了。

但是,Fourier transform 和 inverse Fourier transform 都是很花时间的工作。也就是说,在实际上是不可能真的用 Fourier transform 的。不过,low pass filter 其实是在 frequency domain 做乘法的运算,而它可以转换成在 spatial domain(或 time domain)的 convolution 运算。

一般用到的 low pass filter,其实就是把一段范围内的讯号保留,而范围外的讯号则变成零。所以,可以把它想成是乘上一个特别的讯号,这个讯号在指定的范围内是 1,其它的地方则是 0。因此,把任何一个讯号乘上这个讯号,就会保留指定的范围的讯号,而把其它地方变成 零了。所以,只要把这个讯号转换到 spatial domain 中,就可以很容易用 convolution 的方式来进行运算。

不幸的是,这样的讯号转换到 spatial domain 后,会变成一个称为 sinc filter 的东西。Sinc filter 是一个延伸范围达到无限远的 filter。当然,随着距离变远,它也会衰减,但是这会使它的 filter 范围变得很大。下图是一个理想的 low pass filter 在 frequency domain 和 spatial domain 的长像:

Frequency domain

Spatial domain

使用 sinc filter 来做 convolution 不但很花时间,它还有负值的部份,也会造成一些麻烦。所以,一个比较常用的 low pass filter 是 box filter。利用 box filter 来做 convolution,就等於是把一个 pixel 范围内所有的值全部加起来,做为一个 pixel 的值。如下所示:

Unit box filter

Frequency response

从 box filter 的 frequency response 可以看到 box filter 的缺点:box filter 把一些低频成份衰减了,但是又留下了一些高频成份。而且,box filter 会留下一大堆更高频的地方(像是 2 ~ 3 之间的地方)。因此,box filter 会造成一些模糊的现象,但是还是可能会产生不少失真的情形。不过,因为 box filter 非常简单,计算上也比较容易,所以仍是最常用的 low pass filter。

另外一个常用的 low pass filter 是 Gaussian filter。Gaussian filter 的一个非常重要的特性,是它在 frequency domain 的形状会和原来一样,也是一个 Gaussian。不过,它的宽度会有一些改变。以下是一个 Gaussian filter 和其在 frequency domain 的形状:

Unit Gaussian filter

Frequency response

和理想的 low pass filter 相比,Gaussian filter 还是留下了一些高频部份(因为在 -0.5 ~ 0.5 以外的范围还是有非 0 的值),而且在低频部份的衰减也比 box filter 更为严重。但是,它没有负值的情形,而且在 -1 ~ +1 范围之外几乎没有留下任何东西。所以,它在消除高频失真上面,会比 box filter 要好很多。但是,它的结果看起来会比 box filter 更为模糊一些。而且,和 box filter 相比,它比较宽。Box filter 对每个 pixel 只需要处理一个 pixel 宽度的资料,但是 Gaussian filter 则需要处理约三个 pixel 宽度的资料。所以,整体来说,Gaussian filter 所需的运算量,比 box filter 要高出很多。另外,因为 Gaussian filter 在每个取样点需要不同的权重(box filter 则是每个取样点都使用同样的权重),所以,Gaussian filter 几乎无法适用在随机取样的情形,因为如果取样点的位置会不停变化,就需要每次重新计算其权重。这对於需要即时运算的应用,其计算太过妖杂,几乎是不可能的。

前面提到,不论是取样时,或是在重建讯号时,都需要一个 low pass filter。在 3D 绘图的时候,一般是利用超取样(supersampling),也就是在同一个 pixel 中,取多个取样点,再以一个数位的 low pass filter(box filter 或是 Gaussian filter)处理后,得到每个 pixel 的「经过 low pass filter 的取样结果」。当然,超取样的取样点数目会影响 low pass filter 的效果。这是因为数位 low pass filter 长得并不可爱。例如,下图是一个两个取样点的 box filter 的长像:

2 samples digital box filter

Frequency response

可以看出来,两个 samples 的数位 box filter 根本无法有效消除高频成份。要注意的是,因为影像是一个二维的空间,所以如果每轴需要两个 samples,则共需要四个 samples。目前大部份 3D 显示晶片所支援的 4X OGSS FSAA 就是这样。

如果?用 Gaussian filter 则会稍微好一些。下面是一个经过调整的数位 Gaussian filter:

3 samples digital Gaussian filter

Frequency response

它的表现比两个 samples 的 box filter 要好一些,但并不明显。因为它实际的取样数并没有增加(三个取样点中,有两个是和邻近的 pixel 重覆的)。所以,它基本上还是两倍的超取样,只是 post filter 不同。它比 box filter 可以消除更多的高频成份,但是也同时牺牲了一些低频。所以,它的结果看起来会比较模糊,但是高频失真的情形会比较少。

如果增加取样点的数目,则这两种 low pass filter 的表现都会变好。以下是在每个 pixel 使用四个取样点的情形:

4 samples digital box filter

Frequency response

5 samples digital Gaussian filter

Frequency response

在这里的 Gaussian filter 虽然使用五个取样点,但是每个 pixel 范围内还是只有四个取样点,所以在超取样上面和 box filter 是相同的。从这两种 filter 的 frequency response 可以看出,Gaussian filter 的表现还是比 box filter 要好一些,而且它不像 box filter 会产生讨厌的负值。然而,每边四个取样点,对目前的 3D 显示晶片来说,工作量还是太大了。

最后我们要稍微讨论一下讯号重建的问题。前面说过,在重建讯号时,只要先对数位讯号使用 low pass filter,就可以得到原始的讯号(当然,是指经过 low pass filter 的原始讯号)。然而,重建讯号的工作通常是由显示单元(也就是萤幕)在进行的,所以,一般应用程式对它是没什么控制的。

一般的显示晶片在输出讯号时,会先经过一个 sample-and-hold 的过程,简单的说,就是使用一个 box filter。Sample-and-hold 会产生具有大量锯齿状的结果(参考下图)。不过,为了让显示卡可以符合 FCC 规范,通常在显示卡上会有一个 low pass 电路。这个电路理论上会把显示晶片上 RAMDAC 所能处理的最高频率以上的高频成份去除。不过,一般来说都不会这么理想就是了。

这个经过 low pass 的讯号,在送到萤幕显示时,如果是传统 CRT 萤幕的话,它会把讯号直接放大,送到电子枪后,在萤光幕上产生光点。但是,因为萤光剂的涂布、和电子枪光点的大小等问题,实际上 CRT 上的光点,并不会刚好只是个小点,而会是一个和周围的光点有些重叠的圆形。而且,这个圆形的亮度反应,大致上和 Gaussian filter 形状类似。所以,基本上,数位讯号在重建时,并不是理想的重建,而比较接近以 Gaussian filter 做为 low pass filter 的重建。不过,一般来说,它的效果也算是够好了。

如果使用的是 LCD 或是 plasma display 等显示幕的话,情形就会更糟。因为 LCD 和 plasma display 的 pixel 都是一个一个分开的,不像 CRT 是连续涂布的萤光剂,配上一个 mask。所以,它在显示时,整个 pixel 内的颜色都是一样的,而且 pixel 通常是方形。因此,它几乎等於是用一个理想的 box filter 当作 low pass filter 的重建。这会产生和上面的图形完全相同的结果。所以,LCD 或是 plasma display 在配合 FSAA 时,效果会比 CRT 萤幕要差一些。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有