文章目录
插值与图像插值
- 插值:利用已知数据去预测位置数据。
- 图像插值:给定一个像素点,根据它周围像素点的信息来对该像素点的值进行预测。
图像插值问题类似于拟合问题,二者均为函数逼近或数值逼近的重要组成部分。但是两者的在于:对于给定的函数,插值:要求离散点“坐落在”函数曲线上从而满足约束;而 拟合:则希望离散点尽可能地 “逼近” 函数曲线。
图像插值示例(三倍放大):
对于原图像的坐标点 (红色实心点),其在新图像上都能确定一一对应的坐标点 (红色实心点)。而对于新图像中因放大而的多出坐标点 (蓝色圈叉),则在原图像中找不到对应点了。
插值技术就是通过某些规则/规范/约束(特定的拟合函数),获取这些多出坐标点的像素值。
一维示例:
- ( x i − 1 , f ( x i − 1 ) ) 、 ( x i , f ( x i ) ) 、 ( x i + 1 , f ( x i + 1 ) ) (x_{i-1}, f(x_{i-1}))、(x_i,f(x_{i}))、(x_{i+1},f(x_{i+1})) (xi−1,f(xi−1))、(xi,f(xi))、(xi+1,f(xi+1)):已知的三个离散点坐标
- f ( x ) f(x) f(x):插值算法的约束条件。
如果想得到更密集、更精细的点,则可以给定坐标 x 1 x^1 x1 ,根据插值约束 f ( x ) f(x) f(x)得到对应的函数值 f ( x 1 ) f(x^1) f(x1)。
总而言之,不同的插值方式,就是通过给定不同的插值函数约束,来得到不同的插值结果。
不同的插值方法
最近邻域插值(Nearest Neighbor Interpolation)
-
一维示意图
坐标轴上各点 x i − 1 , x i , x i + 1 . . . x_{i-1},x_{i},x_{i+1} ... xi−1,xi,xi+1...两两对半等分间隔 (红色虚线划分),从而非边界的各坐标点都有一个等宽的邻域,并根据每个坐标点的值构成一个类似分段函数的函数约束,从而使各插值坐标点的值等同于所在邻域原坐标点的值。 -
二维示意图
( x 0 , y 0 ) 、 ( x 0 , y 1 ) 、 ( x 1 , y 0 ) 、 ( x 1 , y 1 ) (x_0, y_0)、(x_0, y_1)、(x_1, y_0)、(x_1, y_1) (x0,y0)、(x0,y1)、(x1,y0)、(x1,y1)都是原图像上的坐标点,灰度值分别对应为 Q11、Q12、Q21、Q22。而灰度值未知的插值点 (x, y),根据最近邻插值方法的约束,其与坐标点 (x0, y0) 位置最接近 (即位于 (x0, y0) 的邻域内),故插值点 (x, y) 的灰度值 P = Q11。 -
简而言之
最近邻于插值:根据周围至少一个已知像素点,未知像素点x距离哪个已知像素点最近,他的像素值就是离已知像素点的像素值。
线性插值 (Linear Interpolation)
-
一维示意图
坐标轴上各点 x i − 1 , x i , x i + 1 . . . x_{i-1},x_i,x_{i+1} ... xi−1,xi,xi+1...的值“两两直接相连”为线段,从而构成了一条连续的约束函数。而插值坐标点例如 x,根据约束函数其值应为 f(x)。 -
二维示意图
( x 0 , y 0 ) 、 ( x 1 , y 1 ) (x_0, y_0)、(x_1, y_1) (x0,y0)、(x1,y1)都是原图像上的坐标点,灰度值分别对应为 y0 和 y1。而灰度值未知的插值点 x,在 ( x 0 , y 0 ) 、 ( x 1 , y 1 ) (x_0, y_0)、(x_1, y_1) (x0,y0