图像处理之常用插值算法

来源:互联网 发布:闲鱼淘宝介入支持卖家 编辑:程序博客网 时间:2024/05/16 07:25

二维图像插值算法实现

1805人阅读 评论(0)收藏举报
分类:
作者同类文章X

           在做数字图像处理时,经常会碰到小数象素坐标的取值问题,这时就需要依据邻近象素的值来对该坐标进行插值。比如:做地图投影转换,对目标图像的一个象素进行坐标变换到源图像上对应的点时,变换出来的对应的坐标是一个小数,再比如做图像的几何校正,也会碰到同样的问题。看够了各种数学原理,直接上具体的实现步骤。no公式no理论,以下是对常用的三种数字图像插值 方法进行介绍。

    1、最近邻插值法(Nearest Neighbour Interpolation)

    这是最简单的一种插值方法,不需要计算,在待求象素的四邻象素中,将距离待求象素最近邻的像素灰度赋给待求象素。设i+u, j+v(i, j为正整数, u, v为大于零小于1的小数,下同)为待求象素坐标,则待求象素灰度的值 f(i+u, j+v) 如下图所示:

     

    如果(i+u, j+v)落在A区,即u<0.5, v<0.5,则将左上角象素的灰度值赋给待求象素,同理,落在B区则赋予右上角的象素灰度值,落在C区则赋予左下角象素的灰度值,落在D区则赋予右下角象素的灰度值。

    特点:最近邻插值法虽然计算量较小,但可能会造成插值生成的图像灰度上的不连续,在灰度变化的地方可能出现明显的锯齿状。

    2、双线性插值法(Bilinear Interpolation)

    双线性插值法的基本思想是根据点(u,v)的4个邻点灰度值,经过三次线性插值计算求出,如下图所示:


    若用[S]表示不超过S的最大整数,则


    S1:由f(u,v)、f(u+1,v)做第一次水平方向的插值计算,求得


    S2:由f(u,v+1)、f(u+1,v+1)做第二次水平方向的插值计算,求得


    S3:由做第三次垂直方向的插值计算,求得


    本质:根据4个近邻像素点的灰度值做2个方向共3次线性插值

    特点:双线性内插法的计算比最邻近点法复杂,计算量较大,但没有灰度不连续的缺点,结果基本令人满意。它具有低通滤波性质,使高频分量受损,图像轮廓可能会有一点模糊。

    3、三次多项式插值法(Cubic Polynomial Interpolation)

    该方法利用三次多项式S(x)求逼近理论上最佳插值函数sin(x)/x, 其数学表达式为:



    待求像素(x, y)的灰度值由其周围16个灰度值加权内插得到


    对于二维医学图像插值需要考虑16个邻域点的灰度值的影响,如下图所示:


    算法过程如下:

    S1:定义两个中间变量


    S2:在四条水平线上分别运用四次多项式插值计算a,b,c,d四点处的灰度值


    S3:对a,b,c,d四点在垂直方向上再进行三次多项式插值,计算

    其中,函数c(x)的定义如下:



    特点:三次多项式插值法插值精度高,具有更EI平滑的边缘,图像损失质量低,,但是计算量较大。

    原创粉丝点击