使用双线性插值进行图像放大的实现

使用双线性插值进行图像放大的实现

一、总体设计思路

Step 1:实现图像的打开、显示、保存,在打开图片之后将图片读入内存并获得了该图像除文件头以外的部分在缓存内存储的句柄,以及该图的调色板,调色板颜色种类数等等参数。 Step 2:在显示的基础上,利用代码根据放大比例重新开辟一个缓存。将原图的

BITMAPINFOHEADER 拷贝过来。并修改biHeight 、biWidth 、biSizeImage 等参数。 Step 3:利用双线性插值算法,以原图信息为基础生成新的像素信息。

原理:

双线性插值

维基百科,自由的百科全书 跳转到: 导航, 搜索

双线性插值,又称为双线性内插。在数学上,双线性插值是有两个变量的插值函数的线性插值扩展,其核心思想是在两个方向分别进行一次线性插值。

红色的数据点与待插值得到的绿色点 假如我们想得到未知函数

在点

,

的值,假设我们已知函数

, 及

四个点的值。

,

首先在 x 方向进行线性插值,得到

然后在 y 方向进行线性插值,得到

这样就得到所要的结果

,

如果选择一个坐标系统使得 的四个已知点坐标分别为 (0, 0)、(0, 1)、(1, 0) 和 (1, 1),那么插值公式就可以化简为

或者用矩阵运算表示为

与这种插值方法名称不同的是,这种插值方法并不是线性的,它的形式是

它是两个线性函数的乘积。另外,插值也可以表示为

在这两种情况下,常数的数目都对应于给定的 f 的数据点数目。

线性插值的结果与插值的顺序无关。首先进行 y 方向的插值,然后进行 x 方向的插值,所得到的结果是一样的。

双线性插值的一个显然的三维空间延伸是三线性插值。

二、具体实现方案及细节

1、需要改变的项:

①BITMAPINFOHEADER 里的biHeight 、biWidth 、biSizeImage 。 ②所有像素点信息 2、具体方案的设计:

①对双线性插值的理解:

放大图像时,插值就是根据比例得到一个坐标(x,y)。该坐标可分为四种情况: (1)得到的x 和y 都是整数且落在原图中,则直接取出该像素点的颜色信息即可。 (2)得到的x 为整数,y 为小数。这个时候则根据插值法的计算方式。对y 取y1=(int)y;y2=(int)y+1;x取该整数即可。若得到的点都在原图上,则y 方向进行插值得到该像素点的颜色信息。

(3)得到的x 为小数,y 为整数时。可仿照(2)进行计算。

(4)得到的想x,y 都为小数。x1=(int)x;x2=(int)x+1;y1=(int)y;y2=(int)y+1;若得到的点都在原图上,则按照双线性插值的计算方法得到该像素点的颜色信息。

②对于求出的点中不在原图上的情况,我采取了放弃该像素点数值计算这样一种处理办法。

③遍历所有像素点以及进行插值时有两种遍历方案,即按照内存行列还是按照图像实际行列进行计算和插值。在处理灰度图时,我采取了前者。也就是按照内存的行列作为计算像

素点颜色信息的顺序和取插值的的位置依据。处理真彩色图片时,我采取了后者。

④放大倍数的实现,采取了将放大倍数开方得到边的比例的方法。

⑤灰度图像插值时取其调色板的索引值即可,真彩时对RGB 三值分别进行计算。

三、程序图像放大效果一览 灰度图像:

真彩图:

四、总结

这次图像放大的实现,虽然最终基本实现。但是花了不少的时间。 经过思考觉得主要原因在于编码规范性有待加强。测试也应该更加有条理,和考虑更加周到。

总之,通过实现这个功能。我学到的不仅仅是双线性插值算法的使用,更重要的是测试方案的设计和实施。

非常感谢许老师给予的耐心指导。

使用双线性插值进行图像放大的实现

一、总体设计思路

Step 1:实现图像的打开、显示、保存,在打开图片之后将图片读入内存并获得了该图像除文件头以外的部分在缓存内存储的句柄,以及该图的调色板,调色板颜色种类数等等参数。 Step 2:在显示的基础上,利用代码根据放大比例重新开辟一个缓存。将原图的

BITMAPINFOHEADER 拷贝过来。并修改biHeight 、biWidth 、biSizeImage 等参数。 Step 3:利用双线性插值算法,以原图信息为基础生成新的像素信息。

原理:

双线性插值

维基百科,自由的百科全书 跳转到: 导航, 搜索

双线性插值,又称为双线性内插。在数学上,双线性插值是有两个变量的插值函数的线性插值扩展,其核心思想是在两个方向分别进行一次线性插值。

红色的数据点与待插值得到的绿色点 假如我们想得到未知函数

在点

,

的值,假设我们已知函数

, 及

四个点的值。

,

首先在 x 方向进行线性插值,得到

然后在 y 方向进行线性插值,得到

这样就得到所要的结果

,

如果选择一个坐标系统使得 的四个已知点坐标分别为 (0, 0)、(0, 1)、(1, 0) 和 (1, 1),那么插值公式就可以化简为

或者用矩阵运算表示为

与这种插值方法名称不同的是,这种插值方法并不是线性的,它的形式是

它是两个线性函数的乘积。另外,插值也可以表示为

在这两种情况下,常数的数目都对应于给定的 f 的数据点数目。

线性插值的结果与插值的顺序无关。首先进行 y 方向的插值,然后进行 x 方向的插值,所得到的结果是一样的。

双线性插值的一个显然的三维空间延伸是三线性插值。

二、具体实现方案及细节

1、需要改变的项:

