首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Lanczos缩放图像背后的想法是什么?

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

Stack Overflow用户
提问于 2009-12-06 10:27:07
回答 1查看 25.7K关注 0票数 33

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

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

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

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-12-07 16:34:58

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

也就是说,我将继续提出一些理论。

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

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

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

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

然而,如果你真的使用一个直接的正弦滤波器,问题是它看起来并不是很好!正如相关问题所说,从感知上讲,存在响亮的伪影,实际上,没有完全令人满意的方法来处理由“未达目标”导致的负值。

最后,那么:处理这个问题的一种方法是从sinc滤波器开始(因为它有很好的理论特性),然后调整它,直到你有了可以解决其他问题的东西。具体地说,这将得到类似于Lanczos过滤器的东西:

代码语言:javascript
复制
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,频率响应看起来越来越像一个盒子函数)

  • the box(|x|

  • sinc(pi x/a)来平滑盒子的边缘,(因此?等同于?)最后两个因素(“窗口”)也降低了振铃;它们在感知伪影和实际的“下冲”发生率方面都有了很大的改善--尽管没有完全消除它们

请注意,这一切都没有什么神奇之处。有各种各样的窗口可用,它们的工作方式也差不多。此外,对于a=1和2,频率响应看起来不太像阶跃函数。然而,我希望这能回答你“为什么是sinc”的问题,并给你一些关于频率响应等的概念。

票数 43
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1854146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档