基于matlab GUI的数字图像处理系统

news2025/1/12 21:45:37

目 录
摘 要 I
Abstract II
第1章 绪论 1
1.1选题背景及意义 1
1.2国内外研究现状 2
1.2.1国内研究现状 2
1.2.2国外研究现状 3
1.3研究主要内容 3
第2章 数字图像处理系统设计 5
2.1设计概括 5
2.2文件 6
2.2.1打开 6
2.2.2保存 6
2.2.3退出 6
2.3图像变形 7
2.3.1图像缩放 7
2.3.2图像旋转 7
2.3.3图像翻转 8
2.3.3.2左右翻转 9
2.4噪声处理 10
2.4.1图像去噪 10
2.4.2图像加噪 12
2.5图像增强 15
2.5.1对比度增强 15
2.5.2亮度增强 15
2.5.2直方图均衡 16
2.5.3图像锐化 17
2.6图像变换 17
2.6.1图像二值化 17
2.6.2直方图分布 18
2.6.3边缘检测 18
2.6.4傅里叶变换 19
2.6.5小波变换(边沿增强) 19
2.7彩色图像处理 20
2.7.1颜色模型转换(RGB-HSV) 20
2.7.2RGB直接增强 21
2.7.3伪彩色增强 21
2.7.4假彩色增强 22
第3章 程序调试及结果分析 23
3.1实现功能 23
3.1.1软件基本操作 24
3.1.2实验结果 25
3.2边缘检测 25
3.2.1.实验原理 25
3.2.3实验结果 26
3.3提高要求 26
3.3.1实验原理 26
3.3.2实验步骤 27
3.4实验要求拓展 28
总 结 32
参考文献 33
附 录 34
1.3研究主要内容
先整体的设计一个界面,确定它所要完成的功能,查找完成各个功能所调用的函数及其用法,再考虑各功能模块的布局,然后分别调用选择的函数去实现各个模块的功能。设计一个GUI界面,调用了MATLAB里的函数来处理图像,突出的地方是对于对话框的应用,使用户在处理图像时可以灵活的设定所需要的参数,不受设计者的限制,增加功能如截图等,是使用更加的人性化。计一个数字图像处理的可视化平台,基本要求:利用MATLAB图像处理工具箱,根据需求进行程序的功能分析和界面设计,实现数字图像的灰度处理、亮度处理、截图、缩放、旋转、噪声、滤波、直方图统计、频谱分析、颜色模型转换等。
第3章 程序调试及结果分析
程序经过调试各个功能模块可以正确独立运行。同时在设计过程中,也发现程序的一些缺陷和不足:
1.一个函数只能对灰度图像处理,不能对RGB图像处理,那么如何才能对RGB图像处理:
这主要是对MATLAB函数的不够清楚,用到的很多函数是针对二维数据的,而RGB图像的数据是一个三维矩阵,所以处理要与灰度图像不同,在开始的时候,我认为应该找一个能够应用于三维矩阵的函数,结果却没找到,后来想到可以把三维数据进行降维处理,同样使用二维的函数,只要是同样处理三次。比如,彩色图像的滤波处理,直方图均衡等。
2.同一个操作对灰度图像可以使用,当用户选择的是彩色图像时,该操作就会出错:
这是由于设计程序时,本身程序是有针对性的,有些程序只能对灰度图像有效,有些对彩色图像有效,但是用户并不清楚这些,所以在设计的过程中就要考虑全面,要分开设计。在本次毕业设计中,我均对每个程序的开始时,用if isrgb(x)进行判断。
3.1实现功能
①掌握Code Composer Studio2.2 的安装和配置,熟悉TMS320C6000软件开发过程:创建工程和管理工程、编译和调试、使用观察窗口、了解图形功能(实验书P40-45);
②了解边缘检测的算法和用途,利用Sobel 算子进行边缘检测,实现基于Sobel算子的边缘检测方法(实验书P106-108) ;
③ 在②的基础上,修改核心代码,调试实现基于Prewitt算子的边缘检测方法;
④在边缘检测前,加中值滤波,去除噪声,进一步提高Prewitt算子边缘检测的效果(选做) 。
具体实现:
3.1.1软件基本操作
掌握Code Composer Studio2.2 的安装和配置,熟悉TMS320C6000软件开发过程:创建工程和管理工程、编译和调试、使用观察窗口、了解图形功能;
1.1.实验步骤 :
1.1.1 实验准备:连接设备并上电
1.1.2. 设置 Code Composer Studio2.2 在硬件仿真(Emulator)方式下运行
1.1.3. 启动 Code Composer Studio2.2
1.1.4. 创建工程
1.1.5. 编辑修改工程中的文件
1.1.6. 基本调试功能
1.1.7. 使用观察窗口
1.1.8. 文件输入/输出
1.1.9. 图形功能简介
⑴. 执行 ViewGraphTime/Frequency打开 Graph Property Dialog窗口;
⑵. 修改属性为如下值并确定:
Graph Title: Input
Satrt Address: inp_buffer
Acquisition Buffer Size: 100
Display Data Size 100
DSP Type: 32-bit signed integer
在弹出的图形窗口中单击鼠标右键,选择“Clear Display”。
⑶. 按 F12 运行程序.观察 input 窗口的内容。


