感知图像下采样

tze*_*nes 5 algorithm image downsampling

所以这是我的问题:

我有一个图像,图像很大(高分辨率),它需要很小(低得多的分辨率).

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

所以我尝试做一些更聪明的事情(使用傅里叶变换进行低通滤波并在傅立叶空间重新采样),结果稍好但仍然相当差.

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

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

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

Ori*_*ach 5

读这个:

http://www.dspguide.com/

好的,这是一个很好的阅读.但是理解滤波器设计会很方便.

通常,将图像从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

正如其他人所指出的那样(并且您显然已经注意到)对图像进行抽取会引入锯齿伪像.我无法确定您的重采样实现,但该技术有一些有趣的问题,具体取决于您使用的窗口大小和其他实现细节.


Pas*_*uoq 2

双三次插值通常被认为足够好,但是没有完美的解决方案,这取决于人和被重采样的图片的属性。

相关链接:

我什至不知道锐度也叫锐度

混叠是单纯下采样时可能出现的一个问题。

  • 我熟悉更普通的重采样技术(高斯、双三次、Lanczos),它们对于放大很有效,但在缩小时它们会丢失太多感知上重要的信息。我没有考虑过使用不清晰的蒙版,这可能会解决我的大部分问题,但仍然存在一些问题,根据我的设置,应该消失的线条会保留,反之亦然。 (2认同)