【问题标题】:Perceptual Image Downsampling感知图像下采样
【发布时间】:2009-11-22 22:37:05
【问题描述】:

所以这是我的问题:

我有一张图片,该图片很大(高分辨率),它需要很小(分辨率低得多)。

所以我做了很幼稚的事情(杀死所有其他像素),结果看起来很糟糕。

所以我尝试做一些更智能的事情(使用傅里叶变换的低通滤波和傅里叶空间中的重新采样),结果稍微好一点,但仍然相当差。

所以我的问题是,是否有一种感知动机的图像下采样算法(或实现)?

编辑: 虽然我知道许多重采样技术,但我的应用程序更关心保留感知特征,而不是生成平滑的图像。

edit2:假设我对数字信号处理、卷积、小波变换等有一定程度的了解是安全的

【问题讨论】:

  • 好的,你想缩放什么样的图像?线条图?照片?我主要处理的是视频图像,当您尝试保留特定特征(例如传统动画中的线条)时,适用于视频的缩放算法可能无法正常工作。
  • 暂时让我们说它是一只熊的图像(从背景中移除),一旦调整大小,我希望它仍然看起来像一只熊。
  • 手绘熊?熊的照片?小熊?您按什么因素进行缩放?根据您的描述(“杀死所有其他像素”),听起来您只是缩放了 2 倍,所以一个好的通用算法应该仍然可以很好地工作(除非您的图像是线条 1 像素宽的线条艺术,其中万一它看起来不太好...)我很想知道这种矢量化方法如何为您工作。

标签: algorithm image downsampling


【解决方案1】:

阅读:

http://www.dspguide.com/

好的,读起来不错。但是了解过滤器设计会很方便。

一般来说,将图像从 W1 x H1 缩放到 W2 x H2 的过程,其中 W1、W2、H1、H2 是整数,是找到新的 W3、H3 使得 W1 和 W2 是 W3 和 H1 的整数因子和 H2 是 H3 的整数因子,然后用零填充原始图像(用于分隔原始图像的像素),使其现在的大小为 W3 x H3。由于图像中的不连续性,这会引入高频,因此您对图像应用低通滤波器,然后将滤波后的图像抽取到新的大小 (W2 x H2)。听起来您可能已经在尝试这样做,但过滤可以在时域中完成,因此傅里叶变换并不是真正必要的。

在实践中,我刚刚描述的过程已经过优化(您会注意到,在将卷积滤波器应用于放大图像时,大多数项将为 0,因此您可以避免算法中的大部分乘法运算,例如示例。由于您最终丢弃了许多过滤后的结果,因此您不需要计算这些结果,因此基本上,您最终会为目标图像中的每个像素进行少量乘法和加法运算。诀窍是计算找出要使用的系数。)

我相信 ffmpeg 项目中的 libswscale 会做这样的事情。看看吧:

http://gitorious.org/libswscale

正如其他人指出的那样(您显然已经注意到)抽取图像会引入混叠伪影。我不能确定您的重采样实现,但根据您使用的窗口大小和其他实现细节,该技术有一些有趣的陷阱。

【讨论】:

    【解决方案2】:

    Bicubic interpolation 一般被认为足够好,但没有完美的解决方案,这取决于人和被重新采样的图片的属性。

    相关链接:

    我都不知道锐度也叫acutance。

    Aliasing 是天真下采样时可能出现的问题。

    【讨论】:

    • 我熟悉更普通的重采样技术(高斯、双三次、Lanczos),它们对于放大是有效的,但在缩小时它们会丢失太多感知上重要的信息。我没有考虑过使用非锐化蒙版,这可能会解决我的大部分问题,但根据我的设置,仍然存在一些问题,应该消失的线条会保留下来,反之亦然。
    • 在这种情况下,除了在另一个答案中已经提到的接缝雕刻外,我只看到“高分辨率图像的矢量化,然后以较低的分辨率显示矢量化版本”的方法。
    • 矢量化算法肯定会对此有所帮助。也许我可以应用一个显着性度量(即 Itti)来给向量相对权重,并让它们在某些阈值之后消失。让我玩一下,这可能是我正在寻找的解决方案。
    • 不要只说“双三次插值”!阅读本文的人可能会去做 90% 的软件所做的幼稚事情,并且在对图像进行下采样之前不对其进行过滤。
    • @Timmmm 感谢您发表评论,但您真的应该写下自己的答案。在那里,您将有闲暇时间提供必要的细节。实际上,阅读此答案+您的评论的人将不知道您的意思。
    【解决方案3】:

    帕斯卡是对的。取决于图像,以及你想要什么。一些因素:

    • 保留锋利的边缘
    • 保留颜色
    • 算法速度

    这是your method。

    其他一些:

    请注意,与使用较低分辨率的相机相比,有时重新采样可以获得更清晰的结果,因为高分辨率图像中会有一些边缘无法被较低分辨率的设备检测到。

    旁注:如果您按整数缩小(例如除以 4 或 6),许多算法(尤其是最近邻算法)都可以优化。

    【讨论】:

    • 像大多数人一样,您已经忘记了首先对图像进行低通滤波这一至关重要的步骤。仅使用您列出的一种插值方法会导致锯齿,并且图像看起来很垃圾。
    【解决方案4】:

    此处讨论了推荐的 ImageMagick“通用”下采样方法:http://www.imagemagick.org/Usage/filter/nicolas/#downsample

    【讨论】:

      【解决方案5】:

      您可以尝试使用内容感知大小调整算法。见:http://www.seamcarving.com/

      【讨论】:

      • 虽然图像重定向更符合我想要做的,但实际应用还不够。图像重新定位依赖于识别重要特征并从“背景”中裁剪它们。我正在做的是拍摄熊的形象,然后重新采样
      【解决方案6】:

      【讨论】:

      • 据我所知,这不能正确过滤图像,不应该用于下采样。
      • 鉴于它 在 Paint.NET 中用于下采样,我会说它做得很好。我也开始在自己的软件中使用它,结果还不错:braincrunch.tumblr.com/post/13459650973/…
      • @Timmmm 如果您觉得有什么重要的事情要说,请在您自己的回答中正确解释。在不提供细节的情况下评论所有现有答案似乎不是很有建设性。这不是本网站的运作方式。
      • 好的,我会正确回答的。
      猜你喜欢
      • 2017-03-23
      • 2011-09-02
      • 1970-01-01
      • 1970-01-01
      • 2019-01-10
      • 1970-01-01
      • 1970-01-01
      • 2013-04-30
      • 1970-01-01
      相关资源
      最近更新 更多