抗锯齿 - 计算机图形学

2024年8月28日 | 阅读 4 分钟

抗锯齿是一种计算机图形学方法,用于消除锯齿效应。当光栅化图像具有锯齿边缘时,就会发生锯齿效应,有时被称为“锯齿”(使用像素渲染的图像)。从技术上讲,锯齿边缘是在使用低频采样(也称为欠采样)进行扫描转换时出现的问题,这种欠采样会导致图像失真。此外,当由连续、平滑曲线制成的真实世界对象使用像素进行光栅化时,也会发生锯齿。

欠采样是抗锯齿的一个重要因素。当样本大小太小时,图像中的信息就会丢失。当采样频率低于奈奎斯特采样频率时,就会发生欠采样。我们必须有一个采样频率,该频率至少是图像中出现的最高频率的两倍,以防止这种损失。

抗锯齿方法

高分辨率显示、后滤波(超采样)、预滤波(区域采样)和像素相位是用于消除锯齿的技术。以下给出了这些技术的解释

  1. 使用高分辨率显示 - 以更高的分辨率显示对象是减少锯齿影响和提高采样率的一种技术。使用高分辨率时,锯齿会减小到人眼不可见的大小。因此,尖锐的边缘会变得模糊并呈现平滑的效果。
    实际应用
    例如,Apple 产品中的 OLED 显示屏和视网膜显示屏都具有高像素密度,这会导致锯齿变得非常微小,以至于它们模糊且肉眼不可见。
  2. 后滤波或超采样 - 使用这种技术,我们通过将屏幕视为由更精细的网格构成,从而降低了足够的像素大小,同时提高了采样分辨率。但是,屏幕分辨率不会改变。现在,在计算每个子像素的强度后,从子像素的强度的平均值确定平均像素强度。为了以较低的分辨率或屏幕分辨率显示图像,我们以较高的分辨率进行采样,这个过程称为超采样。由于此过程是在创建光栅化图像后执行的,因此此技术也被称为后滤波。
    实际应用
    在游戏中使用 SSAA(超采样抗锯齿)或 FSAA(全场景抗锯齿)可以产生最好的图像质量。它通常被称为“纯 AA”,计算速度非常慢且成本高昂。当没有更好的 AA 技术可用时,这种技术通常在开始时使用。其他 SSAA 模式可用,包括 2X、4X、8X 和其他表示采样 x 倍(大于)当前分辨率的模式。
    MSAA(多重采样抗锯齿)是超采样 AA 的更快、更精确的版本,是一种更好的 AA 类型。
    它的计算成本较低。生产图形卡的厂商,如 NVIDIA 的 CSAA 和 AMD 的 CFAA,都在努力改进和推进超采样技术。
  3. 预滤波或区域采样 - 在区域采样中,计算像素强度时会考虑每个像素与显示的对象的重叠区域。在这种情况下,像素颜色的计算以场景对象与像素区域的重叠为中心。
    示例:假设一条线穿过两个像素。一个覆盖了大部分线条(90%)的像素显示 90% 的强度,而一个覆盖了较小部分(10%)的像素显示 10-15% 的强度。如果一个像素区域与多个颜色区域重叠,则最终的像素颜色计算为这些颜色的平均值。预滤波是此技术的另一个名称,因为它在光栅化图像之前使用。一些基本的图形算法用于完成它。
  4. 像素相位 - 这是一种消除锯齿的方法。在这种情况下,像素坐标会更改为接近对象几何体的几乎确切的位置。对于分散强度和辅助像素相位,一些系统允许您更改各个像素的大小。

抗锯齿的应用

  1. 补偿线条强度差异 - 尽管当水平线和对角线绘制在光栅显示器上时,对角线是水平线的 1.414 倍,但呈现两条线所需的像素数量是相同的。因此,延长线的强度会降低。抗锯齿技术用于根据线的长度分配像素的强度,以弥补这种强度损失。
  2. 抗锯齿区域边界 - 使用抗锯齿原理可以消除区域边界上的锯齿。这些技术可用于平滑扫描线算法中的区域边界。如果移动像素是可能的,则将它们移动到更靠近该区域边缘的位置。其他技术通过调整边界位置的像素强度来修改边界内的像素区域量。使用这些技术可以有效地消除区域边界。