gpt4 book ai didi

algorithm - 使用 Lanczos 缩放图像背后的想法是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:16:18 35 4
gpt4 key购买 nike

我对图像缩放算法很感兴趣,并实现了双线性和双三次方法。但是,我听说过 Lanczos 和其他更复杂的方法可以实现更高质量的图像缩放,我很好奇它们是如何工作的。

这里有人可以解释一下使用 Lanczos 缩放图像(放大和缩小)背后的基本思想以及为什么它会产生更高的质量吗?

我确实有傅里叶分析的背景,过去做过一些信号处理的工作,但与图像处理无关,所以不要害怕在你的回答中使用诸如“频率响应”之类的术语: )

编辑:我想我真正想知道的是使用卷积滤波器进行插值背后的概念和理论。

(注意:我已经阅读了关于 Lanczos 重采样的维基百科文章,但它对我来说还不够详细)

最佳答案

为图像处理选择特定的过滤器是一种魔法,因为判断结果的主要标准是主观的:在计算机图形学中,最终的问题几乎总是:“它看起来好吗?”。那里有很多好的过滤器,最好的过滤器之间的选择通常归结为判断力。

也就是说,我将继续进行一些理论......


由于您熟悉用于信号处理的傅立叶分析,因此您实际上不需要了解更多就可以将其应用于图像处理——所有直接感兴趣的滤波器都是“可分离的”,这基本上意味着您可以应用它们在 x 和 y 方向上独立。这将重采样 (2-D) 图像的问题简化为重采样 (1-D) 信号的问题。您的信号不是时间 (t) 的函数,而是坐标轴之一(例如 x)的函数;其他一切都完全相同。

最终,你需要使用过滤器的原因是为了避免混叠:如果你正在降低分辨率,你需要过滤掉新的、较低分辨率不支持的高频原始数据,或者它将被添加到不相关的频率。

所以。当您从原始信号中滤除不需要的频率时,您希望尽可能多地保留原始信号。此外,您不想扭曲您保存的信号。最后,您想尽可能完全消除不需要的频率。这意味着 - 理论上 - 一个好的滤波器应该是频率空间中的“盒子”函数:对于高于截止频率的频率具有零响应,对于低于截止频率的频率具有单位响应,以及介于两者之间的阶跃函数。而且,从理论上讲,这种响应是可以实现的:正如您可能知道的那样,直 sinc 滤波器将为您提供准确的结果。


这有两个问题。首先,直接 sinc 滤波器是无界的,不会很快下降;这意味着直接进行卷积会非常慢。与直接卷积相比,使用 FFT 并在频率空间中进行滤波更快...

但是,如果您真的使用直接 sinc 滤波器,问题是它实际上看起来不太好!正如相关问题所说,感知上存在振铃伪像,实际上没有完全令人满意的方法来处理“下冲”导致的负值。

最后,然后:解决该问题的一种方法是从 sinc 滤波器开始(因为它具有良好的理论特性),然后对其进行调整,直到您拥有可以解决其他问题的东西。具体来说,这将为您提供类似 Lanczos 过滤器的东西:

Lanczos filter:       L(x)     = sinc(pi x) sinc(pi x/a) box(|x|<a)
frequency response: F[L(x)](f) = box(|f|<1/2) * box(|f|<1/2a) * sinc(2 pi f a)

[note that "*" here is convolution, not multiplication]
[also, I am ignoring normalization completely...]
  • sinc(pi x) 决定了频率响应的整体形状(对于较大的 a,频率响应看起来越来越像盒函数)
  • box(|x|
  • sinc(pi x/a) 平滑了盒子的边缘并且(因此?等效地?)大大提高了对不需要的高频的抑制
  • 最后两个因素(“窗口”)也会减弱铃声;他们在感知伪像和“下冲”的实际发生率方面都有了巨大的改进——尽管没有完全消除它们

请注意,这并没有什么神奇之处。有多种可用的窗口,它们的工作原理也差不多。此外,对于 a=1 和 2,频率响应看起来不太像阶跃函数。不过,我希望这能回答您“为什么要 sinc”的问题,并让您对频率响应等有所了解。

关于algorithm - 使用 Lanczos 缩放图像背后的想法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1854146/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com