实验一:基于GUI的图像文件读写操作

2023-05-16

目录

一、实验目的及要求:

二、实验预习部分

三、实验内容及步骤


数字图像处理完整MATLAB代码在我的资源可以看到,为方便下载,下面是百度网盘资源:

链接:https://pan.baidu.com/s/17S7PZJwwvb3PFMFVxqEY5w 
提取码:HUAT

一、实验目的及要求

1.熟悉MATLAB环境,能够建立一个图像处理系统的GUI界面。

2.掌握如何打开一幅常见位图文件,明确MATLAB中能够处理哪些位图文件。

3.掌握如何在MATLAB中保存一幅位图文件,另存为其他格式的文件,掌握图像文件之间的相互转化方法。

4.在MATLAB进行系统的打印,退出,帮助等操作。

5.掌握如何利用MATLAB来获取位图文件的大小、颜色、高度、宽度等相关信息。

二、实验预习部分

1. 熟悉MATLAB环境,学习以下内容。

1.1 《MATLAB图形用户界面设计》文件中至少学习“图形用户界面设计工具的启动”部分的内容,“图形用户界面设计窗口”部分的“菜单编辑器部分”部分内容,“对话框设计”部分的“文件打开对话框”、“文件保存对话框”、“打印设置对话框”、“打印预览对话框”、“打印对话框”部分。可以建立一个基于菜单的GUI界面或者菜单与控件共存的GUI界面。

1.2 《Matlab图像处理教程简易教程》中学习 “图像的读取和显示”部分所列的四个内容。

2.学习并记录下列matlab命令的功能及用法

1)imread()

功能:用于读取图片文件中的数据

用法:A = imread(filename,fmt)

2)imshow()

功能:显示图像的函数

用法:imshow(I,n)

3) whos()

功能:用于列出当前工作空间中所有变量,以及它们的名字、尺寸(比如一个矩阵或数组的行列维数)、所占字节数、属性等信息。这些信息都显示在matlab中的workspace窗口中。

用法:whos(variable_list)

4) imfinfo()

功能:在图像处理中,该函数用于获取一张图片的具体信息。这些具体信息包括图片的格式、尺寸、颜色数量、修改时间等等

用法:info = imfinfo(filename,fmt)

5) imwrite()

功能:用于将图像数据写入到图像文件中, 存储在磁盘上

用法:imwrite(A,filename,fmt)

6)im2bw()

功能:使用阈值(threshold)变换法把灰度图像(grayscale image)转换成二值图像

用法:BW = im2bw(I, level)

三、实验内容及步骤

1.创建一个基于菜单或者菜单与控件共存的GUI界面,命名为:数字图像处理实验_班级_姓名。界面中除了必需的菜单项之外,可以添加功能控件,背景颜色,背景音乐等个性化的选项,运行创建好的界面结果。

此处的代码较多,上传较为复杂,暂不打算开放,需要运行结果图可以私信我。

2. 文件格式转化

1)打开一幅图像(如1.jpg),存入一个数组中;

2)显示图像如下;

%注意,你需要先下载一张你喜欢的图片
close all; %关闭当前所有图形窗口
clear all; %清空工作空间变量
clc; %清屏
[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)
return;
end
fpath=[pathname filename];
img_src=imread(fpath);
whos img_src;
imshow(img_src);

3)用whos 命令提取该读入图像的基本信息,并记录:

图像基本信息:

%此处代码同上,只是操作不同
close all; %关闭当前所有图形窗口
clear all; %清空工作空间变量
clc; %清屏
[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)
return;
end
fpath=[pathname filename];
img_src=imread(fpath);
whos img_src;
imshow(img_src);

4)用imwrite()函数将最初读入的jpg图像另存为一幅bmp图像,设为2.bmp。

close all; %关闭当前所有图形窗口
clear all; %清空工作空间变量
clc; %清屏
[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)
return;
end
fpath=[pathname filename];
img_src=imread(fpath);
imwrite(img_src,'C:\Users\A\Desktop\picture\2.bmp');
imwrite(img_src,'C:\Users\A\Desktop\picture\3.tif');
%注意上面的imwrite中的地址是保存图片的地址,你需要根据你自己的需要修改这个路径(也就是你想把这张照片保存的地址)

5)用imwrite()函数将图像另存为一幅tif图像,设为3.tif。

6)分别读入三幅图像:1.jpg、 2.bmp和3.tif;

%注意imread里的路径需要根据你的需要进行修改
close all; %关闭当前所有图形窗口
clear all; %清空工作空间变量
clc; %清屏
img_src1=imread('C:\Users\A\Desktop\picture\1.jpg');
img_src2=imread('C:\Users\A\Desktop\picture\2.bmp');
img_src3=imread('C:\Users\A\Desktop\picture\3.tif');
subplot(221),imshow(img_src1);
subplot(222),imshow(img_src2);
subplot(223),imshow(img_src3);

7)用imfinfo 命令提取该读入图像1.jpg、2.bmp和3.tif的基本信息,并记录:

1.jpg文件信息 :        2.bmp文件信息                3.tif文件信息

%同样注意路径问题
close all; %关闭当前所有图形窗口
clear all; %清空工作空间变量
clc; %清屏
info1=imfinfo('C:\Users\A\Desktop\picture\1.jpg');
info2=imfinfo('C:\Users\A\Desktop\picture\2.bmp');
info3=imfinfo('C:\Users\A\Desktop\picture\3.tif');

9)比较三幅图像jpg文件、bmp文件和tif文件的大小,比较并解释文件大小不同的原因

文件类型

bmp文件

jpg文件

tif文件

文件大小

360054 

21813 

297670 

3种文件大小不同的原因:

JPEG文件用有损压缩方式去除冗余的图像和彩色数据;tif是一种压缩图片格式,但是压缩比很低,所以和bmp并差不了多少;bmp格式,标准的位图格式,完全不压缩,体积极大。因此,对于同一图片的不同格式文件大小顺序为:JPEG<tif<bmp

10)同时将1.jpg ,2.bmp,和3.tif显示出来,观察几幅图像有无差异,若有请分析差异原因。

2.Bmp、3.tif两幅图片差异不大,因为这两种格式储存图片的保真度都很大,而1.jpg图片的失真度较大,这与三种格式储存图片数据的方法有关。

3.图像特征分析

1)读取一幅彩色图像存为img,分别用以下两种方法来获取单色图像;

a用函数rgb2gray(img)将其转换为灰度图像;显示该灰度图象;

 b用r=img(:,:,1)或g=img(:,:,2)或b=img(:,:,3)可以获取彩色图像的红、绿、蓝单色图像,为便于分析可以根据实际的图选择用哪个单色图像;并显示得到的单色图像;

%注意路径问题!!!重要的事情说三遍!!!
close all; %关闭当前所有图形窗口
clear all; %清空工作空间变量
clc; %清屏
img=imread("C:\Users\A\Desktop\picture\1.jpg");
gray=rgb2gray(img);
r=img(:,:,1);
g=img(:,:,2);
b=img(:,:,3);
subplot(221),imshow(gray);
subplot(222),imshow(r);
subplot(223),imshow(g);
subplot(224),imshow(b);

2) 用imhist()函数分别显示灰度图像的直方图和一幅单色图像的直方图,观察直方图,找出图像分割的位置点;

%注意路径问题!!!重要的事情说三遍!!!
close all; %关闭当前所有图形窗口
clear all; %清空工作空间变量
clc; %清屏
img=imread("C:\Users\A\Desktop\picture\1.jpg");
gray=rgb2gray(img);
r=img(:,:,1);
% g=img(:,:,2);
% b=img(:,:,3);
subplot(221),imshow(gray);
subplot(222),imshow(r);
% subplot(223),imshow(g);
% subplot(224),imshow(b);
subplot(223),imhist(gray);
subplot(224),imhist(r);
% subplot(221),imhist(g);
% subplot(222),imhist(b);

3)设定两个不同的阈值,用im2bw将一幅灰度图像转化为二值图像,显示不同阈值二值化后的图像;

%注意路径问题
close all; %关闭当前所有图形窗口
clear all; %清空工作空间变量
clc; %清屏
img=imread("C:\Users\A\Desktop\picture\1.jpg");
gray=rgb2gray(img);
bw1=im2bw(gray,0.3);
bw2=im2bw(gray,0.8);
subplot(221),imshow(bw1);
subplot(222),imshow(bw2);

4.记录上述每一步的函数执行语句,写入实验报告。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实验一:基于GUI的图像文件读写操作 的相关文章