% --------------------------------------------------------------------
function tuxiangxuanzhuan_Callback(hObject,eventdata,handles)
% hObject    handle to tuxiangxuanzhuan (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
axes(handles.axes2);
prompt={'输入旋转角度:'};
defans={'30'};
p=inputdlg(prompt,'输入参数'1,defans);
p1=str2num(p{1});
y=imrotate(handles.img,p1)imshow(y);



% --------------------------------------------------------------------
function tuxiangfanzhuan_Callback(hObject,eventdata,handles)
% hObject    handle to tuxiangfanzhuan (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)


% --------------------------------------------------------------------
function file_open_Callback(hObject,eventdata,handles)
% hObject    handle to file_open (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

[filename,pathname] = uigetfile( ...
{'*.bmp;*.jpg;*.png;*.jpeg','Image Files (*.bmp,*.jpg,*.png,*.jpeg)';...
'*.*''All Files (*.*)'}...
'Pick an image');
if isequal(filename,0)||isequal(pathname,0)
    errordlg('没有选中文件''出错');
    return;
else 
   file=[pathname,filename];
   global S   
   S=file;
   x=imread(file);
   axes(handles.axes1);
   imshow(x);
   handles.img=x;
   handles.noise_img=x;
   guidata(hObject,handles);% 非常重要,一定不能少!!!存储figure数据
end





% --------------------------------------------------------------------
function file_save_Callback(hObject,eventdata,handles)
% hObject    handle to file_save (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

 [filename ,filepath]= uiputfile({'*.bmp''BMP files';'*.jpg;''JPG files'}'Pick an Image');
   if ~isequal([filename,filepath][00])
      filefullname=[filepath ,filename];
      img=getimage(handles.axes2);% 取得axes2的图像数据
      imwrite(img,filefullname);
   else
      msgbox('你按了取消键''保存失败');
      return
   end
  

% --------------------------------------------------------------------
function file_exit_Callback(hObject,eventdata,handles)
% hObject    handle to file_exit (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
clc;
close all;
close(gcf);% gcf获得当前图像的句柄


% --------------------------------------------------------------------
function shangxiafanzhuan_Callback(hObject,eventdata,handles)
% hObject    handle to shangxiafanzhuan (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

axes(handles.axes2);
x=handles.img;
if isrgb(handles.img) 
    for k=13 
        y(:,:,k)=flipud(x(:,:,k));%上下翻转函数
    end
    imshow(y);
else
    x=handles.img;
    y=flipud(x)imshow(y);
end



% --------------------------------------------------------------------
function zuoyoufanzhuan_Callback(hObject,eventdata,handles)
% hObject    handle to zuoyoufanzhuan (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
axes(handles.axes2);
x=handles.img;
if isrgb(handles.img) 
    for k=13 
        y(:,:,k)=fliplr(x(:,:,k));%左右翻转函数
    end
    imshow(y);
else
    x=(handles.img);
    y=fliplr(x);
    imshow(y);
end

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/19548.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring Cloud Gateway 使用示例

Spring Cloud Gateway 使用示例 作者: Grey 原文地址: 博客园:Spring Cloud Gateway 使用示例 CSDN:Spring Cloud Gateway 使用示例 说明 Spring Cloud Gateway 用于构建 API 网关,基于 Spring WebFlux。 在Spr…

【雷达通信】回波数据处理(Matlab代码实现)

👨‍🎓个人主页:研学社的博客 💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜…

【VRP问题】基于蚁群算法求解配送路径最短问题附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法 …

静态成员函数与回调函数

1. 静态成员函数 1.1 静态成员函数调用 如何代码块里的函数get_object_count是静态成员函数,对静态成员函数无论是通过类名还是通过对象或对象指针调用,最终都会被编译器转换为全局非成员函数的调用。例如obj.get_object_count()或Point3d::get_object…

BigDecimal精度丢失问题

浅谈BigDecimal精度丢失问题 文章目录浅谈BigDecimal精度丢失问题一. 简介二. 错误使用三. 原因分析四. 正确使用一. 简介 ​ Java在java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数&#…

大数据Kudu(二):Kudu架构

文章目录 Kudu架构 一、​​​​​​​Kudu存储模型及概念 二、​​​​​​​​​​​​​​Kudu table存储原理 Kudu架构 一、​​​​​​​Kudu存储模型及概念 Kudu有自己的数据存储模型,不依赖于HDFS、Hive、HBase其他大数据组件。Kudu有自己的集群&#…

Oracle存储过程入门教程(通俗理解存储过程)

Oracle存储过程入门通俗介绍一、存储过程通俗理解二、创建存储过程基本语法(汇总)三、执行存储过程的方式(5种)四、网上现有的创建存储过程的两种方式解释(看注释)五、一些存储过程示例(仅供参考)六、其他语…

蒸馏+Distilling Knowledge via Knowledge Review论文笔记

文章目录一、前言二、蒸馏1.背景介绍2.知识蒸馏和迁移学习之间的区别3.Hinton提出的知识蒸馏Pipeline4.蒸馏的知识形式5.知识蒸馏的方法三、Distilling Knowledge via Knowledge Review论文笔记1.思想介绍2.Pipeline3.实验结果参考文献一、前言 近期在阅读cvpr 2021的一篇关于蒸…

通过Tomcat / Small Tomcat,如何部署Servlet?(超详细)

目录 基于Tomcat对Servlet进行部署 一、创建项目 二、引入Servlet依赖 三、构建目录结构 四、编写代码 五、打包程序 六、部署程序 七、验证程序 基于Smart Tomcat对Servlet进行部署 第一步:下载Smart Tomcat插件 第二步:进行相关配置 第三步…

【Unity3D】选中物体描边特效

1 前言 描边的难点在于如何检测和识别边缘,当前实现描边特效的方法主要有以下几种: 1)基于顶点膨胀的描边方法 在 SubShader 中开 2 个 Pass 渲染通道,第一个 Pass 通道渲染膨胀的顶点,即将顶点坐标沿着法线方向向外扩…

Android BLE HIDS Data ,从问询DB 到写入Android 节点的flow 之一

BLE 的HIDS服务,可以理解为BR/EDR HID在BLE 上的简化版,因BLE的特殊性,BR/EDR HID的部分feature在HIDS 中被移除。 本文将讨论Android 蓝牙BLE 中HIDS 服务如何接收 Data 并写入到Android 节点"/dev/uhid"的flow。----关于Android…

openpowerlink 01

源码地址: https://sourceforge.net/projects/openpowerlink/ 源码目录 qt 源码目录 qt MN 源码 MN是主站的意思 用cmake 构建 qt cmakelists.txt分析 文件 mnobd.cdc: 此文件用于配置 MN 堆栈。它包括MN和所有CN的所有配置数据,包括网…

云安全解决方案安全保障体系框架

安全需求和挑战 从风险管理 的角度讲,主要就是管理资产、威胁、脆弱性和防护措施及其相关关系,最终保障云计算平台的持续安全,以及 其所支撑的业务的安全。 云计算 平台是在传统 IT技术的基础上,增加了一个虚拟化层,并…

[Spring MVC7] 解决Redis乱码前缀问题

最近在做Redis缓存的时候,遇到了一个棘手的问题,简单来说就是项目使用Spring的RedisTemplate进行Redis数据存取操作,实际应用中发现Redis中key和value会出现“无意义”乱码前缀。如果是普通的java程序是没有这个问题。 本文解决Redis乱码问题…

基于Matlab-gui信号系统设计

目 录 1绪论 - 1 - 2系统分析和开发软件概述 - 6 - 2.1 需求分析 - 6 - 2.2系统开发环境和运行环境 - 6 - 2.3 Matlab图形用户界面(GUI) - 6 - 2.4 系统主要目标及功能 - 7 - 2.4.1 系统目标 - 7 - 2.4.2 系统主要功能 - 8 - 3系统软件平台的设计 10 3.1系统整体框图 10 3.2系统…

阿里的三个「价值支点」

历史总是轮回的。 2015年5月,身处低谷的阿里换了掌舵人,张勇由COO升任CEO,随后进行了一轮组织架构调整,并通过新零售、淘宝直播、阿里云等业态为阿里安上未来发展引擎。 当时的阿里市值涨至2000亿美元左右,华尔街投资…

终端天线—11.NFC线圈仿真

NFC线圈单体仿真 NFC线圈主要根据终端设备预留的空间大小,去设计走线宽度和圈数以及面积,NFC单体主要关注其13.56MHz处的电感量大小,以及阻抗的虚部和实部,可以根据ST和NXP芯片的要求去设计。 一、Original model 1.Simulation …

C语言文件操作【详解】

本期介绍🍖 主要介绍:为什么使用文件,什么是文件,文件的打开和关闭的操作方法,文件的顺序读写于随机读写,文件读取结束的判定👀。 文章目录一、为什么使用文件🍖二、什么是文件&…

React 入门:使用脚手架写一个Hello组件

文章目录本文目标开发前的准备编写主页面 index.html编写外壳组件 App.js编写入口文件 index.js代码组件化开发 Hello 组件开发 Welcome 组件引用组件组件化实现效果样式的模块化提升编码效率本文目标 通过使用脚手架确实让我们很方便的创建一个 React 项目基础代码结构&#…

力扣(LeetCode)11. 盛最多水的容器(C++)

双指针贪心 盛水的面积 长度 \times 左右柱子最低高度 area(r−l)min(height[l],height[r])area (r-l)\times min(height[l],height[r])area(r−l)min(height[l],height[r]) 初始时,我们不知道每个柱子的高度,但是我们可以选取最左侧柱子和最右侧柱子…