当前位置:   article > 正文

使用matalab进行数字图像处理(二)

matalab

目录

图像文件的读写

1. 文件信息读取

2. 图像文件的读取         

2.1 普通格式图像读取

2.2 特殊格式图像读取

3. 图像的保存


图像文件的读写

1. 文件信息读取

        在MATLAB中,对图像进行操作和处理时,经常需要知道图像文件的文件名、文件格式、图像大小、图像类型、数据类型等信息,可以直接调用MATLAB函数imfinfo()来读取图像文件的信息。其调用格式如下:

        INFO = imfinfo('文件名','fmt') 或者 INFO = imfinfo('文件名.fmt')

        该函数是读取文件 文件名.fimt 的信息。其中,fmt指的是该文件的“扩展名”,INFO是一个结构数组。imfinfo()函数是MATLAB中用于读取图像文件的信息的函数。它返回一个结构数组,其中包含有关图像文件的各种信息。结构数组中的每个元素都包含有关图像文件的一组信息。

以下是imfinfo()返回的结构数组的基本内容:

  1. File Information:

    • FileName: 图像文件的名称。
    • FileFormat: 图像文件的格式。
    • FileInFormat: 图像文件中包含的子格式。
    • FileOutFormat: 可用于写入图像文件的格式。
    • FileType: 图像文件的类型。
    • FileClass: 图像文件的类别(例如,uint8、uint16、double等)。
    • Compression: 图像文件的压缩类型(例如,无压缩、JPEG压缩等)。
  2. Image Information:

    • ImageWidth: 图像的宽度(以像素为单位)。
    • ImageHeight: 图像的高度(以像素为单位)。
    • ImageDepth: 图像的深度(例如,2D、3D等)。
    • ImageSize: 图像的大小(以字节为单位)。
    • ImageDataType: 图像数据的类型(例如,uint8、uint16、double等)。
  3. Channel Information:

    • Channels: 图像的通道数。
    • BitDepth: 每个通道的位深度。
  4. Image Storage Information:

    • ByteOrder: 图像数据的字节顺序(例如,大端、小端等)。
    • ByteAlignment: 图像数据的字节对齐方式。
  5. Image Processing Information:

    • Gamma: 图像的伽马值。
    • WhiteBalance: 图像的白平衡类型。
  6. EXIF Information:

    • EXIF信息包含有关图像的EXIF元数据,例如光圈、快门速度、ISO速度、焦距、曝光补偿等。这些信息存储在EXIF结构的子字段中。
  7. IPTC Information:

    • IPTC信息包含有关图像的IPTC元数据,例如标题、主题、关键字等。这些信息存储在IPTC结构的子字段中。
  8. Image Structure Metadata:

    • 这部分包含有关图像结构的元数据,例如色彩空间、单位等。这些信息存储在ImageStructure结构的子字段中。
  9. Other Information:

        其他信息可能包括有关图像的其他特定信息,例如创建时间、修改时间等。这些信息根据不同的图像格式而有所不同,但基本都包含前9个结构成员:
Fienamer                 文件名称
FileoDater                文件最后修改日期和时间《日-月-年 时:分:秒)
FileSizer                   文件大小(单位是字节)
Fommate                  文件格式或扩展名(tif、jpg png等)
FormatVersione        文件格式版本号
Widthe                      图像文件的宽度,单位为像素
Height                       图像文件的高度,单位为像素
BitDepthe                  图像文件中每一个像素所占位宽《真彩色图像每个像素占24位)
ColorIyper                 图像类型(grayscale-灰度图像,truecolor-RGB图像,imdexed-索引图像)

2. 图像文件的读取         

        在MATLAB中,图像文件的读取最主要的是利用函数imread(),该函数几乎支持MATLAB中所有的图像文件格式。根据所读取图像格式的不同以及图像类型的不同,该函数的调用格式也各不相同。

        MATLAB 可以使用 imread 函数来读取图像文件。imread  函数支持多种图像文件格式,包括 JPEG、PNG、BMP、TIFF 等。要使用不同的文件格式,只需将文件名中的扩展名更改为所需的格式即可。

2.1 普通格式图像读取

image = imread('filename.fmt') 或 (filename.fmt!):这是使用 imread 读取图像的基本形式。需要将 'filename.fmt' 替换为要读取的图像文件的实际名称和扩展名。如果图像文件不在 MATLAB 的当前工作目录下,需要提供完整的文件路径。

  1. % 如果图像文件在当前工作目录下,可以直接使用文件名
  2. img = imread('image.jpg');
  3. % 如果图像文件不在当前工作目录下,需要提供完整的文件路径
  4. img = imread('C:/Users/username/Documents/image.png');

