Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

处理 MATLAB 图形中的图像

什么是图像数据?

MATLAB® 的基本数据结构是数组,即实数或复数元素的有序集合。数组天然适合表示图像、实数值、颜色或强度数据的有序集合。(数组非常适合复数值图像。)

在 MATLAB 工作区中,大多数图像表示为二维数组(矩阵),其中矩阵的每个元素对应所显示图像的一个像素。例如,由 200 行和 300 列不同颜色的点组成的图像保存为一个 200×300 的矩阵。有些图像,如 RGB,需要三维数组,其中三个维度的第一个平面表示红色像素强度,第二个平面表示绿色像素强度,第三个平面表示蓝色像素强度。

这样的转换使用户可以像处理其他类型矩阵数据一样处理图形文件格式图像。例如,您可以使用普通的矩阵下标表示法从图像矩阵中取得一个像素:

I(2,15)

此命令返回图像 I 第 2 行第 15 列的像素值。

以下部分描述了不同数据和图像类型,并详细说明了如何读取、写入、使用和显示图形图像;如何在显示时修改图像的显示属性和纵横比;如何打印图像;如何转换图像的数据类型或图形格式。

数据类型

MATLAB 数学支持三种不同的数值类用于图像显示:

  • 双精度浮点数(double

  • 16 位无符号整数(uint16

  • 8 位无符号整数(uint8

图像显示命令根据数据存入的数值类解释数据值。8 位和 16 位图像中介绍了 8 位和 16 位图像存储的内部工作原理的详情。

默认情况下,大多数数据都使用 double 类数组。这些数组中的数据存储为双精度(64 位)浮点值。所有的 MATLAB 函数和功能都能使用这些数组。

但是,对于以 MATLAB 函数支持的图形文件格式存储的图像而言,这种数据表现形式却并不理想。这样的图像中的像素数目可能非常巨大;如一个 1000×1000 的图像会有一百万个像素。由于至少要用一个数组元素表示一个像素,因此如果图像以 double 类存储,那么它至少需要 8 兆内存。

为了减小内存需求,您可以将图像数据存储在 uint8uint16 这两类数组中。这些数组中的数据存储为 8 位或 16 位无符号整数。同样的数据,这些数组只需要 double 数组的八分之一或四分之一的存储容量。

位深

MATLAB 输入函数读取任何一个支持的图形文件格式的最常使用的位深(每像素位数)。当数据存于内存中时,它可能存储为 uint8uint16double 类的形式。有关哪种位深适合哪种支持格式的详细信息,请参阅 imreadimwrite

支持的图像格式

MATLAB 命令可以读取、写入和显示以下几种图像的图形文件格式。对于 MATLAB 生成的图像,一旦显示一个图形文件格式的图像,该图像便会成为一个图像对象。MATLAB 支持如下图形文件格式以及其他格式:

  • BMP(Microsoft® Windows® 位图)

  • GIF(图形交换文件)

  • HDF (分层数据格式)

  • JPEG(联合图像专家组)

  • PCX(画笔)

  • PNG(可移植网络图形)

  • TIFF(标记图像文件格式)

  • XWD(X 窗口转储)

有关这些格式支持的位深和图像类型的详细信息,请参阅 imreadimwrite