基于MATLAB的数字图像仿真平台系统

  1. 概述

图形用于界面(Graphical User Interfaces,GUI)是提供人机交互的工具和方法。GUI是包含图形对象(如窗口、图标、菜单和文本)的用户界面。以某种方式选择或激活这些对象时,通常会引起动作或者发生变化。一个设计优秀的GUI能够非常直观的让用户知道如何操作MATLAB界面,并且了解设计者的开发意图。MATLAB的GUI为开发者提供了一个不脱离MATLAB的开发环境,有助于MATLAB程序的GUI集成。这样可以使开发者不必理会一大堆烦杂的代码,简化程序,但是同样可以实现向决策者提供图文并茂的界面,甚至达到多媒体的效果。可以说MATLAB提供了一个简便的开发环境,可以让开发者快速上手,提高了开发者的工作效率。

  1. 完成任务

所谓的GUIDE就是图形用户界面开发环境(Graphical User Interface Development Environment),它向用户提供了一系列的创建用户图形界面的工具。这些工具大大简化了GUI设计和生成的过程。通过GUIDE完成一下任务:

1)用户可以通过菜单栏和按钮进行图像的读取,保存与退出。

2)设计图形用户界面,让用户能够通过按钮对图像进行灰度变化变成灰度图。

3)通过滑块,用户可以对图像的亮度进行调整

5) 通过按钮,用户可以查看图片的直方图。

6)能对图像加入各种椒盐噪声,并通过滤波法去除。

7)通过选项,用户可以查看图片的边缘检测图,界面中可供选择的检测方式有roberts、sobel、prewitt、log、canny五种,当用户选择orginal时显示原图。

三.设计过程

1.总体设计

通过GUIDE向导完成界面功能的布局,根据所需完成功能用户界面布局如下图1。


9c0fc872d0aba04fa5d9195653dde1c2.png
图1用户功能界面




2.控件设计及程序实现

2.1 打开图片,保存图片,退出。拖拽三个个按钮放在合适的位置,双击按钮修改字体大小、颜色等,在function Open_Callback(hObject, eventdata, handles)函数下添加如下程序即可完成打开图片控件功能。

[filename,filepath]=uigetfile({'*.bmp;*.jpg;*.png;*.jpeg;*.tif;*gif;*Image files'},'');
if isequal(filename,0)| |isequal(filepath,0)
    return;
end
str =[filepath,filename];
x=imread(str);
axes(handles.axes1)
imshow(x);
在function Save_Callback(hObject, eventdata, handles)函数下添加如下程序即可完成保存图片控件功能。
global b
new_f_handle=figure('visible','off');
new_axes=copyobj(handles.axes2,new_f_handle); set(new_axes,'units','default','position','default');
[filename,pathname fileindex]=uiputfile({'*.jpg';'*.bmp';'*.png'},'save picture as');
if ~filename
    return
else
    file=strcat(pathname,filename);
switch fileindex 
    case 1
            print(new_f_handle,'-djpeg',file);
        case 2
            print(new_f_handle,'-dbmp',file);
        case 3
            print(new_f_handle,'-dpng',file)
end
end
delete(new_f_handle);
在function Exit_Callback(hObject, eventdata, handles)函数下添加如下程序即可完成退出控件功能。
clc
close all
close(gcf)
clear


574a0c7255157f2c17016f50bbeb2b8f.png


图2.1 打开一幅图

2.2.灰度变换按钮。

先读取一幅图片显示在左边区域,通过按钮将灰度图显示在右边域。

在function Rgb2gray_Callback(hObject, eventdata, handles)函数下添加如下代码即可完成灰度变化功能。
global x
axes(handles.axes2)
y=rgb2gray(x);
imshow(y);


09b8911b8aed7547a61e19d0ada2dfd4.png


图2.2 灰度变化图

2.3 图像增强。

先读取一幅图片显示在左边区域,通过按钮将灰度图显示在右边域。可通过按钮“图像增强”或者滑块改变改变图像的强度。

在function Increase_Callback(hObject, eventdata, handles)函数下添加如下代码即可完成图像增强按钮

global x
x1=imadjust(x,[0.3 0.7],[0 1],0.5);
axes(handles.axes2)
imshow(x1);


16e92d7ffa6241cfcacef782e960be8b.png


图2.3.1图像增强

在function Untitled_4_Callback(hObject, eventdata, handles)函数下添加如下代码即可完成图像增强滑块

global x
value = get(handles.slider, 'Value');
x1=imadjust(x,[0.3 0.7],[0 1],'value');
axes(handles.axes2)
imshow(x1);


5512695b913af9bcd924dcd7d3ffefb6.png


图2.3.2改变滑块图像

2.4 噪声抑制按钮

 通过打开图片按钮打开一幅图片显示在左边区域,当用户点击噪声抑制时左边图显示家了椒盐噪声的图,右边区域显示噪声滤除后的图。在function Noise_Callback(hObject, eventdata, handles)函数下添加如下代码即可完成。
global x
global p
y=rgb2gray(x);
p = imnoise(y,'salt & pepper',0.1); %加10%的椒盐
axes(handles.axes1);
imshow(p);

g=medfilt2(p);
axes(handles.axes2);
imshow(g);


42c93337b6ee083387f95aa01d9530ca.png


图2.4 噪声抑制效果图

2.5 统计直方图按钮

先读取一幅图片显示在左边区域,通过按钮将灰度图显示在右边域。用户通过该按钮显示图片的统计直方图。在function Compression_Callback(hObject, eventdata, handles)函数下添加如下代码即可完成。
global x
h=rgb2gray(x);
axes(handles.axes2);
imhist(h);


c373b40a58d13764fa6f8cb1d66c8887.png


图2.5 直方图显示

2.6 边缘检测选择

先读取一幅图片显示在左边区域,通过按钮将灰度图显示在右边域。

用户选择选择不同的边缘检测方式,右侧显示不同的边缘图。
在function SlectchangeFuc_SelectionChangeFcn(hObject, eventdata, handles)函数下添加如下代码即可实现。
global x
global b  
str=get(hObject,'string');  
axes(handles.axes2);
y=rgb2gray(x);
dx=double(y);
switch str   
    case'Roberts'  
              R=edge(dx,'roberts');
              imshow(R);
      case'Sobel'  
             S=edge(dx,'sobel');
             imshow(S);
      case'Prewitt' 
             P=edge(dx,'prewitt');
             imshow(P);
      case'Log'     
             L=edge(dx,'log');
              imshow(L);
     case'Canny'  
              C=edge(dx,'canny');
              imshow(C);
     case'Orginal'  
               imshow(y);    
end


c0227e10a2a0a5740097cdc9da2be020.png
图2.6.1 Robrets检测




50cdc4b9f929aa1515da95e151c14f77.png
图2.6.2 Soble检测




89133891d853cb81345f90e2d30b96c8.png
图2.6.3 Canny检测




07c1d79609be6ed12c15b5d4668b58aa.png
图2.6.4 Log检测




7c1cd941e2f438c49d43aa1ee90a96a1.png
图2.6.5 Perwitt检测

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你的matlab大师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值