【问题标题】:Why supersampling is not widely used for image scaling?为什么超级采样没有广泛用于图像缩放?
【发布时间】:2014-02-18 11:35:48
【问题描述】:

我在寻找合适的图像缩放算法,并想知道为什么超级采样不如双三次、双线性甚至 lanczos 流行。

超级采样我的意思是一种将源图像划分为相等矩形的方法,每个矩形对应于目标图像中的一个像素。在我看来,这是最自然、最准确的方法。它考虑了源图像的所有像素,而双线性可能会跳过一些像素。就我所见,质量也很高,可以和lanczos媲美。

为什么流行的图像库(如 GraphicsMagic、GD 或 PIL)没有实现这个算法?我只在 Intel IPP 和 AMD Framewave 项目中找到了实现。我知道至少有一个缺点:它只能用于缩小规模,但我还缺少其他东西吗?

作为比较,这是一个 4.26 倍的缩小图像。从左到右:GraphicsMagic Sinc 滤波器(910ms)、Framewave Super 方法(350ms)、GraphicsMagic Triangle 滤波器(320ms):

【问题讨论】:

    标签: image-processing image-resizing


    【解决方案1】:

    现在我知道答案了。因为pixel is not a little square。这就是为什么超级采样调整大小会产生 aliased 结果。这可以在样本图像上的细水射流上看到。这不是致命的,超级采样可用于缩放到 2x、3x 等,以在使用另一种方法调整到精确尺寸之前显着减小图片尺寸。这种技术在 jpeglib 中用于打开较小尺寸的图像。

    当然,我们仍然可以将像素视为正方形,实际上,GD 库可以。 imagecopyresampled 是真正的超级采样。

    【讨论】:

      【解决方案2】:

      您有点误会了(当说线性重新缩放会丢失像素时)。假设您最多将图像重新缩放 2 倍,双线性插值会考虑源图像的所有像素。如果您稍微平滑图像并使用双线性插值,这将为您提供高质量的结果。对于大多数实际情况,甚至不需要双量子插值。 由于双线性插值非常快(可以在定点计算中轻松执行),因此它是迄今为止处理实时处理时最好的图像缩放算法。

      如果您打算将图像缩小 2 倍以上,则双线性插值在数学上是错误的,并且在更大的系数下,即使双三次也开始出错。这就是为什么在图像处理软件(如 Photoshop)中我们使用更好的算法(但对 CPU 的要求更高)。

      您的问题的答案是速度考虑。 鉴于您的 CPU/GPU 的速度、图像大小和所需的帧速率,您可以轻松计算每个像素可以执行多少操作。例如 - 使用 2GHZ CPU 和 1[Gpix] 图像大小,您每秒只能对每个像素进行少量计算。 给定允许的计算量 - 您选择最佳算法。因此,决定通常不是由图像质量驱动,而是基于速度考虑。

      关于超级采样的另一个问题 - 有时如果您在频域中进行,效果会更好。这称为频率插值。但您不会只想为重新缩放图像而计算 FFT。

      此外 - 我不知道您是否熟悉反投影。这是一种从目标到源而不是从源到目标插入图像的方法。使用反投影,您可以将图像放大 10 倍,使用双线性插值并且在数学上仍然是正确的。

      【讨论】:

      • “您的问题的答案是速度考虑”。但在我的示例中,对其进行超级采样比 sinc 快 2.5 倍,并提供比三角形更好的质量。
      • 我不熟悉你的测试,你的 CPU 和图像的大小。但是双线性的执行速度只比复制图像慢几倍。换句话说,这可能需要几毫秒,而不是数百毫秒。在我的笔记本电脑(Intel i7)上,将 1.5[mpix] 图像大小调整为 0.24[mpix](您发布的图像大小)大约需要 9[mSec]
      • 这是调整大小图像的一部分。这里是original
      【解决方案3】:

      计算负担和增加的内存需求很可能是您正在寻找的答案。这就是引入自适应超级采样的原因,它在负担/内存需求和有效性之间做出妥协。 我想即使对于今天的硬件来说,超级采样仍然太重了。

      【讨论】:

        【解决方案4】:

        简短回答:它们是超级采样。我认为问题在于术语。

        在您的示例中,您正在缩小。这意味着抽取,而不是插值。如果不使用超级采样,抽取将产生混叠。我在您发布的图片中没有看到锯齿。

        sinc 滤波器涉及超级采样。它特别适用于抽取,因为它专门切断了高于最终图像中可以看到的频率。从名字来看,我怀疑三角形过滤器也是一种超级采样。您显示的第二张图像模糊,但我没有看到锯齿。所以我的猜测是它也使用了某种形式的超级采样。

        就我个人而言,我一直对 Adob​​e Photoshop 感到困惑,它在缩放时询问我是想要“双三次”还是“双线性”。但 Bilinear、Bicubic 和 Lanczos 是插值方法,而不是抽取方法。

        我还可以告诉您,现代视频游戏也使用超级采样。 Mipmapping 是一种常用的实时抽取快捷方式,通过按 2 的幂对单个图像进行预抽取。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-09-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-06-03
          • 1970-01-01
          • 1970-01-01
          • 2011-01-21
          相关资源
          最近更新 更多