【学生作业】数字图像处理之MATLAB大作业:自制图像处理小工具

这篇具有很好参考价值的文章主要介绍了【学生作业】数字图像处理之MATLAB大作业:自制图像处理小工具。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

〇、写在前面

  本文为一个刚入门 MATLAB 的学生所写,内容是使用 APP Designer 做一个 GUI 界面的图像处理的小工具。还有很多不足,欢迎批评指正。
  APP Designer 学习教程指路👉MATLAB App Designer基础教程Matlab GUI界面设计
  作业要求指路👉数字图像处理之matlab大作业:自制图像处理小工具

一、设计思路

  最开始画的界面(左)和最终完成界面(右)如下图所示。
【学生作业】数字图像处理之MATLAB大作业:自制图像处理小工具
  我最开始的设计是有左右切换按钮的,但后来发现只做一页更加方便也更好看,所以就改了一下。

二、功能模块

  在开始敲代码之前,首先了解一下局部变量和全局变量。课程指路👉局部变量和全局变量的理解和类的解释
  我在这个作业中一共定义了四个全局变量:

    properties (Access = private)
        Super_Image    % 全局图像
        Temp_Image     % 临时图像
        Change_Image   % 添加噪声后的图像
        Count_Image    % 硬币计数
    end

  在知道什么是全局变量后,我们就可以开始一步一步来码代码啦!

1、导入图片

从您的计算机中选择图像

  导入图片可以从文件夹导入图片,也可以从摄像头加载图片,我选择的是从文件夹导入图片。学习 uigetfile( ) 函数的教程指路👉错误提示框和uigetfile交互式获取文件-strcat函数拼接

  我在看了教程之后,再结合了一些网上的其他内容(找不到链接了),写下了以下代码:

            %从资源管理器获取图像
            [filename, pathname]=uigetfile(...
                {
   '*.tif;*.bmp;*.png;*.jpg',...
                'Image Files(*.tif,*.bmp,*.png,*.jpg)'},...
                '选择图片');
            if isequal(filename,0) || isequal(pathname,0)
                return;
            else
            
                %记录获取文件的名字和路径
                app.Super_Image = strcat(pathname,filename);  %将读取到的图像赋给全局图像
                app.Temp_Image = strcat(pathname,filename);   %将读取到的图像赋给临时图像
            end
            
            im = imread(app.Super_Image);                     %读取全局图像
            imshow(im,'Parent',app.Ori_Image);                %将全局图像显示在原图坐标区

  将以上代码添加到 “打开图像” 按钮回调函数中,可实现在文件夹获取图片的效果:

【学生作业】数字图像处理之MATLAB大作业:自制图像处理小工具

2、保存图像

将处理后的图像保存到您的计算机中

  这一部分内容我是参考了网上的一些案例,能够实现将效果预览坐标区的图像保存到计算机中。
  代码如下:

            if ~isempty(app.Pri_Image)
                [file, path] = uiputfile('*.png','命名图片并保存到您的计算机中');
                save = [path file];
                if ~(isequal(file, 0) || isequal(path,0))
                    imwrite(app.Temp_Image,save,'png');
                end
            else
                msgbox("操作失败,预览图像为空!","错误","error");
            end

【学生作业】数字图像处理之MATLAB大作业:自制图像处理小工具

3、清空面板

将坐标区以及直方图清空

  使用cla函数清空坐标区,达到清空显示的效果,将全局变量图片赋值为[ ]空矩阵,达到清空图片的效果。代码如下:

            cla(app.Pri_Plot);
            cla(app.Ori_Plot);
            cla(app.Pri_Image);
            cla(app.Ori_Image);
            app.Super_Image=[];
            app.Temp_Image=[];
            app.Change_Image=[];
            app.Count_Image=[];

4、退出程序

通过对话框提示实现交互性关闭程序

  使用delete函数关闭整个程序主界面实现退出的效果,close也能达到相同的效果,且效果更好,能关闭所有的窗口。代码如下:

           choice = questdlg('确定要退出吗?','提示','确定','取消','取消');
            switch choice
                case '确定'
                  % delete 和 close 任选其一
                    delete(app.UIFigure); %退出程序
                    % close all;            %关闭所有窗口
                    return;
                case '取消'
                    return;
            end

