图像的插值算法
图像的插值算法
插值的定义:
设函数y=f(x)在区间[a,b]上有定义,且已知在点a≤x0<x1<…<xn≤b上的值为y0,y1,…,yn,若存在简单函数P(x)使得
P(xi)=yi (i=0,1,…,n)
成立,就称P(x)为f(x)的插值函数, x0,x1,…,xn称为插值节点,包含插值节点的区间[a,b]称为插值区间,求插值函数P(x)的方法就是插值法。
有时,在图像的几何变换中,比如缩放和旋转,输出图像上的像素点坐标有可能对应于原图像上几个像素点之间的位置,这个时候就需要通过灰度插值处理来计算出该输出点的灰度值。
常用的图像插值算法可以分为最近邻插值,双线性插值和立方卷积插值。
1.最近邻插值
最简单的插值方法是最近邻插值,即选择离它所映射到的位置最近的输入像素的灰度值为插值结果。若几何变换后输出图像上坐标为(x,y)的像素点在原图像上的对应值坐标为
(u,v),则近邻插值公式为:
[······]表示求整
与其它两种插值算法相比,最近插值具有简单快速的特点,但是对于邻近像素点的灰度值有较改变,细微结构是粗糙的。
2.双线性插值
设g(x',y')上像素坐标为(x',y')的点对应于原图像上的坐标为(u,v),如下图所示
将f(x,y)周围的四点存入二维数组a[2][2],并令u=0,v=1,简化后可以得到双线性插值公式:
1:x方向上的线性插值
R1 = (1-x)*array[0][0] + x*array[1][0];
R2 = (1-x)*array[0][1] + x*array[1][1];
2:y方向上的线性插值
双线性插值具有低通滤波器特质,使高频信号受损,图像轮廓模糊,但同时边缘处的过度也比较自然。缺点是运算速度比最近邻插值要慢。
3.三次卷积插值(又称立方卷积插值)
三次卷积法能够克服以上两种算法的不足,计算精度高,但计算亮大,他考虑一个浮点坐标(i+u,j+v)周围的16个邻点,目的像素值f(i+u,j+v)可由如下插值公式得到:
S(x)是对 Sin(x*Pi)/x 的逼近(Pi是圆周率——π)
最邻近插值(近邻取样法)、双线性内插值、三次卷积法 等插值算法对于旋转变换、错切变换、一般线性变换 和 非线性变换 都适用。