插值算法的类型
一般插值算法有两类:自适应和非自适应插值。自适应插值会根据要插值的对象(锐利边缘vs柔和纹理)而改变,而非自适应插值对每个像素的处理方式都是一样的。
非自适应性插值的类型包括:最邻近 (nearest neighbor)、双线性(bilinear)、双三次(bicubic)、样条(spline)、sinc和lanczos插值等。
自适应算法包括授权软件中的一些专有算法,主要作用是尽力避免放大图像出现的伪影,有的自适应算法不适用于旋转或改变图像的形状。
最邻近插值
最邻近插值是所有插值算法中最基础、耗时最短的算法,它只考虑离插值点最近的一个像素。它的主要目的是让每个像素变得更大。
双线性插值
纵轴是像素值,深蓝色是已知像素,浅蓝色是插值生成的像素
图片来源:Cambridgeincolor
双线性插值计算的是插值点周围 2×2的像素值。它计算这四个像素的加权平均值,生成的效果比最邻近插值好。
上图的例子中,四个已知像素间的距离是一样的,所以插值的运算结果就是四个像素值和除以四。
双三次插值
双三次插值比双线性插值更进一步,计算插值点附近4×4的像素——也就是一共16个像素。这些像素与插值点之间的距离不同,距离更近的像素在计算时的权重更高。双三次插值生成比前两个插值算法锐度更大的画面,如果要同时考虑处理时长和输出质量,可以选择双三次插值。
高阶插值:样条(Spline)&Sinc
一些插值会把周围更多的像素纳入计算范围内,这样的算法对计算机的处理能力要求更高。样条(Spline)和Sinc属于这种算法,它们会尽可能保留画面细节。当需要旋转图像时,这样的插值算法用得最顺手。但是,这些高阶插值所用的处理时间较长,如果只是简单放大画面或者只转一圈,相比其他类型的插值,它的画质优势不是很明显。(T)