基于MATLAB的多分辨图像重建算法研究课程设计说明书

中北大学课 程 设 计 说 明 书学生姓名: 白鑫利 学 号: 18 学 院: 信息商务学院 专 业: 电子信息工程 题 目: 图像压缩方法研究 指导教师: 赵英亮 陈平 职称: 副教授 2013 年 12 月 26 日中北大学课程设计任务书 13/14 学年第 一 学期学 院: 信息商务学院 专 业: 电子信息工程 学 生 姓 名: 宋 锃 学 号: 28 学 生 姓 名: 白鑫利 学 号: 18 学 生 姓 名: 贾 琦 学 号: 19 课程设计题目:信息处理综合实践: 基于MATLAB的多分辨图像重建算法研究起 迄 日 期: 2013年12月16日~2013年12月27日 课程设计地点: 电子信息科学与技术专业实验室 指 导 教 师: 陈 平 系 主 任: 王浩全 下达任务书日期: 2013 年12月 15 日课 程 设 计 任 务 书1.设计目的:1、通过本课程设计的学习,学生将复习所学的专业知识,使课堂学习的理论知识应用于实践,通过本课程设计的实践使学生具有一定的实践操作能力;2、掌握Matlab使用方法,能熟练运用该软件设计并完成相应的信息处理;3、通过图像处理实践的课程设计,掌握设计图像处理软件系统的思维方法和基本开发过程。
2.设计内容和要求(包括原始数据、技术参数、条件、设计要求等):(1)自选图像,利用图像线性插值技术,实现分辨率提高(2倍,4倍);(2)利用图像线性插值技术,实现分辨率降低(1/2倍,1/4倍);(3)要求每位学生进行查阅相关资料,并写出自己的报告注意每个学生的报告要有所侧重,写出自己所做的内容3.设计工作任务及工作量的要求〔包括课程设计计算说明书(论文)、图纸、实物样品等〕:每个同学独立完成自己的任务,每人写一份设计报告,在课程设计论文中写明自己设计的部分,给出设计结果课 程 设 计 任 务 书4.主要参考文献:1. 阮秋琦等.数字图像处理(第三版).北京:电子工业出版社.20112. 冈萨雷斯等.数字图像处理(MATLAB版).北京:电子工业出版社.20013. 杨杰等.数字图像处理及MATLAB实现:学习与实验指导.北京:电子工业出版社.20104. 刘卫国等.MATLAB程序设计与应用.北京:高等教育出版社.20065. 许国根等.模式识别与智能计算的MATLAB实现.北京:北京航空航天大学出版社.20125.设计成果形式及要求:毕业设计说明书仿真结果6.工作计划及进度:2013年12月16日 ~ 12月19日:查资料;12月19日 ~ 12月24日:在指导教师指导下设计方案;12月25日 ~ 12月27日:撰写课程设计说明书; 12月27日:答辩系主任审查意见: 签字: 年 月 日目 录1 绪论 1.1 数字图像处理简介 1.2 最邻近插值和双线性插值算法的比较 2 图像的获取 2.1 图像的读取与保存 3 图像的处理 3.1 图像的亮度和对比度调整 3.1.1 图像的亮度调整 3.1.2 图像的对比度调整 3.2 区域图像的选取与保存 3.3 利用算法对图像的处理 3.3.1 双线性插值法 4 总结及心得体会 5 参考文献 1 绪论1.1 数字图像处理简介数字图像处理(Digital Image Processing)又称为计算机图像处理,它是指将图像信号转换成数字信号并利用计算机对其进行处理的过程。
数字图像处理有以下6种常用方法:1)图像变换由于图像阵列很大,直接在空间域中进行处理,涉及计算量很大因此,往往采用各种图像变换的方法,如傅立叶变换、沃尔什变换、离散余弦变换等间接处理技术,将空间域的处理转换为变换域处理,不仅可减少计算量,而且可获得更有效的处理(如傅立叶变换可在频域中进行数字滤波处理)目前新兴研究的小波变换在时域和频域中都具有良好的局部化特性,它在图像处理中也有着广泛而有效的应用 2)图像编码压缩图像编码压缩技术可减少描述图像的数据量(即比特数),以便节省图像传输、处理时间和减少所占用的存储器容量压缩可以在不失真的前提下获得,也可以在允许的失真条件下进行编码是压缩技术中最重要的方法,它在图像处理技术中是发展最早且比较成熟的技术 3)图像增强和复原图像增强和复原的目的是为了提高图像的质量,如去除噪声,提高图像的清晰度等图像增强不考虑图像降质的原因,突出图像中所感兴趣的部分如强化图像高频分量,可使图像中物体轮廓清晰,细节明显;如强化低频分量可减少图像中噪声影响图像复原要求对图像降质的原因有一定的了解,一般讲应根据降质过程建立“降质模型”,再采用某种滤波方法,恢复或重建原来的图像。
4)图像分割图像分割是数字图像处理中的关键技术之一图像分割是将图像中有意义的特征部分提取出来,其有意义的特征有图像中的边缘、区域等,这是进一步进行图像识别、分析和理解的基础虽然目前已研究出不少边缘提取、区域分割的方法,但还没有一种普遍适用于各种图像的有效方法因此,对图像分割的研究还在不断深入之中,是目前图像处理中研究的热点之一 5)图像描述图像描述是图像识别和理解的必要前提作为最简单的二值图像可采用其几何特性描述物体的特性,一般图像的描述方法采用二维形状描述,它有边界描述和区域描述两类方法对于特殊的纹理图像可采用二维纹理特征描述随着图像处理研究的深入发展,已经开始进行三维物体描述的研究,提出了体积描述、表面描述、广义圆柱体描述等方法 6)图像分类(识别)图像分类(识别)属于模式识别的范畴,其主要内容是图像经过某些预处理(增强、复原、压缩)后,进行图像分割和特征提取,从而进行判决分类图像分类常采用经典的模式识别方法,有统计模式分类和句法(结构)模式分类,近年来新发展起来的模糊模式识别和人工神经网络模式分类在图像识别中也越来越受到重视1.2最邻近插值和双线性插值算法的比较图像缩放是数字图像处理的一个基本内容,为了更好地对数字图像细节进行描述,实验图像处理中的空间变换、最邻近插值算法,重点分析了双线性插值算法,并通过MATLAB仿真进行图像的缩放,比较实验结果,从而验证双线性插值算法效果较好。
关键词:图像缩放;空间变换;最邻近插值;双线性插值;1.2.1图像处理中的空间变换图像的空间变换[1],也称几何变换或几何运算,包括图像的平移、旋转、镜像变换、转置、缩放等几何运算可改变图像中各物体之间的空间关系,这种运算可以跛看成是将各物体在图像内移动空间变换可如下表示:设(u,v)为源图像上的点,(x,y)为目标图像上的点,则空间变换就是将源图像上(u,v)处的颜色值与目标图像上(X,y)处的颜色对应起来(u,v)(x,y)并具有以下关系:x=X(u,v),y=Y(u,v)(即由(u,v)计算对应(x,y))(1)或u=U(x,y),v=V(x,y)(即由(x,y)计算对应(u,v))(2)其中X(u,v)、Y(u,v)、U(x,y)、V(x,y)均为变换由(1.1)对应的变换称作向前映射法也叫像素移交法,而由(1.2)对应的变换称作向后映射法也叫像素填充法,向后映射法是向前映射法的逆[1,4]对于向前映射法来说,由于许多输入像素可能映射到输出图像的边界之外,故向前映射法有些浪费,而且每个输出像素的灰度值可能要由许多输入像素的灰度值来决定,因此要涉及多次运算如果空间变换中包括缩小处理,则会有四个以上的输入像素来决定输出像素的灰度值。
如果含有放大处理,则一些输出像素可能被漏掉而向后映射算法是逐像素、逐行地产生输出图像每个像素的灰度级由最多四个像素参与的插值所唯一确定,虽然向后映射法比向前映射法要复杂,但是向后映射法对于—般的应用却具有更为现实的意义2 图像的获取2.1 图像的读取与保存利用函数imread()可完成图形图像文件的读取,其调用格式为:a=imread(filename,fmt)[X,map]=imread(filename,fmt)[...]=imread(filename)[...]=imread(filename,idx) (只对TIF格式的文件)[...]=imread(filename,ref) (只对HDF格式的文件)通常,读取的大多数图像均为8bit,当这些图像加载到内存中时,Matlab就将其存放在类uint8中此为Matlab还支持16bit的PNG和TIF图像,当读取这类文件时,Matlab就将其存贮在uint16中对于索引图像,即使图像阵列的本身为类uint8或类uint16,imread函数仍将颜色映象表读取并存贮到一个双精度的浮点类型的阵列中利用函数imwrite()可以完成对图像数据的保存操作,语法:imwrite(A,filename,fmt)imwrite(X,map,filename,fmt)imwrite(...,filename)imwrite(...,Param1,Val1,Param2,Val2...)A可以是一个M -的- N的(灰度图像)或M -的- N的按3(真彩色图像)阵列,但它不能是一个空数组。
至于TIFF文件,A可以是一个m -的- N的 4数组,包含颜色数据,使用的CMYK色彩空间对于GIF文件,A可以是一个m -的- N的按1由- P的含灰度或索引图像阵列 - RGB图像不支持程序如下:xiaowu=imread(F:\matlab\mokui\xiaowu.jpg); %读取图像路径figuresubplot(1,1,1)imshow(xiaowu); %显示图像title(原彩色图)imwrite(xiaowu,F:\matlab\mokui\new_xiaowu.jpg); 得到的彩色图像如下图2.1 原彩色图说明:所选择的彩色图的像素为1600*12003 图像的处理3.1 图像的亮度和对比度调整图像的亮度和对比度调整分别使用函数imadjust()和rgb2gray()函数3.1.1 图像的亮度调整图像的亮度调整使用imadjust()函数,其调用格式如下: J = imadjust(I)J = imadjust(I,[low_in; high_in],[low_out; high_out])J = imadjust(I,[low_in; high_in],[low_out; high_out],gamma)newmap = imadjust(map,[low_in; high_in],[low_out; high_out],gamma)RGB2 = imadjust(RGB1,...)其中gamma 表示映射性质,默认值是1 ,表示线性映射。
程序如下:xiaowu=imread(F:\matlab\mokui\xiaowu.jpg); %读取图像路径figuresubplot(1,2,1)imshow(xiaowu); %显示图像title(原彩色图)y=imadjust(xiaowu,[0.15 0.6], [0 1]); %增亮图像subplot(1,2,2)imshow(y);title(增亮图)进行增亮处理后的图像与源图像的对比图:图3.1 进行增亮处理后的图像结果比较:增量处理后的图像的亮度明显高于原图像3.1.2 图像的对比度调整 图像的对比度调整使用函数rgb2gray()其调用格式为:I = rgb2gray(RGB)程序如下:xiaowu=imread(F:\matlab\mokui\xiaowu.jpg); %读取图像路径figuresubplot(1,2,1)imshow(xiaowu); %显示图像title(原彩色图)y=rgb2gray(xiaowu); %RGB图像转换为灰度图像subplot(1,2,2)imshow(y);title(灰度图)转化后得到的灰度图如下:图3.2 转化后的灰度图3.2 区域图像的选取与保存在MATLAB中,用函数imcrop实现对图像的剪切操作。
无论待处理图像是二维还是三维数据,该函数都能对其进行操作下图是对三维图像的截图:其调用格式如下:I = imcropI2 = imcrop(I)X2 = imcrop(X, map)I = imcrop(h)I2 = imcrop(I, rect)X2 = imcrop(X, map, rect)[...] = imcrop(x, y,...)[I2 rect] = imcrop(…)[X,Y,I2,rect] = imcrop(…)程序如下:xiaowu=imread(F:\matlab\mokui\xiaowu.jpg); %读取图像路径figuresubplot(1,2,1)imshow(xiaowu); %显示图像title(原彩色图)x=imcrop(xiaowu); %截图subplot(1,2,2)imshow(x);imwrite(x,cut.jpg); %保存图像title(截图)截图后得到的图像如下:图3.3 截图处理后的图像3.3 利用算法对图像的处理3.3.1双线性插值法双线性插值,又称为双线性内插。
在数学上,双线性插值是有两个变量的插值函数的线性插值扩展,其核心思想是在两个方向分别进行一次线性插值 3.3.1.1图像的放大和缩小图像的双线性插值放大算法中,目标图像中新创造的象素值,是由源图像位置在它附近的2*2区域4个邻近象素的值通过加权平均计算得出的双线性内插值算法放大后的图像质量较高,不会出现像素值不连续的的情况然而次算法具有低通滤波器的性质,使高频分量受损,所以可能会使图像轮廓在一定程度上变得模糊由于用双线性插值法对图像进行处理调用的函数与最近邻插值法相同,故在此不再做说明程序如下:x=imresize(xiaowu,5,bilinear); %双线性插值法放大图像imshow(x);imwrite(x,doublefangda.jpg);title(双线性插值法放大);图3.9 双线性插值法放大处理后的图像xiaowu=imread(F:\matlab\mokui\xiaowu.jpg); %读取图像路径figuresubplot(1,2,1)imshow(xiaowu); %显示图像title(原彩色图)x=imresize(xiaowu,0.5,bilinear); %双线性插值法缩小图像subplot(1,2,2)imshow(x);imwrite(x,doublesuoxiao.jpg);title(双线性插值法缩小);图3.10 双线性插值法缩小处理后的图像说明:处理后看不出来放大(或缩小)的效果,这是由于坐标轴限制的原因,如果把处理后的图片保存起来,再把处理后的文件打开,就可以看到比较明显的放大(或缩小)效果。
实验程序:clear all;close all;clc;%------------图像读取------------%I=imread(child.jpg); %------------设置插值因子-----------%K = str2double(inputdlg(please input scale factor (must between 0.1 - 5.0), INPUT scale factor, 1, {0.5})); %------------判断插值因子是否符合范围-------------% if (K < 0.1) | (K > 5.0) % 插值因子范围设置为 0.1----5.0,可以根据自己的需求调整 errordlg(scale factor beyond permitted range(0.1 - 5.0), ERROR); error(please input scale factor (must between 0.1 - 5.0)); end %------------原始图像显示------------%figure();imshow(I); title(原始图像);%------------图像RGB分量分解------------%BR=I(:,:,1); %图像的红色分量 BG=I(:,:,2); %图像的绿色分量 BB=I(:,:,3); %图像的蓝色分量 %------------图像RGB分量维数------------%[nrows,ncols] =size(BR); [nrows,ncols] =size(BG); [nrows,ncols] =size(BB); %------------输出图像参数设置------------%width = K * nrows; % K为插值因子height = K * ncols; % K为插值因子dstBR = uint8(zeros(width,height)); % 图像维度转换dstBG = uint8(zeros(width,height)); % 图像维度转换dstBB = uint8(zeros(width,height)); % 图像维度转换widthScale = nrows/width; heightScale = ncols/height; %------------图像线性插值------------% for x = 5:width - 5 % 防止矩阵的下标越界,报错 for y = 5:height - 5 xx = x * widthScale; % 点(xx,yy)是原始图像,点(x,y)是目标图像 yy = y * heightScale; % 点(xx,yy)是原始图像,点(x,y)是目标图像 if (xx/double(uint16(xx)) == 1.0) & (yy/double(uint16(yy)) == 1.0) dstBR(x,y) = BR(int16(xx),int16(yy)); dstBG(x,y) = BG(int16(xx),int16(yy)); dstBB(x,y) = BB(int16(xx),int16(yy)); else a = double(uint16(xx)); b = double(uint16(yy)); BRx11 = double(BR(a,b)); % 像素点(a,b)的读取 BRx12 = double(BR(a,b+1)); % 像素点(a,b+1)的读取 BRx21 = double(BR(a+1,b)); % 像素点(a+1,b)的读取 BRx22 = double(BR(a+1,b+1));% 像素点(a+1,b+1)的读取 BGx11 = double(BG(a,b)); % 像素点(a,b)的读取 BGx12 = double(BG(a,b+1)); % 像素点(a,b+1)的读取 BGx21 = double(BG(a+1,b)); % 像素点(a+1,b)的读取 BGx22 = double(BG(a+1,b+1));% 像素点(a+1,b+1)的读取 BBx11 = double(BB(a,b)); % 像素点(a,b)的读取 BBx12 = double(BB(a,b+1)); % 像素点(a,b+1)的读取 BBx21 = double(BB(a+1,b)); % 像素点(a+1,b)的读取 BBx22 = double(BB(a+1,b+1));% 像素点(a+1,b+1)的读取 dstBR(x,y) = uint8( (b+1-yy) * ((xx-a)*BRx21 + (a+1-xx)*BRx11) + (yy-b) * ((xx-a)*BRx22 +(a+1-xx) * BRx12) ); % 计算目标图像BR分量 dstBG(x,y) = uint8( (b+1-yy) * ((xx-a)*BGx21 + (a+1-xx)*BGx11) + (yy-b) * ((xx-a)*BGx22 +(a+1-xx) * BGx12) ); % 计算目标图像BG分量 dstBB(x,y) = uint8( (b+1-yy) * ((xx-a)*BBx21 + (a+1-xx)*BBx11) + (yy-b) * ((xx-a)*BBx22 +(a+1-xx) * BBx12) ); % 计算目标图像BB分量 end end end %------------合成目标图像------------% OUT(:,:,1)=dstBR; OUT(:,:,2)=dstBG; OUT(:,:,3)=dstBB; figure;imshow(OUT);title(插值后的图像);实验结果: 4 总结及心得体会通过这次的课程设计,我了解了数字图像处理的基础知识,学会了一些基本的算法,也进一步熟悉了MATLAB的使用。
与前一次的基础强化训练相比,感觉这次的课设要容易很多主要原因是有了以前的基础,并掌握了相应的设计方法利用MATLAB进行数字图像的处理,关键就是要学会使用相应的MATLAB函数,可以通过上网、查阅书籍等多种方式来获得相关的知识我认为像这样的课程设计是很有意义的首先,本次课程设计为我们下学期即将学习的数字信号处理课程奠定了基础,在课程设计的过程中,我查阅了很多数字信号处理的资料,学到了很多有关数字信号处理的知识其次,它可以提高我们的动手能力,让我们把平时所学到的知识真正的运用于实际,让我们体会到专业课学习的乐趣最后,课程设计的过程中,我们也多多少少的会与其他同学进行交流学习,通过交流和讨论,我们可以发现自身的不做,找出差距,共同进步5 参考文献[1] 王洪元主编.《MATLAB语言以及在电子信息工程中的应用》.清华出版社 2004.12[2] 李文锋编著.《图形图像处理与应用》.中国标准出版社 2006.06[3] 贺兴华等著.《MATLAB7.X图像处理》.人民邮电出版社 2006.11.01[4] 刘文耀编著.《数字图像采集与处理》.电子工业出版社 2007.08.01[5] 陈怀琛主编. 《数字信号处理教程——MATLAB释义与实现》.电子工业出版社 2004.06[6] 徐建华编著.《图像处理与分析》.科学出版社 1994.05[7] 赵树杰编著.《数字图像处理》.西安电子科技大学出版社 2000.03。