Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Importar imágenes

Para importar datos al espacio de trabajo de MATLAB® desde un archivo de gráficas, 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.

Este ejemplo lee los datos de imagen almacenados en un archivo con formato JPEG en el espacio 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

  I       650x600x3                      1170000  uint8 array

Grand total is 1170000 elements using 1170000 bytes

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

Obtener información sobre archivos de imagen

Si tiene un archivo con un formato de gráficas 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 de archivo, la fecha de la última modificación, el tamaño del archivo y el formato.

Este ejemplo devuelve información sobre un archivo con formato Joint Photographic Experts Group (JPEG):

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

           Filename: 'matlabroot\toolbox\matlab\demos\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 =...'}

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.

A continuación se muestra un ejemplo paso a paso del uso de métodos y propiedades del objeto Tiff para leer subimágenes de un archivo TIFF. Para aprovechar el objeto Tiff al máximo, familiarícese con la especificación TIFF y las notas técnicas. Consulte 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.

  1. 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 Crear subdirectorios de archivos TIFF, que contiene un directorio 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');
  2. 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')
  3. 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);
  4. 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));
    
  5. 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);
    
  6. Vea la primera subimagen:

    imagesc(subimage_one)
    
  7. Desplácese a la segunda subimagen. En primer lugar, restablezca el IFD actual en el directorio que contenga la segunda subimagen:

    setDirectory(t,dirNum);
  8. 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));
    
  9. Lea los datos de imagen del IFD actual (el segundo sub-IFD) como lo haría con cualquier otro IFD del archivo:

    subimage_two = read(t);
    
  10. Vea la segunda subimagen:

    imagesc(subimage_two)
    
  11. Cierre el objeto Tiff:

    close(t);
    

Consulte también

Sitios web externos