实验一-MATLAB图像简单操作函数的应用

一、实验目的

1.了解 MATLAB图像处理工具箱函数中的基本功能及操作方法。

2.掌握MATLAB中图像读写和显示函数的使用方法。

3.掌握如何利用MATLAB函数获取图像大小、颜色、高度、宽度等信息。

4.熟悉常用的图像类型的相互转换。

二、实验要求

1.实验课前需要写预习实验报告,内容为本次实验要求中的所有程序清单。

2.实验课对预习报告中的编程代码进行上机调试,完成实验指导书中全部实验要求内容。

3.实验课后写出实验报告。报告要求有实验目的,实验内容与步骤,调试完成的准确编程代码,实验小结,回答问题。

三、实验内容(每一个内容编写一个*.m文件)

1.利用imread()函数分别读入图像trees.tif和ngc6543a.jpg,存入两个数组中,用“whos”命令获取图像的基本信息。

2.利用imwrite()函数将图像trees.tif压缩,将其保存为一幅压缩了像素的jpg文件, 图像名为为trees1.jpg

>> imwrite(trees, 'trees1.jpg', 'jpg', 'Quality', 50);

3.命令窗口利用imfinfo函数来获取图像文件的压缩,颜色等等其他的详细信息。

>> info_trees = imfinfo('trees.tif');

info_ngc6543a = imfinfo('ngc6543a.jpg');

4.4个不同的图像窗口中显示任意4幅不同图像类型(二值、索引、灰度、真彩色)的图像。

% 显示真彩色图像

rgb = imread('peppers.png');

figure; imshow(rgb); title('Truecolor Image');

>> % 显示二值图像

bw = logical([1 0 1; 0 1 0; 1 0 1]);

figure; imshow(bw); title('Binary Image');

>> % 显示灰度图像

gray = imread('mri.tif');

figure; imshow(gray); title('mri Image');

>> % 显示索引图像

idx = imread('trees.tif');

figure; imshow(idx, 'Colormap', autumn(256)); title('Indexed Image');

>> % 显示真彩色图像

rgb = imread('onion.png');

figure; imshow(rgb); title('onion Image');

5.分别用imreadload命令读入两幅不同的图像,并排显示在同一图像窗口。

image1 = imread('onion.png');

data = load('trees.mat');

image2 = data.imageData;

figure;

subplot(1, 2, 1);

imshow(image1);

title('Image 1');

subplot(1, 2, 2);

imshow(image2);

title('Image 2');

imwrite(trees, 'trees1.jpg', 'jpg', 'Quality', 50);

6.利用imshow()函数来显示图像trees.tif,要求先转化为rgb图像,分别显示每个通道,然后合并再显示)

% 读取图像文件

tree_image = imread('trees.tif');

% 将灰度图像转换为RGB图像

rgb_image = cat(3, tree_image, tree_image, tree_image);

% 显示每个通道

figure;

subplot(1, 3, 1);

imshow(rgb_image(:, :, 1)); % 红色通道

title('红色通道');

subplot(1, 3, 2);

imshow(rgb_image(:, :, 2)); % 绿色通道

title('绿色通道');

subplot(1, 3, 3);

imshow(rgb_image(:, :, 3)); % 蓝色通道

title('蓝色通道');

% 合并并显示RGB图像

figure;

imshow(rgb_image);

title('合并的RGB图像');

7.rgb2gray()将一幅索引图像trees.tif转化为灰度图像,并且用imshow显示出来观察图像的特征。

% 读取索引图像文件

tree_image = imread('trees.tif');

% 将索引图像转换为RGB图像

rgb_image = ind2rgb(tree_image, colormap);

% RGB图像转换为灰度图像

gray_image = rgb2gray(rgb_image);

% 显示灰度图像

imshow(gray_image);

title('灰度图像');

8.im2bw()将一幅灰度图像camema.jpg转化为二值图像,并且用imshow显示出来观察图像的特征。

% 读取灰度图像文件

gray_image = imread('cameraman.jpg');

% 将灰度图像转换为二值图像

threshold = graythresh(gray_image); % 自适应阈值

binary_image = im2bw(gray_image, threshold);

% 显示二值图像

imshow(binary_image);

title('二值图像');

  1. rgb2ind()将真彩色图像onion.png转化为索引图像,用imshow显示出来,并读取出两种图像的数据,观察图像的特征。

% 读取真彩色图像文件

rgb_image = imread('onion.png');

% 将真彩色图像转换为索引图像

[indexed_image, colormap] = rgb2ind(rgb_image, 256);

% 显示索引图像

imshow(indexed_image, colormap);

title('索引图像');

% 读取真彩色图像和索引图像数据

rgb_data = imread('onion.png');

