




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
* 实践教学实践教学 * 兰州理工大学兰州理工大学 计算机与通信学院 2012 年秋季学期 图像处理图像处理 综合训练综合训练 题 目: 图像压缩编码 专业班级: 姓 名: 学 号: 指导教师: 成 绩: 目目 录录 摘 要1 一、前言2 二、算法分析与描述3 三、详细设计过程5 四、调试过程中出现的问题及相应解决办法7 五、程序运行截图及其说明8 六、简单操作手册11 设计总结14 参考资料15 致谢16 附录17 0 摘摘 要要 本实验是在根据图像压缩基本原理的基础上,独立设计图像的有损 压缩编码算法,并在 MATLAB 编程环境中编程实现。 其目的是理解有损压缩的 概念,特别是通过 K-L 变换或 DCT 变换,掌握压缩编码的基本原理、算法,并 通过编程给予实现,对原始图像数据和解压后的图像数据进行失真估计,了解 压缩性能及其重建效果的影响、作用,给出适当的理论分析。 关键词: Matlab;图像压缩;解码;行程编码。 1 一、一、 前言前言 人类正在实践的 21 世纪是一个信息时代。今天的社会,信息技术已经全面 服务 于社会生产和生活的方方面面,人们所做工作的相当一部分就是对信息 的处理和传输,其中图像是人类获取信息、表达信息和传递信息的重要手段, 是人类感知和认识世界的基础。有关研究表明,日常生活中人们所接受的各种 信息中图像信息占总信息量的 80%左右,从这一角度看, “百闻不如一见”正是 图像处理重要性的形象表达和经验总结。因此,数字图像处理技术无论是对于 21 世纪的科学理论研究,还是工程应用都将具有重要的影响。国内外许多有识 之士指出,从某种意义上讲,数字图像处理是实现智能计算机、智能机器人或 多媒体信系统的基础,未来计算机及智能机器人的发展与进步将在一定程度上 依赖于机器视觉信息处理理论和技术的突破。虽然相对于经典学科,数字图像 处理还很年轻,但日趋成熟的数字图像处理技术已经在很多方面得到深入而广 泛的应用,一定程度上改变了人类的生活,给人们的日常生活、学习、工作带 来极大的方便。例如,Internet 上的视频广播、现代卫星或遥感照片的合成和 处理、工业产品的自动检测、各种医学影像和图像的处理、远程医疗诊断及手 术以及视频会议、视频电话等都采用了图像处理技术实现实时信息交互。 如 果说 1964 年美国喷气推进实验室首次处理了由太空船“徘徊者七号”发回的月 球照片,拉开了数字图像处理技术进入普遍应用的序幕,那么 CT 的发明、应用 及诺贝尔奖的获得,则使得数字图像处理技术大放异彩,并迅速进入了广泛应 用阶段。目前,数字图像处理技术已在工程科学、计算机科学、信息科学、遥 感、遥测、采矿、地质勘探、工业探伤、自动控制、机器人、军事、公安、生 物学、医学、视频、多媒体、统计学甚至社会科学等领域得到了广泛应用,并 显示出了更加诱人的前景,成为了包括计算机科学与技术、信息科学、航空航 天和生物医学工程等在内的多学科的研究重点和热点。这些学科的研究成果又 促使了图像处理技术向更高水平发展,数字图像处理技术正是在这种应用的迫 切需要和自身的不断发展之中逐步完善的新兴学科。未来,图像处理技术的发 展及应用与经济建设联系之紧密、影响之深远是不可估量的。 2 2、算法分析与描述算法分析与描述 编码是方法建立在图像统计特性的基础上的。例如,在传真通信中的文件 大多是二值图像,即每个像素的灰度值只有 0 和 1 两种取值。将一行中颜色值 相同的相邻象素用一个计数值和该颜色值来代替。例如 aaabccccccddeee 可以表 示为 3a1b6c2d3e, ,即有 3 个 a,1 个 b,6 个 c,2 个 d,3 个 e。如果一幅图象 是由很多块颜色相同的大面积区域组成,那么采用行程编码的压缩效率是惊人 的。然而,该算法也导致了一个致命弱点,如果图象中每两个相邻点的颜色都 不同,用这种算法不但不能压缩,反而数据量增加一倍。因此对有大面积色块 的图像用行程编码效果比较好。 行程编码的可行性讨论:行程编码的压缩方法对于自然图片来说是不太可 行的,因为自然图片像素点错综复杂,同色像素连续性差,如果硬要用行程编 码方法来编码就适得其反,图像体积不但没减少,反而加倍。鉴于计算机桌面 图,图像的色块大,同色像素点连续较多,所以行程编码对于计算机桌面图像 来说是一种较好的编码方法。 2.1 图像的调入: function yc %行程编码算法 %例如 aaabccccccddeee 才可以表示为 3a1b6c2d3e % %读图 I=imread(Lena.bmp); m n l=size(I); fid=fopen(yc.txt,w);%yc.txt 是行程编码算法的灰度级及其相应的编码表 % 2.2 行程编码算法: sum=0; for k=1:l for i=1:m num=0; J=; value=I(i,1,k); for j=2:n if I(i,j,k)=value 3 num=num+1;%统计相邻像素灰度级相等的个数 if j=n J=J,num,value; end else J=J,num,value;%J的形式是先是灰度的个数及该灰度的值 value=I(i,j,k); num=1; end end col(i,k)=size(J,2);%记录Y中每行行程行程编码数 sum=sum+col(i,k); Y(i,1:col(i,k),k)=J;%将I中每一行的行程编码J存入Y的相应行中 end end % %输出相关数据 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); 4 三、详细设计过程三、详细设计过程 3.1 算法流程图算法流程图 3.23.2 由 I=imread(Lena.bmp)把图像调入等待处理,再由行程编码算法进行计 算和压缩。实现具体的压缩功能。最后输出原图像和压缩后的像和输出压缩比 例。 读入图像 将行程编码写入 yc.txt 中 行程算法 计算压缩比 5 3.23.2 行程编码算法行程编码算法 sum=0; for k=1:l for i=1:m num=0; J=; value=I(i,1,k); for j=2:n if I(i,j,k)=value num=num+1;%统计相邻像素灰度级相等的个数 if j=n J=J,num,value; end else J=J,num,value;%J 的形式是先是灰度的个数及该灰度的值 value=I(i,j,k); num=1; end end col(i,k)=size(J,2);%记录 Y 中每行行程行程编码数 sum=sum+col(i,k); Y(i,1:col(i,k),k)=J;%将 I 中每一行的行程编码 J 存入 Y 的相应行中 end end % %输出相关数据 m1,n1,l1=size(Y); disp(原图像大小:) whos(I); disp(压缩图像大小:) whos(Y); disp(图像的压缩比:); disp(m*n*l/sum); 6 四、调试过程中出现的问题及相应解决办法四、调试过程中出现的问题及相应解决办法 首先,我们的代码不完全是自己写出来的,所以刚开始调式时出现很多 错误。比如;代码中的函数 matlab 软件不认识,不能实现函数的功能。还有函 数变量定义不符合,但更多的是调入图像显示不出结果。经过研究和修改,功 夫不负有心人,大部分错误都改正了。可是很纠结的是只输出图像压缩的数据 和压缩比例,没有输出原图像和压缩后的图像。最后经过同学的帮忙和自己的 努力,发现代码缺少输出图像语句。最终顺利完成了本次的课程设计。 7 五、程序运行截图及其说明五、程序运行截图及其说明 图 5.1 图像的大小和压缩比例 8 图 5.2 图像原图和压缩后图像 9 图 5.3 行程编码表 10 六、简单操作手册六、简单操作手册 1.首先我们完成代码部分。经过查找资料和网上查询,完整的把代码的功能能在 matlab 软 件上是先出来。 2.文档部分比较繁琐,需要结合代码的功能一步一步经过说明实现图像的行程压缩编码。 在经过 matlab 软件运行输出图像,把图像截图放在文档部分加以说明。 3.界面制作; 图 6.1 画出两个 axes1、axes2 图像显示框 11 图 6.2 把对应的程序添加到界面 12 图 6.3 显示出原图像 13 设计总结设计总结 涉及到图像压缩的算法很多,我所用的是行程编码算法。这种算法是无损压 缩,利用统计的方法,最终建立了数据与编码的关系,即利用了编码冗余实现 压缩。在这两周的图像处理的综合训练中,通过对图象处理的设计过程,我加深了 对图像压缩的理解,对 DCT 变换和行程编码和哈夫曼有所掌握,对课本中所学的 各种图像知识的进一步理解和掌握,学会了如何把学到的知识用于解决实际问题, 锻炼了自己动手的能力。 在这次的综合训练中我认识到了自己的不足。在以后的学习中我会更加注 意各个方面的能力的协调发展。在课程设计时遇到了很多的问题,在老师的帮 助,和对各种资料的查阅中,将问题解决,培养了我自主动手,独立研究的能 力,为今后在学习工作中能更好的发展打下了坚实的基础。 通过对此次图象处理综合训练的实际操作及分析,加深对图像的理解及增 强实际动手能力,锻炼了我们分析与编写软件代码的能力及团结协作的能力。 两周的课程设计很短暂,但其间的内容是很充实的,在其中我学习到了很多平 时书本中无法学到的东西,积累了经验,锻炼了自己分析问题,解决问题的能 力,并学会了如何将所学的各科知识融会,组织,来配合学习,为以后的发展 打下坚实的基础。 14 参考文献参考文献 1 张志涌,杨祖樱. MATLAB 教程. 北京:北京航空航天大学出版社,2006,9-201. 2 刘卫国. MATLAB 程序设计教程M. 北京:中国水利水电出版社,2005, 101-150 3 章毓晋.图像工程(上册)图像分析.第二版.北京:清华大学出版社,2005,7-30 4 章毓晋.图像工程(中册)图像分析.第二版.北京:清华大学出版社,2005,30- 87 5 黄爱民,安向京,骆力.数字图像处理与分析基础. 北京:中国水利水电出版社, 2005,7-50 15 致谢致谢 本课程设计的选题、材料来源、程序设计和制作和内容的安排、总体 篇章的写作等都得到了指导老师徐志刚的真诚指导和关注,以至于我的课 程设计能够按时顺利的完成。因此,特别感谢指导老师徐志刚,他以热心 和耐心成全了我的课程设计,为我制作的全过程提出了许多宝贵的意见, 特别是在编程方面给我很大程度的指导,辅助我尝试了各种函数的应用, 使我掌握了许多宝贵的知识。所以真的很感谢徐志刚老师的指导!另外, 我也很感谢班里的很多同学给我提出的意见和想法,对我的课程设计提供 了很多的帮助!最后,我希望同学们能获得更多的收获! 16 附录附录 function yc %行程编码算法 %例如aaabccccccddeee才可以表示为3a1b6c2d3e % %读图 I=imread(Lena.bmp); m n l=size(I); fid=fopen(yc.txt,w); %yc.txt是行程编码算法的灰度级及其相应的编码表 % %行程编码算法 sum=0; for k=1:l for i=1:m num=0; J=; value=I(i,1,k); for j=2:n if I(i,j,k)=value num=num+1; %统计相邻像素灰度级相等的个数 if j=n J=J,num,value; end else J=J,num,value; %J的形式是先是灰度的个数及该灰度的值 value=I(i,j,k); num=1; end end col(i,k)=size(J,2); %记录Y中每行行程行程编码数 sum=sum+col(i,k); Y(i,1:col(i,k),k)=J; %将I中每一行的行程编码J存入Y的相应行中 end end % %输出相关数据 m1,n1,l1=size(Y); 17 disp(-:) whos(I); disp(:) whos(Y); disp(:); disp(m*n*l/sum); % %将编码写入yc.txt中 for k=1:l1 for i=1:m1 for j=1:col(i,k) fprintf(fid,%d,Y(i,j,k); fwrite(fid, ); end end fwrite(fid, ); end subplot(1,2,1),imshow(I),title(原图像)%- subplot(1,2,2),imshow(Y),title(行程编码解码后的图像) save(Y)%存储,以便解码用 save(col) fclose(fid);function varargout = yc(varargin) % YC MATLAB code for yc.fig % YC, by itself, creates a new YC or raises the existing % singleton*. % % H = YC returns the handle to a new YC or the handle to % the existing singleton*. % % YC(CALLBACK,hObject,eventData,handles,.) calls the local % function named CALLBACK in YC.M with the given input arguments. % % YC(Property,Value,.) creates a new YC or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before yc_OpeningFcn gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to yc_OpeningFcn via varargin. % 18 % *See GUI Options on GUIDEs Tools menu. Choose “GUI allows only one % instance to run (singleton)“. % % See also: GUIDE, GUIDATA, GUIHANDLES % Edit the above text to modify the response to help yc % Last Modified by GUIDE v2.5 11-Jan-2013 11:24:40 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct(gui_Name, mfilename, . gui_Singleton, gui_Singleton, . gui_OpeningFcn, yc_OpeningFcn, . gui_OutputFcn, yc_OutputFcn, . gui_LayoutFcn, , . gui_Callback, ); if nargin end if nargout varargout1:nargout = gui_mainfcn(gui_State, varargin:); else gui_mainfcn(gui_State, varargin:); end % End initialization code - DO NOT EDIT % - Executes just before yc is made visible. function yc_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to yc (see VARARGIN) % Choose default command line output for yc handles.output = hObject; % Update handles structure guidata(hObject, handles); 19 % UIWAIT makes yc wait for user response (see UIRESUME) % uiwait(handles.figure_yc); % - Outputs from this function are returned to the command line. function varargout = yc_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout1 = handles.output; % - - function m_file_Callback(hObject, eventdata, handles) % hObject handle to m_file (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % - - function m_file_open_Callback(hObject, eventdata, handles) % hObject handle to m_file_open (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) filename, pathname = uigetfile( . *.bmp;*.jpg;*.png;*.jpeg, Image Files (*.bmp, *.jpg, *.png, *.jpeg); . *.*, All Files (*.*), . Pick an image); axes(handles.axes1);%用axes命令设定当前操作的坐标轴是axes_src fpath=pathname filename;%将文件名和目录名组合成一个完整的路径 img_src=imread(fpath); imshow(img_src);%用imread读入图片,并用imshow在axes_src上显示 setappdata(handles.figure_yc,img_src,img_src); title(原图); 20 % - - function m_file_save_Callback(hObject, eventdata, handles) % hObject handle to m_file_save (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) filename, pathname = uigetfile( . *.bmp;*.jpg;*.png;*.jpeg, Image Files (*.bmp, *.jpg
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年数字媒体艺术考核试题及答案
- 2025年文学创作与鉴赏考试试题及答案解析
- 2025年汽车工程师考试试卷及答案解析
- 2025年家庭医生考试试卷及答案
- 2025年环境质量检测与评估专业能力考试试卷及答案
- 2025年计算机科学基础考试试题及答案
- 养殖业合作经营与利润分配合同
- 温暖的春节作文400字15篇范文
- 《古埃及文明探索教学教案》世界历史教案
- 《美术色彩理论基础知识教学教案》
- 合肥市商场市调报告调查分析总结
- QCT25-2023年汽车干摩擦式离合器总成技术条件
- 定向钻施工合同
- 2022-2023学年黑龙江省佳木斯市小升初必考题数学检测卷含答案
- 小学一年级下学期数学无纸化测试题
- 口腔颌面外科学 第十章 颞下颌关节疾病
- 建设文化强国说课 教学设计
- 陈巴尔虎旗草原全域旅游发展总体规划
- 压铸行业常用英语专业词汇
- 立管高空作业施工专项安全方案
- GB/T 7778-2017制冷剂编号方法和安全性分类
评论
0/150
提交评论