①BITMAPINFOHEADER 里的biHeight 、biWidth 、biSizeImage 。 ②所有像素点信息 2、具体方案的设计:

①对双线性插值的理解:

放大图像时,插值就是根据比例得到一个坐标(x,y)。该坐标可分为四种情况: (1)得到的x 和y 都是整数且落在原图中,则直接取出该像素点的颜色信息即可。 (2)得到的x 为整数,y 为小数。这个时候则根据插值法的计算方式。对y 取y1=(int)y;y2=(int)y+1;x取该整数即可。若得到的点都在原图上,则y 方向进行插值得到该像素点的颜色信息。

(3)得到的x 为小数,y 为整数时。可仿照(2)进行计算。

(4)得到的想x,y 都为小数。x1=(int)x;x2=(int)x+1;y1=(int)y;y2=(int)y+1;若得到的点都在原图上,则按照双线性插值的计算方法得到该像素点的颜色信息。

②对于求出的点中不在原图上的情况,我采取了放弃该像素点数值计算这样一种处理办法。

③遍历所有像素点以及进行插值时有两种遍历方案,即按照内存行列还是按照图像实际行列进行计算和插值。在处理灰度图时,我采取了前者。也就是按照内存的行列作为计算像

素点颜色信息的顺序和取插值的的位置依据。处理真彩色图片时,我采取了后者。

④放大倍数的实现,采取了将放大倍数开方得到边的比例的方法。

⑤灰度图像插值时取其调色板的索引值即可,真彩时对RGB 三值分别进行计算。

三、程序图像放大效果一览 灰度图像:

真彩图:

四、总结

这次图像放大的实现,虽然最终基本实现。但是花了不少的时间。 经过思考觉得主要原因在于编码规范性有待加强。测试也应该更加有条理,和考虑更加周到。

总之,通过实现这个功能。我学到的不仅仅是双线性插值算法的使用,更重要的是测试方案的设计和实施。

非常感谢许老师给予的耐心指导。


相关内容

  • 通信工程应用技术 图像处理
  • 课程设计任务书 学生姓名: 专业班级: 通信1102 指导教师: 许建霞 工作单位: 武汉理工大学 题 目: 图像处理 初始条件: 要求学生已完成通信专业各主干课程的学习,通过本课设进一步掌握专业课程群的综合原理. 操作技能,形成基本的解决实践问题的知识体系,提高学生对现代通信系统的全面认识. 要求 ...

  • 图像超分辨率重建--图像处理课程设计
  • 目录 1 课程设计目的............................................................................................................ 1 2图像处理系统设计内容及要求.............. ...

  • 数字图像处理 作业1
  • 报告标题: 报告编号: 课程编号: 学生姓名: 截止日期: 上交日期: 数字图像处理 01 摘要 (1)编写函数计算灰度图像的均方误差(MSE ).信噪比(SNR ).峰值信噪比(PSNR ).平均绝对误差(MAE ):(2)编写函数对灰度图像经行降采样,直接消除像素以及消除像素前进行简单平滑滤波: ...

  • 数字图像处理课程设计 基于Matlab的数字图像处理
  • 数字图像处理课程设计 基于Matlab 的数字图像处理 --图像识别 院系 信息技术学院 专业班级 软件2班 学号 XXXXXXXXXX 姓名 XXXX 指导教师 XXXXXX 课程设计时间 2014年12月 目录 摘要 . ..................................... ...

  • 谁能驾驭马赛克?微软AI打码手艺 VS 谷歌AI解码绝活儿
  • 雷锋网按:上个月底,微软研究院推出一套基于AI 技术的视频人脸模糊解决方案,通俗讲就是为人脸自动打码.而在今日,谷歌发布了模糊图片转高清图片的解决方案,说白了就是去除马赛克的技术. 你说谷歌,人家微软刚整出一套自动打码手艺,你就来个自动解码绝活,还能不能一起愉快的玩耍. 不少人有个疑问,那么谷歌是否 ...

  • 设计性实验 图像信号的抽取与插值
  • 实验报告 实验7 设计性实验 图像信号的抽取与插值 专业 班级 电子10-1班 学生 学号 指导教师完成时间年 实验7设计性实验 图像信号的抽取与插值 一.实验目的 1.熟悉图像处理常用函数和方法: 2.培养通过查阅文献解决问题的能力. 二.实验要求 给出一个二维灰度图像, 1.编程实现对该图像的任 ...

  • 机器视觉与智能检测
  • 2011/11/18 www.themegallery.com 第一讲 视觉检测概述 1.1什么是计算机视觉 机器视觉与智能检测 华南理工大学 2011.09 1.2什么是视觉检测技术 1.3视觉检测的作用 1.4视觉检测的特点 www.themegallery.com www.themeg ...

  • 基于高斯尺度空间的末制导目标跟踪方法
  • 第30卷第5期2009年5月兵工学报ACTAARMAMENTARIIVol.30No.5May2009 基于高斯尺度空间的末制导目标跟踪方法 陈冰,赵亦工,李欣 (西安电子科技大学模式识别与智能控制研究所,陕西西安710071) 摘要:针对光电成像末制导阶段目标尺寸和姿态均迅速变化的问题,提出了一种 ...

  • 多媒体技术实验报告一
  • 专业: 学号: 姓名: 教师: 计算机科学与技术学院 2014-2015学年第1学期 <多媒体技术> 计算机科学与技术 120341110 黄帅 张敏 完成日期: 实验一:媒体信息的获取与处理 一.实验目的: 1.通过实验加深对声音.图像.视频媒体信息的的数字化理解: 2.通过相关软件熟 ...