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

目录

一、实验目的及要求:

二、实验预习部分

三、实验内容及步骤


数字图像处理完整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.记录上述每一步的函数执行语句,写入实验报告。

  • 10
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值