[X, map] = imread('filename', 'fmt') 或 (filename.fmt'):这种形式会同时返回图像矩阵 X 和颜色映射 map。这通常用于处理 RGB 图像,其中 X 是一个 MxNx3 的三维数组,表示图像的每个像素,而 map 是一个包含颜色信息的向量。

  1. % 读取图像文件,同时返回图像矩阵 X 和颜色映射 map
  2. [X, map] = imread('image.jpg');

(...) 或 (..., 'Param1', value1, 'Param2', value2, ...):这些是参数形式的 imread,可以用来设置一些额外的选项。例如,您可以指定要读取的图像帧的索引,或者设置背景颜色等。具体的参数和设置取决于您要读取的图像类型和您需要进行的操作。

  1. % 读取图像的第 3 帧和第 5 到 7 帧,并设置背景颜色为白色
  2. img = imread('animation.gif', 'frames', [3 5:7], 'BackgroundColor', 'white');

[...]=imread('URL'):这是用于从指定的 URL 读取图像的形式。你需要将 'URL' 替换为你要读取的图像的 URL。

  1. % 从 URL 读取图像
  2. img = imread('http://example.com/image.jpg');

注意,imread 只能读取图像文件的内容,而不包括图像的元数据。如果你需要读取图像的元数据,可以使用 dir 函数来获取文件信息。

  1. % 获取图像文件的宽度和高度信息
  2. info = dir('image.jpg');
  3. width = info.Width;
  4. height = info.Height;

2.2 特殊格式图像读取

这些特殊的图像格式读取方式,可以让你更灵活地读取和处理图像。

imread('filename', idx):这种格式可以读取图像文件的一部分。你需要提供要读取的图像文件名('filename')和索引('idx')。索引从1开始,表示第一个帧。例如:

        imread('example.gif', 3)将读取'example.gif'的第3帧。

imread(..., 'frames', idx):这种格式可以读取多帧图像文件的一部分。你需要提供要读取的图像文件名和索引('idx')。索引可以是向量,表示要读取的帧的范围。例如:                                imread('example.gif', 'frames', [1 3])将读取'example.gif'的第1帧和第3帧。

imread(..., 'BackgroundColor', BG):这种格式可以在读取图像时指定背景颜色。你需要提供要读取的图像文件名和其他参数,并在它们之间插入'BackgroundColor'和背景颜色值('BG')。例如:

imread('example.png', 'BackgroundColor', 'white')将把'example.png'的背景颜色设为白色。

imread('filename', ref):这种格式可以读取参照图像。你需要提供要读取的图像文件名('filename')和参照图像('ref')。参照图像是一个已经存在的图像矩阵,用于对读取的图像进行对齐或配准。例如:

        imread('example.jpg', ref)将把'example.jpg'对齐到参照图像'ref'。

imread(..., 'Param1', value1, 'Param2', value2, ...):这种格式可以设置其他参数。你需要提供要读取的图像文件名和其他参数,并在它们之间插入参数名称和值。例如:        imread('example.tif', 'Compression', 'Deflate')将把'example.tif'的压缩方式设为Deflate。

3. 图像的保存

        在 MATLAB 中,imwrite 函数用于将图像数据写入到文件中。该函数的调用格式有以下几种:

imwrite(X, 'filename.fmt'):将图像数据矩阵 X 写入到名为 'filename.fmt' 的文件中。其中,'fmt' 表示图像文件的格式,例如 '.jpg'、'.png'、'.bmp' 等。

  1. img = imread('input.jpg'); % 读取图像文件
  2. imwrite(img, 'output.png'); % 将图像数据矩阵写入到 output.png 文件中

        将读取名为 'input.jpg' 的图像文件,将其存储为图像数据矩阵 img。然后,使用 imwrite 函数将该图像数据矩阵写入到名为 'output.png' 的文件中。 

imwrite(X, 'filename.fmt', 'Param1', value1, 'Param2', value2, ...):这是带有参数形式的 imwrite 函数调用。除了指定图像数据矩阵 X 和文件名之外,还可以设置其他参数,例如压缩质量、色彩空间等。这种形式允许您对写入操作进行更多的控制。

  1. img = imread('input.jpg'); % 读取图像文件
  2. imwrite(img, 'output.jpg', 'Quality', 90, 'Compression', 'JPEG'); % 将图像数据矩阵写入到 output.jpg 文件中,并设置压缩质量为 90%,使用 JPEG 压缩算法

        将读取名为 'input.jpg' 的图像文件,将其存储为图像数据矩阵 img。然后,使用带有参数形式的 imwrite 函数将该图像数据矩阵写入到名为 'output.jpg' 的文件中,并设置压缩质量为 90%,使用 JPEG 压缩算法进行压缩。 

imwrite(X, 'filename.fmt', 'quality', value):使用指定的质量值来写入图像文件。这对于 JPEG 格式的图像特别有用,可以通过调整质量参数来控制图像的压缩比。

  1. img = imread('input.jpg'); % 读取图像文件
  2. imwrite(img, 'output.jpg', 'Quality', 90); % 将图像数据矩阵写入到 output.jpg 文件中,并设置压缩质量为 90%

         将读取名为 'input.jpg' 的图像文件,将其存储为图像数据矩阵 img。然后,使用带有参数形式的 imwrite 函数将该图像数据矩阵写入到名为 'output.jpg' 的文件中,并设置压缩质量为 90%。

imwrite(X, 'filename.fmt', 'colormap', map):将指定的颜色映射 map 应用到图像数据矩阵 X 上,并将其写入到文件中。这通常用于将彩色图像写入到单色图像文件中。

  1. img = imread('input.png'); % 读取彩色图像文件
  2. gray_img = rgb2gray(img); % 将彩色图像转换为灰度图像
  3. imwrite(gray_img, 'output.bmp', 'colormap', 'gray'); % 将灰度图像数据矩阵写入到 output.bmp 文件中,并设置颜色映射为灰度

        将读取名为 'input.png' 的彩色图像文件,将其转换为灰度图像并存储为 gray_img。然后,使用 imwrite 函数将该灰度图像数据矩阵写入到名为 'output.bmp' 的文件中,并设置颜色映射为灰度。 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/375438
推荐阅读
相关标签
  

闽ICP备14008679号