Matlab图像读取函数imread用法介绍

4.3
(14)

今天,我们来讲解Matlab中图片读取函数imread的使用,即Matlab如何读取图片。然后,我们就可以处理图片,比如大小重定义,图片去噪,图片加噪,图片分割,图片运算等。大致说一下imread函数的存储原理,将图片读取后存放为一个三维矩阵,由三个二维矩阵组成,分别存放图片中的rgb三个色彩。二维矩阵的行号列号表示图片的横纵像素点,每个二维矩阵元素对应的值即为rgb,三个二维矩阵刚好组成一个rgb颜色,即可存储图片。

Matlab图像读取函数imread用法介绍

imread函数的基本用法就是给定图片的名称、路径、格式。假设我们有一个0827.jpg图片,放置于D:\MATLAB\R2016a\mine目录下

  • 名称:0827
  • 格式:jpg
  • 路径:该图片在硬盘中的位置,D:\MATLAB\R2016a\mine

imread实际使用中,我们可以把图片放于Matlab的m文件同目录下

下面是实际使用的几个例子,以供参考:

%%
%清理工作区与命令区
clc
clear
close all
%%
%图片读取
I1 = imread('0827','jpg'); 
I2 = imread('0827.jpg');
I3 = imread('D:\MATLAB\R2016a\mine\0827.jpg');
figure(1)
imshow(I1)

上述的figure(1)表示作图,imshow(I1)表示把I1变量的矩阵输出到图片中。实际操作中,如果原图过大,可以使用imresize函数重新定义下图片的大小即可。

Matlab图像读取函数imread用法介绍

大致的用法就上面几种了,关于官方给的help文件中的介绍如下,感兴趣的可以看看,Matlab在图片读取中的bit信息相关吧。不感兴趣的可以略过。

