使用双线性插值进行图像放大的实现一、总体设计思路Step1:实现图像的打开、显示、保存,在打开图片之后将图片读入内存并获得了该图像除文件头以外的部分在缓存内存储的句柄,以及该图的调色板,调色板颜色种类数等等参数
Step2:在显示的基础上,利用代码根据放大比例重新开辟一个缓存
将原图的BITMAPINFOHEADER拷贝过来
并修改biHeight、biWidth、biSizeImage等参数
Step3:利用双线性插值算法,以原图信息为基础生成新的像素信息
原理:双线性插值维基百科,自由的百科全书跳转到:导航,搜索双线性插值,又称为双线性内插
在数学上,双线性插值是有两个变量的插值函数的线性插值扩展,其核心思想是在两个方向分别进行一次线性插值
红色的数据点与待插值得到的绿色点假如我们想得到未知函数在点的值,假设我们已知函数在,,,及四个点的值
首先在x方向进行线性插值,得到然后在y方向进行线性插值,得到这样就得到所要的结果,如果选择一个坐标系统使得的四个已知点坐标分别为(0,0)、(0,1)、(1,0)和(1,1),那么插值公式就可以化简为或者用矩阵运算表示为与这种插值方法名称不同的是,这种插值方法并不是线性的,它的形式是它是两个线性函数的乘积
另外,插值也可以表示为在这两种情况下,常数的数目都对应于给定的f的数据点数目
线性插值的结果与插值的顺序无关
首先进行y方向的插值,然后进行x方向的插值,所得到的结果是一样的
双线性插值的一个显然的三维空间延伸是三线性插值
二、具体实现方案及细节1、需要改变的项:①BITMAPINFOHEADER里的biHeight、biWidth、biSizeImage
②所有像素点信息2、具体方案的设计:①对双线性插值的理解:放大图像时,插值就是根据比例得到一个坐标(x,y)
该坐标可分为四种情况:(1)得到的x和y都是整数且落在原图中,则直