📜  计算机图形 |抗锯齿

📅  最后修改于: 2021-10-18 12:31:21             🧑  作者: Mango

抗锯齿是计算机图形学中用于消除锯齿效果的一种技术。锯齿效果是光栅化图像(使用像素渲染的图像)中出现锯齿状边缘或“锯齿”。从技术上讲,锯齿边缘的问题是由于在低频采样(也称为欠采样)下进行扫描转换时图像失真造成的。当包含平滑、连续曲线的现实世界对象使用像素进行光栅化时,就会发生混叠。

抗锯齿的原因是欠采样。欠采样导致图像信息丢失。当以低于奈奎斯特采样频率的频率进行采样时,就会发生欠采样。为了避免这种损失,我们需要让我们的采样频率至少是对象中出现的最高频率的两倍。

此最低要求频率称为奈奎斯特采样频率 (fs):

fs =2*fmax 

这也可以说是我们的采样间隔不应大于周期间隔的一半。这个采样间隔所需的最大值称为奈奎斯特采样间隔 Δx s

Δxs = Δxcycle/2
Where Δxcycle=1/fmax 

抗锯齿方法 (AA) –
使用四种方法去除混叠:使用高分辨率显示、后过滤(超级采样)、预过滤(区域采样)、像素相位。这些解释如下。

  1. 使用高分辨率显示器:
    减少混叠效应和提高采样率的一种方法是简单地以更高的分辨率显示对象。使用高分辨率,锯齿变得非常小,以至于人眼无法区分它们。因此,锯齿状边缘变得模糊,边缘看起来很平滑。

    实际应用:
    例如 Apple 设备中的视网膜显示器,OLED 显示器具有高像素密度,因此形成的锯齿非常小,以至于我们的眼睛无法区分它们。

  2. 后过滤(超级采样):
    在这种方法中,我们通过将屏幕视为由更精细的网格构成来提高采样分辨率,因此有效像素大小会减小。但屏幕分辨率保持不变。现在,计算每个子像素的强度,并从子像素强度的平均值中找到像素的平均强度。因此,我们以更高的分辨率进行采样并以屏幕的较低分辨率或分辨率显示图像,因此这种技术称为超级采样。此方法也称为后过滤,因为此过程是在生成光栅化图像后完成的。

    实际应用:
    在游戏中,SSAA(超级采样抗锯齿)或 FSAA(全场景抗锯齿)用于创建最佳图像质量。它通常被称为纯 AA,因此速度非常慢并且具有非常高的计算成本。这种技术在早期没有更好的 AA 技术时被广泛使用。 SSAA 可用的不同模式有:2X、4X、8X 等,表示采样是当前分辨率的 x 倍(多于)。

    一种更好的 AA 风格是 MSAA(多重采样抗锯齿),它是一种更快且近似的超级采样 AA 风格。它的计算成本更低。 NVIDIA 的 CSAA 和 AMD 的 CFAA 等显卡公司开发了更好、更复杂的超级采样技术。

  3. 预过滤(区域采样):
    在区域采样中,像素强度的计算与每个像素与要显示的对象的重叠区域成正比。这里的像素颜色是根据场景对象与像素区域的重叠计算的。例如:假设一条线穿过两个像素。覆盖线的较大部分(90%)的像素显示 90% 的强度,而覆盖像素的较小区域(10%)显示 10-15% 的强度。如果像素区域与不同颜色区域重叠,则将最终像素颜色作为重叠区域颜色的平均值。此方法也称为预过滤,因为此过程是在生成光栅化图像之前完成的。它是使用一些图形原始算法完成的。
  4. 像素相位:
    这是一种消除混叠的技术。此处像素位置移动到接近对象几何形状的近似位置。一些系统允许调整单个像素的大小以分布强度,这有助于像素定相。

抗锯齿技术的其他应用:

  1. 补偿线强度差异:
    在光栅显示器上绘制水平线和对角线时,显示两条线所需的像素数相同,即使对角线比水平线大 1.414 倍。这导致较长线的强度降低。为了补偿这种强度的降低,使用抗锯齿技术根据线的长度分配像素的强度。
  2. 抗锯齿区域边界:
    还可以应用抗锯齿概念来去除区域边界上的锯齿。这些程序可以应用于扫描线算法以平滑区域边界。如果可以重新定位像素,则将像素位置调整到更接近区域边界的位置。其他方法根据边界内像素面积的百分比调整边界位置处的像素强度。这些方法有效地平滑了区域边界。