indexed_data = indexed_image

% 显示原始图像和索引图像

figure;

subplot(1, 2, 1);

imshow(rgb_data);

title('真彩色图像');

subplot(1, 2, 2);

imshow(indexed_data);

title('索引图像');

% 比较图像数据

fprintf('真彩色图像大小:%d x %d x %d\n', size(rgb_data));

fprintf('索引图像大小:%d x %d\n', size(indexed_data));

  1. 读入并在同一窗口显示27帧索引图像阵列“mri.mat”,并在单独窗口显示第61020帧图像。

% 读入索引图像阵列

load('mri.mat');  % 确保 'mri.mat' 文件在你的MATLAB工作目录中

% 显示27帧索引图像在同一窗口

figure;

for i = 1:27

    subplot(5, 6, i);

    imshow(squeeze(D(:,:,1,i)), []);  % 使用squeeze函数去除维度为1的维度

    title(['Frame ' num2str(i)]);

end

sgtitle('All 27 Frames of MRI');

% 单独窗口显示第61020帧图像

figure;

subplot(3, 1, 1);

imshow(squeeze(D(:,:,1,6)), []);

title('Frame 6');

subplot(3, 1, 2);

imshow(squeeze(D(:,:,1,10)), []);

title('Frame 10');

subplot(3, 1, 3);

imshow(squeeze(D(:,:,1,20)), []);

title('Frame 20');

  1. 制作并显示一个动态图。

% 创建一个新的图形窗口

figure;

% 设置动态图的xy坐标范围

xlim([0, 10]);

ylim([-1, 1]);

% 创建一个动态线对象

line = animatedline('LineWidth', 2);

% 循环更新动态线的数据并显示

for x = 0:0.1:10

y = sin(x); % 计算y

addpoints(line, x, y); % 添加新的坐标点到动态线

drawnow; % 更新图形窗口

end

四、问题与讨论

1.简述 MATLAB 软件的特点。

MATLAB是一款强大的高级技术计算软件,以其直观的编程环境、丰富的数值计算功能和广泛的工具箱而著称。其易用性、强大的数据可视化能力以及在教育和研究领域的广泛应用,使其成为科学计算和工程任务中不可或缺的工具,同时支持跨平台运行,具备与其他编程语言集成的灵活性。

  1. MATLAB软件可以支持哪些图像文件格式?

MATLAB软件支持多种常见图像文件格式,包括JPEGPNGBMPGIFTIFFDICOM等,同时还支持一些其他格式,如HDFJP2PCXXWD等。这些格式涵盖了从有损压缩到无压缩、从静态图像到动态图像的多种类型,能够满足各种图像处理和分析的需求。 MATLAB的图像处理工具箱提供了丰富的功能,可方便地处理和分析这些不同格式的图像数据。

  1. 说明函数imread() 的用途格式以及各种格式所得到图像的性质。

函数imread() 用于从图像文件中读取图像数据并将其存储为 MATLAB 中的数组。它支持多种图像文件格式,包括JPEGPNGBMPGIFTIFFDICOM等。不同格式所得到的图像性质也各有不同,例如JPEG格式通常用于存储彩色图像,具有较小的文件大小和一定程度的有损压缩;PNG格式支持透明度和无损压缩,适合存储需要保持高质量的图像;BMP格式是一种无压缩位图格式,适合存储简单的图像数据;GIF格式支持动画和透明度;TIFF格式支持多页、多通道和无损压缩,适合存储复杂的图像数据;DICOM格式通常用于医学影像,包含了丰富的医学信息。通过imread()函数,可以方便地读取和处理不同格式的图像数据,满足各种图像处理和分析的需求。

  1. 为什么用I = imread(‘lena.bmp’) 命令得到的图像I 不可以进行算术运算?

当使用 I = imread('lena.bmp') 命令读取图像数据时,被存储为一个矩阵,其中包含了图像的像素值。这些像素值通常是无符号整数,代表了图像中每个像素的亮度或颜色信息。

  1. 如何显示 RGB 图像的某一个颜色分量?

RGB 图像通常由红色(R)、绿色(G)和蓝色(B)三个颜色通道组成。要显示 RGB 图像的某一个颜色分量,可以将其他两个颜色通道的像素值设置为零,只保留要显示的颜色通道的像素值。

6.如何显示多帧图像的所有帧?如何根据多帧图像创建电影片段?

MATLAB中,可以使用implay函数来显示多帧图像的所有帧,便于直观查看图像序列。同时,通过创建VideoWriter对象,可以将多帧图像按顺序写入视频文件,实现创建电影片段的功能。这种方法能够方便地处理图像序列并生成可视化效果,适用于各种需要展示动态变化的场景,如视频处理、计算机视觉等应用领域。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值