>> help imread
 imread Read image from graphics file.
    A = imread(FILENAME,FMT) reads a grayscale or color image from the file
    specified by the string FILENAME. FILENAME must be in the current 
    directory, in a directory on the MATLAB path, or include a full or 
    relative path to a file.
    
    The text string FMT specifies the format of the file by its standard
    file extension. For example, specify 'gif' for Graphics Interchange 
    Format files. To see a list of supported formats, with their file 
    extensions, use the IMFORMATS function. If imread cannot find a file 
    named FILENAME, it looks for a file named FILENAME.FMT.
 
    The return value A is an array containing the image data. If the file 
    contains a grayscale image, A is an M-by-N array. If the file contains
    a truecolor image, A is an M-by-N-by-3 array. For TIFF files containing
    color images that use the CMYK color space, A is an M-by-N-by-4 array. 
    See TIFF in the Format-Specific Information section for more
    information.
    
    The class of A depends on the bits-per-sample of the image data,
    rounded to the next byte boundary. For example, imread returns 24-bit
    color data as an array of uint8 data because the sample size for each
    color component is 8 bits. See the Remarks section for a discussion of  
    bitdepths, and see the Format-Specific Information section for more  
    detail about supported bitdepths and sample sizes for a particular
    format.
     
    [X,MAP] = imread(FILENAME,FMT) reads the indexed image in FILENAME into
    X and its associated colormap into MAP. Colormap values in the image 
    file are automatically rescaled into the range [0,1]. 
  
    [...] = imread(FILENAME) attempts to infer the format of the file
    from its content.
  
    [...] = imread(URL,...) reads the image from an Internet URL.  
     
    Remarks
     
    Bitdepth is the number of bits used to represent each image pixel.  
    Bitdepth is calculated by multiplying the bits-per-sample with the 
    samples-per-pixel. Thus, a format that uses 8-bits for each color 
    component (or sample) and three samples per pixel has a bitdepth of 24.
    Sometimes the sample size associated with a bitdepth can be ambiguous: 
    does a 48-bit bitdepth represent six 8-bit samples or three 16-bit 
    samples? The following format-specific sections provide sample size 
    information to avoid this ambiguity.
     
    Format-Specific Information (Listed Alphabetically by Format)
    
    BMP  --  Windows Bitmap
 
    Supported  Compression     Output   
    Bitdepths  None    RLE     Class    Notes
    ---------------------------------------------------------
     1-bit      x        -     logical  
     4-bit      x        x     uint8          
     8-bit      x        x     uint8
    16-bit      x        -     uint8    1 sample/pixel
    24-bit      x        -     uint8    3 samples/pixel
    32-bit      x        -     uint8    3 samples/pixel (1 byte padding)
        
    CUR  -- Cursor File
   
    Supported    Compression      Output
    Bitdepths   None Compressed   Class  
    --------------------------------------------------
    1-bit        x      -         logical
    4-bit        x      -         uint8          
    8-bit        x      -         uint8
    
    Special syntaxes:
    
    [...] = imread(...,IDX) reads in one image from a multi-image icon or 
    cursor file. IDX is an integer value that specifies the order that the
    image appears in the file. For example, if IDX is 3, imread reads the 
    third image in the file. If you omit this argument, imread reads the
    first image in the file. 
  
    [A,MAP,ALPHA] = imread(...) returns the AND mask for the resource, 
    which can be used to determine transparency information.  For cursor 
    files, this mask may contain the only useful data.    
      
    GIF  --  Graphics Interchange Format
    
    Supported     Output Class  
    ---------------------------
    1-bit         logical
    2-to-8 bit    uint8   
    
    Special syntaxes: 
    
    [...] = imread(...,IDX) reads in one or more frames from a multiframe 
    (i.e., animated) GIF file. IDX must be an integer scalar or vector of 
    integer values.  For example, if IDX is 3, imread reads the third image
    in the file.  If IDX is 1:5, only the first five frames are returned.
 
    [...] = imread(...,'Frames',IDX) is the same as the syntax above except
    that IDX can be 'all'.  In this case, all of the frames are read and 
    returned in the order that they appear in the file.
 
    Note: Because of the way GIF files are structured, all of the frames
    must be read when a particular frame is requested. Consequently, it is 
    much faster to specify a vector of frames or 'all' for IDX than to call
    imread in a loop when reading multiple frames from the same GIF file. 
    
    HDF  --  Hierarchical Data Format
      
    Supported   Raster image   Raster image     Output
    Bitdepths   with colormap  without colormap Class    Notes
    ------------------------------------------------------------
     8-bit        x               x             uint8
    24-bit        -               x             uint8   3 samples/pixel
    
    Special Syntaxes:
    
    [...] = imread(...,REF) reads in one image from a multi-image HDF file.
    REF is an integer value that specifies the reference number used to 
    identify the image. For example, if REF is 12, imread reads the image 
    whose reference number is 12. (Note that in an HDF file the reference 
    numbers do not necessarily correspond with the order of the images in
    the file. You can use IMFINFO to match up image order with reference 
    number.) If you omit this argument, imread reads the first image in 
    the file.
      
    ICO  -- Icon File 
    
    See CUR.
    
    JPEG  --  Joint Photographic Experts Group
    
    Note: imread can read any baseline JPEG image as well as JPEG images 
    with some commonly used extensions. 
    
    Supported    Compression      Output
    Bitdepths   Lossy Lossless    Class      Notes
    --------------------------------------------------------
     8-bit        x      x        uint8     Grayscale or RGB
    12-bit        x      x        uint16    Grayscale  
    16-bit        -      x        uint16    Grayscale
    36-bit        x      x        uint16    RGB(Three 12-bit samples/pixel)
 
    JPEG 2000 - Joint Photographic Experts Group 2000
 
    Supported      Compression      Output
    Bitdepths     Lossy Lossless    Class   
    (per sample)
    ----------------------------------------------------------
     1-bit          x      x        logical
     2- to 8-bit    x      x        uint8, int8
     9- to 16-bit   x      x        uint16, int16
 
    Note: Indexed JPEG 2000 images are not supported. Only JP2 compatible
    color spaces are supported for JP2/JPX files.   By default, all image
    channels are returned in the order they are stored in the file.
 
    Special Syntaxes
 
    [...] = imread(..., 'Param1', value1, 'Param2', value2, ...) uses
    parameter-value pairs to control the read operation.  
 
        Parameter name   Value
        --------------   -----
        'ReductionLevel' A non-negative integer specifying the reduction in
                         the resolution of the image. For a reduction 
                         level 'L', the image resolution is reduced by a 
                         factor of 2^L. The default value is 0 implying 
                         no reduction. The reduction level is limited by 
                         the total number of decomposition levels as  
                         provided by 'WaveletDecompositionLevels' field  
                         in the structure returned from IMFINFO function.   
 
        'PixelRegion'    {ROWS, COLS}.  imread returns the sub-image
                         specified by the boundaries in ROWS and COLS.
                         ROWS and COLS must both be two-element vectors
                         that denote the 1-based indices [START STOP]. If
                         'ReductionLevel' is greater than 0, then ROWS and
                         COLS are coordinates in the reduced-sized image.   
 
        'V79Compatible'  A logical value. If true, the image returned is 
                         transformed to gray-scale or RGB as consistent with
                         previous versions of imread (MATLAB 7.9 [R2009b] 
                         and earlier).  Use this option to transform YCC
                         images into RGB.  The default is false.
 
    PBM  --  Portable Bitmap
    
    Supported  Raw     ASCII (Plain)  Output
    Bitdepths  Binary  Encoded        Class
    ----------------------------------------
    1-bit        x        x          logical
       
    PCX  --  Windows Paintbrush
   
    Supported     Output    
    Bitdepths     Class       Notes
    ----------------------------------------------
     1-bit        logical     Grayscale only
     8-bit        uint8       Grayscale or indexed
    24-bit        uint8       RGB (8-bit samples)
     
    PGM  --  Portable Graymap
         
    Supported        Raw      ASCII (Plain)  Output        
    Bitdepths        Binary   Encoded        Class
    ------------------------------------------------
    up to 16-bit      x            -         uint8
    Arbitrary         -            x
     
    PNG  --  Portable Network Graphics
    
    Supported     Output    
    Bitdepths     Class      Notes
    -------------------------------------------
     1-bit        logical    Grayscale only
     2-bit        uint8      Grayscale only
     4-bit        uint8      Grayscale only
     8-bit        uint8      Grayscale or Indexed
    16-bit        uint16     Grayscale or Indexed
    24-bit        uint8      RGB (Three 8-bit samples/pixel)
    48-bit        uint16     RGB (Three 16-bit samples/pixel)
          
    Special Syntaxes:
    
    [...] = imread(...,'BackgroundColor',BG) composites any transparent 
    pixels in the input image against the color specified in BG.  If BG is
    'none', then no compositing is performed. Otherwise, if the input image
    is indexed, BG should be an integer in the range [1,P] where P is the
    colormap length. If the input image is grayscale, BG should be a value
    in the range [0,1].  If the input image is RGB, BG should be a 
    three-element vector whose values are in the range [0,1]. The string
    'BackgroundColor' may be abbreviated.  
  
    If the ALPHA output argument is used (see below), then BG defaults to 
    'none' if not specified by the user. Otherwise, if the PNG file 
    ontains a background color chunk, that color is used as the default  
    value for BG. If ALPHA is not used and the file does not contain a 
    background color chunk, then the default value for BG is 1 for indexed  
    images; 0 for grayscale images; and [0 0 0] for RGB images.  
 
    [A,MAP,ALPHA] = imread(...) returns the alpha channel if one is
    present; otherwise ALPHA is []. If 'BackgroundColor' is specified by
    the user then ALPHA is []. Note that MAP may be empty if the file
    contains a grayscale or truecolor image.    
      
    PPM  --  Portable Pixmap 
    
    Supported        Raw      ASCII (Plain)  Output        
    Bitdepths        Binary   Encoded        Class
    ------------------------------------------------
    up to 16-bit      x            -         uint8
    Arbitrary         -            x     
    
    RAS  --  Sun Raster 
    
    Supported    Output    
    Bitdepths    Class     Notes
    ----------------------------------------------------
     1-bit       logical   Bitmap  
     8-bit       uint8     Indexed
    24-bit       uint8     RGB (8-bit samples)
    32-bit       uint8     RGB with Alpha (8-bit samples)
     
    TIFF  --  Tagged Image File Format
    
    NOTE:  Images with a YCbCr photometric interpretation are converted to
    the RGB colorspace.  
    
    Special Syntaxes:
    
    A = imread(...) returns color data that uses the RGB, CIELAB, ICCLAB,
    or CMYK color spaces.  If the color image uses the CMYK color space, A 
    is an M-by-N-by-4 array.
 
    [...] = imread(..., 'Param1', value1, 'Param2', value2, ...) uses
    parameter-value pairs to control the read operation.  There are three
    different parameters you can use:
 
        Parameter name   Value
        --------------   -----
        'Index'          A positive integer specifying which image to read in
                         a multi-image TIFF file.  For example, if 'Index' is
                         3, imread reads the third image in the file.
 
        'Info'           A structure array; the output of IMFINFO.  When
                         reading images from a multi-image TIFF file, passing
                         the output of IMFINFO as the 'Info' parameter helps
                         imread locate the images in the file more quickly.
 
        'PixelRegion'    {ROWS, COLS}.  imread returns the sub-image
                         specified by the boundaries in ROWS and COLS.  ROWS
                         and COLS must be either two- or three-element
                         vectors.  If two elements are provided, they denote
                         the 1-based indices [START STOP].  If three elements
                         are provided, the indices [START INCREMENT STOP]
                         allow image downsampling.
    
    XWD  --  X Window Dump
    
    Supported                                  Output    
    Bitdepths  ZPixmaps  XYBitmaps  XYPixmaps  Class
    --------------------------------------------------
    1-bit        x          -         x        logical
    8-bit        x          -         -        uint8
 
    Please read the file libtiffcopyright.txt for more information.
 
    Example:
 
        imdata = imread('ngc6543a.jpg');
 
    See also imfinfo, imwrite, imformats, fread, image, double, uint8.
    imread 的参考页

最后,再附上几篇关于imread读取后,为何是三维数组的相关介绍:《Matlab图像灰度转换函数rgb2gray》以及《Matlab求解三维数组中的最值问题》。其实,你可以理解为任何颜色都是由红色R、绿色G、蓝色B构成的RGB组,那么图片就可以分解为R、G、B三个二维数组,也就相当于一个三维数组了。

共计14人评分,平均4.3

到目前为止还没有投票~

很抱歉,这篇文章对您没有用!

让我们改善这篇文章!

告诉我们我们如何改善这篇文章?

原创文章,作者:古哥,转载需经过作者授权同意,并附上原文链接:https://iymark.com/articles/248.html

(1)
微信公众号
古哥的头像古哥管理团队
上一篇 2020年09月14日 23:47
下一篇 2020年09月17日 19:33

你可能感兴趣的文章

发表回复

登录后才能评论
微信小程序
微信公众号