基于MATLAB APP Designer设计图像处理小工具

目录

实验描述

设计思路

功能模块​编辑

基础界面​编辑

开发工具

基础功能

最重要的全局变量(写在前面)

导入图片

从摄像头获取照片

彩色图像灰度化

灰度图像二值化

两幅图像叠加

目标检测(两幅图像相减)

图像灰度变换(指数变换、对数变换)

显示原图像直方图和将原图像直方图均衡化(写在一起)

添加高斯噪声和椒盐噪声

均值滤波器、中值滤波器、高斯滤波器滤波处

采用robert和二阶算子提取图像边

平滑处理和提取边缘

运动模糊,并进行图像复原处理

腐蚀、膨胀、开运算、闭运算

提取红苹果

硬币检测及计数

检测圆和矩形

 一些些创新功能

返回上一步

水平翻转

垂直翻转 

角度旋转 

相对亮度

 锐化

实验总结

参考资料(只能找到当时看的一些了)



  • 实验描述

本文章是基于MATLAB数字图像处理课程的结课作业,利用MATLAB设计了可视化界面进行基础版图像处理,其中功能包括作业要求的功能,额外还设计了一些创新功能,包括但不限于相对亮度调整、返回上一步等。其中内容多来自于课程内容和上网查询资料获取到的内容的融会贯通,通过本次实验,完成了图像处理app的实现可以进行简单的图像处理,以及特殊功能检测。


  • 设计思路

  • 功能模块

  • 基础界面

  • 开发工具

MATLAB R2021a App Designer


  • 基础功能

  • 最重要的全局变量(写在前面)

    properties (Access = private)
        originalpicture; % Description
        lastpicture;
        changedpicture;
        changedpicture2;
        upgradepicture;
        D0;
    end

  • 导入图片

函数uigetfile()打开文件选择对话框,选择文件,返回文件名和文件路径。有了文件名和文件路径后读文件函数读取相应的文件将返回的文件路径和文件名赋给图片,使用imshow将其显示在界面指定位置上如果未选择文件则弹出窗口,显示提醒未选择图片,然后返回图像界面。

[filename,pathname] = uigetfile({'*.jpg';'*.bmp';'*.*'},'选择图片');
            if isequal(filename,0)||isequal(pathname,0)
                msgbox('您未选择图片','温馨提示','help');
                return;
            else
                x=strcat(pathname,filename);
                app.originalpicture=imread(x);
                imshow(app.originalpicture,'Parent',app.UIAxes1);
                app.lastpicture=app.originalpicture;
                app.changedpicture=app.originalpicture;
            end

 

 若不选择图像,点击取消的话会弹出提醒窗口


  • 从摄像头获取照片

使用videoinput函数生成窗口对象并同步画面。利用函数获取图片的帧,当关闭窗口时,将关闭窗口时的截取图像显示在规定的坐标中

obj = videoinput('winvideo',1);
            h=preview(obj);
            while ishandle(h)
                app.originalpicture = getsnapshot(obj);  % 获取帧
                app.changedpicture=app.originalpicture;
                imshow(app.originalpicture,'Parent',app.UIAxes1);
                title(app.UIAxes1,'原始图片');
                drawnow
            end

 


  • 彩色图像灰度化

利用im2gray()函数将彩色影像RGB转换成灰度影像Grayscale,由im2gray创建的灰度图像是一个由强度值组成的单一平面。im2gray函数将RGB值转换为灰度值,将R、G、B分量加权和:0.2989*R+0.5870*G+0.1140*B

if isequal(app.originalpicture,'')
                msgbox('无图片','提示',"help");
            else
                gray=im2gray(app.originalpicture);
                app.lastpicture=app.changedpicture;
                imshow(gray,'Parent',app.UIAxes2);
                app.changedpicture=gray;
            end


  • 灰度图像二值化

函数im2bw使用阈值(threshold)变换法把灰度图像(grayscale image)转换成二值图像。所谓二值图像, 一般意义上是指只有纯黑(0)、纯白(255)两种颜色的图像。BW = im2bw(I,level),其将灰度图像 I 转换为二进制图像。输出图像 BW 将输入图像中亮度值大于 level 的像素替换为值1 (白色),其他替换为值0(黑色)。你指定 level 在 [0,1]之间,不用管输入图像的等级。函数graythresh 能用来自动计算变量 level 。如果你不指定 level ,im2bw 使用 0.5。

if isequal(app.originalpicture,'')
                msgbox('无图片','提示',"help");
            else
                black=im2bw(app.originalpicture);
                app.lastpicture=app.changedpicture;
                imshow(black,'Parent',app.UIAxes2);
                app.changedpicture=black;
            end

 


  • 两幅图像叠加

进行两幅图像的加法,或者给一幅图像加上一个常数,可以调用imadd函数来实现。imadd函数将某一幅输入图像的每一个像素值与另一幅图像相应的像素值相加,返回相应的像素值之和作为输出图像。Z = imadd(X,Y),其中,X和Y表示需要相加的两幅图像,返回值Z表示得到的加法操作结果。

[filename,pathname] = uigetfile({'*.jpg';'*.bmp';'*.*'},'选择图片');
            if isequal(filename,0)||isequal(pathname,0)
                msgbox('您未选择图片','温馨提示','help');
                return;
            else
                x=strcat(pathname,filename);
                addpic=imread(x);
                imshow(addpic,'Parent',app.UIAxes2);
            end
            result=imadd(app.originalpicture,addpic);
            imshow(result,'Parent',app.UIAxes3);


  • 目标检测(两幅图像相减)

