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.

Importación de imágenes

Para importar datos en el espacio de trabajo MATLAB® desde un archivo de gráficos, utilice la función imread . Con esta función, puede importar datos de archivos en muchos formatos de archivo estándar, incluidos el formato de archivo de imagen etiquetado (TIFF), el formato de intercambio de gráficos (GIF), el grupo mixto de expertos fotográficos (JPEG) y los formatos de gráficos de red portátiles (PNG). Para obtener una lista completa de los formatos admitidos, consulte la página de referencia de imread .

En este ejemplo se leen los datos de imagen almacenados en un archivo en formato JPEG en el espacio de trabajo MATLAB como array I:

I = imread('ngc6543a.jpg'); 

imread representa la imagen en el espacio de trabajo como una matriz multidimensional de la clase uint8. Las dimensiones de la matriz 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 obtener más control sobre la lectura de archivos TIFF, utilice el objeto Tiff : consulte Lectura de datos de imagen y metadatos de archivos TIFF para obtener más información.

Obtención de información sobre archivos de imagen

Si tiene un archivo en 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 que incluye el nombre del archivo, la fecha de última modificación, el tamaño del archivo y el formato.

En este ejemplo se devuelve información sobre un archivo en formato de grupo de expertos fotográficos conjuntos (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 =...'}

Lectura de datos de imagen y metadatos de archivos TIFF

Aunque puede utilizar 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 de varias imágenes con imread, no puede acceder a las subimágenes. Mediante el objeto Tiff , puede leer datos de imagen, metadatos y subimágenes desde un archivo TIFF. Al construir un objeto Tiff , 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 de utilizar los métodos y propiedades del objeto Tiff para leer las subimágenes de un archivo TIFF. Para obtener el máximo provecho del objeto Tiff , familiarícese con la especificación TIFF y las notas técnicas. Ver LibTIFF - TIFF Library and Utilities.

Lectura de subimágenes desde un archivo TIFF

Un archivo TIFF puede contener uno o más directorios de archivos de imagen (IFD). Cada IFD contiene datos de imagen y los metadatos (etiquetas) asociados a la imagen. Cada IFD puede contener uno o más subIFDs, que también pueden contener datos de imagen y metadatos. Estas subimágenes suelen ser versiones de resolución reducida (thumbnail) de los datos de imagen en el IFD que contiene el subIFDs.

Para leer las subimágenes en un IFD, debe obtener la ubicación de la subimagen de la etiqueta SubIFD . La etiqueta SubIFD contiene una matriz de desvíos de bytes que apuntan a las subimágenes. A continuación, puede pasar la dirección del subIFD al método setSubDirectory para que subIFD la IFD actual. La mayoría de los métodos de objeto Tiff operan en el IFD actual.

  1. Abra un archivo TIFF que contenga imágenes y subimágenes mediante el constructor de objetos Tiff . En este ejemplo se utiliza el archivo TIFF creado en Creación de subdirectorios de archivos TIFF, que contiene un directorio IFD con dos subIFDs. El constructor Tiff abre el archivo TIFF y hace que el primer subIFD en el archivo sea el IFD actual:

    t = Tiff('my_subimage_file.tif','r');
  2. Recupere las ubicaciones de subIFDs asociadas con el IFD actual. Utilice el método getTag para obtener el valor de la etiqueta SubIFD . Este método devuelve una matriz de desvíos de bytes que especifican la ubicación de subIFDs:

    offsets = getTag(t,'SubIFD')
  3. Desplácese hasta la primera subimagen. En primer lugar, establezca el currentIFD en el directorio que contiene la primera subimagen:

    dirNum = 1;  setDirectory(t,dirNum);
  4. A continuación, desplácese hasta el primer subIFD utilizando el método setSubDirectory . Especifique el desplazamiento de bytes del subIFD como argumento. Esta llamada hace que el subIFD el IFD actual:

    setSubDirectory(t,offsets(1)); 
  5. Lea los datos de la imagen de la IFD actual (la primera subIFD) de la misma manera que usted lee cualquier otro IFD en el archivo:

    subimage_one = read(t); 
  6. Ver la primera subimagen:

    imagesc(subimage_one) 
  7. Desplácese hasta la segunda subimagen. En primer lugar, restablezca el currentIFD en el directorio que contiene la segunda subimagen:

    setDirectory(t,dirNum);
  8. A continuación, desplácese hasta el segundo subIFD utilizando el método setSubDirectory . Especifique el desplazamiento de bytes del segundo subIFD:

    setSubDirectory(t,offsets(2)); 
  9. Lea los datos de la imagen de la IFD actual (el segundo subIFD) como lo haría con cualquier otro IFD en el archivo:

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

    imagesc(subimage_two) 
  11. Cierre el objeto Tiff :

    close(t); 

Consulte también

Sitios web externos