关于图像重采样插值算法

重新取样将在您缩放图片时更改图像数据的数量。当缩减像素取样(减少像素的数量)时,将从图像中删除一些信息。当向上重新取样(增加像素的数量或增加像素取样)时,将添加新的像素。可以指定插值算法来确定如何添加或删除像素。

 

1. 最近相邻插值算法/最近邻法
最近相邻插值算法(Nearest Neighbour Interpolation)一种速度快但精度低的图像像素模拟方法。该法针对于二维图像 “取待采样点周围4个相邻像素点中距离最近的 1个邻点的灰度值作为该点的灰度值”如图(1)。该方法用于包含未消除锯齿边缘的插图,以保留硬边缘并生成较小的文件。但是,缩放图片时,缺少的像素通过直接使用与之最接近的原有像素的颜色生成,也就是说照搬旁边的像素,这样做的结果是产生了明显可见的锯齿。

最近相邻插值算法是最简单的一种插值算法,这种方法是当图片放大时,缺少的像素通过直接使用与之最接近的原有像素的颜色生成,也就是说照搬旁边的像素。当图片扩大时,要增加X点处的像素,由于X点与AB这两个有效像素中的B点最接近,因此X点会直接照搬B点的像素,从而使到X点生成的效果与B点一样。虽然这种算法简单,因此处理的速度很快,但结果通常会产生明显可见的锯齿,效果往往不佳。

最近相邻插值算法的优点是计算量很小,算法也简单,因此运算速度较快。但它仅使用离待测采样点最近的像素的灰度值作为该采样点的灰度值,而没考虑其他相邻像素点的影响,因而重新采样后灰度值有明显的不连续性,图像质量损失较大,会产生明显的马赛克和锯齿现象。

 

图(1)  图像缩放中的插值和重采样

2. 两次线性插值算法 /双线性内插法
两次线性插值算法(Bilinear Interpolation)是一种通过平均周围像素颜色值来添加像素的方法。该方法可生成中等品质的图像。

两次线性插值算法输出的图像的每个像素都是原图中四个像素(2×2)运算的结果,由于它是从原图四个像素中运算的,因此这种算法很大程度上消除了锯齿现象,而且效果也比较好。

两次线性插值算法是一种较好的材质影像插补的处理方式,会先找出最接近像素的四个图素,然后在它们之间作差补效果,最后产生的结果才会被贴到像素的位置上,这样不会看到马赛克现象。这种处理方式较适用于有一定景深的静态影像,不过无法提供最佳品质。

两次线性插值算法效果要好于最近相邻插值算法,只是计算量稍大一些,算法复杂些,程序运行时间也稍长些,但缩放后图像质量高,基本克服了最近相邻插值算法灰度值不连续的特点,因为它考虑了待测采样点周围四个直接邻点对该采样点的相关性影响。但是,此方法仅考虑待测样点周围四个直接邻点灰度值的影响, 而未考虑到各邻点间灰度值变化率的影响, 因此具有低通滤波器的性质, 从而导致缩放后图像的高频分量受到损失, 图像边缘在一定程度上变得较为模糊

用此方法缩放后的图像与原图像相比,仍然存在由于计算模型考虑不周而产生的图像质量退化与精度降低的问题。

 

这种方法是“利用周围4个邻点的灰度值在两个方向上作线性内插以得到待采样点的灰度值”。即根据待采样点与相邻点的距离确定相应的权值计算出待采样点的灰度值。双线性内插的示意图如图2所示,其中X 、Y坐标表示像素的位置,f(*,*)表示像素的灰度值。其数学表达式为:

f(i+u,j+v)=(1-u)(1-v)f(i,j)+(1-u)vf(i,j+1)+u(1-v)f(i+1,j)+uvf(i+1,j+1)    (2)

取(x,y)点周围的4邻点,在y方向(或x方向)内插两次,再在x方向(或y方向)内插一次,得到(x,y)点的值f(x,y)。
设4个邻点分别为(i,j),(i,j+1),(i+1,j),(i+1,j+1),i代表左上角为原点的行数,j代表列数。设α=x-i,β=y-j,过(x,y)作直线与x轴平行,与4邻点组成的边相交于点(i,y)和点(i+1,y)。先在y方向内插,计算交点的值f(i,y)和f(i+1,y)。f(i,y)即由f(i,j+1)与f(i,j)内插计算而来。
 
 

3. 两次立方插值算法 /立方卷积法
两次立方插值算法(Bicubic Interpolation)是两次线性插值算法的改进算法,“不仅考虑到四个直接邻点灰度值的影响,还考虑到各邻点间灰度值变化率的影响”,利用了待采样点周围更大邻域内像素的灰度值作三次插值。此法利用了如图3所示的三次多项式S(w)。它输出图像的每个像素都是原图16个像素(4×4)运算的结果。该算法效果较好,运算速度也不慢。

两次立方插值算法计算量最大,算法也是最为复杂的。在几何运算中,两次线性插值算法的平滑作用可能会使图像的细节产生退化,在进行放大处理时,这种影响更为明显。在其他应用中,两次线性插值算法的斜率不连续性会产生不希望的结果。两次立方插值算法不仅考虑到周围四个直接相邻像素点灰度值的影响,还考虑到它们灰度值变化率的影响。因此克服了前两种方法的不足之处,能够产生比两次线性插值更为平滑的边缘,计算精度很高,处理后的图像像质损失最少,效果是最佳的。

S(w)的数学表达式为:

式中,w为自变量,S(w)为三次多项式的值。

如图4所示的是三次多项式进行内插,计算时用周围的16个邻点的灰度值按下式进行内插,则该像素的灰度值f(x,y)为

f(x,y)=A·B·C       (3)

若令k=0,则式(3)的立方卷积就退化为双线性内插法。因此,可以把用三次多项式插值的立方卷积法看成由两部分组成,其中(1—|u|)代表直接邻点间灰度值的变化率对待采样点的影响,而K则代表邻点间灰度值的变化率对待采样点的影响。与双线性内插法相比,立方卷积法不仅考虑了直接邻点的灰度值还考虑了零点见灰度值变化率的影响,因此后者所求得的待采样点灰度值更接近原(采样)值。

此方法用进一步增大计算量来换取待采样点精度的进一步提高,其效果是三种方法里最好的,但也是三种方法中计算量最大的。

三种算法比较:

 

 

 

 

 

posted @ 2014-03-12 19:40 jianguo_wang 阅读(...) 评论(...) 编辑 收藏