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)
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)
Cierre el objeto Tiff.
close(t)