引用:http://www.cnblogs.com/okaimee/archive/2010/08/18/1802585.html
摘 要:插值算法在图像缩放处理中是一项基本且重要的问题。插值算法有多种,最常用的有最近邻插值、双线性插值以及立方卷积插值。本文对三种插值算法进行简单分析并对它们的处理结果加以比较,最后总结了三种算法各自的优缺点。
关键词:图像处理;最近邻插值;双线性插值;立方卷积插值1 引言
图像几何变换包括平移、转置、镜像和缩放等。其中前三种操作变换中,输出图像的每一个像素点在输入图像中都有一个具体的像素点与之对应。但是,在缩放操作中,输出图像像素点坐标有可能对应于输入图像上几个像素点之间的位置,这个时候就需要通过灰度插值处理来计算出该输出点的灰度值[1]。图像插值是图像超分辨处理的重要环节,不同的插值算法有不同的精度,插值算法的好坏也直接影响着图像的失真程度。最常用的插值算法有三种:
最近邻插值、双线性插值、立方卷积插值,其中使用立方卷积插值达到的效果是最佳的。
2 几种插值算法原理分析
插值算法所应用的领域较多,对图像进行缩放处理是比较典型的应用,由于图像像素的灰度值是离散的, 因此一般的处理方法是对原来在整数点坐标上的像素值进行插值生成连续的曲面, 然后在插值曲面上重新采样以获得缩放图像像素的灰度值。缩放处理从输出图像出发,采用逆向映射方法,即在输出图像中找到与之对应的输入图像中的某个或某几个像素,采用这种方法能够保证输出图像中的每个像素都有一个确定值,否则,如果从输入图像出发来推算输出图像,输出图像的像素点可能出现无灰度值的情况。因为,对图像进行缩放处理时输出图像像素和输入图像之间可能不再存在着一一对应关系。下面分别对三种算法予以介绍。
2.1 最近邻插值算法最简单的插值法是最近邻插值法,也叫零阶插值法[2]。即选择离它所映射到的位置最近的输入像素的灰度值为插值结果。对二维图像,是取待测样点周围4 个相邻像素点中距离最近1 个相邻点的灰度值作为待测样点的像素值。若几何变换后输出图像上坐标为(x′,y′)的对应位置为(m,n),则示意图如下所示:
2.2 双线性插值算法双线性插值又叫一阶插值法[3],它要经过三次插值才能获得最终结果,是对最近邻插值法的一种改进,先对两水平方向进行一阶线性插值,然后再在垂直方向上进行一阶线性插值。
2.3 立方卷积插值算法立方卷积插值又叫双三次插值[2],是对双线性插值的改进,是一种较为复杂的插值方式,它不仅考虑到周围四个直接相邻像素点灰度值的影响,还考虑到它们灰度值变化率的影响。
此法利用待采样点附近16 个像素点的灰度值作三次插值进行计算,还用到如图3 所示的三次多项式 S( w)。
首先确定 16 个邻点坐标,设其排成的矩阵为[2]:
方卷积法就退化成双线性插值法。由此看来,立方卷积可看成两部分组成,其中( 1 - | m| )代表直接邻点的灰度值对待采样点的影响, 而l 则代表邻点间灰度值的变化率对待采样点的影响。与双线性插值法相比, 立方卷积法不仅考虑了直接邻点的灰度值对待采样点的影响,还考虑了邻点间灰度值变化率的影响, 因此后者所求得的待采样点灰度值更为精确。
3 三种插值算法处理结果及分析
通过采用三种插值算法对图像进行缩放处理操作,可以直观比较它们处理后的效果。以下是对128*128 像素的灰度图像进行放大2 倍处理得到256*256 尺寸的图像。
3.1 缩放操作效果图(a)128*128 源图 (b)最近邻插值放大图(c)双线性插值放大图 (d ) 立方卷积插值放大图图 4 效果图3.2 结果分析从三种插值算法处理图像后的对比结果可知:最近邻插值法效果最差,有明显的锯齿状,且细节部分很不清晰。双线性插值效果其次,锯齿难以察觉,但是图像的边缘有轻微的模糊现象。立方卷积插值则是三种插值法中效果最佳的,它能克服前两插值法的缺点,产生比较清晰的图像边缘,计算精度较高。
4 三种插值算法优缺点总结
最近邻插值法的优点是计算量很小,算法也简单,因此运算速度较快。但它仅使用离待测采样点最近的像素的灰度值作为该采样点的灰度值,而没考虑其他相邻像素点的影响,因而重新采样后灰度值有明显的不连续性,图像质量损失较大,会产生明显的马赛克和锯齿现象。
双线性插值法效果要好于最近邻插值,只是计算量稍大一些,算法复杂些,程序运行时间也稍长些,但缩放后图像质量高,基本克服了最近邻插值灰度值不连续的特点,因为它考虑了待测采样点周围四个直接邻点对该采样点的相关性影响。但是,此方法仅考虑待测样点周围四个直接邻点灰度值的影响, 而未考虑到各邻点间灰度值变化率的影响, 因此具有低通滤波器的性质, 从而导致缩放后图像的高频分量受到损失, 图像边缘在一定程度上变得较为模糊。用此方法缩放后的输出图像与输入图像相比, 仍然存在由于插值函数设计考虑不周而产生的图像质量受损与计算精度不高的问题。
立方卷积插值计算量最大,算法也是最为复杂的。在几何运算中,双线性内插法的平滑作用可能会使图像的细节产生退化,在进行放大处理时,这种影响更为明显。在其他应用中,双线性插值的斜率不连续性会产生不希望的结果。立方卷积插值不仅考虑到周围四个直接相邻像素点灰度值的影响,还考虑到它们灰度值变化率的影响。因此克服了前两种方法的不足之处,能够产生比双线性插值更为平滑的边缘,计算精度很高,处理后的图像像质损失最少,效果是最佳的。
总之,在进行图像缩放处理时,应根据实际情况对三种算法做出选择,既要考虑时间方面的可行性,又要对变换后图像质量进行考虑,这样才能达到较为理想的结果。
参考文献
[1]张宏林. 精通Visual C++数字图像处理典型算法及实现[M].北京:人民邮电出版社,2008.
[2]谢凤英,赵丹培. Visual C++数字图像处理[M]. 北京:清华大学出版社,2008.
[3]何斌,马天予,王运坚等. Visual C++数字图像处理[M].北京:人民邮电出版,2001