MATLAB Appdesigner制作图像基础处理APP



前言

Mathworks在2016年初推出R2016a,这个版本初次引入App Designer,用于代替GUIDE。我之前看了很多关于GUIDE的新手教程,在接触App Designer之后,感觉一点点的一言难尽。对于老手来说,App Designer确实有实力去代替GUIDE,界面更加灵活,而且排版都很接见现代社会;但是对于新手来说,App Designer的学习难度高于GUIDE(对于我来说)。
这里强烈推荐一个MATLAB App Designer的学习网站:
https://www.bilibili.com/video/BV1Kz4y1R7X2/?p=5&spm_id_from=333.880.my_history.page.click&vd_source=1861080cbedb7db7f4b12c242abf7138

下面就初步介绍一下App Designer的基础创建与使用,以及与遥感基础图像处理相结合。

一、app.UIAxes和app.button创建与使用

  1. 在命令行窗口输入appdesinger

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. 布局好组件之后,在上方点击代码视图,在右侧的组件浏览器找到app.button,右击选择回调—添加ButtonPushedFcn回调

在这里插入图片描述
在这里插入图片描述

  1. 在代码编辑区里面输入自己的代码,和正常代码一样

需要注意一下几点:
1、由于我们的坐标区和按钮各有两个,button2会借用button的值,所以需要声明全局变量image2
2、坐标区app.UIAxes是没有回调函数,而是里面imshow函数,将image图像矩阵作为父级反馈给app.UIAxes

 % Button pushed function: Button
        function ButtonPushed(app, event)
            global image2
            image=imread('C:\Users\稳魂\Desktop\matlab工作路径文件\史迪仔.jpg');
            image2=image;
            imshow(image,'Parent',app.UIAxes);
        end

在这里插入图片描述

  1. 按照步骤二的方法,我们添加button2的回调函数,在代码编辑区里面输入代码

同样需要里面global函数声明一下image2,便与传递

% Button pushed function: Button2
        function Button2Pushed(app, event)
            global image2
            image2=rgb2gray(image2);
            imshow(image2,'Parent',app.UIAxes2)
        end

在这里插入图片描述

  1. 完成上述步骤,之后我们点击运行
    在这里插入图片描述

二、app.image和app.button创建与使用

其实这些组件间的变量传递有很多方法,只要不触碰Appdesigner的代码写作规则,还是和基础脚本差不多。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、MATLAB appdesinger与图像基础处理结合

代码必要解释

uigetfile是调用读取文件的人机交互窗口的函数
isequal函数是判断变量是否满足某一条件
isequal函数是判断变量是否满足某一条件
padarry是用于在矩阵外围拓展一圈的函数
imhist函数是用于统计图像矩阵,[像元值,像元个数]
imfilter函数是matlab自带的锐化处理的函数

% Button pushed function: Button
        function ButtonPushed(app, event)
            %-------------------------------------------------------------------
            %  '加载影像'的button代码段
            %-------------------------------------------------------------------
            global image image2 image3 ; 
            [filename ,filepath]=uigetfile({'*.bmp;*.jpg;*.tif'},'选择图片文件');
            if isequal(filename,0) ||  isequal(filepath,0)
            errordlg('没有选中文件,请重新选择','出错');
            return;
            end
            fullpathname=strcat(filepath ,filename);
            image=imread(fullpathname);
            image2=imread(fullpathname);
            image3=imread(fullpathname);
            imshow(image,'Parent',app.UIAxes);
        end

        % Button pushed function: Button_3
        function Button_3Pushed(app, event)
            %-------------------------------------------------------------------
            %'平滑处理'的button代码段
            %-------------------------------------------------------------------
            global image2 double_image NR  R1 rows cols;
            image2=rgb2gray(image2);
            image2=padarray(image2,[1,1]);
            double_image=double(image2);         
            [rows,cols]=size(double_image);       
            
            for i=1:rows-2
                 for j=1:cols-2
                         NR=double_image(i:i+2,j:j+2);    
                         %均值滤波
                         R1=sum(NR,'all')/9;    
                         image2(i+1,j+1)=R1;
                 end
           end
           imshow(image2,'Parent',app.UIAxes4);
        end

        % Button pushed function: Button_2
        function Button_2Pushed(app, event)
            %-------------------------------------------------------------------
            % '灰度处理'的button代码段
            %-------------------------------------------------------------------
            global image  image1 ;
            image1=rgb2gray(image);
            imshow(image1,'Parent',app.UIAxes2);
        end

        % Button pushed function: Button_5
        function Button_5Pushed(app, event)
            %-------------------------------------------------------------------
            % '生成'灰度直方图的button代码段
            %-------------------------------------------------------------------
            global image1 hd_hist image1_k;
            image1_k=padarray(image1,[1,1]);
            [x,y]=imhist(image1_k,255);
            hd_hist=[x,y];
            plot(hd_hist,'Parent',app.UIAxes3);
            app.UIAxes3.XLabel.String='像元值';
            app.UIAxes3.YLabel.String='频数';
        end

        % Button pushed function: Button_4
        function Button_4Pushed(app, event)
            %-------------------------------------------------------------------
            % '锐化处理'的button代码段
            %-------------------------------------------------------------------
           global I4  image3 image_ruihua;
           I4=imfilter(image3,fspecial('laplacian',0.2),'replicate','same');
           image_ruihua=imadd(I4.*0.95,image3);
           imshow(image_ruihua,'Parent',app.UIAxes5);
        end

        % Button pushed function: Button_6
        function Button_6Pushed(app, event)
            %-------------------------------------------------------------------
            % '生成'平滑后灰度直方图的button代码段
            %-------------------------------------------------------------------
            global image2 hd_hist2 ;
            [x,y]=imhist(image2,255);
            hd_hist2=[x,y];
            plot(hd_hist2,'Parent',app.UIAxes6);
            app.UIAxes6.XLabel.String='像元值';
            app.UIAxes6.YLabel.String='频数';
        end

        % Button pushed function: Button_7
        function Button_7Pushed(app, event)
            %-------------------------------------------------------------------
            % '生成'锐化后灰度直方图的button代码段
            %-------------------------------------------------------------------
            global image3 hd_hist3  rgb_image3;
            rgb_image3=rgb2gray(image3);
            [x,y]=imhist(rgb_image3,255);
            hd_hist3=[x,y];
            plot(hd_hist3,'Parent',app.UIAxes7);
            app.UIAxes7.XLabel.String='像元值';
            app.UIAxes7.YLabel.String='频数';
        end

