数字图像处理——图像插值

网上有很多介绍插值算法的,但感觉收获都不大



的编译器可能有点问题tex公式在预览模式公式可以显示,从主页浏览就显示不出来,都换了图片

介绍三种图像插值算法:最近邻内插,双线性内插,双三次内插(双立方内插)


1.数学原理

1.1线性插值

linear

线性插值是指插值函数为一次多项式的插值方式,在已知原函数上两点的情况下,用线性函数拟合原函数(应该还有很多用途)。假设拟合的线性函数为

将已知两点坐标带入,满足
上式的解为
则线性拟合函数为

对两点的坐标做一个线性变化
得到的表达式为

1.2三次插值(立方插值)

三次插值即用三阶多项式拟合原函数(也应该有其他用途)。假设三次拟合函数为

若我们可以得到原函数的一阶导数信息,那么只需要两点函数以及导数信息就可求解拟合函数。当不能得到一阶导数信息时,需要至少用四点坐标值求解拟合函数。
为了方便计算,在采样时可以选择等间隔采样,进行线性变化后,将横坐标变为
将已知四点坐标带入,得到
不妨将上式表示为
其中
这里还有另一种三次内插的方式,就是利用两点之间的斜率来替代导数信息,根据两点的函数以及一阶导数值(指上一句话计算出的斜率)列一组方程解出拟合的方程。

2.程序设计思路

2.1坐标预处理

2.1.1坐标映射

在matlab中,图像被定义为一个三维向量,若不考虑图像的通道数,可以将图像看作一个二维矩阵处理。matlab图像矩阵中坐标值映射到二维坐标系中,每一个像素块对应的是一个点,但实际的像素块是有一定尺寸的。


mapping

为了保证图像缩放时的相对位置不变,选取图像左上角顶点为原点,每个像素块中心坐标为像素的坐标,那么matlab中像素点坐标映射到坐标系中时,需要减去一个偏移量
在将缩放后的照片矩阵坐标映射回原照片矩阵坐标时,需要满足如下关系
根据映射回原图片矩阵的坐标进行插值操作。

2.1.2局部坐标系

在进行双线性插值和双三次插值时,需要用坐标值拟合函数,为了简化计算,总是选取作为局部坐标系原点,其中为待插值坐标。

2.2边框处理

在进行双线性内插放大和双立方内插缩放是,需要用到的像素块超出了图像的边界,即

当出现这些情况时,补充这些像素的灰度值为图像内最相邻像素块的灰度值。

2.3最近邻内插

进行坐标变换后,选取与内插点欧式距离最近的像素值进行插值。在程序中,使用将按照四舍五入的舍入方式选取最近邻的像素块。

2.4双线性内插

双线性内插是线性内插的二维实现,在x维度先进行线性插值,再由得到的值对y维度进行插值。在局部坐标系中,选取相邻的四个像素进行双线性内插。由在数学原理中的推导可知

将上式合并可得

bilinear

当然,也可以跳过分析的步骤,直接求解双线性拟合方程的系数。设方程为

将四点与相应的坐标对带入求解方程组,所得结果相同。

2.5双立方内插

双三次内插是三次插值的二维实现。选取与相邻的16个像素进行双三次内插,局部坐标系中x与y坐标范围均为。由数学原理中的推到可知

其中
将上述几式合并,可得(有点复杂,不过比矩阵求逆快多了,这个结果的推导我是用matlab的)
与双线性插值相似,双三次插值也可以直接求解拟合方程的系数。设拟合的方程为
将16各坐标对与灰度值带入方程,求解方程组可以得到的系数解为
将系数带入,可得到与之前相同的结果
根据上述公式对图像进行双三次内插。

3.实战结果

lena

对比三种插值方式得到的图像,可以看出双立方内插效果最好,双线性内插次之,最近邻内插最差。lena图像中对比帽子中的纹理可以得出最近邻帽子纹理有许多马塞克和断层,双线性的纹理更平滑,双立方中帽子的纹理比起双线性更锐化。放大图像中比较瞳孔与眼白之间的区域可以看出,最近邻的马赛克现象很严重,双线性也有一些马赛克现象,双立方的边缘很平滑,在不放大的情况下几乎看不出马赛克现象。
cameraman

cameraman缩小图像中对比机架和人耳部分,可以看出双立方内插效果最好,双线性内插次之,最近邻内插最差。但是对于人脸部分和相机机身部分之类细节比较多的地方,由于图像缩小的原因,像素块减少,三种内插方法都比较模糊。放大图像中比较机架与人身体的边缘可以看出,最近邻的锯齿现象很严重,双线性也有一些锯齿现象,双立方的边缘很平滑,在不放大的情况下几乎看不出锯齿现象。
building

building缩小图像中对比屋顶纹理和牌楼图案部分,可以看出双立方内插效果最好并保留了更多的边缘和细节的部分,双线性内插次之,最近邻内插最差。但是整体上来看,双线性内插与双立方内插区别并不大,原图的细节过多,这几种方法都没能很好保留原图的细节。放大图像中可以很明显的看出双立方插值的优势,线条的轮廓边缘更细致。

4.结论

4.1最近邻插值法

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

4.2双线性插值法

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

4.3双立方插值法

双立方插值计算量最大,运算速度慢。双立方插值用三阶函数逼近,不仅考虑到周围四个直接相邻像素点灰度值的影响,还考虑到它们灰度值变化率的影响,能够产生比双线性插值更为平滑的边缘,计算精度很高,处理后的图像细节损失最少,效果最佳。

你可能感兴趣的:(数字图像处理——图像插值)