最近有一段时间做图像处理方面的东西,遇到了一些样张需要进行分辨率的增强或者说是放大图像,如何在图像不失真的情况下放大图像呢?总的来说就是插值,插值包括零阶插值、双线性插值(Bilinear Interpolation)、立方卷积法(Bicubic Interpolation)等方法。
我实验了双线性插值和双三次插值,双三次插值的计算量比较大,但是效果也相对较好。有一篇叫“数字图像最佳插值算法研究”的中文论文中详细介绍了这三种方法的理论,还做了简单的比较。
Bilinear Interpolation的公式很简单,就是一个线性插值,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),与(i,j)相邻的四个像素点乘以权值的加和即为插值后的灰度值。
Bicubic Interpolation相对比较复杂,公式如下:
f(x,y) = A*B*C,其中:
由此可以