首页 > 代码库 > 图像处理之基础---图像缩放中的一些 灰度插值算法

图像处理之基础---图像缩放中的一些 灰度插值算法

 

在图像缩放,旋转等一些图像处理中,对图像进行插值是不可缺少的一个步骤,下面对一些常用的插值算法进行介绍:

1.最近邻插值

这种插值方法是最简单的一种插值算法,图像输出的像素值的大小直接设为与其最邻近的点的大小即可,这个算法最简单,不需要多说,可以表示为

f(x,y) = g(  round(x)  ,   round(y)  )

                            原图                                                                                                                 放大后的图

 

从图中可以看出,通过最近邻插值进行放大后,图像边缘出能够明显的看到大块的像素点,与我们希望得到的结果有很大的差异。

2.双线性插值

双线性插值又称为一阶插值,它是线性插值扩展到二维的一种应用,将周围四个点的像素值进行处理而作为该点的值。假设我们要得到点f(x,y)的像素值(x,y非整数,周围点的坐标为(0,0)(1,0)(0,1)(1,1)),那么双线性插值的公式如下:

f(x,0) =  f(0,0)+ x[  f(1,0)-  f(0,0)  ]

f(x,1) =  f(0,1)+ x[  f(1,1)-  f(0,1)  ]

f(x,y) =  f(x,0)+ y[  f(x,1)-  f(x,0)  ]

如图所示,同样对原图放大了四倍,但双线性插值的效果明显高于最近邻插值,但仍然有不足之处,经过放大的图像的细节变得模糊了起来,这是因为双线性插值对图像具有平滑的作用。

 

 

3.三次插值(高阶插值)

三次插值用了如下的三次多项式来逼近理论上的最佳插值函数sin(x)/x,

s(x) =  1 - 2|x|^2+|x|^3                         0<=|x|,<1

            4 - 8|x|+5|x|^2-|x|^3                  1<=|x|,<2

            0                                                 |x|>=2

 

带求像素(x,y)的灰度值由周围16个点的像素值计算得到,计算公式如下:

三次插值放大后的图像如下:

 

4.分形算法
  分形算法(Fractal Interpolation)是Altamira Group提出的一种算法,这种算法得到的图像跟其他算法相比更清晰、锐利(见图5)。

 现在有许多数码相机 厂商将插值算法用在了数码相机上,并将通过算法得到的分辨率值大肆宣传,固然他们的算法比双三次插值算法等算法先进很多,但是事实是图像的细节不能凭空造出来的。因为插值分辨率是数码相机通过自身的内置软件来增加图像的像素,从而达到增大分辨率的效果。

5.代码实现

http://blog.csdn.net/liyuan02/article/details/6765442

 

http://blog.csdn.net/liyuan02/article/details/6750410

http://blog.csdn.net/cui134/article/details/23684321

http://wenku.baidu.com/view/0628700016fc700abb68fc10.html

http://baike.baidu.com/view/2477544.htm

图像处理之基础---图像缩放中的一些 灰度插值算法