图像压缩编码程序设计_第1页
图像压缩编码程序设计_第2页
图像压缩编码程序设计_第3页
图像压缩编码程序设计_第4页
图像压缩编码程序设计_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGEPAGE22*******************实践教学*******************兰州理工大学计算机与通信学院2012年秋季学期图像处理综合训练题目:图像压缩编码专业班级:姓名:学号:指导教师:成绩:目录TOC\o"1-2"\u摘要 1一、前言 2二、算法分析与描述 3三、详细设计过程 5四、调试过程中出现的问题及相应解决办法 7五、程序运行截图及其说明 8六、简单操作手册 11设计总结 14参考资料 15致谢 16附录 17摘要本实验是在根据图像压缩基本原理的基础上,独立设计图像的有损压缩编码算法,并在MATLAB编程环境中编程实现。其目的是理解有损压缩的概念,特别是通过K-L变换或DCT变换,掌握压缩编码的基本原理、算法,并通过编程给予实现,对原始图像数据和解压后的图像数据进行失真估计,了解压缩性能及其重建效果的影响、作用,给出适当的理论分析。关键词:Matlab;图像压缩;解码;行程编码。一、前言人类正在实践的21世纪是一个信息时代。今天的社会,信息技术已经全面服务于社会生产和生活的方方面面,人们所做工作的相当一部分就是对信息的处理和传输,其中图像是人类获取信息、表达信息和传递信息的重要手段,是人类感知和认识世界的基础。有关研究表明,日常生活中人们所接受的各种信息中图像信息占总信息量的80%左右,从这一角度看,“百闻不如一见”正是图像处理重要性的形象表达和经验总结。因此,数字图像处理技术无论是对于21世纪的科学理论研究,还是工程应用都将具有重要的影响。国内外许多有识之士指出,从某种意义上讲,数字图像处理是实现智能计算机、智能机器人或多媒体信系统的基础,未来计算机及智能机器人的发展与进步将在一定程度上依赖于机器视觉信息处理理论和技术的突破。虽然相对于经典学科,数字图像处理还很年轻,但日趋成熟的数字图像处理技术已经在很多方面得到深入而广泛的应用,一定程度上改变了人类的生活,给人们的日常生活、学习、工作带来极大的方便。例如,Internet上的视频广播、现代卫星或遥感照片的合成和处理、工业产品的自动检测、各种医学影像和图像的处理、远程医疗诊断及手术以及视频会议、视频电话等都采用了图像处理技术实现实时信息交互。如果说1964年美国喷气推进实验室首次处理了由太空船“徘徊者七号”发回的月球照片,拉开了数字图像处理技术进入普遍应用的序幕,那么CT的发明、应用及诺贝尔奖的获得,则使得数字图像处理技术大放异彩,并迅速进入了广泛应用阶段。目前,数字图像处理技术已在工程科学、计算机科学、信息科学、遥感、遥测、采矿、地质勘探、工业探伤、自动控制、机器人、军事、公安、生物学、医学、视频、多媒体、统计学甚至社会科学等领域得到了广泛应用,并显示出了更加诱人的前景,成为了包括计算机科学与技术、信息科学、航空航天和生物医学工程等在内的多学科的研究重点和热点。这些学科的研究成果又促使了图像处理技术向更高水平发展,数字图像处理技术正是在这种应用的迫切需要和自身的不断发展之中逐步完善的新兴学科。未来,图像处理技术的发展及应用与经济建设联系之紧密、影响之深远是不可估量的。算法分析与描述编码是方法建立在图像统计特性的基础上的。例如,在传真通信中的文件大多是二值图像,即每个像素的灰度值只有0和1两种取值。将一行中颜色值相同的相邻象素用一个计数值和该颜色值来代替。例如aaabccccccddeee可以表示为3a1b6c2d3e,,即有3个a,1个b,6个c,2个d,3个e。如果一幅图象是由很多块颜色相同的大面积区域组成,那么采用行程编码的压缩效率是惊人的。然而,该算法也导致了一个致命弱点,如果图象中每两个相邻点的颜色都不同,用这种算法不但不能压缩,反而数据量增加一倍。因此对有大面积色块的图像用行程编码效果比较好。行程编码的可行性讨论:行程编码的压缩方法对于自然图片来说是不太可行的,因为自然图片像素点错综复杂,同色像素连续性差,如果硬要用行程编码方法来编码就适得其反,图像体积不但没减少,反而加倍。鉴于计算机桌面图,图像的色块大,同色像素点连续较多,所以行程编码对于计算机桌面图像来说是一种较好的编码方法。2.1图像的调入:functionyc%行程编码算法%例如aaabccccccddeee才可以表示为3a1b6c2d3e%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%读图I=imread('Lena.bmp');[mnl]=size(I);fid=fopen('yc.txt','w');%yc.txt是行程编码算法的灰度级及其相应的编码表%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%2.2行程编码算法:sum=0;fork=1:lfori=1:mnum=0;J=[];value=I(i,1,k);forj=2:nifI(i,j,k)==valuenum=num+1;%统计相邻像素灰度级相等的个数ifj==nJ=[J,num,value];endelseJ=[J,num,value];%J的形式是先是灰度的个数及该灰度的值value=I(i,j,k);num=1;endendcol(i,k)=size(J,2);%记录Y中每行行程行程编码数sum=sum+col(i,k);Y(i,1:col(i,k),k)=J;%将I中每一行的行程编码J存入Y的相应行中endend%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%输出相关数据[m1,n1,l1]=size(Y);disp('ԭͼÏñ´óС:')whos('I');disp('ѹËõͼÏñ´óС:')whos('Y');disp('ͼÏñµÄѹËõ±È:');disp(m*n*l/sum);2.3图像显示和保存:subplot(1,2,1),imshow(I),title('原图像')subplot(1,2,2),imshow(Y),title('行程编码解码后的图像')save('Y')%存储,以便解码用save('col')fclose(fid);三、详细设计过程3.1算法流程图读入图像读入图像将行程编码写入yc.txt中行程算法计算压缩比3.2由I=imread('Lena.bmp')把图像调入等待处理,再由行程编码算法进行计算和压缩。实现具体的压缩功能。最后输出原图像和压缩后的像和输出压缩比例。3.2行程编码算法sum=0;fork=1:lfori=1:mnum=0;J=[];value=I(i,1,k);forj=2:nifI(i,j,k)==valuenum=num+1;%统计相邻像素灰度级相等的个数ifj==nJ=[J,num,value];endelseJ=[J,num,value];%J的形式是先是灰度的个数及该灰度的值value=I(i,j,k);num=1;endendcol(i,k)=size(J,2);%记录Y中每行行程行程编码数sum=sum+col(i,k);Y(i,1:col(i,k),k)=J;%将I中每一行的行程编码J存入Y的相应行中endend%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%输出相关数据[m1,n1,l1]=size(Y);disp('原图像大小:')whos('I');disp('压缩图像大小:')whos('Y');disp('图像的压缩比:');disp(m*n*l/sum);四、调试过程中出现的问题及相应解决办法首先,我们的代码不完全是自己写出来的,所以刚开始调式时出现很多错误。比如;代码中的函数matlab软件不认识,不能实现函数的功能。还有函数变量定义不符合,但更多的是调入图像显示不出结果。经过研究和修改,功夫不负有心人,大部分错误都改正了。可是很纠结的是只输出图像压缩的数据和压缩比例,没有输出原图像和压缩后的图像。最后经过同学的帮忙和自己的努力,发现代码缺少输出图像语句。最终顺利完成了本次的课程设计。五、程序运行截图及其说明图5.1图像的大小和压缩比例图5.2图像原图和压缩后图像图5.3行程编码表六、简单操作手册首先我们完成代码部分。经过查找资料和网上查询,完整的把代码的功能能在matlab软件上是先出来。文档部分比较繁琐,需要结合代码的功能一步一步经过说明实现图像的行程压缩编码。在经过matlab软件运行输出图像,把图像截图放在文档部分加以说明。界面制作;图6.1画出两个axes1、axes2图像显示框图6.2把对应的程序添加到界面图6.3显示出原图像设计总结涉及到图像压缩的算法很多,我所用的是行程编码算法。这种算法是无损压缩,利用统计的方法,最终建立了数据与编码的关系,即利用了编码冗余实现压缩。在这两周的图像处理的综合训练中,通过对图象处理的设计过程,我加深了对图像压缩的理解,对DCT变换和行程编码和哈夫曼有所掌握,对课本中所学的各种图像知识的进一步理解和掌握,学会了如何把学到的知识用于解决实际问题,锻炼了自己动手的能力。在这次的综合训练中我认识到了自己的不足。在以后的学习中我会更加注意各个方面的能力的协调发展。在课程设计时遇到了很多的问题,在老师的帮助,和对各种资料的查阅中,将问题解决,培养了我自主动手,独立研究的能力,为今后在学习工作中能更好的发展打下了坚实的基础。通过对此次图象处理综合训练的实际操作及分析,加深对图像的理解及增强实际动手能力,锻炼了我们分析与编写软件代码的能力及团结协作的能力。两周的课程设计很短暂,但其间的内容是很充实的,在其中我学习到了很多平时书本中无法学到的东西,积累了经验,锻炼了自己分析问题,解决问题的能力,并学会了如何将所学的各科知识融会,组织,来配合学习,为以后的发展打下坚实的基础。参考文献张志涌,杨祖樱.MATLAB教程.北京:北京航空航天大学出版社,2006,9-201.刘卫国.MATLAB程序设计教程[M].北京:中国水利水电出版社,2005,101-150章毓晋.图像工程(上册)——图像分析.第二版.北京:清华大学出版社,2005,7-30章毓晋.图像工程(中册)——图像分析.第二版.北京:清华大学出版社,2005,30-87黄爱民,安向京,骆力.数字图像处理与分析基础.北京:中国水利水电出版社,2005,7-50致谢本课程设计的选题、材料来源、程序设计和制作和内容的安排、总体篇章的写作等都得到了指导老师徐志刚的真诚指导和关注,以至于我的课程设计能够按时顺利的完成。因此,特别感谢指导老师徐志刚,他以热心和耐心成全了我的课程设计,为我制作的全过程提出了许多宝贵的意见,特别是在编程方面给我很大程度的指导,辅助我尝试了各种函数的应用,使我掌握了许多宝贵的知识。所以真的很感谢徐志刚老师的指导!另外,我也很感谢班里的很多同学给我提出的意见和想法,对我的课程设计提供了很多的帮助!最后,我希望同学们能获得更多的收获!附录functionyc%%行程编码算法%例如aaabccccccddeee才可以表示为3a1b6c2d3e%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%读图I=imread('Lena.bmp');[mnl]=size(I);fid=fopen('yc.txt','w');%yc.txt是行程编码算法的灰度级及其相应的编码表%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%行程编码算法sum=0;fork=1:lfori=1:mnum=0;J=[];value=I(i,1,k);forj=2:nifI(i,j,k)==valuenum=num+1;%统计相邻像素灰度级相等的个数ifj==nJ=[J,num,value];endelseJ=[J,num,value];%J的形式是先是灰度的个数及该灰度的值value=I(i,j,k);num=1;endendcol(i,k)=size(J,2);%记录Y中每行行程行程编码数sum=sum+col(i,k);Y(i,1:col(i,k),k)=J;%将I中每一行的行程编码J存入Y的相应行中endend%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%输出相关数据[m1,n1,l1]=size(Y);disp('ԭͼÏñ´óС:')whos('I');disp('ѹËõͼÏñ´óС:')whos('Y');disp('ͼÏñµÄѹËõ±È:');disp(m*n*l/sum);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%将编码写入yc.txt中fork=1:l1fori=1:m1forj=1:col(i,k)fprintf(fid,'%d',Y(i,j,k));fwrite(fid,'');end endfwrite(fid,'');endsubplot(1,2,1),imshow(I),title('原图像)%¶Á³öԭͼsubplot(1,2,2),imshow(Y),title('行程编码解码后的图像')save('Y')%存储,以便解码用save('col')fclose(fid);functionvarargout=yc(varargin)%YCMATLABcodeforyc.fig%YC,byitself,createsanewYCorraisestheexisting%singleton*.%%H=YCreturnsthehandletoanewYCorthehandleto%theexistingsingleton*.%%YC('CALLBACK',hObject,eventData,handles,...)callsthelocal%functionnamedCALLBACKinYC.Mwiththegiveninputarguments.%%YC('Property','Value',...)createsanewYCorraisesthe%existingsingleton*.Startingfromtheleft,propertyvaluepairsare%appliedtotheGUIbeforeyc_OpeningFcngetscalled.An%unrecognizedpropertynameorinvalidvaluemakespropertyapplication%stop.Allinputsarepassedtoyc_OpeningFcnviavarargin.%%*SeeGUIOptionsonGUIDE'sToolsmenu.Choose"GUIallowsonlyone%instancetorun(singleton)".%%Seealso:GUIDE,GUIDATA,GUIHANDLES%Edittheabovetexttomodifytheresponsetohelpyc%LastModifiedbyGUIDEv2.511-Jan-201311:24:40%Begininitializationcode-DONOTEDITgui_Singleton=1;gui_State=struct('gui_Name',mfilename,...'gui_Singleton',gui_Singleton,...'gui_OpeningFcn',@yc_OpeningFcn,...'gui_OutputFcn',@yc_OutputFcn,...'gui_LayoutFcn',[],...'gui_Callback',[]);ifnargin&&ischar(varargin{1})gui_State.gui_Callback=str2func(varargin{1});endifnargout[varargout{1:nargout}]=gui_mainfcn(gui_State,varargin{:});elsegui_mainfcn(gui_State,varargin{:});end%Endinitializationcode-DONOTEDIT%Executesjustbeforeycismadevisible.functionyc_OpeningFcn(hObject,eventdata,handles,varargin)%Thisfunctionhasnooutputargs,seeOutputFcn.%hObjecthandletofigure%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%varargincommandlineargumentstoyc(seeVARARGIN)%Choosedefaultcommandlineoutputforychandles.output=hObject;%Updatehandlesstructureguidata(hObject,handles);%UIWAITmakesycwaitforuserresponse(seeUIRESUME)%uiwait(handles.figure_yc);%Outputsfromthisfunctionarereturnedtothecommandline.functionvarargout=yc_OutputFcn(hObject,eventdata,handles)%varargoutcellarrayforreturningoutputargs(seeVARARGOUT);%hObjecthandletofigure%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%Getdefaultcommandlineoutputfromhandlesstructurevarargout{1}=handles.output;%functionm_file_Callback(hObject,eventdata,handles)%hObjecthandletom_file(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%functionm_file_open_Callback(hObject,eventdata,handles)%hObjecthandletom_file_open(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)[filename,pathname]=uigetfile(...{'*.bmp;*.jpg;*.png;*.jpeg','ImageFiles(*.bmp,*.jpg,*.png,*.jpeg)';...'*.*','AllFiles(*.*)'},...'Pickanimage');axes(handles.axes1);%用axes命令设定当前操作的坐标轴是axes_srcfpath=[pathnamefilename];%将文件名和目录名组合成一个完整的路径img_src=imread(fpath);imshow(img_src);%用imread读入图片,并用imshow在axes_src上显示setappdata(handles.figure_yc,'img_src',img_src);title('原图');%functionm_file_save_Callback(hObject,eventdata,handles)%hObjecthandletom_file_save(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)[filename,pathname]=uigetfile(...{'*.bmp;*.jpg;*.png;*.jpeg','ImageFiles(*.bmp,*.jpg,*.png,*.jpeg)';...'*.*','AllFiles(*.*)'},...'Pickanimage');axes1(handles.axes1);%用axes命令设定当前操作的坐标轴是axes_srcfpath=[pathnamefilename];%将文件名和目录名组合成一个完整的路径img_src=imwrite(fpath);imshow(img_src);img_src=getappdata(handles.figure_yc,'img_src');%functionm_file_exit_Callback(hObject,eventdata,handles)%hObjecthandletom_file_exit(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)close(handles.figure_yc);%functiontuxiangyasuo_Callback(hObject,eventdata,handles)%hObjecthandletotuxiangyasuo(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%functionhangchengyasuo_Callback(hObject,eventdata,handles,mymainfunction)%hObjecthandletohangchengyasuo(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)基于C8051F单片机直流电动机反馈控制系统的设计与研究基于单片机的嵌入式Web服务器的研究MOTOROLA单片机MC68HC(8)05PV8/A内嵌EEPROM的工艺和制程方法及对良率的影响研究基于模糊控制的电阻钎焊单片机温度控制系统的研制基于MCS-51系列单片机的通用控制模块的研究基于单片机实现的供暖系统最佳启停自校正(STR)调节器单片机控制的二级倒立摆系统的研究基于增强型51系列单片机的TCP/IP协议栈的实现基于单片机的蓄电池自动监测系统基于32位嵌入式单片机系统的图像采集与处理技术的研究基于单片机的作物营养诊断专家系统的研究基于单片机的交流伺服电机运动控制系统研究与开发基于单片机的泵管内壁硬度测试仪的研制基于单片机的自动找平控制系统研究基于C8051F040单片机的嵌入式系统开发基于单片机的液压动力系统状态监测仪开发模糊Smith智能控制方法的研究及其单片机实现一种基于单片机的轴快流CO〈,2〉激光器的手持控制面板的研制基于双单片机冲床数控系统的研究基于CYGNAL单片机的在线间歇式浊度仪的研制基于单片机的喷油泵试验台控制器的研制基于单片机的软起动器的研究和设计基于单片机控制的高速快走丝电火花线切割机床短循环走丝方式研究基于单片机的机电产品控制系统开发基于PIC单片机的智能手机充电器基于单片机的实时内核设计及其应用研究基于单片机的远程抄表系统的设计与研究基于单片机的烟气二氧化硫浓度检测仪的研制基于微型光谱仪的单片机系统单片机系统软件构件开发的技术研究基于单片机的液体点滴速度自动检测仪的研制基于单片机系统的多功能温度测量仪的研制基于PIC单片机的电能采集终端的设计和应用基于单片机的光纤光栅解调仪的研制气压式线性摩擦焊机单片机控制系统的研制基于单片机的数字磁通门传感器基于单片机的旋转变压器-数字转换器的研究基于单片机的光纤Bragg光栅解调系统的研究单片机控制的便携式多功能乳腺治疗仪的研制基于C8051F020单片机的多生理信号检测仪基于单片机的电机运动控制系统设计Pico专用单片机核的可测性设计研究基于MCS-51单片机的热量计基于双单片机的智能遥测微型气象站MCS-51单片机构建机器人的实践研究基于单片机的轮轨力检测基于单片机的GPS定位仪的研究与实现基于单片机的电液伺服控制系统用于单片机系统的MMC卡文件系统研制基于单片机的时控和计数系统性能优化的研究基于单片机和CPLD的粗光栅位移测量系统研究单片机控制的后备式方波UPS提升高职学生单片机应用能力的探究基于单片机控制的自动低频减载装置研究基于单片机控制的水下焊接电源的研究基于单片机的多通道数据采集系统基于uPSD3234单片机的氚表面污染测量仪的研制基于单片机的红外测油仪的研究96系列单片机仿真器研究与设计基于单片机的单晶金刚石刀具刃磨设备的数控改造基于单片机的温度智能控制系统的设计与实现基于MSP430单片机的电梯门机控制器的研制基于单片机的气体测漏仪的研究基于三菱M16C/6N系列单片机的CAN/USB协议转换器基于单片机和DSP的变压器油色谱在线监测技术研究基于单片机的膛壁温度报警系统设计基于AVR单片机的低压无功补偿控制器

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论