1、 数字图像处理课程设计数字图像处理课程设计 基于 Matlab 的图像放缩技术 院 系: 信息科学与技术学院 专业班级: 电子 0801 班 姓 名: 学 号: 2011 年 1 月 8 日 1 1.设计目标 图像放缩处理存在较大失真,本设计要求输入一副图像,经放大或缩小后,使输出图像尽量减少 失真度。可采用插值算法(最近邻插值和双线性插值法) ,使图像内物体的边界得以保持,尽可能减少 失真度。通过本次设计加强对数字图像处理的理解。 2.设计原理: 2.1 最近邻插值法 所谓的最近邻法,即输出图像像素的灰度值等于离它所映射到的位置最近的输入像素的灰度值。 现在假设放大或缩小后的图像的某一像素映
2、射到原图像的像素坐标为(2.2, 4.0),想要得到这个 坐标对应的灰度,那么比较简单的方法是用四舍五入方法来得到距离该点最近的像素,即像素(2, 4) 的值来代替,当然这并不十分的精确,如果用这个方法进行图像放大,那么在比例较大的情况下就会出 现明显的“马赛克”现象。 2.2 双线性插值法 双线性插值法, 即通过已知输入四点灰度内插输出点灰度, 将临近的像素点的灰度值按一定比例混 合而成,离哪个像素近,哪个像素的比例就大些。具体原理如下: 令f(x,y)为两个变量的函数,其在单位正方形顶点的值已知,要通过插值得到正方形内任意点的 灰度值,则可由双曲线方程 dcxybyaxyxf),( (2-
3、1) 来定义的一个双曲抛物面与四个已知点拟合。 从a到d这四个系数需由已知的四个顶点的 f(x,y)灰度值拟合。首先,对上端的两个顶点进行线 性插值,可得 )0,0()0,1()0,0()0,(ffxfxf (2-2) 同理,对底端的两个顶点进行线性插值,可得 )1 ,0()1 ,1()1 ,0()1 ,(ffxfxf (2-3) 最后,进行垂直方向的线性插值,可得 )0,()1 ,()0,(),(xfxfyxfyxf (2-4) 将式(2-2) 、式(2-3)代入式(2-4) ,展开等式并合并同类项,可得 )0,0()1 ,0()0,1()0,0()1 ,1()0,0()1 ,0()0,0(
4、)0,1(),(fxyffffyffxffyxf 该式形式类似于式(2-1) ,因此是双线性的。 3.设计程序流程图: 2 为 1 其它 未完 完成 完成 未完 最 近 邻 插 值 求 读取原图像 读取 g0 大小 放缩后的大小 开辟内存 Type 值 x?y? 双 线 性 插 值 求 x?y? 填边,左上角 g1(x,y)=g0(1,1) 为 2 输出 false! 填边,左下角 g1(x,y)=g0(m,1) 填边,右上角 g1(x,y)=g0(1,n) 填边,右下角 g1(x,y)=g0(m, 填边,上边 g1(x,y)=g1(5 填边,下边 g1(x,y)=g1(m0-5, 填边,左边 g1(x,y)=g1(x,5) 填边,右边 g1(x,y)=g1(x,n0-5 显示原图像 g0,放缩后的图像 g1 3 4.设计程序 g0=imread(lena.bmp); %读取原图像 g0 m n=size(g0); %求原图像