缩放后的图像在k = 0,k =1×S,…,k = M×S处的点,可以由原图的0,1,2…,M点唯一确定。对于中间的点(如0<k<1×S的点),则需要由以上函数图像中相应的函数波形的延伸叠加而成,即使用式(5)的加权运算。由此可以看到图像的缩放,类似于先构造一个缩放后目标大小的点阵,将原图像的每个像素按比例计算后填入点阵,不是原图缩放倍数的点则需要使用插值的方法进行运算来生成。论文参考网。
3.1 最近领域插值法(Nearest Neighbor Interpolation)
由以上节分析,对于图像缩放最主要的是选取插值函数h(x),由公式(7)可知,当x=0即k/S– m=0时函数的像素值可由k = m × S 来确定,由于m为大于0的整数,当S不为1(只要做缩放S不为1)时,离散的k点不能全部由该式确定,比如上节中的k = 3点。当我们计算不能由k =m × S按整数运算来获得的点(即需要插值运算的点)时,需要使用式(5)的加权和来获得。
参照式(7),我们知道对所有的m值中能使|k/S – m|的值最小的点,是在SINC函数曲线中最接近0的x值,因此这样的m点,也是所有点中权值是最大的点。我们取这样的点来近似代替要进行插值运算的点k,所有运算中|k/S – m|最小也就是|k – m ×S|最小,而m × S是在缩放后图上确定的点,|k –m × S|最小的意思就是m × S到所要求的k点距离最小,这时我们使用m × S所确定的点来代替k点的值,这种方法称为最近邻域插值法。
3.2 二次线性插值法(Bilinear Interpolation)
二次线性插值是对最近邻域插值的一种改进,它不只是取|k – m × S|最小的点,而是取四个方向上|k– m × S|最小的四个点,同时依据这四个点的|k – m × S|值的大小确定式(5)中的权重来进行加权计算获得。相比最近邻域算法,这种方法考虑了更多的原始像素,使缩放精度提高。但是由于只取与它相邻的四个方向的点进行加权运算,运算出来的点相当于周围四个点的一个平均,图像会变得比较模糊。但缩放的质量比最近邻域插值法有明显的改善。
3.3 双三次插值法(Bicubic Interpolation)
双三次插值又称立方卷积插值,是一种更加复杂的插值方式, 即"不仅考虑到四个直接邻点灰度值的影响, 还考虑到各邻点间灰度值变化率的影响", 利用了待采样点周围更大邻域内像素的灰度值作三次插值。论文参考网。
3.4 实验结果及分析
本文采用一些图像并进行缩放算法的实现,算法实现在Windows XP系统下,CPU为AMD3200+,内存为512MB,通过VC作为开发平台,以寻找一种适合资讯系统使用的图像缩放算法,该算法的选取标准:既要提高图像在缩放后的质量,同时也不影响资讯电视系统的执行效率。
3.4.1 图像放大结果(如:表1)
表1 图像放大实验数据(如:图3—6)
|
原始大小 |
图像放大 |
清晰度 |
是否边缘有锯齿 |
生成图像效率 |
最近领域插值法 |
150*42 |
放大2倍 |
清晰 |
锯齿明显 |
平均用时1.4ms |
二次线性插值法 |
150*42 |
放大2倍 |
模糊 |
无锯齿 |
平均用时4ms |
双三次插值法 |
150*42 |
放大2倍 |
较清晰 |
无锯齿 |
平均用时4.6ms |
3.4.2图像放大实验数据

图3 原始图像

图4 最近领域插值法放大图像

图5 二次线性插值法放大图像

图6 双三次插值法放大图像
3.4.3 图像缩小结果(如:表2)
表2 图像缩小实验数据(如:图7—10)
|
原始大小 |
图像缩小 |
清晰度 |
是否边缘有锯齿 |
生成图像效率 |
最近领域插值法 |
357*202 |
缩小1/2 |
清晰 2/3 首页 上一页 1 2 3 下一页 尾页 |
|