基于MATLAB数字图像处理平台设计Word文档下载推荐.docx
- 文档编号:17308124
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:29
- 大小:2.46MB
基于MATLAB数字图像处理平台设计Word文档下载推荐.docx
《基于MATLAB数字图像处理平台设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于MATLAB数字图像处理平台设计Word文档下载推荐.docx(29页珍藏版)》请在冰豆网上搜索。
其语法结构简单,具有极强的数值计算、数据分析、图形绘制及图像处理等功能。
具有高质量的图形可视化效果和强大的界面设计能力。
因而在数字图像处理中有着其他语言所无法比拟的优势。
图形用户界面(GUI)是提供人机交互的工具和方法。
利用GUI制作图像处理软件能够实现图像处理的各个内容,主要有:
图像空间变换:
邻域和块操作;
二值图像操作;
线性滤波和滤波器设计;
变换域处理;
图像分析和增强;
图像恢复;
图像压缩;
形态学运算等。
1绪论
1.1设计要求及目的
设计要求:
以MATLAB作为工具,开发一个图像处理软件。
主要进行图像处理的常用算法。
由以下模块组成:
图像分割。
按各个模块进行功能扩充,也可加入其它常用的图像处理功能。
设计目的:
MATLAB
软件为数字图像处理提供了功能丰富的工具,应用MATLAB友好的界面和实用高效的指令及模块,可以使人较快地认识、理解图像处理的相关概念,逐步掌握图像处理的基本方法。
此课题的设计目的是综合运用MATLAB工具箱实现图像处理的GUI程序设计,学会和掌握GUI的图像处理平台设计。
1.2课题分析
此课题利用MATLAB的GUI程序设计一个简单实用的图像处理程序。
该程序具备
图像处理的常用功能,以满足用户的使用。
程序实现的图像处理功能分为五个模块:
如图1.1所示。
除以上的数字图像处理的功能外,该程序还要实现图像的读取显示、图像的保存及退出等基本功能。
从而实现完整的数字图像平台设计,具有更好的交互性。
1.3总体设计
软件的总体设计界面主要分为两个部分:
显示区域与操作区域。
具体界面布局如图1.2所示。
显示区域:
定义两个图形区域,左面为待处理图片来显示载入的原图像,右面为通过处理后的图像。
操作区域:
通过菜单栏的编辑实现对图像的各种处理,分为文件和编辑两大部分。
通过文件中的打开操作显示出处理前的图像,在编辑中选择某个图像处理功能后,将在已处理图片下就会显示出处理后的图片。
2具体设计
2.1菜单设计
通过MenuEditor创建菜单栏如图2.1所示。
菜单的设计主要分为两大部分:
文件和编辑。
文件包含图像的打开、保存和退出;
编辑包含图像处理功能的五个模块:
图像变换、图像增强、图像分割、图像变形及其它常用处理,还有各个模块的分支。
通过此菜单来控制显示或隐藏功能键。
以图2.1的傅里叶变换为例,当添加上某一菜单后,修改名称为傅里叶变换,句柄为FFT,从而会在M文件中自动生成傅里叶变换的功能函数functionFFT_Callback(hObject,eventdata,handles),在此函数下编写能够实现傅里叶变换的程序便能实现对图像的傅里叶变换。
2.2图像的打开、保存及退出
2.2.1图像打开
图像的打开主要是通过以下程序来实现的:
“[filename,pathname]=uigetfile({'
*.jpg'
;
'
*.bmp'
*.tif'
*.*'
},'
载入图像'
);
”选择相应路径打开图像;
“file=[pathname,filename];
x=imread(file);
”读取选中的图像;
“imshow(x);
”在显示区域上显示图像。
具体操作如图2.2所示,选择“文件”菜单中的“打开”后,出现“载入图像”,选中想要处理的图片后点击“打开”,即可在显示区域中显示出处理前的图片。
2.2.2图像保存
图像的保存主要是通过以下程序来实现的:
“[sfilename,sfilepath]=uiputfile({'
保存图像文件'
'
untitled.jpg'
”选择图像文件保存的路径与格式;
“sfilefullname=[sfilepath,sfilename];
imwrite(handles.img,sfilefullname);
”实现对图像的保存。
具体操作如图2.3所示,选择“文件”菜单中的“保存”后,出现“保存图像文件”,修改文件名后点击“保存”,即可将处理后的图像保存到keshe的文件夹下。
2.2.3程序退出
程序的退出是通过“clc;
”,“closeall;
”,“close(gcf);
”,“clear;
”这些指令来清除指令窗,窗口,内存变量及函数。
具体操为选择“文件”菜单中的“退出”后,便关闭了执行界面的窗口并清除了指令窗的所有指令。
2.3图像变换
2.3.1傅里叶变换
傅里叶变换(FFT)实际上是将信号f(t)与一组不同频率的复正弦作内积,这一组复正弦是变换的基向量,傅里叶系数或傅里叶变换是f(t)在这一组基向量上的投影。
在图像处理技术的发展过程中,FFT起着十分重要的作用。
它是线性系统分析的一个有力工具,它能够定量地分析诸如数字图像之类的数字化系统。
FFT主要分为连续傅里叶变换和离散傅里叶变换,在数字图像处理中经常用到的是二维离散傅里叶变换。
程序中主要是通过二维离散傅里叶变换函数fft2(),变换后四个角部分对应于低频成分,中央部分对应于高频成分。
若想使低频成分出现在中央位置,则通过函数fftshift()将图像频谱中心从矩阵的原点移到矩阵中心。
从而实现图像的二维傅里叶变换。
具体程序见附录。
原图像及傅里叶变换后的图像如图2.4所示。
2.3.3离散余弦变换
离散余弦变换(DFT)在图像处理中占有重要的位置,它实际上是傅里叶变换的实数部分,但是它比傅里叶变换有更强的信息集中能力。
对于大多数自然图像,DCT能将大多数的信息放到较少的系数上去,因此就更能提高编码的效率。
程序中主要是通过灰度变换函数rgb2gray()及二维离散余弦变换函数dct2()来实现对图像的二维离散余弦变换,具体程序见附录。
其变换后的图像低频能量都集中在左上角区域,而向着右下角方向,频率越来越高。
原图像及离散余弦变换后的图像如图2.5所示。
2.4图像增强
图像增强是图像处理中的一类基本技术,其主要的目的改善图像的视觉效果,提高图像的清晰度。
图像增强能够扩展对比度,增强图像中对象的边缘,消除或抑制噪声或保留图像中感兴趣的某些特性而抑制另一些特性等。
图像增强方法按其处理所进行的空间不同,可分为空间域法和频率域法。
2.4.1空间域增强
空间域法是在空间域内直接对像素灰度值进行运算处理,常用的空间域法有图像的直接灰度变换和直方图均衡化,下面分别介绍两种空域上的图像增强方法。
(1)灰度变换
通过灰度变换可使图像动态范围加大,图像对比度扩展,图像清晰,特征明显,大大改善人眼的视觉效果。
程序中主要通过灰度处理函数rgb2gray()对图像进行灰度变换,将彩色图像转换成灰度图像。
原图像及灰度图像如图2.6所示。
(2)直方图均衡化
直方图均衡化是对原始图像中的像素灰度作某种映射变换,使变换后的图像灰度的概率密度是均匀分布的,即变换后图像是一幅灰度级均匀分布图像,这意味着图像灰度的动态范围得到了增加,从而可提高图像的对比度。
程序中主要通过灰度处理函数rgb2gray()先对图像进行灰度变换,然后通过直方图均衡化处理函数histeq()对灰度图像进行直方图均衡化处理。
原图像及直方图均衡化后的图像如图2.7所示。
2.4.2频率域增强
频率域法就是在图像的某种变换域内,对图像的变换值进行运算,然后通过逆变换获得图像增强效果。
这是一种间接处理方法,一般采用二维数字滤波方法来进行频率域的图像增强。
(1)低通滤波
图像的边缘以及噪声干扰在图像的频域上对应于图像傅里叶变换中的高频部分,而图像的背景区则对应于低频部分,因此可以用频域低通滤波法去除图像的高频成分,以去掉噪声,使图像平滑。
程序中采用二阶巴特沃斯低通滤波器,先用函数fft2()对图像进行二维离散傅里叶变换,然后通过低通滤波器进行滤波后,再对滤波后的图像数据通过ifft2()进行傅里叶反变换,从而得到低通滤波后的图像。
如图2.8所示。
(2)高通滤波
图像中的边缘或线条与图像频谱中的高频分量相对应,因此采用高通滤波器让高频分量顺利通过,可以使图像的边缘或线条变得更清楚,可实现图像的锐化。
程序中采用二阶巴特沃斯高通滤波器,与低通滤波过程相同,先进行傅里叶变换,然后通过高通滤波器,再进行傅里叶反变换,从而得到高通滤波后的图像,具体程序见附录。
原图像及滤波后的图像如图2.9所示。
2.5图像分割
图像分割是一种重要的图像分析技术。
为了识别和分析图像中的目标,需要将它们从图像中分离提取出来,在此基础上才有可能进一步对目标进行测量和对图像进行利用。
图像分割就是指把图像分成各具特性的区域并提取出感兴趣目标的技术和过程。
2.5.1阈值分割
灰度阈值法是把图像的灰度分成不同的等级,然后用设置灰度阈值的方法确定有意义的区域或欲分割物的边界,该方法中最简单的就是二值化的阈值分割。
程序中先通过函数graythresh()即用Otsu方法计算出全局图像阈值,再通过函数im2bw(,)基于一定阈值将图像转换成二值图像。
原图像及阈值分割后的图像如图2.10所示。
2.5.2梯度分割
梯度分割即对图像进行边缘检测,图像边缘对图像识别和计算机分析十分有用。
边缘能勾划出目标物体,使观察者一目了然。
边缘蕴含了丰富的内在信息,是图像识别中抽取图像特征的重要属性。
(1)Roberts算子
程序中先通过函数rgb2gray()对图像进行灰度变换,再通过函数edge(,'
roberts'
)即用Roberts算子识别灰度图像的轮廓,从而实现对图像的边缘检测。
如图2.11所示。
(2)Canny算子
canny'
)即用Canny算子识别灰度图像的轮廓,如图2.12所示。
(3)Sobel算子
程序中先通过函数rgb2gray()进行灰度变换,再通过函数edge(,'
sobel'
)即用Sobel算子识别灰度图像的轮廓,从而实现对图像的边缘检测。
如图2.13所示。
2.6图像变形
2.6.1翻转
上下翻转:
程序中通过函数flipud()对图像数据矩阵进行上下翻转,由于彩色图像不能直接进行矩阵翻转,因此需要先将彩色图像通过灰度变换处理后再进行翻转,原图及翻转后的图像如图2.14所示。
左右翻转:
与上下翻转相同,先将图像进行灰度变换后,通过函数fliplr()将图像数据矩阵进行左右翻转,原图及翻转后的图像如图2.15所示。
2.6.2旋转
打开图片后,选择“编辑”菜单“图像变形”中的“旋转”后,执行界面会出现调整角度的输入对话框,在对话框中输入任意角度,则原图像将会旋转任意角度,输入正数逆时针旋转,输入负数顺时针旋转。
以90为例,在对话框中输入90,则图像逆时针旋转90。
,如图2.16所示。
在程序中由prompt={'
调整角度'
};
来显示输入对话框,函数inputdlg()创建对话框和输入框,输入角度后通过函数imrotate()进行相应的旋转。
2.7其它常用处理
2.7.1亮度
当在“编辑”菜单中选择“亮度”后,会出现调整倍数的输入对话框,默认值为1,在对话框中输入数值后图像便会相应变换亮度。
输入数值小于1时,图像变亮,输入数值大于1时,图像变暗。
程序中通过函数imadjust()来实现,即将原图像的亮度值以输入数值描述的曲线关系映射到新的数值中,从而实现亮度的变化。
以输入值0.5为例,变换后的图像如图2.17所示。
2.7.2对比度
对比度增强:
选择菜单中“对比度增强”后,弹出输入参数的对话框,以输入参数2为例,对比度增强后的图像如图2.18所示。
程序中通过乘法函数immultiply()将原图像数据与输入数值相乘,从而增强图像的对比度。
对比度减弱:
选择菜单中“对比度减弱”后,弹出输入参数的对话框,同样以输入参数2为例,对比度减弱后的图像如图2.19所示。
程序中通过除法函数imdivide()将原图像数据与输入数值相除,从而减弱图像的对比度。
2.7.3截图
当选择完菜单中的“截图”后,鼠标箭头会变成一个十字,能够选择想要截取的图像部分,选中后就会直接显示出截取后的图像,如图2.20所示。
程序中通过函数imcrop()来实现的,即返回图像的一个裁剪区域,允许用户以交互方式使用鼠标选定要剪切的区域。
2.7.4底片效果
程序中通过函数imcomplement()对图像数据矩阵进行取反运算,即可实现底片效果,原图像及底片效果的图像如图2.21所示。
2.7.5二值处理
二值化即将彩色图像转换成只有0和1两个数值的图像,程序中通过二值转换函数im2bw()将彩色图像转换为二值图像。
原图像及转换后的二值图像如图2.22所示。
3结果分析
经过我们小组的不断调试,软件已经得到了完善,达到了课设的基本要求,基于MATLAB数字图像处理平台设计能实现的全部功能如下:
(1)设计图形用户界面,实现了图像的打开、保存及退出
(2)实现了对图像的傅里叶变换及离散余弦变换,其中离散余弦变换只能对灰度图像处理。
(3)实现了图像空间域增强包括灰度变换和直方图均衡化,还有图像频率域增强包括低通滤波器和高通滤波器。
其中直方图均衡化,低通滤波和高通滤波均只支持对灰度图像处理。
(4)实现了图像分割:
阈值分割和梯度分割,梯度分割有Roberts算子、Canny算子、Sobel算子。
其中梯度分割需要对图像先进行灰度变换。
(5)实现了图像的翻转和旋转。
图像的翻转只支持灰度图像。
(6)实现了图像的亮度,对比度的调整,能够对图像截图、做出底片效果及二值化处理。
实验程序虽然基本实现了以上这些功能,但遗憾的是有些功能只支持对灰度的图像处理,还不能直接对彩色图像进行处理。
4心得体会
通过两周的MATLAB课程设计实践,使我对MATLAB的使用有了进一步的了解和熟悉。
还记得当初我们小组抽到这个题目的时候,每个人看到这个题目都无所适从。
虽然曾经学过关于数字图像处理的课程,但对于MATLAB的数字图像处理的实际运用并不是很熟悉,特别是对此次GUI设计更是没有丝毫接触过的。
虽然对课题感到很懵懂,但在指导老师的提示与指导后,我们开始找到了解决问题的路径。
我们到图书馆借了几本相关的书,又从网上收集了大量的资料,为这次课设做了较为充分的准备,在参考了相关材料及程序后,我对自己要做的课设内容有了进一步的了解,并对MATLAB的使用有了更深的体会。
当然,在课设的进行过程中,我们还是遇到了不少问题。
例如,起初由于我对句柄使用以及一些函数使用的不恰当,使得在对图像文件的保存上就遇到了问题,不过在我们小组的讨论研究下轻松的就解决了。
随着课设的进行,对matlab的的熟悉度逐步加深。
在基本功能已经完成的基础上,我们开始进行一些扩张功能的尝试,比如图像的旋转、翻转,图像亮度、对比度的调整,截图等功能,也实现了较为理想的结果。
虽然这课题最终的功能还不是很完善,但是我还是较为满意的。
本次的课程设计,不但鞭策着我去巩固MATLAB的理论知识,还提高了我对MATLAB的实际操作运用,使得理论与实践相结合,为进一步学MATLAB打下了坚实的基础。
附录
functionvarargout=keshe(varargin)
gui_Singleton=1;
gui_State=struct('
gui_Name'
mfilename,...
'
gui_Singleton'
gui_Singleton,...
gui_OpeningFcn'
@keshe_OpeningFcn,...
gui_OutputFcn'
@keshe_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{:
%-------------------------------------------------------------------------------------------------------
functionkeshe_OpeningFcn(hObject,eventdata,handles,varargin)
handles.output=hObject;
guidata(hObject,handles);
%-----------------------------------------------------------------------------------------------------
functionvarargout=keshe_OutputFcn(hObject,eventdata,handles)
varargout{1}=handles.output;
functionopen_Callback(hObject,eventdata,handles)
%hObjecthandletoopen(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
[filename,pathname]=uigetfile({'
%选择路径打开图像
ifisequal(filename,0)|isequal(pathname,0)%若filename为0或pathname为0,即未选中文件
errordlg('
未选中文件'
警告'
%建立一个名为警告的错误对话框,内容为“未选中文件”
return;
else
file=[pathname,filename];
%将文件名和目录名组合成一个完整的路径
%读入图像
set(handles.axes1,'
HandleVisibility'
ON'
%设置图形对象属性,可从命令窗口中和GUIs中访问
axes(handles.axes1);
%定义图形区域axes1
imshow(x);
%显示图像
OFF'
%设置图形对象属性,不可从命令窗口中和GUIs中访问
axes(handles.axes2);
%定义图形区域axes2
%显示图像
handles.img=x;
%把图像发给handles.img
guidata(hObject,handles);
%把handles句柄更新
functionsave_Callback(hObjec
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 MATLAB 数字图像 处理 平台 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)