2009-11-22 43 views
5

因此,这里是我的问题:感知图像向下取样

我有一个图像,该图像是大(高分辨率),它需要小(更低分辨率)。因此,我做的是天真的事情(杀死所有其他像素),结果看起来很差。因此,我尝试做一些更智能的事情(使用傅里叶变换进行低通滤波并在傅里叶空间重新采样),结果稍微好一点,但仍然相当差。

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

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

EDIT2:它是安全的假设我有一个数字信号处理,卷积,小波变换熟悉的一些水平等

+0

OK,你想什么样的图像规模?线条图?照片?我主要介绍了视频图像,并且在尝试保留特定功能(如传统动画中的线条)时,适用于视频的缩放算法可能效果不佳。 – 2009-11-22 23:23:52

+0

现在让我们假设它的图像熊(从背景中删除),一旦调整大小,我希望它仍然看起来像一只熊。 – tzenes 2009-11-22 23:45:36

+1

手绘熊?熊的照片? Pedobear?你通过什么因素缩放?根据你的描述(“杀死其他所有像素”),它听起来像只能缩放2倍,所以一个好的通用算法应该仍然可以很好地工作(除非你的图像是线条1像素宽的线条艺术,其中情况下,它不会看起来那么伟大......) 我很想知道这种矢量化方法如何为你工作。 – 2009-11-23 04:01:02

回答

2

Bicubic interpolation通常被视为不够好,但没有完美的解决方案,这取决于人们以及被重新采样的图片的属性。

相关链接:

我甚至不知道,清晰度也被称为acutance

Aliasing是天真降采样时可能发生的问题。

+2

我熟悉更为世俗的重采样技术(高斯,双三次,Lanczos),它们对升级是有效的,但在缩小时它们会释放太多感知上重要的信息。 我没有考虑过使用不清晰的蒙版,这可能会解决我的大部分问题,但仍然会出现一些问题,应根据我的设置保留应消失的线条,反之亦然。 – tzenes 2009-11-22 22:54:43

+1

在这种情况下,除了在另一个答案中已经提到的接缝雕刻之外,我只能看到“高分辨率图像的矢量化,然后以较低分辨率显示矢量化版本”方法。 – 2009-11-22 23:59:43

+0

矢量化算法肯定会对此有所帮助。也许我可以应用显着性度量(即Itti)来给矢量相对权重并使它们消失超过特定阈值。让我稍微玩一下,这可能是我正在寻找的解决方案。 – tzenes 2009-11-23 00:02:23

0

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

+0

虽然图像重定向更符合我想要做的事情,但实际应用程序不足。图像重定位依赖于识别重要特征并从“背景”中裁剪它们。正如我所看到的那样,正在拍摄说熊,重新取样的图像 – tzenes 2009-11-22 23:02:50

1

帕斯卡是正确的。取决于图像和你想要的东西。一些因素:

  • 保持尖锐边缘
  • 保留颜色
  • 算法速度

这是your method

有些人:

注意,有时重新取样下来可以让你比,说一个更清晰的结果,使用较低分辨率的相机,因为高分辨率图像中将存在无法被低分辨率设备检测到的边缘。注意:如果您按整数缩小(例如除以4或6),则可以优化许多算法(特别是最近邻)。

+0

与大多数人一样,您已经忘记了首先对图像进行低通滤波的重要步骤。只使用您列出的插值方法之一会导致锯齿,图像看起来很垃圾。 – Timmmm 2012-01-17 22:00:57

5

阅读:

http://www.dspguide.com/

OK,这是相当读取。但了解过滤器设计会很方便。通常,将图像从W1×H1缩放到W2×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

正如其他人所指出的,(你显然注意到)抽取图像引入混叠伪影。我无法确定您的重采样实现,但该技术具有有趣的细节,取决于您使用的窗口大小和其他实现细节。

0
+0

据我可以告诉这不会正确过滤图像,不应该用于下采样。 – Timmmm 2012-01-17 22:03:02

+0

鉴于它在Paint.NET中用于缩减采样,我会说它的工作很好。我也开始在我自己的软件中使用它,结果很好:http://braincrunch.tumblr.com/post/13459650973/maperitive-beta-subpixel-accuracy – 2012-01-18 05:25:21

+1

@Timmmm如果你有什么感觉是重要的是,在你自己的答案中正确解释它。没有提供任何细节,评论所有现有答案似乎并不具有建设性。这不是这个网站的工作原理。 – 2012-01-18 16:40:58