Импорт изображений

Импорт данных в MATLAB® рабочая область из графического файла, используйте imread функция. С помощью этой функции можно импортировать данные из файлов во многих стандартных форматах файлов, включая форматы Тегового формата графических файлов (TIFF), Graphics Interchange Format (GIF), Формата графических данных JPEG (JPEG) и Portable Network Graphics (PNG). Полный список поддерживаемых форматов см. в imread страница с описанием.

Этот пример читает данные изображения, хранящиеся в файле в формате JPEG, в рабочее пространство MATLAB как массив I:

I = imread('ngc6543a.jpg');

imread представляет изображение в рабочей области как многомерный массив классов uint8. Размерности массива зависят от формата данных. Для примера, imread использует три размерности для представления цветных изображений RGB:

whos I
  Name      Size                           Bytes  Class

  I       650x600x3                      1170000  uint8 array

Grand total is 1170000 elements using 1170000 bytes

Для получения дополнительной информации о чтении файлов TIFF используйте Tiff - для получения дополнительной информации см. раздел Чтение данных и метаданных из файлов TIFF.

Получение информации о файлах изображений

Если у вас есть файл в стандартном графическом формате, используйте imfinfo функция для получения информации о ее содержимом. The imfinfo функция возвращает структуру, содержащую информацию о файле. Поля в структуре варьируются в зависимости от формата файла, но imfinfo всегда возвращает некоторые основные сведения, включая имя файла, дату последнего изменения, размер файла и формат.

Этот пример возвращает информацию о файле в формате Формат графических данных JPEG (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 =...'}

Чтение данных и метаданных из файлов TIFF

Пока можно использовать imread для импорта данных и метаданных из файлов TIFF функция имеет некоторые ограничения. Например, файл TIFF может содержать несколько изображений, и каждое изображение может иметь несколько подызображения. Пока можно считать все изображения из файла TIFF с мультиизображениями с imread, вы не можете получить доступ к подызображениям. Использование Tiff объект, можно считать данные изображений, метаданные и подызображения из файла TIFF. Когда вы создаете Tiff объект представляет ваше соединение с файлом TIFF и предоставляет доступ ко многим из стандартных программ в библиотеке LibTIFF.

Пошаговый пример использования Tiff ниже приведены методы объекта и свойства для чтения подызображений из файла TIFF. Чтобы получить максимальную отдачу от Tiff объект, ознакомиться со спецификацией TIFF и техническими примечаниями. См. LibTIFF - TIFF Library and Utilities.

Чтение подызображений из файла TIFF

Файл TIFF может содержать одни или несколько директорий изображений (IFD). Каждый IFD содержит данные изображения и метаданные (теги), сопоставленные с изображением. Каждый IFD может содержать один или несколько subIFD, которые также могут содержать данные и метаданные. Эти подызображения обычно являются версиями данных с уменьшенным разрешением (миниатюрой) в IFD, содержащих подизображения IFD.

Чтобы считать подызображения в IFD, вы должны получить местоположение подызображения из SubIFD тег. The SubIFD тег содержит массив смещений байтов, которые указывают на подызображения. Затем вы можете передать адрес subIFD в setSubDirectory метод, чтобы сделать subIFD текущим IFD. Самые Tiff методы объекта работают на текущем IFD.

  1. Откройте файл TIFF, который содержит изображения и подызображения, используя Tiff конструктор объектов. Этот пример использует файл TIFF, созданный в разделе «Создание подкаталогов файлов TIFF», который содержит одну директорию IFD с двумя поддисками IFD. The Tiff конструктор открывает файл TIFF и делает первый subIFD в файле текущим IFD:

    t = Tiff('my_subimage_file.tif','r');
  2. Извлечение местоположений подмножеств IFD, сопоставленных с текущим IFD. Используйте getTag метод получения значения SubIFD тег. Этот метод возвращает массив смещений байтов, которые задают местоположение subIFDs:

    offsets = getTag(t,'SubIFD')
  3. Перейдите к первому подызображению. Сначала установите currentIFD на директорию, содержащую первое подызображение:

    dirNum = 1; 
    setDirectory(t,dirNum);
  4. Затем перейдите к первому subIFD с помощью setSubDirectory способ. Задайте смещение байта subIFD в качестве аргумента. Этот вызов делает subIFD текущим IFD:

    setSubDirectory(t,offsets(1));
    
  5. Считайте данные изображения из текущего IFD (первого subIFD) так же, как вы читаете любой другой IFD в файле:

    subimage_one = read(t);
    
  6. Просмотрите первый подызображение:

    imagesc(subimage_one)
    
  7. Перейдите ко второму подызображению. Во-первых, сбросьте currentIFD в директорию, содержащий второй подызображение:

    setDirectory(t,dirNum);
  8. Затем перейдите ко второму подразделу IFD с помощью setSubDirectory способ. Задайте смещение байта второго subIFD:

    setSubDirectory(t,offsets(2));
    
  9. Считайте данные изображения из текущего IFD (второго subIFD), как вы бы с любым другим IFD в файле:

    subimage_two = read(t);
    
  10. Просмотрите второй подызображение:

    imagesc(subimage_two)
    
  11. Закройте Tiff объект:

    close(t);
    

См. также

Внешние веб-сайты