随机推荐

  • 最适合Python入门到大牛必看的7本书籍,一定要收藏!

    Python零基础应该阅读哪些书籍 xff1f 我推荐这三本书 1 Python学习手册 xff08 第4版 xff09 以计算机科学家一样的思维方式来理解Python语言编程 xff0c 实用的学习指南 xff0c 适合没有Python编
  • 前端开发:深入使用proxy代理解决前端跨域问题

    在前端领域里面 xff0c 跨域指的是浏览器允许向服务器发送跨域请求 xff0c 进而克服Ajax只能同源使用的局限性限制 同源策略是一种约定 xff0c 而且是浏览器中最基本也是最核心的安全功能 xff0c 若缺少了该策略 xff0c 浏
  • 手工搭建Servlet实现

    现在作为一个Java程序员 xff0c 我们已经习惯了使用IDE和Web框架进行开发 xff0c IDE帮助我们做了编译 打包的工作 Spring框架则帮助我们实现了Servlet接口 xff0c 并把Servlet容器注册到了Web容器中
  • airflow 文档学习(二) - 概念

    1 核心功能 1 1 DAGs 有向无环图 反映所涉及的task的依赖关系 注 xff1a 搜索dag的时候 xff0c airflow只会关注同事包含 34 DAG 34 和 34 airflow 34 字样的py文件 1 2 scope
  • java使用枚举进行前后端交互,以列表方式返回前端

    在有些情况下 xff0c 有一些下拉选择器的数据项 xff0c 我们采取了枚举的方式返回前端一个列表 xff0c 但是里面的东西多 xff0c 前端不想写死 xff0c 需要提供接口返回 xff0c 如下图类似这种 第一步 xff1a 先创
  • python循环,16段代码入门Python循环语句,值得收藏!

    导读 本文重点讲述for语句和while语句 for语句属于遍历循环 xff0c while语句属于当型循环 除了两个循环语句外 xff0c 还介绍了break continue与pass三个用于控制循环结构中的程序流向的语句 在此基础之上
  • IntelliJ IDEA中Error java: 程序包org.slf4j不存在 解决办法

    前言 问题描述 是我这边重构一个工程的时候新建一个module 希望这个module仅仅做kafka消费的服务 刚刚搭建起来运行发现有异常 Error nbsp java 程序包org slf4j不存在 解决办法 很显然可以想到的就是这个里
  • Linux下的Ubuntu系统下载安装python3.9.0

    在安装python3 9 0之前 xff0c 首先要进行换源 xff0c 这样才能防止下载过慢的情况 我这里换的是阿里云的镜像源 xff0c 在终端输入一下命令 其他镜像源可以查看 xff1a https www myfreax com u
  • 操作系统的基本概念

    操作系统的基本概念 一 操作系统的基本概念1 1概念1 2特征1 2 1 并发1 2 2 共享1 2 2 1 互斥共享方式1 2 2 2 同时访问方式 1 2 3 虚拟1 2 4 异步 1 3 目的和功能1 3 1操作系统作为计算机系统资源
  • Android -No toolchains found in the NDK toolchains folder for ABI with prefix: arm-linux-androideabi

    1 原因分析 xff1a 最新版ndk xff08 version 61 25 1 8937393 xff09 的toolchains文件夹中无arm linux androideabi文件 2 解决方案 xff1a 同时安装低版本的ndk
  • Python中的函数

    一 前言 我们在写Python时 xff0c 经常需要用到函数 xff0c 在此来说一下函数 xff0c 也就是本章要介绍的函数的作用于使用步骤 文章内容有点长 xff0c 请耐心看完哦 xff0c 文末有惊喜 二 Python中函数的作用
  • Spring自学笔记(学完老杜视频后再进行修改)

    Spring 概念 Spring框架是一个储存对象的容器 xff0c 是一个轻量级的开源Java开发框架 xff0c 它的核心是控制反转 xff08 IoC xff09 和面向切面编程 xff08 AOP xff09 xff0c 它由20多
  • 5 个用于自动化的杀手级 Python 脚本

    Python 是一种功能强大的语言 xff0c 广泛用于自动执行各种任务 无论您是开发人员 系统管理员 xff0c 还是只是想通过自动化日常任务来节省时间的人 xff0c Python 都能满足您的需求 这里有 5 个 Python 脚本
  • 操作系统实验报告:生产者――消费者问题算法的实现

    生产者 消费者问题算法的实现 文章目录 生产者 消费者问题算法的实现实验内容1 问题描述 xff1a 2 功能要求 xff1a 背景知识1 xff0e 进程管理2 xff0e 信号量的有关知识 思路核心代码运行结果结论 实验内容 1 问题描
  • eslint 禁用命令

    eslint disable ESLint 在校验的时候就会跳过后面的代码 还可以在注释后加入详细规则 xff0c 这样就能避开指定的校验规则了 eslint disable no new 常用 xff1a 39 rules 39 34 c
  • Collections类(Java学习笔记)

    Collections 类是 Java 提供的一个操作 Set List 和 Map 等集合的工具类 Collections 类提供了许多操作集合的静态方法 xff0c 借助这些静态方法可以实现集合元素的排序 查找替换和复制等操作 下面介绍
  • 关于ubuntu中修改grub的一些操作

    电脑的型号 xff1a 联想小新pro14 ubuntu版本 xff1a ubuntu20 04 问题描述 xff1a 1 第一个问题 xff0c 在购买了联想小新后 xff0c 进入U盘的Ubuntu系统发现键盘失灵 xff0c 出现时灵
  • Selenium基础 — CSS选择器定位大全

    1 css属性定位 css选择器策略示例说明 id telA选择id 61 34 telA 34 的所有元素 class telA选择 class 61 34 telA 的所有元素 属性名 61 属性值 name 61 telA 除了id和
  • JavaScript — DOM的增删改查、节点、事件、文档的加载

    目录 一 DOM 二 节点 三 事件 四 文档的加载 五 DOM查询 1 获取元素节点 2 获取元素节点的子节点 3 获取父节点和兄弟节点 4 其他DOM查询的方法 常用搜索方法总结 xff1a 5 matches 与closest 六 D
  • 实验一:基于GUI的图像文件读写操作

    目录 一 实验目的及要求 xff1a 二 实验预习部分 三 实验内容及步骤 数字图像处理完整MATLAB代码在我的资源可以看到 xff0c 为方便下载 xff0c 下面是百度网盘资源 xff1a 链接 xff1a https pan bai