各种图像重采样方法之间的实际相关差异是什么?

信息处理 图像处理
2022-01-14 23:14:52

Mathematica 的ImageResize函数支持许多重采样方法。

不熟悉这个区域,除了最近的邻居、双线性、双二次和双三次(从名字上很明显),我迷路了。

您能否指出一些可以解释这些方法之间的基本(数学)差异的来源,并特别指出实际差异(例如,通过显示示例图像,其中方法的选择确实很重要并引入了明显的差异)?

我没有信号处理背景,所以我更喜欢“温和”简洁的介绍:-)


我将在这里复制ImageResize那些“懒惰”点击链接的方法列表:

  • “最近的”最近邻重采样

  • “双线性”双线性插值

  • “双二次”双二次样条插值

  • “双三次”双三次样条插值

  • “高斯”高斯重采样

  • "Lanczos" Lanczos 多元插值法

  • “余弦”余弦插值

  • “汉明”升余弦汉明插值

  • "Hann" 升余弦 Hann 插值

  • “布莱克曼”三项广义升余弦

  • “Bartlett”三角窗插值

  • “Connes”平方韦尔奇插值

  • “韦尔奇”韦尔奇二次插值

  • “Parzen”分段三次插值

  • “Kaiser”零阶修正贝塞尔插值

1个回答

给定一张图片I(m,n)m,n整数,该图像在任意点的插值m,n可以写成

I~(m,n)=m=mw+1m+w n=nw+1n+wI(m,n) f(mm,nn)

结果I~仍然只是真实的底层连续图像的近似值I(x,y)不同的插值函数所做的只是在不同的约束和目标下最小化近似误差。

在信号处理中,您需要插值函数f(m,n)成为理想的低通滤波器。但是,它的频率响应需要无限支持,并且仅对带限信号有用。大多数图像没有带宽限制,并且在图像处理中还有其他因素需要考虑(例如眼睛如何解释图像。数学上最优的可能在视觉上并不吸引人)。插值函数的选择,就像窗口函数一样,很大程度上取决于手头的具体问题。我没有听说过 Connes、Welch 和 Parzen(也许它们是特定领域的),但其他的应该是上面 Wikipedia 链接中给出的一维窗口的数学函数的二维等价物。

就像时间信号的窗口函数一样,通过查看图像内插核的频率响应,很容易了解图像内插核的作用。我对窗口函数的回答

描述窗函数的两个主要因素是:

  1. 主瓣宽度(即,在哪个频率区间,功率是最大响应的一半)
  2. 旁瓣的衰减(即,旁瓣离主瓣有多远)。这告诉您窗口中的频谱泄漏。

这几乎适用于插值内核。选择基本上是在频率过滤(旁瓣衰减)、空间定位(主瓣宽度)和减少其他影响(例如振铃(吉布斯效应)、混叠、模糊等)之间进行权衡。例如,具有振荡的内核因为 sinc 内核和 Lanczos4 内核会在图像中引入“振铃”,而高斯重采样不会引入振铃。

这是 Mathematica 中的一个简化示例,让您可以看到不同插值函数的效果:

true = ExampleData[{"TestImage", "Lena"}];
resampling = {"Nearest", "Bilinear", "Biquadratic", "Bicubic", 
   "Gaussian", "Lanczos", "Cosine", "Hamming", "Hann", "Blackman", 
   "Bartlett", "Connes", "Welch", "Parzen", "Kaiser"};
small = ImageResize[true, Scaled[1/4]];

在这里,true代表我认为是“精确”图像的离散等效的图像I(x,y), 并small表示较小比例的图像I(m,n)(我们不知道它是如何获得的)。我们将插值I(m,n)4x 给I~(m,n)与原始大小相同。下面,我展示了这种插值的结果以及与真实图像的比较:

在此处输入图像描述 在此处输入图像描述

您可以亲自看到不同的插值函数具有不同的效果。Nearest 和其他一些具有非常粗糙的特征,您基本上可以看到锯齿状线条(查看完整尺寸的图像,而不是网格显示)。Bicubic、biquadratic 和 Parzen 克服了这一点,但引入了很多模糊。在所有内核中,Lanczos 似乎(在视觉上)是最吸引人的,也是最出色的内核。

当我有时间时,我将尝试扩展这个答案并提供更直观的示例来展示差异。您可能想阅读我在网上找到的这篇非常简单且内容丰富的文章(PDF 警告)。