图像变换程序设计.docx
- 文档编号:7769444
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:22
- 大小:1.51MB
图像变换程序设计.docx
《图像变换程序设计.docx》由会员分享,可在线阅读,更多相关《图像变换程序设计.docx(22页珍藏版)》请在冰豆网上搜索。
图像变换程序设计
*******************
实践教学
*******************
兰州理工大学
计算机与通信学院
2012年秋季学期
图象处理综合训练
题目:
图像变换程序设计
专业班级:
姓名:
学号:
指导教师:
成绩:
目录
摘要3
前言4
1.算法分析与描述5
1.1傅里叶变换........................................................................................................................5
1.2小波多尺度和重构............................................................................................................6
2.详细设计.................................................................................7
2.1算法分析和理论依据7
3.调试过程中出现的问题及相应解决办法8
4.程序运行截图及其说明9
5.简单操作手册14
6.设计总结18
参考文献19
致谢19
附录20
摘要
图像变换,是指通过某种数学映射,将图像信号从空域变换到另外的域上进行分析的手段。
在图像处理中主要用Matlab编写图像处理程序并调用Matlab图像处理的部分内部函数进行处理。
在编制好程序之后,要对程序进行相应的调试,并且进行测试,以验证程序的正确性与可用性。
调试及测试时,通过相关信息,充分验证程序的可用性。
本程序通篇均用Matlab写成,具有很高的严密性,具有很高的真实性与可靠性,也充分验证了图像处理在生活中的普遍应用。
关键字:
图像变换,傅立叶变换,Matlab
前言
图像处理,它是指将图像信号转换成数字信号并利用计算机对其进行处理的过程。
数字图像处理主要研究以下内容:
图像几何变换;如傅立叶变换、沃尔什变换、离散余弦变换等;图象锐化处理;图像编码压缩;图像增强和复原;图像分割;图像描述;图像分类(识别)。
图像是人类获取和交换信息的主要来源,因此,图像处理的应用领域必然涉及到人类生活和工作的方方面面。
随着人类活动范围的不断扩大,图像处理的应用领域也将随之不断扩大。
图像所带给人们的直观信息的特点,使得图像处理技术随着计算机技术、多媒体技术的飞速发展取得了长足的进步。
图像具有可反映人类第一感觉下的思维的魅力,这些年来,图像技术快速的向各个领域渗透。
图像变换程序要求学生在掌握计算机图象处理技术的基础知识、基本原理和方法的基础上,使用计算机图象处理方法完成图像分割程序设计。
通过该题目的分析和设计,使学生巩固计算机图象处理课程中所学到的相关知识、理论和方法。
得到计算机图象处理应用的综合训练,全面培养图象处理程序开发过程中的分析、设计、编码、测试及文档规范书写的能力,提高解决实际问题的能力。
1.算法分析与描述
1.1傅立叶变换
傅里叶变换是函数的一种正交变换,正交变换就是将一个函数分解成一组正交函数的线性组合。
一个非周期信号可以理解成一个周期无限(
)长的一个周期信号,这是相邻谱线之间的间隔
。
同时,各频率分量的幅值也就趋于无穷小,为了描述频谱特性,引入频谱密度函数
的概念。
由于
是一个无穷小量,所以取其为
,
是一个连续变换的量,得到傅里叶正、逆变换的计算公式如下:
显然,对于一个非周期信号,其频谱为连续谱。
根据以上公式,得到一维快速傅里叶变换(FFT)的变换公式:
设为
一维信号序列,令:
,则:
把上式分成奇数项和偶数项,得:
其中,
1.2一维小波多尺度分解及重构的一维小波多尺度分解及重构的MATLAB实现:
MATLAB小波工具箱提供了以下几个实现一维小波分解和重构的函数[3]:
[C,L]=WAVEDEC(X,N,’wname’),多尺度一维小波分解函数。
其中C为分解结构变量,L为个分解结构以及原始信号长度变量,X为原始信号,N为分解层度,’wname’为小波类型。
X=WAVEREC(C,L,’wname’),多尺度一维小波重构函数。
其中C,L为多尺度一维小波分解函数WAVEDEC的计算结果。
D=DETCOEF(C,L,N),一维小波变换细节序列提取函数。
其中C,L为多尺度一维小波分解函数WAVEDEC的计算结果。
’wname’为小波类型。
A=APPCOEF(C,L,’wname’,N),一维小波变换近似序列提取函数。
其中C,L为多尺度一维小波分解函数WAVEDEC的计算结果。
Y=WRCOEF(’type’,C,L,’wname’,N),一维小波系数单支重构函数。
其中,当’type’=’a’时重构近似序列,当’type’=’d’时重构高频系数;C,L,’wname’,N含义同上。
Y=UPCOEF(’type’,S,’wname’,N),一维系数的直接小波重构函数。
其中’type’,’wname’,N含义同上。
S为小波分解系数变量
2.详细设计
2.1算法分析
1、傅里叶算法理论依据
设
为连续时间信号,若
满足
则有
的傅里叶变换
并且反变换为
将
写为复数形式
且
当为离散情况时,一维离散傅里叶变换(DFT)与反变换定义如下:
以上公式由数学公式编译器编写。
3.调试过程中出现的问题及相应解决办法
程序调试是软件使用的一个重要环节,而在调试过程中可能会出现错误,这就需要对错误进行细致分析个修正:
3.1.程序错误分类:
程序错误分为三类
编译错误:
在编写程序时书写了错误的语法,编译器无法正确解释源代码而产生的错误,也称为语法错误,产生编译错误提示对话框。
实时错误:
应用程序运行期间,一条语句试图执行一条不可能执行的操作而产生的错误,也称为运行时错误,产生实时错误提示对话框。
逻辑错误:
是指程序的运行结果和程序员的设想有出入时产生的错误。
这类错误没有违背语法规则、运行时也没有执行非法语句,所以不出现错误提示,很难发现。
3.2.具体错误及处理办法部分列举
1.在源码中遗失“;”。
2.即缺少“usingnamespacestd;”。
3.调试器错误信息:
例:
errorC2065:
'cout':
undeclaredidentifier
缺少命名空间使用定义例如cout/cin/endl/<>>等在命名空间中定义的符号和标示符无法使用。
4.变量未定义就直接使用。
5.在程序中使用中文标示符,如将英文”;”错误输入成了”;”。
6.在使用输入输出流的时候错误使用了标示符“>>”“<<”。
3.3.常用的调试技巧
调试程序是一件复杂的工程,不但要求程序员对系统设计结果非常熟悉,思路清晰,更需要不断地在实践中积累经验。
以下技巧可供参考:
1.事先做好备份:
调试程序时,很容易意外地修改、覆盖或删除掉必要的代码部分,所以应先做好备份。
2.分离受怀疑的程序:
试着找到出错的代码段,将其复制到一个新的工程中,对新工程运行,检查错误,可以排除程序其它部分的干扰,提高调试效率。
3.缩小搜索范围:
与第二种方法相近。
4.程序运行截图及其说明
以www原图为例进行图像几何变换的处理,以下为www原图及处理后保存的图象。
(1)未经任何处理的图象,如图4.1所示。
图4.1www原图
(2)图象进行反傅里叶变换处理,如图4.2所示。
图4.2ww反傅里叶变换图
(3)图象进行直接变换频谱处理,如图4.3所示。
图4.3www直接变换频谱图
(4)图像进行小波多尺度和重构处理,如图4.4所示。
图4.4小波多尺度和重构
(傅立叶变换以后,时域与频域形成了对偶运算关系,因此可以通过傅立叶变换达到某些运算的简化。
5.简单操作手册
一.本系统实现图像的傅里叶变换步骤:
1.进入操作界面图:
图5.1操作界面图
2.小波多尺度和重构进入操作
图5.2操作界面
6.设计总结
在这两周的图像处理的综合训练中,通过对图象变换的设计过程,我加深了对图像变换的理解,对傅立叶变换和小波多尺度和重构的实现有所掌握,对课本中所学的各种图像知识的进一步理解和掌握,学会了如何把学到的知识用于解决实际问题,锻炼了自己动手的能力。
在这次的综合训练中我认识到了自己的不足。
在以后的学习中我会更加注意各个方面的能力的协调发展。
在课程设计时遇到了很多的问题,在老师的帮助,和对各种资料的查阅中,将问题解决,培养了我自主动手,独立研究的能力,为今后在学习工作中能更好的发展打下了坚实的基础。
通过对此次图象处理综合训练的实际操作及分析,加深对图像的理解及增强实际动手能力,锻炼了我们分析与编写软件代码的能力及团结协作的能力。
两周的课程设计很短暂,但其间的内容是很充实的,在其中我学习到了很多平时书本中无法学到的东西,积累了经验,锻炼了自己分析问题,解决问题的能力,并学会了如何将所学的各科知识融会,组织,来配合学习,为以后的发展打下坚实的基础
参考文献
[1]黄维通.VisualC++面向对象与可视化程序设计.清华大学出版社,2003
[2]RC.Gonzalez,RE.Woods,SL.Eddins著,阮秋琦,阮宇智等译.计算机图象处理(MATLAB版).北京:
电子工业出版社,2005
[3]K.R.Castleman.计算机图象处理.北京:
电子工业出版社,2002
[4]章毓晋.图像处理与分析-图像工程(上册),清华大学,2001
[5]何斌等编著.VisualC++计算机图象处理.人民邮电出版社,2002
[6]RC.Gonzalez,RE.Woods著,阮秋琦,阮宇智等译.计算机图象处理(第2版).北京:
电子工业出版社,2003
[7]张宏林编著.VisualC++计算机图象模式识别技术及工程实践.人民邮电出版社,2003.
致谢
这次综合训练中我学到了很多东西,真正做到了理论与实践相结合,得到了软件工程的综合训练,大大地提高了解决实际问题的能力,这与老师的指导和同学们的帮助是分不开的。
我的指导老师徐志刚老师在此次综合训练过程中提出了指导性的方案和架构,并指引我阅读相关的资料和书籍,使我在不熟悉的领域中仍能迅速掌握新的技术。
给予了我最大的帮助和全面的指导。
当然我的同学在程序设计中也给了我很大的帮助,没有他们,我就难以发现一些潜在的错误,在此我对他们的帮助表示感谢!
附录
2.傅里叶算法实现:
A=imread('www.jpg');
I=rgb2gray(A);
C=fft2(double(I));%对图像进行傅立叶变换
B=fftshift(fft2(double(I)));%将直流分量移到频谱图的中心
D=ifft2(B);%傅立叶反变换
figure;%画图像原始图
imshow(I);
title('原图');
figure;
imshow(log(abs(B)+1),[]);
title('直接变换频谱图');
figure;%画直接变换频谱图
imshow(abs(D),[]);
title('反傅里叶变换图');
3.小波多尺度和重构算法实现:
i=imread('www.jpg');
x=rgb2gray(i);%真彩色图像转化为灰度图像
[cA,cH,cV,cD]=dwt2(x,'db1');%对图像进行单层分解,小波为bd1
A=upcoef2('a',cA,'db1',1);
H=upcoef2('h',cH,'db1',1);
V=upcoef2('v',cV,'db1',1);
D=upcoef2('d',cD,'db1',1);%图像编码
figure
subplot(221);image(wcodemat(A,192));
title('近似细节系数');
subplot(222);image(wcodemat(H,192));
title('水平细节系数');
subplot(223);image(wcodemat(V,192));
title('垂直细节系数');
subplot(224);image(wcodemat(D,192));
title('对角细节系数');
d=idwt2(cA,cH,cV,cD,'db1');%对分解的细节系数执行单层重构,小波为db1
imshow(d,[]);
图像进入界面源代码
functionvarargout=tuxiang(varargin)
%TUXIANGMATLABcodefortuxiang.fig
%TUXIANG,byitself,createsanewTUXIANGorraisestheexisting
%singleton*.
%
%H=TUXIANGreturnsthehandletoanewTUXIANGorthehandleto
%theexistingsingleton*.
%
%TUXIANG('CALLBACK',hObject,eventData,handles,...)callsthelocal
%functionnamedCALLBACKinTUXIANG.Mwiththegiveninputarguments.
%
%TUXIANG('Property','Value',...)createsanewTUXIANGorraisesthe
%existingsingleton*.Startingfromtheleft,propertyvaluepairsare
%appliedtotheGUIbeforetuxiang_OpeningFcngetscalled.An
%unrecognizedpropertynameorinvalidvaluemakespropertyapplication
%stop.Allinputsarepassedtotuxiang_OpeningFcnviavarargin.
%
%*SeeGUIOptionsonGUIDE'sToolsmenu.Choose"GUIallowsonlyone
%instancetorun(singleton)".
%
%Seealso:
GUIDE,GUIDATA,GUIHANDLES
%Edittheabovetexttomodifytheresponsetohelptuxiang
%LastModifiedbyGUIDEv2.510-Jan-201313:
34:
37
%Begininitializationcode-DONOTEDIT
gui_Singleton=1;
gui_State=struct('gui_Name',mfilename,...
'gui_Singleton',gui_Singleton,...
'gui_OpeningFcn',@tuxiang_OpeningFcn,...
'gui_OutputFcn',@tuxiang_OutputFcn,...
'gui_LayoutFcn',[],...
'gui_Callback',[]);
ifnargin&&ischar(varargin{1})
gui_State.gui_Callback=str2func(varargin{1});
end
ifnargout
[varargout{1:
nargout}]=gui_mainfcn(gui_State,varargin{:
});
else
gui_mainfcn(gui_State,varargin{:
});
end
%Endinitializationcode-DONOTEDIT
%---Executesjustbeforetuxiangismadevisible.
functiontuxiang_OpeningFcn(hObject,eventdata,handles,varargin)
%Thisfunctionhasnooutputargs,seeOutputFcn.
%hObjecthandletofigure
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
%varargincommandlineargumentstotuxiang(seeVARARGIN)
%Choosedefaultcommandlineoutputfortuxiang
handles.output=hObject;
%Updatehandlesstructure
guidata(hObject,handles);
%UIWAITmakestuxiangwaitforuserresponse(seeUIRESUME)
%uiwait(handles.figure_tuxiang);
%---Outputsfromthisfunctionarereturnedtothecommandline.
functionvarargout=tuxiang_OutputFcn(hObject,eventdata,handles)
%varargoutcellarrayforreturningoutputargs(seeVARARGOUT);
%hObjecthandletofigure
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
%Getdefaultcommandlineoutputfromhandlesstructure
varargout{1}=handles.output;
%--------------------------------------------------------------------
functionm_file_Callback(hObject,eventdata,handles)
%hObjecthandletom_file(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
%--------------------------------------------------------------------
functionm_image_Callback(hObject,eventdata,handles)
%hObjecthandletom_image(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
%--------------------------------------------------------------------
functionm_image_fyz_Callback(hObject,eventdata,handles)
%hObjecthandletom_image_fyz(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
img_src=getappdata(handles.figure_tuxiang,'img_src');
I=rgb2gray(img_src);
img_src=fft2(double(I));%对图像进行傅立叶变换
B=fftshift(img_src);%将直流分量移到频谱图的中心
axes(handles.axes_dst);
imshow(log(abs(B)+1),[]);
%--------------------------------------------------------------------
functionm_image_fyf_Callback(hObject,eventdata,handles)
%hObjecthandletom_image_fyf(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
img_src=getappdata(handles.figure_tuxiang,'img_src');
I=rgb2gray(img_src);
C=fft2(double(I));%对图像进行傅立叶变换
B=fftshift(C);%将直流分量移到频谱图的中心
D=ifft2(B);%傅立叶反变换
axes(handles.axes_dst);
imshow(abs(D),[]);
%-----------------------------------
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图像 变换 程序设计