找回密码
 立即注册
查看: 293|回复: 0

基于MATLAB-GUI的数字图像处理

[复制链接]
发表于 2022-5-11 08:45 | 显示全部楼层 |阅读模式

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

  • 完成任务
所谓的GUIDE就是图形用户界面开发环境(Graphical User Interface Development Environment),它向用户提供了一系列的创建用户图形界面的工具。这些工具大大简化了GUI设计和生成的过程。通过GUIDE完成一下任务:
1)用户可以通过菜单栏和按钮进行图像的读取,保存与退出。
2)设计图形用户界面,让用户能够通过按钮对图像进行灰度变化变成灰度图。
3)通过滑块,用户可以对图像的亮度进行调整
5) 通过按钮,用户可以查看图片的直方图。
6)能对图像加入各种椒盐噪声,并通过滤波法去除。
7)通过选项,用户可以查看图片的边缘检测图,界面中可供选择的检测方式有roberts、sobel、prewitt、log、canny五种,当用户选择orginal时显示原图。
三.设计过程
  1.总体设计
通过GUIDE向导完成界面功能的布局,根据所需完成功能用户界面布局如下图1。



图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



图2.1 打开一幅图
2.2.灰度变换按钮。
先读取一幅图片显示在左边区域,通过按钮将灰度图显示在右边域。
在function Rgb2gray_Callback(hObject, eventdata, handles)函数下添加如下代码即可完成灰度变化功能。
global x
axes(handles.axes2)
y=rgb2gray(x);
imshow(y);



图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);



图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);



图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);



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



图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



图2.6.1 Robrets检测



图2.6.2 Soble检测



图2.6.3 Canny检测



图2.6.4 Log检测



图2.6.5 Perwitt检测

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2025-6-9 23:40 , Processed in 0.135398 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表