目录
引言
在传统的图像超分辨率(Super-Resolution, SR)任务中,我们常常需要将低分辨率图像转化为更高分辨率的图像,以满足后续图像处理或视觉需求。插值(Interpolation)方法是最简单且应用最为广泛的传统超分辨率方法之一。它通过对缺失或未知像素值进行估计,从而“填补”图像中新的采样点,以达到扩大图像分辨率的目的。
然而,这类方法在放大倍数较大时通常会带来模糊或伪影(artifact),并不能有效提升图像的细节质量。即便如此,插值方法作为超分辨率最基本的工具,在许多需要快速处理、大规模数据处理或者对图像质量要求不高的场合仍能发挥重要作用。
插值算法的基本概念
插值(Interpolation)的核心思想是:通过已有采样点的值(像素值),来预测未知采样点的值。如果我们将图像视为一个二维信号 I ( x , y ) I(x, y) I(x,y),其像素在整数网格上可表示为:
I ( i , j ) , i = 0 , 1 , 2 , … , M − 1 ; j = 0 , 1 , 2 , … , N − 1 I(i, j), \quad i = 0, 1, 2, \ldots, M-1; \; j = 0, 1, 2, \ldots, N-1 I(i,j),i=0,1,2,…,M−1;j=0,1,2,…,N−1
当我们想要“放大”图像时,需要在更密集的坐标网格上估计像素值。设放大后的图像大小为 M ′ × N ′ M' \times N' M′×N′,通常会有一个水平缩放因子 S x = M ′ M S_x = \frac{M'}{M} Sx=MM′ 和一个垂直缩放因子 S y = N ′ N S_y = \frac{N'}{N} Sy=NN′。对于新的坐标点 ( x ′ , y ′ ) (x', y') (x′,y′),插值算法会根据周围已知像素点的值,使用某种公式来计算 I ′ ( x ′ , y ′ ) I'(x', y') I′(x′,y′)。
从数学角度说,插值可视为以连续函数去近似离散采样点的过程,然后在更密集的采样位置对该连续函数做采样,从而得到新的像素值。
常见插值方法
下面介绍几种最常见的插值方法,它们的复杂度和效果各不相同。
邻近插值(Nearest Neighbor Interpolation)
- 特点:实现最简单,计算最少。
- 思路:直接将新的采样点的像素值,赋值为与其坐标距离最近的已知像素点的值。
- 数学表示:设放大的采样点坐标为 ( x ′ , y ′ ) (x', y') (x′,y′),而原始图像坐标为 ( x , y ) (x, y) (x,y)。邻近插值可简单表示为:
x = round ( x ′ S x ) , y = round ( y ′ S y ) , x = \text{round}\left(\frac{x'}{S_x}\right), \quad y = \text{round}\left(\frac{y'}{S_y}\right), x=round(