一、实验目的:
1.熟悉及掌握在MATLAB\Python中能够处理哪些格式图像。
2.熟练掌握在MATLAB\Python中如何读取图像。
3.掌握如何利用MATLAB\Python来获取图像的大小、颜色、高度、宽度等等相关信息。
4.掌握如何在MATLAB\Python中按照指定要求存储一幅图像的方法。
二、实验内容:
熟悉相关图像数值计算软件环境,以及相关基本操作。
1.利用imread()函数读取一幅图像,假设其名为flower.tif,存入一个数组中;
2.利用whos 命令提取该读入图像flower.tif的基本信息;
3.利用imshow()函数来显示这幅图像;
4.利用imfinfo函数来获取图像文件的压缩,颜色等等其他的详细信息;
5.利用imwrite()函数来压缩这幅图象,将其保存为一幅压缩了像素的jpg文件,设为flower.jpg;语法:imwrite(原图像,新图像,‘quality’,q), q取0-100。
6.同样利用imwrite()函数将最初读入的tif图象另存为一幅bmp图像,设为flower.bmp。
7.用imread()读入图像:Lenna.jpg 和cameraman.jpg;
8.用imfinfo()获取图像Lenna.jpg和cameraman.jpg 的大小;
9.用figure,imshow()分别将Lenna.jpg和cameraman.jpg显示出来,观察两幅图像的质量。
10.用im2bw将一幅灰度图像转化为二值图像,并且用imshow显示出来观察图像的特征。
11.将每一步的函数执行语句拷贝下来,写入实验报告,并且将相应结果截图拷贝下来。
三、实验程序、实验结果与实验分析:
1.实验程序:
(1)脚本Test1_1实现了步骤1-6,程序代码如下:
a=imread('flower.tif');
whos a
imshow(a)
imfinfo('flower.tif')
imwrite(a,'flower.jpg','quality',10);
imwrite(a,'flower.bmp');
(2)脚本Test1_2实现了步骤7-11,程序代码如下:
b=imread('Lenna.jpg');
c=imread('cameraman.jpg');
info1 = imfinfo('Lenna.jpg');
size1 = [info1.Height, info1.Width];
info2 = imfinfo('cameraman.jpg');
size2 = [info2.Height, info2.Width];
figure;
imshow(b);
title('Lenna.jpg');
figure;
imshow(c);
title('cameraman.jpg');
grayImg=rgb2gray(b);
threshold = graythresh(grayImg);
binaryImg = im2bw(grayImg, threshold);
figure;
subplot(1, 2, 1);
imshow(grayImg);
title('原始灰度图像');
subplot(1, 2, 2);
imshow(binaryImg);
title('转换后的二值图像');
2.实验结果:
(1)脚本Test1_1实验结果(步骤1-6):
①提取该读入图像flower.tif的基本信息
②显示图像flower.tif
③利用imfinfo函数来获取图像文件的压缩,颜色等等其他的详细信息
④将图象保存为一幅压缩了像素的jpg文件
⑤将flower.tif图象另存为bmp图像
(2)脚本Test1_2实验结果(步骤7-11):
①获取图像Lenna.jpg和cameraman.jpg 的大小
②分别将Lenna.jpg和cameraman.jpg显示出来
③将灰度图像转化为二值图像
3.实验分析
(1)脚本Test1_1实验分析(步骤1-6):
1.利用imread()函数读取图像flower.tif,存入数组中;
a=imread('flower.tif');
2.利用whos 命令提取图像flower.tif的基本信息;
whos a
3.利用imshow()函数来显示这幅图像;
imshow(a)
4.利用imfinfo函数来获取图像的压缩,颜色等等其他的详细信息;
imfinfo('flower.tif')
5.利用imwrite()函数来压缩这幅图象,将其保存为jpg文件,设为flower.jpg;此处 q取10。
imwrite(a,'flower.jpg','quality',10);
6.利用imwrite()函数将最初的图像flower.tif另存为bmp图像,设为flower.bmp。
imwrite(a,'flower.bmp');
(2)脚本Test1_2实验分析(步骤7-11):
1.用imread()读入图像:Lenna.jpg 和cameraman.jpg;
b=imread('Lenna.jpg');
c=imread('cameraman.jpg');
2.用imfinfo()获取图像Lenna.jpg和cameraman.jpg 的大小;
info1 = imfinfo('Lenna.jpg');
size1 = [info1.Height, info1.Width];
info2 = imfinfo('cameraman.jpg');
size2 = [info2.Height, info2.Width];
3.用figure,imshow()分别将Lenna.jpg和cameraman.jpg显示出来,观察两幅图像的质量。
figure;
imshow(b);
title('Lenna.jpg');
figure;
imshow(c);
title('cameraman.jpg');
4.用im2bw将一幅灰度图像转化为二值图像,并且用imshow显示出来观察图像的特征。使用subplot函数,使得转换前后的图像显示在一个窗口。
threshold = graythresh(grayImg);
binaryImg = im2bw(grayImg, threshold);
figure;
subplot(1, 2, 1);
imshow(grayImg);
title('原始灰度图像');
subplot(1, 2, 2);
imshow(binaryImg);
title('转换后的二值图像');
四、思考题
1 简述MATLAB软件/Python语言的特点。
答:MATLAB使用矩阵和向量来表示数据,这使得它在矩阵计算和线性代数方面表现出色。此外,MATLAB的语法简洁且易于学习,适用于各种科学计算和数据分析领域,如信号处理、图像处理、控制系统、通信系统、金融分析和机器学习等。
2 MATLAB软件/Python语言可以支持哪些图像文件格式?
答:在MATLAB中,常见的支持格式包括BMP、JPG、PNG、TIFF等。同样,Python也支持这些格式,并且由于它拥有大量的第三方库,如PIL(Python Imaging Library)或OpenCV,它还可以支持更多的图像格式。这些库使得Python在图像处理方面有着强大的功能。
3 说明函数imread 的用途格式以及各种格式所得到图像的性质。
答:函数imread主要用于读取图像文件。在MATLAB中,你可以使用imread函数读取各种格式的图像文件,如BMP、JPG等。读取的图像数据会存储在一个数组中,数组的维度和类型取决于图像的尺寸和颜色模式。例如,灰度图像会存储为一个二维数组,而彩色图像则可能存储为一个三维数组,其中第三维表示颜色通道。对于JPG格式的图像,由于它采用有损压缩算法,读取的图像可能在某些细节上与原始图像有所差异。而BMP格式作为无压缩位图,读取的图像将保持原始数据。