图像增强的GUI设计要点.pdf
《图像增强的GUI设计要点.pdf》由会员分享,可在线阅读,更多相关《图像增强的GUI设计要点.pdf(28页珍藏版)》请在三一文库上搜索。
1、图像处理课程实践论文 题目:图像增强功能组件的GUI设计 院(系)信息科学与工程学院 专业通信工程 届别 班级 学号 姓名 指导老师 目录 一、空域增强1 1.1 直方图均衡化1 1.2 平滑滤波2 1.3 锐化滤波4 1.4 自适应滤波5 二、频域增强6 2.1 低通滤波6 2.2 高通滤波7 三、其他增强方法9 3.1 灰度变换9 3.2 椒盐噪声加入9 3.3 图像镜像10 3.4 图像求反10 3.5 边缘检测11 3.6 图像旋转11 3.7 打开 保存 撤销 退出 初始化12 四、GUI界面的使用说明14 4.1 简介14 4.2 具体操作14 五、功能组件测试报告15 六、 参考
2、文献16 七、 附录17 1 一、空域增强 1.1 直方图均衡化 1.1.1 知识点 直方图均衡是指将一个已知灰度分布的图像经过一种变换,使之变成一 幅具有均匀灰度分布的新图像。 把原始图的直方图变换为均匀分布的形式,这样就增加了象素灰度值的 动态范围,从而达到增强图像整体对比度的效果 直方图均衡化的增强函数需要满足两个条件: 1) EH(s) 在 0 s L-1 范围内是一个单值单增函数; 2) 对应 0 s L-1 有 0 EH(s) L-1。 上面第一个条件保证原图各灰度级在变换后仍保持从黑到白 ( 或从白到黑 ) 的排列次序。第二个条件保证变换前后灰度值动态范围的一致性。 1.1.2
3、程序设计思路 通过 histeq (X)函数实现直方图均衡。因为此函数只能对灰度图像进 行直方图均衡。故应先将彩图转为灰度图像。 直方图均衡实现程序段如下: global T axes(handles.axes2); T=getimage; k=histeq(handles.k); imshow(k); title( 经过直方图均衡后的图像 ); handles.k=k; guidata(hObject,handles); 1.1.3 结果与分析说明 1、结果 将彩图转为灰度图像: 图 1 2 在上一步的基础上对第二幅图进行直方图均衡: 图 2 2、分析和说明 图 1 和图 2 的右侧图分别是
4、左侧图的灰度变换图和经过直方图均衡化后 的图像。由于直方图均衡化增加了图像灰度动态范围,所以也增加了图像的 对比度,反映在图像上就是图像有较大的反差,许多细节可以看到比较清晰 了。 1.2 平滑滤波 1.2.1 知识点 最简单的平滑滤波是用一个像素领域的平均值作为滤波结果,此时滤波 模板的所有系数都取为1。为了保证输出图仍在原来的灰度值范围,在算得 卷积值 R后要将其除以系数总个数在进行赋值。例如对 3X3 的模板来说, 在 算得 R 后要将其除以系数9。领域平均的一般表达式为 ),(),( 2 ),( 1 ),( yxNts tsf n yxg 其中, N(x,y) 对应 f(x,y)中(x
5、,y) 的 nn 领域, 与模板 W 所覆盖的范围对应。 1.2.2 程序设计思路 conv 函数可计算起点为k=0的两个序列的卷积。 利用此函数和卷积的性 质,编写平滑滤波器的程序对图像进行领域平均平滑滤波。 平滑滤波实现的程序段如下: global T axes(handles.axes2); T=getimage; h=1 1 1;1 1 1;1 1 1; H=h/9; i=double(handles.k); k=convn(i,h); imshow(k,); 3 title( 经过线性平滑后的图像 ); handles.k=k; guidata(hObject,handles); 1
6、.2.3 结果与分析说明 1、结果 将彩图转为灰度图像: 图 3 在上一步的基础上对第二幅图叠加参数为0.05 的椒盐噪声: 图 4 对图 4 中的灰度图像进行多次的平滑滤波 图 5 2、分析说明 图 5 依次为用 3x3,5 5,7 7,9 9 平滑模板对图 4 中的灰度图像进行平滑 滤波的结果。有图可见,当所用平滑模板尺寸增大时,对噪声的消除效果有 所增强。不过同时所得到的图像变得更为模糊,可视的细节逐渐减小。 4 1.3 锐化滤波 1.3.1 知识点 图像锐化的目的是加强图像中景物的边缘和轮廓。因为边缘和轮廓都位 于灰度突变的地方,所以锐化算法的实现基于微分运算。 拉普拉斯算子是各向同性
7、的阶微分算子。数字图像 f(x,y)的二阶偏导数 可表示为: 2 2 2 2 2 y f x f f ) 1,()1,(),(2 ), 1(), 1(),(2 2 2 2 2 yxfyxfyxf y f yxfyxfyxf x f 拉普拉斯算子可增强图像中的灰度不连续边缘,减弱灰度值缓慢变化区 域的对比度,将结果叠加到原始图像上,就可以得到边缘增强后的图像。 1.3.2 程序设计思路 fspecial函数用于建立预定义的滤波算子,k = fspecial(type,para) 其中 type 指定算子的类型, para 指定相应的参数。故利用该函数进行锐化 滤波的程序编写。 锐化滤波实现的程序
8、段如下: global T axes(handles.axes2); T=getimage; K=fspecial(laplacian,0.7); k=filter2(K,T)/100; imshow(k); title( 经过线性锐化后的图像 ); handles.k=k; guidata(hObject,handles); 1.3.3 结果与分析说明 1、结果 对灰度图像经过锐化滤波后: 2、分析说明 通过对左右图的比较,可以看 出经过锐化之后的图像,其中景物 的边缘和轮廓更加的清晰。故锐化 滤波器可以用于景物边缘的检测和 提取。 5 1.4 自适应滤波 1.4.1 知识点 自适应滤波法是
9、能够在一定程度上根据环境的改变,使用自适应算法来改变 滤波器的参数和结构的滤波法。 1.4.2 程序设计思路 wiener 函数用于建立预定义的滤波算子,k = wiener2(I,m n,noise) 其中 I 是处理的数据,用 m,n 指定相应的参数。故利用该函数进行自适应 滤波的程序编写。 自适应滤波实现的程序段如下: global T axes(handles.axes2); T=getimage; k=wiener2(handles.k,5,5); imshow(k); title( 经过自适应滤波后的图像 ); handles.k=k; guidata(hObject,handle
10、s); 1.3.3 结果 经过一次自适应滤波后 6 二、频域增强 2.1 低通滤波 2.2.1 知识点 物理上可以实现的一种低通滤波器是巴特沃斯低通滤波器。一个阶为 n,截断频率为 0 D 的巴特沃斯高通滤波器的转移函数为 n vuDD vuH 2 0 ),(/1 1 ),( 低通巴特沃斯滤波器在高低频率间的过渡比较光滑,所以用巴特沃斯低 通滤波器得到的输出图其振铃现象不明显。具体来说,阶为1 时没有振铃现 象,而随着阶的增加振铃现象也增加。 一般情况下,常取使H最大值降到某个百分比的频率为截断频率。当 D(u,v)= 0 D 时,H(u,v)=0.5 。 2.1.2 程序设计思路 通过对离散
11、傅立叶变换的学习,我们知道一个有限长序列可以用N个频 域抽样值唯一的确定,即其中H(k) 是 h(n) 的离散傅立叶变换,是H(z) 在单 位圆上的均匀抽样值, 其列长 N ,即直接从频域出发, 对理想频响进行抽样, 然后,用离散傅立叶反变换求单位脉冲响应再用Z变换求系统函数。 低通滤波实现的程序段如下: axes(handles.axes2); k1=handles.k; f=double(k1);% 数据类型转换,matlab不支持图像的无符号整型的计算 g=fft2(f);% 傅里叶变换 g=fftshift(g);% 转换数据矩阵 M,N=size(g); nn=2;% 二阶巴特沃斯低
12、通滤波器 d0=50;%截止频率 50 m=fix(M/2); n=fix(N/2); for i=1:M for j=1:N d=sqrt(i-m)2+(j-n)2); h=1/(1+0.414*(d/d0)(2*nn);% 计算低通滤波器传递函数 result(i,j)=h*g(i,j); end end result=ifftshift(result); 7 k2=ifft2(result); k=uint8(real(k2); imshow(k);% 显示处理后的图像 title( 经过低通滤波后的图像 ); handles.k=k; guidata(hObject,handles);
13、 2.1.3 结果与分析说明 2、结果 将彩图转为灰度图像: 图 8 图 9 图 10 在上一步的基础上对第二幅图叠加椒盐噪声得到图9: 对灰度图像经过低通滤波之后得到如图10: 2、分析说明 由图 9 的加噪图像可以看出该图有比较明显的噪声存在,严重影响美观。经 过低通滤波进行平滑之后的灰度图像可以消除一些噪声,产生的振铃效果也较 少,但所得到的图像变的更为模糊。 2.2 高通滤波 2.2.1 知识点 一个阶为n,截断频率为 0 D 的巴特沃斯高通滤波器的转移函数为 n vuDD vuH 2 0 ),(/1 1 ),( 与巴特沃斯低通滤波器类似,高通的巴特沃斯滤波器在通过和滤掉的频 率之间也
14、没有不连续的分界。由于在高低频率间的过渡比较光滑,所以用巴 特沃斯高通滤波器得到的输出图其振铃现象不明显。 8 2.2.2 程序设计思路 与低通滤波器相似,低通滤波器的程序段如下: axes(handles.axes2); x=(handles.k); f=double(x);% 数据类型转换 k1=fft2(f);% 傅里叶变换 g=fftshift(k1);% 转换数据矩阵 M,N=size(g); nn=2; d0=25;%截止频率 25 m=fix(M/2); n=fix(N/2); for i=1:M for j=1:N d=sqrt(i-m)2+(j-n)2);% 计算高通滤波器传
15、递函数 if d自适应低通滤波器。 直接边缘检测求反后检测低通滤波后高通滤波后 六、参考文献 【1】图像处理(第 3 版) 章毓晋编著 【2】精通 MATLAB GUI 设计(第 2 版) 陈垚光等 编著 【3】数字图像处理及MATLAB 实现:学习与实验指导杨杰编著 【4】MATLAB 数字图像处理张德丰等编著 【5】详解 MATLAB 图像函数及其应用张婧 占君 陈珊编著 自适应滤波后 17 七、附录 实现此次图像课程设计的MATLAB GUI 回调函数程序如下: function varargout = ZSH(varargin) % ZSH MATLAB code for ZSH.fi
16、g % ZSH, by itself, creates a new ZSH or raises the existing % singleton*. % % H = ZSH returns the handle to a new ZSH or the handle to % the existing singleton*. % % ZSH(CALLBACK,hObject,eventData,handles,.) calls the local % function named CALLBACK in ZSH.M with the given input arguments. % % ZSH(
17、Property,Value,.) creates a new ZSH or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before ZSH_OpeningFcn gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to ZSH_OpeningFc
18、n via varargin. % % *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 ZSH % Last Modified by GUIDE v2.5 21-Jun-2014 20:30:09 % Begin initialization code - DO
19、 NOT EDIT gui_Singleton = 1; gui_State = struct(gui_Name, mfilename, . gui_Singleton, gui_Singleton, . gui_OpeningFcn, ZSH_OpeningFcn, . gui_OutputFcn, ZSH_OutputFcn, . gui_LayoutFcn, , . gui_Callback, ); if nargin end if nargout varargout1:nargout = gui_mainfcn(gui_State, varargin:); else gui_mainf
20、cn(gui_State, varargin:); end % End initialization code - DO NOT EDIT % - Executes just before ZSH is made visible. function ZSH_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a f
21、uture version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to ZSH (see VARARGIN) % Choose default command line output for ZSH handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes ZSH wait for user r
22、esponse (see UIRESUME) % uiwait(handles.figure1); % - Outputs from this function are returned to the command line. function varargout = ZSH_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be
23、 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; % - Executes on button press in openfile. function openfile_Callback(hObject, eventdata, handles) % hObject handle
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图像 增强 GUI 设计 要点
链接地址:https://www.31doc.com/p-5207458.html