【学生作业】数字图像处理之MATLAB大作业:自制图像处理小工具

5、彩色图像灰度化

对图像进行灰度化处理,并弹窗提示是否继续进行二值化处理

  获取原图像大小以及判断通道,如果只有一个通道说明为灰度图,则不需要变换;如果不止一个通道则进行变换。使用rgb2gray函数将图片转化为灰度图。在图片转化为灰度图后可使用im2bw函数将灰度图二值化。作业要求将彩色图像灰度化,灰度图像二值化,所以我在将彩色图像灰度化后加了一个弹窗,询问是否将图像二值化。
  代码如下:

            if isempty(app.Temp_Image)
                return;
            end
            %读取原图
            app.Temp_Image = app.Super_Image;
            im = imread(app.Temp_Image);
            [~,~,h] = size(im);  % 获取原图像的大小
            if h==1
                Grayim = im;  % 如果只有一个通道说明是灰度图像,不需要做变换
            else
                Grayim = rgb2gray(im);
            end
            imshow(Grayim,'Parent',app.Pri_Image);
            app.Temp_Image = Grayim;
            choice = questdlg('已将图像灰度化,要将图像二值化吗?','提示','确定','取消','取消');
            switch choice
                case '确定'
                    BWim = im2bw(app.Temp_Image);%二值化
                    imshow(BWim,'Parent',app.Pri_Image);
                    app.Temp_Image = BWim;
                    return;
                case '取消'
                    return;
            end

【学生作业】数字图像处理之MATLAB大作业:自制图像处理小工具

6、图像二值化

将图像进行二值化

  与上一点差不多,就少了个弹窗,这里就不放代码和截图了。

7、灰度变换

对图像进行指数变换和对数变换

  这里我是做了一个弹窗来选择要进行哪种变换。
  代码如下:

            if isempty(app.Temp_Image)
                return;
            end
            %读取原图
            app.Temp_Image = app.Super_Image;
            im = imread(app.Temp_Image);
            [~,~,h] = size(im);  % 获取原图像的大小
            choice = questdlg('请选择要进行的变换操作','灰度变换','指数变换','对数变换','');
            switch choice
                case '指数变换'
                    if h==1
                        Grayim = double(im);
                    else
                        Grayim = double(rgb2gray(im));
                    end
                    Grayim2 = 1.5.^(Grayim*0.070)-1;
                    Grayim2 = uint8(Grayim2);
                    imshow(Grayim2,'Parent',app.Pri_Image);
                    app.Temp_Image = Grayim2;
                    return;
                case '对数变换'
                    if h==1
                        Grayim = im2double(im);
                    else
                        Grayim = im2double(rgb2gray(im));%灰度化
                    end
                    Grayim2 = 2*log(Grayim+1);
                    imshow(Grayim2,'Parent',app.Pri_Image);
                    app.Temp_Image = Grayim2;
                    return;
            end

  实验结果如下,从左往右依次为:提示弹窗、指数变换和对数变换。我们可以看到,对数变换图像更亮,指数变换图像更暗,这是因为对数函数会扩张低灰度区域压缩高灰度区域,因此低灰度区域细节会增强,图像整体会变亮,而指数函数则相反。

【学生作业】数字图像处理之MATLAB大作业:自制图像处理小工具

8、镜像变换

对图像进行水平镜像、垂直镜像、以及水平垂直镜像的处理

  将图片每行(列)元素的顺序翻转即可达到镜像的效果,在 MATLAB 中可使用 flip (A,dim) 函数实现,其中 A 为需要处理的对象,dim = 1 时为行翻转,dim=2 时为列翻转。
  MATLAB 函数官方手册 flip (A,dim) 指路👉翻转元素顺序
  代码如下:文章来源地址https://www.toymoban.com/news/detail-510073.html

            if isempty(app.Temp_Image)
                return