运行结果

在这里插入图片描述
在这里插入图片描述

  • 13
    点赞
  • 88
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
### 回答1: Matlab App Designer是一个用于创建交互式应用程序的工具,可以用于图像处理。通过使用App Designer,您可以创建一个用户友好的界面,使用户能够轻松地进行图像处理操作。您可以使用Matlab图像处理工具箱来实现各种图像处理功能,例如图像增强、滤波、分割、特征提取等。同时,您还可以将App Designer应用程序与其他Matlab工具箱集成,例如计算机视觉工具箱、深度学习工具箱等,以实现更高级的图像处理功能。总之,Matlab App Designer是一个非常强大的工具,可以帮助您轻松地创建交互式图像处理应用程序。 ### 回答2: 随着越来越多的人熟练掌握MATLAB的使用,图像处理成为了数学研究领域的一个重要的部分。MATLAB App Designer使得图像处理领域的开发人员能够通过适当的设计、演示和测试来设计用户界面。使用MATLAB App Designer作为图像处理工具,具有如下优点: 1. 通过应用程序设计器,可以快速地创建一个图像处理工具。MATLAB App Designer使得开发人员能够使用一个可视化的界面来构建一个无需多次编程的应用程序。 2. 图像处理接口很容易实现。MATLAB App Designer提供了一个交互式界面,可以简单地使用菜单、下拉列表、按钮和其他有用的工具。 3. 代码的可维护性。所有代码都保存在一个文件开发人员可以轻松地找到并解决问题。 4. 通过MATLAB App Designer可以创建友好、美观和易于使用的应用程序。它提供了不同的模板和布局选项,以使您的应用程序看起来专业并具有实际价值。 5. 通过图像处理应用程序的发布,可以将所创建的工具应用于实际应用。 总之,MATLAB App Designer使开发人员能够快速地设计出一个精美的图像处理应用程序,可以在科研和工业领域得到广泛应用。这种无需多次编程的方法充分证明了MATLAB图像处理这个领域的强大实力。 ### 回答3: Matlab是一个强大的数学软件,代表了科技界最先进计算思想,它提供了各种不同的工具箱,以便用户能够使用自己的数据和图像完成其研究。其之一就是Matlab App DesignerMatlab App Designer是一种建立交互式应用程序的软件,它具有图形化用户界面,而且易于使用。Matlab App Designer普遍应用于图像处理Matlab App Designer可让用户在无需编写代码时创建图形用户界面(GUI),轻松地深入研究和获取数据、实验和设计算法和模型,并将结果与他人共享。 对于图像处理而言,Matlab App Designer可以用于以下几个方面: 1. 图片处理Matlab App Designer可以让用户对图片进行如缩放、旋转、裁剪等一系列的操作,并对图片的像素进行精准处理,实现数字图像处理。 2. 图像分割:Matlab App Designer图像处理工具箱可以让用户快速地进行图像分割,将一个图像分成不同的部分组成,然后对每个部分进行进一步的处理和分析。 3. 特征提取:Matlab App Designer提供了多种特征提取方法,如色彩、形状、纹理等特征的提取,可以为图像分类和检测提供强有力的支持。 4. 图像恢复:Matlab App Designer能够将模糊、失真、抖动、噪声、缺陷等去除或修复,从而提高图像的质量和清晰度。 总的来说,Matlab App Designer图像处理提供了强大的工具和技术,为图像研究者开发和创建更加有效和高质量的应用程序提供了方便。它大大提高了图像处理技术的可扩展性和可视化程度,并在医疗、工业、军事、交通、影视艺术等领域得到了广泛的应用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

楠楠星球

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

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

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

打赏作者

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

抵扣说明:

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

余额充值