图像减法也称为差分方法,是一种常用于检测图像变化及运动物体的图像处理方法。imsubtract函数可以将一幅图像从另一幅图像中减去,或者从一幅图像中减去一个常数。imsubtract函数将一幅输入图像的像素值从另一幅输入图像相应的像素值中减去,再将这个结果作为输出图像相应的像素值。Z = imsubtract(X,Y),其中,Z是X-Y操作的结果。以下代码首先根据原始图像生成其背景亮度图像,然后再从原始图像中将背景亮度图像减去,从而生成减去后的图像。

[filename,pathname] = uigetfile({'*.jpg';'*.bmp';'*.*'},'选择图片');
            if isequal(filename,0)||isequal(pathname,0)
                msgbox('您未选择图片','温馨提示','help');
                return;
            else
                x=strcat(pathname,filename);
                targetpic=imread(x);
                imshow(targetpic,'Parent',app.UIAxes2);
            end
            result=imabsdiff(targetpic,app.originalpicture);
            imshow(result,'Parent',app.UIAxes3);
            app.changedpicture=result;

图像的相减可以用来检测两幅图中不同的部分,检测图像之间的差异,增强细节,也可以用于一幅图像减去像素值,使图片变暗。但需要注意的是,相减的两幅图像尺寸应该相同。


  • 图像灰度变换(指数变换、对数变换)

采用log函数进行对数变换(参数值必须为double类型),用im2uint8()函数将灰度图像转换为8位图,可视化显示新生成的图。指数变换能增强图像中亮区域的细节(对比度提高),同时弱化图像中暗区域的细节(对比度降低)。

%指数变换
app.lastpicture=app.changedpicture;
            if isequal(app.originalpicture,'')
                msgbox('无图片','提示',"help");
            else
                if (ndims(app.originalpicture)==3)
                    app.originalpicture=rgb2gray(app.originalpicture);
                end
                A1 = double(app.originalpicture);
                A2 = 1.5.^(A1*0.070)-1;
                A2 = uint8(A2);
                imshow(A2,'Parent',app.UIAxes2);
                app.changedpicture=A2;
%对数变换
            app.lastpicture=app.changedpicture;
            if isequal(app.originalpicture,'')
                msgbox('无图片','提示',"help");
            else
                if (ndims(app.originalpicture)==3)
                    app.originalpicture=rgb2gray(app.originalpicture);
                end
                h=log(1+double(app.originalpicture));
                h=mat2gray(h);
                h=im2uint8(h);
                imshow(h,'Parent',app.UIAxes2);
                app.changedpicture=h;
            end

(指数)

(对数)

指数变换能增强图像中亮区域的细节(对比度提高),同时弱化图像中暗区域的细节(对比度降低)对数变换可以增强低灰度,减弱高灰度值


    • 53
      点赞
    • 357
      收藏
      觉得还不错? 一键收藏
    • 6
      评论
    ### 回答1: 在Matlab中使用App Designer进行图像处理设计是一种快速且便捷的方式。App DesignerMatlab提供的一种可视化的应用程序设计工具,它允许用户通过拖放组件和编写相应的回调函数的方式来创建图像处理应用程序。 首先,在App Designer界面中,选取一个合适的布局,如网格布局或绝对布局。然后,从工具箱中选择适合图像处理的组件,如按钮、滑动条、文本框等,并将它们放置在布局中,以便用户可以交互地操作图像处理应用程序。 接下来,为组件添加回调函数。每个组件都可以设置一个或多个回调函数,处理用户的操作事件。例如,可以为一个按钮添加一个回调函数,当点击按钮时,实现图像的加载功能;可以为一个滑动条添加一个回调函数,当滑动条的值发生变化时,实现图像的缩放或旋转功能。 在回调函数中,可以使用Matlab提供的图像处理函数来进行各种图像处理操作。例如,可以使用imread函数读取图像文件;可以使用imadjust函数进行图像亮度和对比度的调整;可以使用imrotate函数进行图像的旋转;可以使用imsave函数将处理后的图像保存到本地。 最后,还可以给应用程序添加一些外观和交互性的优化,如改变组件的颜色、字体和大小,添加图像预览的功能等。 通过使用App Designer,我们可以快速创建出一个功能完善、交互式的图像处理应用程序,以方便用户进行图像处理任务。 ### 回答2: 在Matlab中,使用App Designer可以设计图像处理应用程序。App DesignerMatlab的一个交互式开发环境,可用于创建、调试和部署应用程序界面。 首先,打开Matlab并进入App Designer环境。然后,在左侧的“App Designer”窗格中,单击“新建App”按钮。这将打开一个新的App Designer窗口,其中包含一个空白的应用程序。 接下来,我们可以开始设计图像处理应用程序的界面。在设计界面方面,可以使用各种App Designer提供的控件,如按钮、滑块、文本框等。可以根据需要在界面上添加这些控件,并调整它们的位置和大小。 在设计过程中,可以为每个控件设置属性,例如标题、提示信息、默认值等。还可以定义控件的回调函数,即用户与控件交互时要执行的操作。 在设计界面的同时,需要编写处理图像的代码。可以使用Matlab提供的图像处理功能,如图像读取、缩放、旋转、滤波等。可以将这些功能的代码添加到App Designer中的回调函数中。 设计完成后,可以点击App Designer窗口右上角的“运行”按钮,运行应用程序。此时,将会显示设计图像处理应用程序界面。用户可以通过界面上的控件与图像进行交互,并实时看到图像处理的结果。 最后,可以选择将应用程序部署为可执行文件、Web应用程序或发布为Matlab代码,以与其他人共享和使用。 总之,使用MatlabApp Designer可以方便地设计图像处理应用程序。通过简单的界面设计编写图像处理代码,可以创建出功能强大的图像处理工具,实现各种图像处理任务。

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

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

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

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

    余额充值