到了这里,关于【学生作业】数字图像处理之MATLAB大作业:自制图像处理小工具的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数字图像处理之matlab大作业:美图秀秀

    1、放大缩小 从变量上看,图片是放大缩小了,但显示出来有点问题,应该是显示设置的原因。缩小的这张图不就是马赛克么~  2、翻转和旋转    3、图像剪切  4、图像增强(提高对比度) 5、磨皮 6、美白 参考:【数字图像处理】实验(3)——图像综合应用:皮肤美化(

    2024年02月11日
    浏览(34)
  • 美颜算法--数字图像处理作业

    请为图中人做美肌处理,去痘或去皱纹。(2选1,或自选图片) 作业内容请包含所用的算法说明,效果图,主要算法的代码,以及对效果图的分析。所有内容用图片或文字的形式提交,不要用附件。 2.1 分析问题         图一可见大量痘点,痘点在途中属于噪声,考虑首先

    2024年02月03日
    浏览(41)
  • 数字图像处理大作业实验报告

         《数字图像处理》 期末大作业 班    级:数字媒体技术2020级1班 姓    名:快乐的小蓝 学    号:XXXXXXXXX XXXX大学信息学院 目录 一、任务描述 二、设计思路 三、功能模块 1 人脸定位 1.1 算法原理 1.检测最大连通域 2.基于肤色的检测 3.使用matlab自带的工具人脸识别

    2023年04月23日
    浏览(49)
  • 数字图像处理期末大作业-美图秀秀

    本项目是以matlab为主语言并设计GUI界面的一款简易美图秀秀,包含基础的图像处理和一些常见美颜算法 对于一些matlab较难实现的算法采用C++或python来实现 ⭐️ github地址:https://github.com/mibbp/MeituShow 里面有我完整的代码,你想直接运行记得看readme配置一下环境,本博客更多的

    2024年02月09日
    浏览(49)
  • 数字图像处理——大作业 基于车道信息的违法车辆车牌识别

    车牌识别系统广泛应用于交通管理、收费站、城市交叉口、港口和机场、机动车检测、停车场管理等不同的场所,对提高这些场所交通系统的管理水平和自动化程度具有重要的意义[1]。车牌自动识别系统主要包括车牌定位、车牌分割、车牌字符识别三部分。 其中,仅就车牌字

    2024年02月07日
    浏览(55)
  • 数字图像处理-matlab图像内插

    目标各像素点的灰度值代替源图像中与其最邻近像素的灰度值 参考博客 假设一个2X2像素的图片采用最近邻插值法需要放大到4X4像素的图片,右边该为多少? 最近邻插值法坐标变换计算公式: s r c X = d s t X ∗ ( s r c W i d t h / d s t W i d t h ) srcX=dstX*(srcWidth/dstWidth) src X = d s tX ∗

    2024年02月03日
    浏览(56)
  • 基于matlab的数字图像处理之彩色图像处理

    一、实验目的 (1)了解如何利用RGB分量生成简单的图像。 (2)熟练掌握RGB彩色模型转换到HIS彩色模型的过程。 (3)熟练掌握RGB图像的彩色分割。 (4)熟练掌握彩色图像如何在向量空间中进行边缘检测。 二、实验仪器(软件平台)     计算机、MATLAB软件 三、实验原理

    2024年02月06日
    浏览(43)
  • matlab数字图像处理之图像增强

    图像处理 基本目的之一是改善图像质量,而改善图像最常用的技术是图像增强的目的是为了改善图像的视觉效果,使图像更加清晰,便于人和计算机对图像进一步的分析和处理 图像质量 的基本含义是指人们对一幅图像视觉感受的评价。图像增强的目的就是为了改善图像显示

    2024年02月04日
    浏览(54)
  • 数字图像处理实验之Matlab对图像的基本处理

    1、提取Lena图像的左半上角部分,与原始Lena图像在同一个figure中显示,并做适当命名 效果图 2、利用 imnoise , 对原始Lena图像叠加高斯噪声,产生4幅、14幅、140幅的含噪图像。对这些含噪图像采用 相加  运算,来验证、比较图像相加消除叠加性噪声的效果。将原始图像、1幅噪

    2024年02月03日
    浏览(57)
  • 数字图像处理 关于matlab的图像变换

    熟悉及掌握图像的傅里叶变换、离散余弦变化原理及性质,实现图像的频率域变换。 1. 读入一幅图像,分别为图像添加叠加密度为0.04的椒盐噪声,均值为0方差为0.02的高斯噪声,做FFT变换。将原始图像、原始图像频谱图、添加噪声后的图像,以及噪声图像的频谱图同时显示出

    2024年02月05日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包