Main Content

Importar imágenes

Para importar datos al espacio de trabajo de MATLAB® desde un archivo gráfico, utilice la función imread. Con esta función, puede importar datos de archivos con numerosos formatos de archivo estándar, incluidos los formatos Tagged Image File Format (TIFF), Graphics Interchange Format (GIF), Joint Photographic Experts Group (JPEG) y Portable Network Graphics (PNG). Para obtener una lista completa de los formatos admitidos, consulte la página de referencia de imread.

Por ejemplo, lea los datos de imagen almacenados en un archivo con formato JPEG en el área de trabajo de MATLAB como el arreglo I.

I = imread("ngc6543a.jpg");

imread representa la imagen en el espacio de trabajo como un arreglo multidimensional de clase uint8. Las dimensiones del arreglo dependen del formato de los datos. Por ejemplo, imread utiliza tres dimensiones para representar imágenes de color RGB.

whos I
  Name        Size                 Bytes  Class    Attributes

  I         650x600x3            1170000  uint8              

Para tener un mayor control sobre la lectura de archivos TIFF, utilice el objeto Tiff. Para obtener más información, consulte Leer datos de imagen y metadatos de archivos TIFF.

Obtener información sobre archivos de imagen

Si tiene un archivo con un formato gráfico estándar, utilice la función imfinfo para obtener información sobre su contenido. La función imfinfo devuelve una estructura que contiene información sobre el archivo. Los campos de la estructura varían con el formato de archivo, pero imfinfo siempre devuelve alguna información básica, como el nombre del archivo, la fecha de la última modificación, el tamaño del archivo y el formato.

Por ejemplo, obtenga información sobre un archivo con formato Joint Photographic Experts Group (JPEG).

info = imfinfo("ngc6543a.jpg")
info = 

           Filename: 'current_directory\ngc6543a.jpg'
        FileModDate: '01-Oct-1996 16:19:44'
           FileSize: 27387
             Format: 'jpg'
      FormatVersion: ''
              Width: 600
             Height: 650
           BitDepth: 24
          ColorType: 'truecolor'
    FormatSignature: ''
    NumberOfSamples: 3
       CodingMethod: 'Huffman'
      CodingProcess: 'Sequential'
            Comment: {'CREATOR: XV Version 3.00b  Rev: 6/15/94  Quality = 75, Smoothing = 0↵'}

Leer datos de imagen y metadatos de archivos TIFF

Aunque puede usar imread para importar datos de imagen y metadatos de archivos TIFF, la función tiene algunas limitaciones. Por ejemplo, un archivo TIFF puede contener varias imágenes y cada imagen puede tener varias subimágenes. Aunque puede leer todas las imágenes de un archivo TIFF multiimagen con imread, no puede acceder a las subimágenes. Con el objeto Tiff, puede leer datos de imagen, metadatos y subimágenes de un archivo TIFF. Al crear un objeto Tiff, este representa la conexión con un archivo TIFF y proporciona acceso a muchas de las rutinas de la biblioteca LibTIFF.

Este ejemplo muestra paso a paso cómo utilizar los métodos y propiedades del objeto Tiff para leer subimágenes de un archivo TIFF. Para aprovechar el objeto Tiff al máximo, debe estar familiarizado con la especificación TIFF y las notas técnicas. Consulte esta documentación en LibTIFF - TIFF Library and Utilities .

Leer subimágenes de un archivo TIFF

Un archivo TIFF puede contener uno o más directorios de archivos de imagen (IFD, por sus siglas en inglés). Cada IFD contiene datos de imagen y los metadatos (etiquetas) asociados con la imagen. Cada IFD puede contener uno o más sub-IFD, que también pueden contener datos de imagen y metadatos. Estas subimágenes suelen ser versiones de resolución reducida (miniaturas) de los datos de imagen del IFD que contiene los sub-IFD.

Para leer las subimágenes de un IFD, debe obtener la ubicación de la subimagen desde la etiqueta SubIFD. La etiqueta SubIFD contiene un arreglo de desplazamientos de bytes que dirige a las subimágenes. Después, puede pasar la dirección del sub-IFD al método setSubDirectory para convertir el sub-IFD en el IFD actual. La mayoría de los métodos del objeto Tiff funciona con el IFD actual.

Abra un archivo TIFF que contenga imágenes y subimágenes mediante el constructor de objetos Tiff. Este ejemplo usa el archivo TIFF creado en Create TIFF Subdirectories, que contiene un IFD con dos sub-IFD. El constructor Tiff abre el archivo TIFF y convierte el primer sub-IFD del archivo en el IFD actual.

t = Tiff("my_subimage_file.tif","r");

Recupere las ubicaciones de los sub-IFD asociados con el IFD actual. Utilice el método getTag para obtener el valor de la etiqueta SubIFD. Este método devuelve un arreglo de desplazamientos de bytes que especifica la ubicación de los sub-IFD.

offsets = getTag(t,"SubIFD");

Desplácese a la primera subimagen.

En primer lugar, establezca el IFD actual en el directorio que contenga la primera subimagen.

dirNum = 1; 
setDirectory(t,dirNum)

Después, desplácese al primer sub-IFD mediante el método setSubDirectory. Especifique el desplazamiento de bytes del sub-IFD como argumento. Esta llamada convierte el sub-IFD en el IFD actual.

setSubDirectory(t,offsets(1))

Lea los datos de imagen del IFD actual (el primer sub-IFD) del mismo modo que lee cualquier otro IFD del archivo.

subimage_one = read(t);

Vea la primera subimagen.

imagesc(subimage_one)

Figure contains an axes object. The axes object contains an object of type image.

Desplácese a la segunda subimagen.

En primer lugar, restablezca el IFD actual en el directorio que contenga la segunda subimagen.

setDirectory(t,dirNum)

Después, desplácese al segundo sub-IFD mediante el método setSubDirectory. Especifique el desplazamiento de bytes del segundo sub-IFD.

setSubDirectory(t,offsets(2))

Lea los datos de imagen del IFD actual (el segundo sub-IFD) del mismo modo que leería cualquier otro IFD del archivo.

subimage_two = read(t);

Vea la segunda subimagen.

imagesc(subimage_two)

Figure contains an axes object. The axes object contains an object of type image.

Cierre el objeto Tiff.

close(t)

Consulte también

Temas relacionados