感知图像降采样

5

这是我的问题:

我有一张图片,这张图片很大(高分辨率),需要变小(低分辨率)。

所以我采用了幼稚的方法(每隔一个像素点删除一个),结果看起来很差。

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

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

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

编辑2:可以安全地假设我对数字信号处理、卷积、小波变换等有一定的熟悉程度。


好的,你想要缩放什么类型的图像?线描图?照片?我主要处理视频图像,并且在视频上运行良好的缩放算法可能无法在尝试保留特定特征时(例如传统动画中的线条)发挥作用。 - Ori Pessach
暂时假设它是一只熊的图像(已从背景中删除),一旦调整大小,我希望它仍然看起来像一只熊。 - tzenes
1
手绘熊?熊的照片?Pedobear?你缩放的因素是多少?从你的描述(“杀掉每个像素”)听起来你只缩放了2倍,所以一个好的通用算法仍然可以很好地工作(除非你的图像是线条艺术,线条宽度为1像素,在这种情况下它看起来不会很好...)我很想知道那种矢量化方法对你有何作用。 - Ori Pessach
6个回答

5

阅读以下内容:

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
“双三次插值”通常被认为足够好,但没有完美的解决方案,这取决于人和被重采样图片的属性。
相关链接:
我甚至不知道锐度也被称为“acutance”。
当粗略地降采样时,"混叠"是可能出现的问题。

2
我熟悉更加平凡的重采样技术(高斯、双三次、Lanczos),它们对于放大是有效的,但在缩小时会丢失太多感知上重要的信息。我之前没有考虑使用锐化掩蔽,这可能会解决我的大部分问题,但仍然会存在一些问题,例如基于我的设置,本应消失的线条被保留了下来,反之亦然。 - tzenes
1
在这种情况下,除了另一个答案中提到的缝合雕刻之外,我只看到“将高分辨率图像矢量化,然后以较低分辨率显示矢量化版本”的方法。 - Pascal Cuoq
一个向量化算法肯定会有所帮助。也许我可以应用显著性度量(例如Itti)来给向量相对权重,并在达到一定阈值后使它们消失。让我试试这个,这可能是我正在寻找的解决方案。 - tzenes
我已经决定这是解决我的问题的正确方法,感谢您的回复。 - tzenes
1
不要只说“双三次插值”!读到这篇文章的人很可能会去做那90%软件所做的幼稚事情,即在降采样之前不对图像进行滤波。 - Timmmm
1
@Timmmm 感谢您留下评论,但您应该真正编写自己的答案。这样您就可以有充足的时间提供必要的细节。现在,阅读此答案和您的评论的人将不知道您的意思。 - Pascal Cuoq

1

Pascal是正确的。这要取决于图像和您想要什么。一些因素:

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

这是您的方法

其他一些方法:

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

顺便说一句:许多算法(特别是最近邻)在您按整数缩小比例(例如除以4或6)时可以进行优化。


1
和大多数人一样,您可能忘记了首先进行低通滤波这个至关重要的步骤。仅使用您列出的插值方法之一将导致混叠现象,图像看起来会很糟糕。 - Timmmm

1

0

虽然图像重定向更符合我的需求,但实际应用不足。图像重定向依赖于识别重要特征并从“背景”中裁剪它们。而我想做的是对例如熊的图像进行重新采样。 - tzenes

0

据我所知,这种方法不能很好地过滤图像,不应该用于降采样。 - Timmmm
考虑到它在Paint.NET中用于下采样,我认为它的工作做得很好。我也开始在自己的软件中使用它,结果非常好:http://braincrunch.tumblr.com/post/13459650973/maperitive-beta-subpixel-accuracy - Igor Brejc
2
@Timmmm 如果你有什么重要的话想说,请在自己的答案中详细解释。仅仅评论现有答案而从未给出细节似乎并不是很有建设性。这不是这个网站的工作方式。 - Pascal Cuoq
好的,我会给出一个适当的答案。 - Timmmm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接